"""GraphQL deployment module.

This module provides GraphQL types, resolvers, and fetchers for the deployment domain.
It follows the fetcher/resolver/types pattern for organizing GraphQL code.

Structure:
- types/: GraphQL type definitions (Node, Connection, Filter, OrderBy, Input, Payload)
- fetcher/: Data loading functions (pagination, dataloader usage)
- resolver/: GraphQL operations (Query, Mutation, Subscription resolvers)
"""

# Re-export all types for external use
# NOTE: types must be imported before resolver to avoid circular imports
# Re-export all resolvers for GraphQL schema registration
from .resolver import (
    # Revision
    activate_deployment_revision,
    add_model_revision,
    # Access Token
    create_access_token,
    # Auto Scaling
    create_auto_scaling_rule,
    # Deployment
    create_model_deployment,
    create_model_revision,
    delete_auto_scaling_rule,
    delete_model_deployment,
    deployment,
    deployment_status_changed,
    deployments,
    inference_runtime_config,
    inference_runtime_configs,
    # Replica
    replica,
    replica_status_changed,
    replicas,
    revision,
    revisions,
    # Route
    route,
    routes,
    sync_replicas,
    update_auto_scaling_rule,
    update_model_deployment,
    update_route_traffic_status,
)
from .types import (
    # Access Token
    AccessToken,
    AccessTokenConnection,
    AccessTokenEdge,
    AccessTokenFilter,
    AccessTokenOrderBy,
    # Revision
    ActivateRevisionInputGQL,
    ActivateRevisionPayloadGQL,
    # Replica
    ActivenessStatus,
    AddRevisionInput,
    AddRevisionPayload,
    # Auto Scaling
    AutoScalingMetricSource,
    AutoScalingRule,
    AutoScalingRuleConnection,
    AutoScalingRuleEdge,
    AutoScalingRuleFilter,
    AutoScalingRuleOrderBy,
    # Policy
    BlueGreenConfigInputGQL,
    BlueGreenStrategySpecGQL,
    ClusterConfig,
    ClusterConfigInput,
    ClusterMode,
    CreateAccessTokenInput,
    CreateAccessTokenPayload,
    CreateAutoScalingRuleInput,
    CreateAutoScalingRulePayload,
    # Deployment
    CreateDeploymentInput,
    CreateDeploymentPayload,
    CreateRevisionInput,
    CreateRevisionPayload,
    DeleteAutoScalingRuleInput,
    DeleteAutoScalingRulePayload,
    DeleteDeploymentInput,
    DeleteDeploymentPayload,
    DeploymentFilter,
    DeploymentOrderBy,
    DeploymentPolicyGQL,
    DeploymentStatusChangedPayload,
    DeploymentStatusFilter,
    DeploymentStatusGQL,
    DeploymentStrategyGQL,
    DeploymentStrategyInputGQL,
    DeploymentStrategySpecGQL,
    DeploymentStrategyTypeGQL,
    ExtraVFolderMountInput,
    ImageInput,
    LivenessStatus,
    ModelDeployment,
    ModelDeploymentConnection,
    ModelDeploymentEdge,
    ModelDeploymentMetadata,
    ModelDeploymentMetadataInput,
    ModelDeploymentNetworkAccess,
    ModelDeploymentNetworkAccessInput,
    ModelMountConfig,
    ModelMountConfigInput,
    ModelReplica,
    ModelReplicaConnection,
    ModelReplicaEdge,
    ModelRevision,
    ModelRevisionConnection,
    ModelRevisionEdge,
    ModelRevisionFilter,
    ModelRevisionOrderBy,
    ModelRuntimeConfig,
    ModelRuntimeConfigInput,
    MountPermission,
    ReadinessStatus,
    ReplicaFilter,
    ReplicaOrderBy,
    ReplicaState,
    ReplicaStatus,
    ReplicaStatusChangedPayload,
    ReplicaStatusFilter,
    ResourceConfig,
    ResourceConfigInput,
    ResourceGroupInput,
    RollingUpdateConfigInputGQL,
    RollingUpdateStrategySpecGQL,
    # Route
    Route,
    RouteConnection,
    RouteEdge,
    RouteFilter,
    RouteOrderBy,
    RouteOrderField,
    RouteStatusGQL,
    RouteTrafficStatusGQL,
    ScalingRule,
    SyncReplicaInput,
    SyncReplicaPayload,
    TrafficStatus,
    TrafficStatusFilter,
    UpdateAutoScalingRuleInput,
    UpdateAutoScalingRulePayload,
    UpdateDeploymentInput,
    UpdateDeploymentPayload,
    UpdateRouteTrafficStatusInputGQL,
    UpdateRouteTrafficStatusPayloadGQL,
    get_route_pagination_spec,
)

