from google.protobuf.internal import containers as _containers
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class LeagueType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    LEAGUE_TYPE_UNSPECIFIED: _ClassVar[LeagueType]
    LEAGUE_TYPE_STANDARD: _ClassVar[LeagueType]
    LEAGUE_TYPE_CHALLENGE: _ClassVar[LeagueType]
    LEAGUE_TYPE_HARDCORE: _ClassVar[LeagueType]
    LEAGUE_TYPE_SOLO_SELF_FOUND: _ClassVar[LeagueType]

class LeagueStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    LEAGUE_STATUS_UNSPECIFIED: _ClassVar[LeagueStatus]
    LEAGUE_STATUS_UPCOMING: _ClassVar[LeagueStatus]
    LEAGUE_STATUS_ACTIVE: _ClassVar[LeagueStatus]
    LEAGUE_STATUS_FREEZING: _ClassVar[LeagueStatus]
    LEAGUE_STATUS_MIGRATING: _ClassVar[LeagueStatus]
    LEAGUE_STATUS_ARCHIVED: _ClassVar[LeagueStatus]
LEAGUE_TYPE_UNSPECIFIED: LeagueType
LEAGUE_TYPE_STANDARD: LeagueType
LEAGUE_TYPE_CHALLENGE: LeagueType
LEAGUE_TYPE_HARDCORE: LeagueType
LEAGUE_TYPE_SOLO_SELF_FOUND: LeagueType
LEAGUE_STATUS_UNSPECIFIED: LeagueStatus
LEAGUE_STATUS_UPCOMING: LeagueStatus
LEAGUE_STATUS_ACTIVE: LeagueStatus
LEAGUE_STATUS_FREEZING: LeagueStatus
LEAGUE_STATUS_MIGRATING: LeagueStatus
LEAGUE_STATUS_ARCHIVED: LeagueStatus

class LeagueInfo(_message.Message):
    __slots__ = ("league_id", "display_name", "league_type", "status", "start_time_epoch_ms", "end_time_epoch_ms", "big_update_version", "mechanic_flags", "active_players")
    class MechanicFlagsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    LEAGUE_ID_FIELD_NUMBER: _ClassVar[int]
    DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
    LEAGUE_TYPE_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    START_TIME_EPOCH_MS_FIELD_NUMBER: _ClassVar[int]
    END_TIME_EPOCH_MS_FIELD_NUMBER: _ClassVar[int]
    BIG_UPDATE_VERSION_FIELD_NUMBER: _ClassVar[int]
    MECHANIC_FLAGS_FIELD_NUMBER: _ClassVar[int]
    ACTIVE_PLAYERS_FIELD_NUMBER: _ClassVar[int]
    league_id: str
    display_name: str
    league_type: LeagueType
    status: LeagueStatus
    start_time_epoch_ms: int
    end_time_epoch_ms: int
    big_update_version: str
    mechanic_flags: _containers.ScalarMap[str, str]
    active_players: int
    def __init__(self, league_id: _Optional[str] = ..., display_name: _Optional[str] = ..., league_type: _Optional[_Union[LeagueType, str]] = ..., status: _Optional[_Union[LeagueStatus, str]] = ..., start_time_epoch_ms: _Optional[int] = ..., end_time_epoch_ms: _Optional[int] = ..., big_update_version: _Optional[str] = ..., mechanic_flags: _Optional[_Mapping[str, str]] = ..., active_players: _Optional[int] = ...) -> None: ...

class StashTabItem(_message.Message):
    __slots__ = ("item_uuid", "item_name", "item_type", "item_level", "rarity", "stack_count", "raw_json_properties")
    ITEM_UUID_FIELD_NUMBER: _ClassVar[int]
    ITEM_NAME_FIELD_NUMBER: _ClassVar[int]
    ITEM_TYPE_FIELD_NUMBER: _ClassVar[int]
    ITEM_LEVEL_FIELD_NUMBER: _ClassVar[int]
    RARITY_FIELD_NUMBER: _ClassVar[int]
    STACK_COUNT_FIELD_NUMBER: _ClassVar[int]
    RAW_JSON_PROPERTIES_FIELD_NUMBER: _ClassVar[int]
    item_uuid: str
    item_name: str
    item_type: str
    item_level: int
    rarity: str
    stack_count: int
    raw_json_properties: str
    def __init__(self, item_uuid: _Optional[str] = ..., item_name: _Optional[str] = ..., item_type: _Optional[str] = ..., item_level: _Optional[int] = ..., rarity: _Optional[str] = ..., stack_count: _Optional[int] = ..., raw_json_properties: _Optional[str] = ...) -> None: ...

