"""
Git Operations MCP Server.

Provides git repository management, branching, commits, and PR workflows
for Syndarix AI agents.
"""

__version__ = "0.1.0"

from config import Settings, get_settings, is_test_mode, reset_settings
from exceptions import (
    APIError,
    AuthenticationError,
    BranchExistsError,
    BranchNotFoundError,
    CheckoutError,
    CloneError,
    CommitError,
    CredentialError,
    CredentialNotFoundError,
    DirtyWorkspaceError,
    ErrorCode,
    GitError,
    GitOpsError,
    InvalidRefError,
    MergeConflictError,
    PRError,
    PRNotFoundError,
    ProviderError,
    ProviderNotFoundError,
    PullError,
    PushError,
    WorkspaceError,
    WorkspaceLockedError,
    WorkspaceNotFoundError,
    WorkspaceSizeExceededError,
)
from models import (
    BranchInfo,
    BranchRequest,
    BranchResult,
    CheckoutRequest,
    CheckoutResult,
    CloneRequest,
    CloneResult,
    CommitInfo,
    CommitRequest,
    CommitResult,
    CreatePRRequest,
    CreatePRResult,
    DiffHunk,
    DiffRequest,
    DiffResult,
    FileChange,
    FileChangeType,
    FileDiff,
    GetPRRequest,
    GetPRResult,
    GetWorkspaceRequest,
    GetWorkspaceResult,
    HealthStatus,
    ListBranchesRequest,
    ListBranchesResult,
    ListPRsRequest,
    ListPRsResult,
    LockWorkspaceRequest,
    LockWorkspaceResult,
    LogRequest,
    LogResult,
    MergePRRequest,
    MergePRResult,
    MergeStrategy,
    PRInfo,
    ProviderStatus,
    ProviderType,
    PRState,
    PullRequest,
    PullResult,
    PushRequest,
    PushResult,
    StatusRequest,
    StatusResult,
    UnlockWorkspaceRequest,
    UnlockWorkspaceResult,
    UpdatePRRequest,
    UpdatePRResult,
    WorkspaceInfo,
    WorkspaceState,
)

__all__ = [
    # Version
    "__version__",
    # Config
    "Settings",
    "get_settings",
    "reset_settings",
    "is_test_mode",
    # Error codes
    "ErrorCode",
    # Exceptions
    "GitOpsError",
    "WorkspaceError",
    "WorkspaceNotFoundError",
    "WorkspaceLockedError",
    "WorkspaceSizeExceededError",
    "GitError",
    "CloneError",
    "CheckoutError",
    "CommitError",
    "PushError",
    "PullError",
    "MergeConflictError",
    "BranchExistsError",
    "BranchNotFoundError",
    "InvalidRefError",
    "DirtyWorkspaceError",
    "ProviderError",
    "AuthenticationError",
    "ProviderNotFoundError",
    "PRError",
    "PRNotFoundError",
    "APIError",
    "CredentialError",
    "CredentialNotFoundError",
    # Enums
    "FileChangeType",
    "MergeStrategy",
    "PRState",
    "ProviderType",
    "WorkspaceState",
    # Dataclasses
    "FileChange",
    "BranchInfo",
    "CommitInfo",
    "DiffHunk",
    "FileDiff",
    "PRInfo",
    "WorkspaceInfo",
    # Request/Response models
    "CloneRequest",
    "CloneResult",
    "StatusRequest",
    "StatusResult",
    "BranchRequest",
    "BranchResult",
    "ListBranchesRequest",
    "ListBranchesResult",
    "CheckoutRequest",
    "CheckoutResult",
    "CommitRequest",
    "CommitResult",
    "PushRequest",
    "PushResult",
    "PullRequest",
    "PullResult",
    "DiffRequest",
    "DiffResult",
    "LogRequest",
    "LogResult",
    "CreatePRRequest",
    "CreatePRResult",
    "GetPRRequest",
    "GetPRResult",
    "ListPRsRequest",
    "ListPRsResult",
    "MergePRRequest",
    "MergePRResult",
    "UpdatePRRequest",
    "UpdatePRResult",
    "GetWorkspaceRequest",
    "GetWorkspaceResult",
    "LockWorkspaceRequest",
    "LockWorkspaceResult",
    "UnlockWorkspaceRequest",
    "UnlockWorkspaceResult",
    "HealthStatus",
    "ProviderStatus",
]