__all__ = [
    # Access Token Types
    "AccessToken",
    "AccessTokenConnection",
    "AccessTokenEdge",
    "AccessTokenFilter",
    "AccessTokenOrderBy",
    "CreateAccessTokenInput",
    "CreateAccessTokenPayload",
    # Auto Scaling Types
    "AutoScalingMetricSource",
    "AutoScalingRule",
    "AutoScalingRuleConnection",
    "AutoScalingRuleEdge",
    "AutoScalingRuleFilter",
    "AutoScalingRuleOrderBy",
    "CreateAutoScalingRuleInput",
    "CreateAutoScalingRulePayload",
    "DeleteAutoScalingRuleInput",
    "DeleteAutoScalingRulePayload",
    "UpdateAutoScalingRuleInput",
    "UpdateAutoScalingRulePayload",
    # Deployment Types
    "CreateDeploymentInput",
    "CreateDeploymentPayload",
    "DeleteDeploymentInput",
    "DeleteDeploymentPayload",
    "DeploymentFilter",
    "DeploymentOrderBy",
    "DeploymentStatusChangedPayload",
    "DeploymentStatusFilter",
    "DeploymentStatusGQL",
    "DeploymentStrategyGQL",
    "DeploymentStrategyInputGQL",
    "ModelDeployment",
    "ModelDeploymentConnection",
    "ModelDeploymentEdge",
    "ModelDeploymentMetadata",
    "ModelDeploymentMetadataInput",
    "ModelDeploymentNetworkAccess",
    "ModelDeploymentNetworkAccessInput",
    "ReplicaState",
    "ScalingRule",
    "SyncReplicaInput",
    "SyncReplicaPayload",
    "UpdateDeploymentInput",
    "UpdateDeploymentPayload",
    # Policy Types
    "BlueGreenConfigInputGQL",
    "BlueGreenStrategySpecGQL",
    "DeploymentPolicyGQL",
    "DeploymentStrategySpecGQL",
    "DeploymentStrategyTypeGQL",
    "RollingUpdateConfigInputGQL",
    "RollingUpdateStrategySpecGQL",
    # Replica Types
    "ActivenessStatus",
    "LivenessStatus",
    "ModelReplica",
    "ModelReplicaConnection",
    "ModelReplicaEdge",
    "ReadinessStatus",
    "ReplicaFilter",
    "ReplicaOrderBy",
    "ReplicaStatus",
    "ReplicaStatusChangedPayload",
    "ReplicaStatusFilter",
    "TrafficStatus",
    "TrafficStatusFilter",
    # Revision Types
    "ActivateRevisionInputGQL",
    "ActivateRevisionPayloadGQL",
    "AddRevisionInput",
    "AddRevisionPayload",
    "ClusterConfig",
    "ClusterConfigInput",
    "ClusterMode",
    "CreateRevisionInput",
    "CreateRevisionPayload",
    "ExtraVFolderMountInput",
    "ImageInput",
    "ModelMountConfig",
    "ModelMountConfigInput",
    "ModelRevision",
    "ModelRevisionConnection",
    "ModelRevisionEdge",
    "ModelRevisionFilter",
    "ModelRevisionOrderBy",
    "ModelRuntimeConfig",
    "ModelRuntimeConfigInput",
    "MountPermission",
    "ResourceConfig",
    "ResourceConfigInput",
    "ResourceGroupInput",
    # Route Types
    "Route",
    "RouteConnection",
    "RouteEdge",
    "RouteFilter",
    "RouteOrderBy",
    "RouteOrderField",
    "RouteStatusGQL",
    "RouteTrafficStatusGQL",
    "UpdateRouteTrafficStatusInputGQL",
    "UpdateRouteTrafficStatusPayloadGQL",
    "get_route_pagination_spec",
    # Resolvers - Access Token
    "create_access_token",
    # Resolvers - Auto Scaling
    "create_auto_scaling_rule",
    "delete_auto_scaling_rule",
    "update_auto_scaling_rule",
    # Resolvers - Deployment
    "create_model_deployment",
    "delete_model_deployment",
    "deployment",
    "deployment_status_changed",
    "deployments",
    "sync_replicas",
    "update_model_deployment",
    # Resolvers - Replica
    "replica",
    "replica_status_changed",
    "replicas",
    # Resolvers - Revision
    "activate_deployment_revision",
    "add_model_revision",
    "create_model_revision",
    "inference_runtime_config",
    "inference_runtime_configs",
    "revision",
    "revisions",
    # Resolvers - Route
    "route",
    "routes",
    "update_route_traffic_status",
]
