"""
Crawler framework for navigating and filling multi-step web forms.

This package provides an abstract framework for automating form completion
on any website given a starting URL, input data, and JSON instructions.
"""

from .crawling import (
    ActionDefinition,
    ActionType,
    BaseHandler,
    BrowserType,
    ClickSelectFieldConfig,
    ComboboxFieldConfig,
    ConditionDefinition,
    ConditionType,
    ContextOptions,
    CrawlerBrowserConfig,
    CrawlerError,
    CrawlerTimeoutError,
    CrawlResult,
    DataExtractionConfig,
    DataExtractionError,
    DateFieldConfig,
    DebugMode,
    DiscoveredElement,
    DropdownFieldConfig,
    ElementDiscovery,
    ElementVisibility,
    ExtractionFieldDefinition,
    FieldDefinition,
    FieldInteractionError,
    FieldNotFoundError,
    FieldType,
    FieldTypeConfig,
    FinalPageDefinition,
    FormCrawler,
    GeolocationConfig,
    HumanizeConfig,
    IframeDiscovery,
    IframeNotFoundError,
    InMemoryCrawlResult,
    Instructions,
    InvalidInstructionError,
    MissingDataError,
    NavigationError,
    PageDiscoveryReport,
    ProxyConfig,
    RadioButtonGroup,
    StepDefinition,
    StepExtractionDefinition,
    UnsupportedActionTypeError,
    UnsupportedFieldTypeError,
    ValidationHandler,
    extract_data,
    extract_field_value,
    handle_cookie_consent,
)

__all__ = [
    "ActionDefinition",
    "ActionType",
    "BaseHandler",
    "BrowserType",
    "ClickSelectFieldConfig",
    "ComboboxFieldConfig",
    "ConditionDefinition",
    "ConditionType",
    "ContextOptions",
    "CrawlResult",
    "CrawlerBrowserConfig",
    "CrawlerError",
    "CrawlerTimeoutError",
    "DataExtractionConfig",
    "DataExtractionError",
    "DateFieldConfig",
    "DebugMode",
    "DiscoveredElement",
    "DropdownFieldConfig",
    "ElementDiscovery",
    "ElementVisibility",
    "ExtractionFieldDefinition",
    "FieldDefinition",
    "FieldInteractionError",
    "FieldNotFoundError",
    "FieldType",
    "FieldTypeConfig",
    "FinalPageDefinition",
    "FormCrawler",
    "GeolocationConfig",
    "HumanizeConfig",
    "IframeDiscovery",
    "IframeNotFoundError",
    "InMemoryCrawlResult",
    "Instructions",
    "InvalidInstructionError",
    "MissingDataError",
    "NavigationError",
    "PageDiscoveryReport",
    "ProxyConfig",
    "RadioButtonGroup",
    "StepDefinition",
    "StepExtractionDefinition",
    "UnsupportedActionTypeError",
    "UnsupportedFieldTypeError",
    "ValidationHandler",
    "extract_data",
    "extract_field_value",
    "handle_cookie_consent",
]