class StashTab(_message.Message):
    __slots__ = ("tab_id", "tab_name", "league_id", "is_remove_only", "color_hex", "slot_capacity", "items")
    TAB_ID_FIELD_NUMBER: _ClassVar[int]
    TAB_NAME_FIELD_NUMBER: _ClassVar[int]
    LEAGUE_ID_FIELD_NUMBER: _ClassVar[int]
    IS_REMOVE_ONLY_FIELD_NUMBER: _ClassVar[int]
    COLOR_HEX_FIELD_NUMBER: _ClassVar[int]
    SLOT_CAPACITY_FIELD_NUMBER: _ClassVar[int]
    ITEMS_FIELD_NUMBER: _ClassVar[int]
    tab_id: str
    tab_name: str
    league_id: str
    is_remove_only: bool
    color_hex: str
    slot_capacity: int
    items: _containers.RepeatedCompositeFieldContainer[StashTabItem]
    def __init__(self, tab_id: _Optional[str] = ..., tab_name: _Optional[str] = ..., league_id: _Optional[str] = ..., is_remove_only: _Optional[bool] = ..., color_hex: _Optional[str] = ..., slot_capacity: _Optional[int] = ..., items: _Optional[_Iterable[_Union[StashTabItem, _Mapping]]] = ...) -> None: ...

class SeasonCharacterSummary(_message.Message):
    __slots__ = ("character_id", "account_id", "character_name", "league_id", "level", "martial_class", "is_alive", "created_at_ms", "last_played_ms")
    CHARACTER_ID_FIELD_NUMBER: _ClassVar[int]
    ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int]
    CHARACTER_NAME_FIELD_NUMBER: _ClassVar[int]
    LEAGUE_ID_FIELD_NUMBER: _ClassVar[int]
    LEVEL_FIELD_NUMBER: _ClassVar[int]
    MARTIAL_CLASS_FIELD_NUMBER: _ClassVar[int]
    IS_ALIVE_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_MS_FIELD_NUMBER: _ClassVar[int]
    LAST_PLAYED_MS_FIELD_NUMBER: _ClassVar[int]
    character_id: str
    account_id: str
    character_name: str
    league_id: str
    level: int
    martial_class: str
    is_alive: bool
    created_at_ms: int
    last_played_ms: int
    def __init__(self, character_id: _Optional[str] = ..., account_id: _Optional[str] = ..., character_name: _Optional[str] = ..., league_id: _Optional[str] = ..., level: _Optional[int] = ..., martial_class: _Optional[str] = ..., is_alive: _Optional[bool] = ..., created_at_ms: _Optional[int] = ..., last_played_ms: _Optional[int] = ...) -> None: ...

class GetLeaguesRequest(_message.Message):
    __slots__ = ("account_id",)
    ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int]
    account_id: str
    def __init__(self, account_id: _Optional[str] = ...) -> None: ...

class GetLeaguesResponse(_message.Message):
    __slots__ = ("available_leagues", "current_active_season_id")
    AVAILABLE_LEAGUES_FIELD_NUMBER: _ClassVar[int]
    CURRENT_ACTIVE_SEASON_ID_FIELD_NUMBER: _ClassVar[int]
    available_leagues: _containers.RepeatedCompositeFieldContainer[LeagueInfo]
    current_active_season_id: str
    def __init__(self, available_leagues: _Optional[_Iterable[_Union[LeagueInfo, _Mapping]]] = ..., current_active_season_id: _Optional[str] = ...) -> None: ...

class CreateSeasonCharacterRequest(_message.Message):
    __slots__ = ("account_id", "character_name", "martial_class", "league_id")
    ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int]
    CHARACTER_NAME_FIELD_NUMBER: _ClassVar[int]
    MARTIAL_CLASS_FIELD_NUMBER: _ClassVar[int]
    LEAGUE_ID_FIELD_NUMBER: _ClassVar[int]
    account_id: str
    character_name: str
    martial_class: str
    league_id: str
    def __init__(self, account_id: _Optional[str] = ..., character_name: _Optional[str] = ..., martial_class: _Optional[str] = ..., league_id: _Optional[str] = ...) -> None: ...

class CreateSeasonCharacterResponse(_message.Message):
    __slots__ = ("success", "message", "character")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    CHARACTER_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    character: SeasonCharacterSummary
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., character: _Optional[_Union[SeasonCharacterSummary, _Mapping]] = ...) -> None: ...

class SeasonMigrationNotice(_message.Message):
    __slots__ = ("expiring_league_id", "target_standard_league_id", "freeze_timestamp_ms", "maintenance_message")
    EXPIRING_LEAGUE_ID_FIELD_NUMBER: _ClassVar[int]
    TARGET_STANDARD_LEAGUE_ID_FIELD_NUMBER: _ClassVar[int]
    FREEZE_TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
    MAINTENANCE_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    expiring_league_id: str
    target_standard_league_id: str
    freeze_timestamp_ms: int
    maintenance_message: str
    def __init__(self, expiring_league_id: _Optional[str] = ..., target_standard_league_id: _Optional[str] = ..., freeze_timestamp_ms: _Optional[int] = ..., maintenance_message: _Optional[str] = ...) -> None: ...
