"""
OpenTester Pydantic Models
"""

from .project import (
    TestProject,
    TestGroup,
    ProjectCreate,
    ProjectResponse,
)

from .case import (
    TestCase,
    CaseCreate,
    CaseResponse,
    CaseDraft,
)

from .dsl import (
    TestStep,
    GUISelector,
    TUISelector,
    CLISelector,
    Selector,
    GUIAssertion,
    TUIAssertion,
    CLIAssertion,
    Assertion,
    Variable,
    DSLScript,
)

from .execution import (
    ExecutionRequest,
    ExecutionResponse,
    ExecutionEvent,
    TestResult,
    FailureReport,
)

from .template import (
    DSLTemplate,
    TemplateCategory,
    TemplateVariable,
    TemplateMetadata,
    TemplateCreate,
    TemplateUpdate,
    TemplateResponse,
    TemplateInstantiation,
)


__all__ = [
    # Project
    "TestProject",
    "TestGroup",
    "ProjectCreate",
    "ProjectResponse",
    # Case
    "TestCase",
    "CaseCreate",
    "CaseResponse",
    "CaseDraft",
    # DSL
    "TestStep",
    "GUISelector",
    "TUISelector",
    "CLISelector",
    "Selector",
    "GUIAssertion",
    "TUIAssertion",
    "CLIAssertion",
    "Assertion",
    "Variable",
    "DSLScript",
    # Execution
    "ExecutionRequest",
    "ExecutionResponse",
    "ExecutionEvent",
    "TestResult",
    "FailureReport",
    # Template
    "DSLTemplate",
    "TemplateCategory",
    "TemplateVariable",
    "TemplateMetadata",
    "TemplateCreate",
    "TemplateUpdate",
    "TemplateResponse",
    "TemplateInstantiation",
]
