"""
GGE Protocol Models - Pydantic models for Goodgame Empire protocol commands.

This package contains type-safe models for all GGE protocol commands.

Structure:
- base.py: Base classes and common types
- auth.py: Authentication commands (lli, lre, vpn, vln, etc.)
- chat.py: Alliance chat commands (acm, acl)
- alliance.py: Alliance commands (ahc, aha, ahr)
- castle.py: Castle commands (gcl, dcl, jca, arc, etc.)
- map.py: Map commands (gaa, gam, fnm, adi, etc.)
- attack.py: Attack/spy commands (cra, csm, gas, etc.)
- building.py: Building commands (ebu, eup, emo, sbd, etc.)
- army.py: Army/soldier/hospital commands (bup, spl, gui, hru, etc.)
- defense.py: Defense commands (dfc, dfk, dfw, dfm)

TODO (lower priority):
- shop.py: Shop/purchase commands (sbp, gbc)
- events.py: Event commands (sei, pep, hgh, sede)
- gifts.py: Gift commands (clb, gpg)
- quests.py: Quest commands (qsc, qdr, fcq)
- account.py: Account commands (gpi, scp, vpm, cpne, etc.)
- settings.py: Settings commands (ani, mvf, opt, hfl)
- misc.py: Miscellaneous commands (txi, txs, txc, gbl, etc.)
"""

from .alliance import (
    AllianceBookmark,
    AllianceBuilding,
    AllianceInfo,
    AllianceMember,
    AllianceSearchResult,
    AllianceStorage,
    AskHelpRequest,
    AskHelpResponse,
    GetAllianceBookmarksRequest,
    GetAllianceBookmarksResponse,
    GetAllianceInfoRequest,
    GetAllianceInfoResponse,
    HelpAllRequest,
    HelpAllResponse,
    HelpMemberRequest,
    HelpMemberResponse,
    HelpRequestNotification,
    MemberCastle,
    MemberEmblem,
    SearchAllianceRequest,
    SearchAllianceResponse,
)
from .army import (
    CancelHealRequest,
    CancelHealResponse,
    CancelProductionRequest,
    CancelProductionResponse,
    DeleteUnitsRequest,
    DeleteUnitsResponse,
    DeleteWoundedRequest,
    DeleteWoundedResponse,
    DoubleProductionRequest,
    DoubleProductionResponse,
    GetProductionQueueRequest,
    GetProductionQueueResponse,
    GetUnitsRequest,
    GetUnitsResponse,
    HealAllRequest,
    HealAllResponse,
    HealUnitsRequest,
    HealUnitsResponse,
    ProduceUnitsRequest,
    ProduceUnitsResponse,
    ProductionQueueItem,
    SendSupportRequest,
    SendSupportResponse,
    SkipHealRequest,
    SkipHealResponse,
)
from .attack import (
    AttackPreset,
    CreateAttackRequest,
    CreateAttackResponse,
    GetPresetsRequest,
    GetPresetsResponse,
    SendSpyRequest,
    SendSpyResponse,
    SkipAttackCooldownRequest,
    SkipAttackCooldownResponse,
    SkipDefenseCooldownRequest,
    SkipDefenseCooldownResponse,
)
from .auth import (
    CheckUsernameAvailableRequest,
    CheckUsernameAvailableResponse,
    CheckUsernameExistsRequest,
    CheckUsernameExistsResponse,
    LoginRequest,
    LoginResponse,
    PasswordRecoveryRequest,
    PasswordRecoveryResponse,
    PlayerData,
    RegisterRequest,
    RegisterResponse,
)
from .base import (
    DEFAULT_ZONE,
    BasePayload,
    BaseRequest,
    BaseResponse,
    ErrorResponse,
    GGECommand,
    HelpType,
    PlayerInfo,
    Position,
    ProductionListType,
    ResourceAmount,
    UnitCount,
    decode_chat_text,
    encode_chat_text,
    get_response_model,
    parse_response,
)
from .building import (
    BuildRequest,
    BuildResponse,
    BuyExtensionRequest,
    BuyExtensionResponse,
    CollectExtensionGiftRequest,
    CollectExtensionGiftResponse,
    DestroyBuildingRequest,
    DestroyBuildingResponse,
    FastCompleteRequest,
    FastCompleteResponse,
    MoveBuildingRequest,
    MoveBuildingResponse,
    RepairAllRequest,
    RepairAllResponse,
    RepairBuildingRequest,
    RepairBuildingResponse,
    SellBuildingRequest,
    SellBuildingResponse,
    TimeSkipBuildingRequest,
    TimeSkipBuildingResponse,
    UpgradeBuildingRequest,
    UpgradeBuildingResponse,
    UpgradeWallRequest,
    UpgradeWallResponse,
)
from .castle import (
    BuildingInfo,
    CastleInfo,
    DetailedCastleInfo,
    GetCastlesRequest,
    GetCastlesResponse,
    GetDetailedCastleRequest,
    GetDetailedCastleResponse,
    GetProductionRequest,
    GetProductionResponse,
    GetResourcesRequest,
    GetResourcesResponse,
    ProductionRates,
    RelocateCastleRequest,
    RelocateCastleResponse,
    RenameCastleRequest,
    RenameCastleResponse,
    SelectCastleRequest,
    SelectCastleResponse,
)
from .chat import (
    AllianceChatLogRequest,
    AllianceChatLogResponse,
    AllianceChatMessageRequest,
    AllianceChatMessageResponse,
    ChatLogEntry,
    ChatMessageData,
)
from .inventory import SCEItem
from .lords import GetLordsRequest, GetLordsResponse, Lord
from .map import (
    FindNPCRequest,
    FindNPCResponse,
    GetMapAreaRequest,
    GetMapAreaResponse,
    GetMovementsRequest,
    GetMovementsResponse,
    GetTargetInfoRequest,
    GetTargetInfoResponse,
    Kingdom,
    MapAreaItem,
    MapItemType,
    MapObject,
    Movement,
    NPCLocation,
    TargetInfo,
)
from .player import (
    LOCATION_TYPES,
    GetPlayerInfoRequest,
    GetPlayerInfoResponse,
    LocationCapture,
    PlayerOwnerInfo,
    get_location_type_name,
)

