"""
NetOrca SDK v2.

Modern Python SDK for NetOrca API with type hints and model objects.

Example:
    ```python
    from netorca_sdk.v2 import NetOrcaClient

    # Initialize client
    client = NetOrcaClient(
        fqdn="https://api-generaldemo.demo.netorca.io/v1",
        api_key="YOUR_API_KEY"
    )

    # List service items
    for item in client.service_items.list():
        print(f"{item.name}: {item.runtime_state}")

    # Get specific item
    item = client.service_items.get(123)
    print(f"Service: {item.service_name}")

    # Filter by service
    items = client.service_items.by_service(service_id=45)
    ```
"""

from netorca_sdk.v2.auth import NetorcaAuth
from netorca_sdk.v2.base import BaseModel, BaseResource
from netorca_sdk.v2.client import NetOrcaClient
from netorca_sdk.v2.exceptions import (
    NetorcaAPIError,
    NetorcaAuthenticationError,
    NetorcaBaseException,
    NetorcaException,
    NetorcaGatewayError,
    NetorcaNotFoundError,
    NetorcaPermissionError,
    NetorcaServerUnavailableError,
    NetorcaTimeoutError,
    NetorcaValueError,
)
# Import all models
from netorca_sdk.v2.models import (
    AIDocument,
    AIProcessor,
    AIProcessorHistory,
    AIValidator,
    AIValidatorResponse,
    Application,
    ChangeInstance,
    Charge,
    DeployedItem,
    Healthcheck,
    LLMModel,
    PackServiceProfile,
    Service,
    ServiceConfig,
    ServiceItem,
    Submission,
    Webhook,
)
# Import all resources
from netorca_sdk.v2.resources import (
    AIDocumentsResource,
    AIProcessorsResource,
    AIValidatorResponsesResource,
    AIValidatorsResource,
    ApplicationsResource,
    ChangeInstancesResource,
    ChargesResource,
    DeployedItemsResource,
    HealthchecksResource,
    LLMModelsResource,
    PackProfilesResource,
    ServiceConfigsResource,
    ServiceItemsResource,
    ServicesResource,
    SubmissionsResource,
    WebhooksResource,
)
# Import utilities
from netorca_sdk.v2.utils import (
    ErrorFormatter,
    PackPrompt,
    RepositoryLoader,
    ServiceOwnerSubmission,
    ServiceSubmission,
)
# Import types
from netorca_sdk.v2.types import (
    PaginationParams,
    ServiceItemChangeState,
    ServiceItemFilters,
    ServiceItemRuntimeState,
    ServiceState,
    SubmissionFilters,
)

__version__ = "2.0.0"

__all__ = [
    # Client
    "NetOrcaClient",
    # Auth
    "NetorcaAuth",
    # Base classes
    "BaseModel",
    "BaseResource",
    # Exceptions
    "NetorcaBaseException",
    "NetorcaException",
    "NetorcaValueError",
    "NetorcaNotFoundError",
    "NetorcaPermissionError",
    "NetorcaTimeoutError",
    "NetorcaAPIError",
    "NetorcaAuthenticationError",
    "NetorcaServerUnavailableError",
    "NetorcaGatewayError",
    # Models
    "Service",
    "ServiceItem",
    "DeployedItem",
    "ChangeInstance",
    "ServiceConfig",
    "Charge",
    "Application",
    "Submission",
    "Healthcheck",
    "Webhook",
    # AI Models
    "AIDocument",
    "AIProcessor",
    "AIProcessorHistory",
    "AIValidator",
    "AIValidatorResponse",
    "LLMModel",
    "PackServiceProfile",
    # Resources
    "ServicesResource",
    "ServiceItemsResource",
    "DeployedItemsResource",
    "ChangeInstancesResource",
    "ServiceConfigsResource",
    "ChargesResource",
    "ApplicationsResource",
    "SubmissionsResource",
    "HealthchecksResource",
    "WebhooksResource",
    # AI Resources
    "AIDocumentsResource",
    "AIProcessorsResource",
    "AIValidatorsResource",
    "AIValidatorResponsesResource",
    "LLMModelsResource",
    "PackProfilesResource",
    # Utilities
    "RepositoryLoader",
    "ErrorFormatter",
    "ServiceOwnerSubmission",
    "ServiceSubmission",
    "PackPrompt",
    # Types
    "ServiceItemRuntimeState",
    "ServiceItemChangeState",
    "ServiceState",
    "ServiceItemFilters",
    "SubmissionFilters",
    "PaginationParams",
]
