# flake8: noqa
# Can't use __all__ yet because of the wildcard imports and code generation

from abstra_internals.entities.forms.form_state import State

from abstra_internals.entities.forms.steps import (
    ComputationStep,
    GeneratorStep,
    PageStep,
    Step,
)

# Buttons & template aliases
from abstra_internals.entities.forms.template import (
    BackButton,
    Button,
    ExitButton,
    NextButton,
    Template,
    TemplateFunction,
    TemplateGenerator,
    TemplateGeneratorFunction,
    TemplateWithButtons,
)
from abstra_internals.entities.forms.widgets.library import (
    AppointmentInput,
    CameraInput,
    CardsInput,
    CheckboxInput,
    ChecklistInput,
    CnpjInput,
    CodeInput,
    CpfInput,
    CurrencyInput,
    CustomInput,
    DateInput,
    DropdownInput,
    EmailInput,
    FileInput,
    FileOutput,
    HtmlOutput,
    IframeOutput,
    ImageInput,
    ImageOutput,
    LatexOutput,
    LinkOutput,
    ListInput,
    MarkdownOutput,
    MultipleChoiceInput,
    NpsInput,
    NumberInput,
    NumberSliderInput,
    PandasOutput,
    PandasRowSelectionInput,
    PasswordInput,
    PhoneInput,
    PlotlyOutput,
    ProgressOutput,
    RatingInput,
    RichTextInput,
    Row,
    TagInput,
    TextareaInput,
    TextInput,
    TextOutput,
    TimeInput,
    ToggleInput,
    VideoInput,
)

# Widget option / response value types (returned to user code)
from abstra_internals.entities.forms.widgets.library.CardsInput import CardOption

# Utils
from abstra_internals.entities.forms.widgets.widget_base import (
    InputWidget,
    LabelValueDict,
    OutputWidget,
    Widget,
)
from abstra_internals.interface.sdk.forms.deprecated.widgets.response_types import (
    AppointmentSlot,
    FileResponse,
    PhoneResponse,
)
from abstra_internals.interface.sdk.forms.deprecated.widgets.widget_base import (
    AbstraOption,
    LabelValueOption,
)
from abstra_internals.interface.sdk.forms.decorators import end_page_step
from abstra_internals.interface.sdk.forms.deprecated.page import Page
from abstra_internals.interface.sdk.forms.deprecated.reactive_func import reactive
from abstra_internals.interface.sdk.forms.deprecated.step import run_steps
from abstra_internals.interface.sdk.forms.form import Form, Runnable, run
from abstra_internals.services.jwt import UserClaims

# Legacy
from abstra_internals.interface.sdk.forms.generated.inputs import (
    read,
    read_appointment,
    read_camera,
    read_cards,
    read_checkbox,
    read_checklist,
    read_cnpj,
    read_code,
    read_cpf,
    read_currency,
    read_custom,
    read_date,
    read_dropdown,
    read_email,
    read_file,
    read_image,
    read_list,
    read_multiple_choice,
    read_nps,
    read_number,
    read_number_slider,
    read_pandas_row_selection,
    read_password,
    read_phone,
    read_rating,
    read_richtext,
    read_tag,
    read_textarea,
    read_time,
    read_toggle,
    read_video,
)
from abstra_internals.interface.sdk.forms.generated.outputs import (
    display,
    display_file,
    display_html,
    display_iframe,
    display_image,
    display_latex,
    display_link,
    display_markdown,
    display_pandas,
    display_plotly,
    display_progress,
)

# Widgets
from abstra_internals.interface.sdk.forms.list_item_schema import ListItemSchema
from abstra_internals.interface.sdk.forms.other import (
    execute_js,
    get_query_params,
    get_user,
    redirect,
    url_params,
)
from abstra_internals.interface.sdk.forms.reuse import reuse

__all__ = [
    # Utils
    "execute_js",
    "get_query_params",
    "get_user",
    "redirect",
    "url_params",
    "reuse",
    # Buttons
    "Button",
    "NextButton",
    "BackButton",
    "ExitButton",
    # Widget hierarchy (use as type annotations)
    "Widget",
    "InputWidget",
    "OutputWidget",
    "ListItemSchema",
    # Widget value / response types (returned by user input)
    "State",
    "FileResponse",
    "PhoneResponse",
    "AppointmentSlot",
    "CardOption",
    "AbstraOption",
    "LabelValueOption",
    "LabelValueDict",
    # Step / template aliases (for users defining page functions)
    "Step",
    "PageStep",
    "ComputationStep",
    "GeneratorStep",
    "Template",
    "TemplateWithButtons",
    "TemplateFunction",
    "TemplateGenerator",
    "TemplateGeneratorFunction",
    "AppointmentInput",
    "CameraInput",
    "CardsInput",
    "CheckboxInput",
    "ChecklistInput",
    "CnpjInput",
    "CodeInput",
    "CpfInput",
    "CurrencyInput",
    "CustomInput",
    "DateInput",
    "DropdownInput",
    "EmailInput",
    "FileInput",
    "FileOutput",
    "HtmlOutput",
    "IframeOutput",
    "ImageInput",
    "ImageOutput",
    "LatexOutput",
    "LinkOutput",
    "ListInput",
    "MarkdownOutput",
    "MultipleChoiceInput",
    "NpsInput",
    "NumberInput",
    "NumberSliderInput",
    "PandasOutput",
    "PandasRowSelectionInput",
    "PasswordInput",
    "PhoneInput",
    "PlotlyOutput",
    "ProgressOutput",
    "RatingInput",
    "RichTextInput",
    "Row",
    "TagInput",
    "TextInput",
    "TextOutput",
    "TextareaInput",
    "TimeInput",
    "ToggleInput",
    "VideoInput",
    # Form
    "run",
    "end_page_step",
    "Runnable",
    "UserClaims",
    # Input Functions
    "read_appointment",
    "read_camera",
    "read_cards",
    "read_checkbox",
    "read_checklist",
    "read_cnpj",
    "read_code",
    "read_cpf",
    "read_currency",
    "read_custom",
    "read_date",
    "read_dropdown",
    "read_email",
    "read_file",
    "read_image",
    "read_list",
    "read_multiple_choice",
    "read_nps",
    "read_number",
    "read_number_slider",
    "read_pandas_row_selection",
    "read_password",
    "read_phone",
    "read_rating",
    "read_richtext",
    "read_tag",
    "read",
    "read_textarea",
    "read_time",
    "read_toggle",
    "read_video",
    # Output Functions
    "display_file",
    "display_html",
    "display_iframe",
    "display_image",
    "display_latex",
    "display_link",
    "display_markdown",
    "display_pandas",
    "display_plotly",
    "display_progress",
    "display",
    # Legacy
    "Page",
    "reactive",
    "run_steps",
]
