"""
Questra - Unified Python Client für Questra Platform

Installiert und exponiert alle Questra Components:
- Authentication (OAuth2)
- Automation (Workflow Automation)
- Data API (GraphQL + REST)

Verwendung:
    from questra import QuestraAuthentication, QuestraData, QuestraAutomation

    auth = QuestraAuthentication(
        url="https://auth.example.com",
        username="service_user",
        password="secret"
    )

    # Data Client
    data_client = QuestraData(
        graphql_url="https://api.example.com/graphql",
        auth_client=auth
    )

    # Automation Client
    automation_client = QuestraAutomation(
        graphql_url="https://automation.example.com/graphql",
        auth_client=auth
    )

Für fortgeschrittene Verwendung siehe Sub-Package-Dokumentation:
- questra_authentication.*
- questra_automation.*
- questra_data.*
"""

# === Core Clients ===
# === Authentication ===
# === Exceptions ===
from questra_authentication import (
    AuthenticationError,
    ClientInterface,
    InvalidCredentialsError,
    NotAuthenticatedError,
    OAuth2Authentication,
    OAuth2InteractiveUserCredential,
    OAuth2ServiceCredential,
    OidcConfig,
    OidcDiscoveryClient,
    OidcDiscoveryError,
    QuestraAuthentication,
    QuestraAuthenticationError,
    SessionNotInitializedError,
    TokenExpiredError,
)

# === Automation ===
from questra_automation import (
    AutomationInitiatorType,
    ExecutionInitiator,
    QuestraAutomation,
    QuestraAutomationError,
    QuestraAutomationGraphQLError,
)

# === Data - GraphQL Models ===
# === Data - Enums ===
# === Data - Input Models (f�r create_* Operationen) ===
# === Data - Output Config Models ===
# === Data - Permissions ===
# === Data - TimeSeries ===
# === Data - REST Models ===
# === Data - Results ===
# === Data - Exceptions ===
from questra_data import (
    Aggregation,
    BoolProperty,
    ConflictAction,
    CreateTimeSeriesInput,
    DataType,
    DateProperty,
    DateTimeOffsetProperty,
    DateTimeProperty,
    DecimalProperty,
    ErrorPayload,
    File,
    FileConfig,
    FileProperty,
    FilePropertyConfig,
    GuidProperty,
    Interval,
    IntervalConfig,
    IntervalInfo,
    IntProperty,
    Inventory,
    InventoryPrivilege,
    InventoryProperty,
    InventoryPropertyPrivilege,
    InventoryRelation,
    InventoryType,
    LongProperty,
    Namespace,
    PageInfo,
    PermissionState,
    ProblemDetails,
    Quality,
    QueryResult,
    QuestraData,
    QuestraDataCore,
    QuestraError,
    QuestraGraphQLError,
    QuotationBehavior,
    Quotations,
    QuotationsPayload,
    QuotationValue,
    RelationType,
    Role,
    SetTimeSeriesDataInput,
    SortOrder,
    StringConfig,
    StringProperty,
    StringPropertyConfig,
    TimeProperty,
    TimeSeriesConfig,
    TimeSeriesData,
    TimeSeriesDataPayload,
    TimeSeriesPayload,
    TimeSeriesProperty,
    TimeSeriesPropertyConfig,
    TimeSeriesResult,
    TimeSeriesValue,
    TimeUnit,
    TimeZone,
    Unit,
    ValueAlignment,
    ValueAvailability,
)

__version__ = "0.2.2"

__all__ = [
    # === Hauptklassen (Top-Level) ===
    "QuestraAuthentication",
    "QuestraAutomation",
    "QuestraData",
    "QuestraDataCore",
    # === Authentication ===
    "OAuth2Authentication",
    "OAuth2ServiceCredential",
    "OAuth2InteractiveUserCredential",
    "OidcConfig",
    "OidcDiscoveryClient",
    "ClientInterface",
    # === Automation ===
    "AutomationInitiatorType",
    "ExecutionInitiator",
    # === Data - Core Models ===
    "Inventory",
    "InventoryType",
    "InventoryProperty",
    "InventoryRelation",
    "Namespace",
    "Role",
    "Unit",
    "TimeZone",
    "PageInfo",
    # === Data - Enums ===
    "SortOrder",
    "ConflictAction",
    "RelationType",
    "DataType",
    # === Data - Input Models ===
    "StringPropertyConfig",
    "FilePropertyConfig",
    "TimeSeriesPropertyConfig",
    "IntervalConfig",
    "CreateTimeSeriesInput",
    # === Data - Property Helper Classes ===
    "StringProperty",
    "IntProperty",
    "LongProperty",
    "DecimalProperty",
    "BoolProperty",
    "DateTimeProperty",
    "DateTimeOffsetProperty",
    "DateProperty",
    "TimeProperty",
    "GuidProperty",
    "FileProperty",
    "TimeSeriesProperty",
    # === Data - Output Config Models ===
    "StringConfig",
    "FileConfig",
    "TimeSeriesConfig",
    "IntervalInfo",
    # === Data - Permissions ===
    "InventoryPrivilege",
    "InventoryPropertyPrivilege",
    "PermissionState",
    # === Data - TimeSeries ===
    "TimeSeriesValue",
    "Aggregation",
    "Quality",
    "QuotationBehavior",
    "ValueAlignment",
    "ValueAvailability",
    "TimeUnit",
    "Interval",
    # === Data - REST ===
    "TimeSeriesData",
    "TimeSeriesDataPayload",
    "SetTimeSeriesDataInput",
    "TimeSeriesPayload",
    "QuotationValue",
    "Quotations",
    "QuotationsPayload",
    "File",
    "ErrorPayload",
    "ProblemDetails",
    # === Data - Results ===
    "QueryResult",
    "TimeSeriesResult",
    # === Exceptions ===
    "QuestraAuthenticationError",
    "AuthenticationError",
    "NotAuthenticatedError",
    "SessionNotInitializedError",
    "InvalidCredentialsError",
    "OidcDiscoveryError",
    "TokenExpiredError",
    "QuestraAutomationError",
    "QuestraAutomationGraphQLError",
    "QuestraError",
    "QuestraGraphQLError",
]