__all__ = [
    # Base
    "GGECommand",
    "DEFAULT_ZONE",
    "HelpType",
    "ProductionListType",
    "BasePayload",
    "BaseRequest",
    "BaseResponse",
    "ErrorResponse",
    "Position",
    "ResourceAmount",
    "UnitCount",
    "PlayerInfo",
    "encode_chat_text",
    "decode_chat_text",
    "get_response_model",
    "parse_response",
    # Auth
    "LoginRequest",
    "LoginResponse",
    "PlayerData",
    "RegisterRequest",
    "RegisterResponse",
    "CheckUsernameAvailableRequest",
    "CheckUsernameAvailableResponse",
    "CheckUsernameExistsRequest",
    "CheckUsernameExistsResponse",
    "PasswordRecoveryRequest",
    "PasswordRecoveryResponse",
    # Chat
    "AllianceChatMessageRequest",
    "AllianceChatMessageResponse",
    "ChatMessageData",
    "AllianceChatLogRequest",
    "AllianceChatLogResponse",
    "ChatLogEntry",
    # Alliance
    "AllianceMember",
    "AllianceInfo",
    "AllianceBuilding",
    "AllianceStorage",
    "MemberEmblem",
    "MemberCastle",
    "AllianceBookmark",
    "GetAllianceBookmarksRequest",
    "GetAllianceBookmarksResponse",
    "GetAllianceInfoRequest",
    "GetAllianceInfoResponse",
    "HelpMemberRequest",
    "HelpMemberResponse",
    "HelpAllRequest",
    "HelpAllResponse",
    "AskHelpRequest",
    "AskHelpResponse",
    "HelpRequestNotification",
    "SearchAllianceRequest",
    "SearchAllianceResponse",
    "AllianceSearchResult",
    # Castle
    "GetCastlesRequest",
    "GetCastlesResponse",
    "CastleInfo",
    "GetDetailedCastleRequest",
    "GetDetailedCastleResponse",
    "DetailedCastleInfo",
    "BuildingInfo",
    "SelectCastleRequest",
    "SelectCastleResponse",
    "RenameCastleRequest",
    "RenameCastleResponse",
    "RelocateCastleRequest",
    "RelocateCastleResponse",
    "GetResourcesRequest",
    "GetResourcesResponse",
    "GetProductionRequest",
    "GetProductionResponse",
    "ProductionRates",
    # Map
    "Kingdom",
    "MapItemType",
    "MapAreaItem",
    "GetMapAreaRequest",
    "GetMapAreaResponse",
    "MapObject",
    "GetMovementsRequest",
    "GetMovementsResponse",
    "Movement",
    "FindNPCRequest",
    "FindNPCResponse",
    "NPCLocation",
    "GetTargetInfoRequest",
    "GetTargetInfoResponse",
    "TargetInfo",
    # Player
    "GetPlayerInfoRequest",
    "GetPlayerInfoResponse",
    "PlayerOwnerInfo",
    "LocationCapture",
    "LOCATION_TYPES",
    "get_location_type_name",
    # Attack
    "CreateAttackRequest",
    "CreateAttackResponse",
    "SendSpyRequest",
    "SendSpyResponse",
    "GetPresetsRequest",
    "GetPresetsResponse",
    "AttackPreset",
    "SkipAttackCooldownRequest",
    "SkipAttackCooldownResponse",
    "SkipDefenseCooldownRequest",
    "SkipDefenseCooldownResponse",
    # Building
    "BuildRequest",
    "BuildResponse",
    "UpgradeBuildingRequest",
    "UpgradeBuildingResponse",
    "MoveBuildingRequest",
    "MoveBuildingResponse",
    "SellBuildingRequest",
    "SellBuildingResponse",
    "DestroyBuildingRequest",
    "DestroyBuildingResponse",
    "FastCompleteRequest",
    "FastCompleteResponse",
    "TimeSkipBuildingRequest",
    "TimeSkipBuildingResponse",
    "UpgradeWallRequest",
    "UpgradeWallResponse",
    "RepairBuildingRequest",
    "RepairBuildingResponse",
    "RepairAllRequest",
    "RepairAllResponse",
    "BuyExtensionRequest",
    "BuyExtensionResponse",
    "CollectExtensionGiftRequest",
    "CollectExtensionGiftResponse",
    # Army
    "ProduceUnitsRequest",
    "ProduceUnitsResponse",
    "GetProductionQueueRequest",
    "GetProductionQueueResponse",
    "ProductionQueueItem",
    "DoubleProductionRequest",
    "DoubleProductionResponse",
    "CancelProductionRequest",
    "CancelProductionResponse",
    "GetUnitsRequest",
    "GetUnitsResponse",
    "DeleteUnitsRequest",
    "DeleteUnitsResponse",
    "HealUnitsRequest",
    "HealUnitsResponse",
    "CancelHealRequest",
    "CancelHealResponse",
    "SkipHealRequest",
    "SkipHealResponse",
    "DeleteWoundedRequest",
    "DeleteWoundedResponse",
    "HealAllRequest",
    "HealAllResponse",
    "SendSupportRequest",
    "SendSupportResponse",
    "GetLordsRequest",
    "GetLordsResponse",
    "Lord",
    "SCEItem",
]
