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 ZoneType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    ZONE_TYPE_UNSPECIFIED: _ClassVar[ZoneType]
    ZONE_TYPE_SANCTUARY: _ClassVar[ZoneType]
    ZONE_TYPE_OPEN_WORLD: _ClassVar[ZoneType]
    ZONE_TYPE_DUNGEON_INSTANCE: _ClassVar[ZoneType]
    ZONE_TYPE_SECRET_CHAMBER: _ClassVar[ZoneType]

class ZoneEnvironment(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    ENV_UNSPECIFIED: _ClassVar[ZoneEnvironment]
    ENV_NORMAL: _ClassVar[ZoneEnvironment]
    ENV_SANDSTORM: _ClassVar[ZoneEnvironment]
    ENV_MIASMA_TOXIC: _ClassVar[ZoneEnvironment]
    ENV_FREEZING_CHILL: _ClassVar[ZoneEnvironment]
    ENV_SCORCHING_HEAT: _ClassVar[ZoneEnvironment]
    ENV_VOID_CORRUPTION: _ClassVar[ZoneEnvironment]
ZONE_TYPE_UNSPECIFIED: ZoneType
ZONE_TYPE_SANCTUARY: ZoneType
ZONE_TYPE_OPEN_WORLD: ZoneType
ZONE_TYPE_DUNGEON_INSTANCE: ZoneType
ZONE_TYPE_SECRET_CHAMBER: ZoneType
ENV_UNSPECIFIED: ZoneEnvironment
ENV_NORMAL: ZoneEnvironment
ENV_SANDSTORM: ZoneEnvironment
ENV_MIASMA_TOXIC: ZoneEnvironment
ENV_FREEZING_CHILL: ZoneEnvironment
ENV_SCORCHING_HEAT: ZoneEnvironment
ENV_VOID_CORRUPTION: ZoneEnvironment

class WaypointData(_message.Message):
    __slots__ = ("waypoint_id", "name", "zone_id", "x", "y", "z", "is_unlocked")
    WAYPOINT_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    X_FIELD_NUMBER: _ClassVar[int]
    Y_FIELD_NUMBER: _ClassVar[int]
    Z_FIELD_NUMBER: _ClassVar[int]
    IS_UNLOCKED_FIELD_NUMBER: _ClassVar[int]
    waypoint_id: str
    name: str
    zone_id: str
    x: float
    y: float
    z: float
    is_unlocked: bool
    def __init__(self, waypoint_id: _Optional[str] = ..., name: _Optional[str] = ..., zone_id: _Optional[str] = ..., x: _Optional[float] = ..., y: _Optional[float] = ..., z: _Optional[float] = ..., is_unlocked: _Optional[bool] = ...) -> None: ...

class ZonePortalData(_message.Message):
    __slots__ = ("portal_id", "name", "source_zone_id", "source_x", "source_y", "target_zone_id", "target_x", "target_y", "min_level", "required_quest_id")
    PORTAL_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    SOURCE_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    SOURCE_X_FIELD_NUMBER: _ClassVar[int]
    SOURCE_Y_FIELD_NUMBER: _ClassVar[int]
    TARGET_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    TARGET_X_FIELD_NUMBER: _ClassVar[int]
    TARGET_Y_FIELD_NUMBER: _ClassVar[int]
    MIN_LEVEL_FIELD_NUMBER: _ClassVar[int]
    REQUIRED_QUEST_ID_FIELD_NUMBER: _ClassVar[int]
    portal_id: str
    name: str
    source_zone_id: str
    source_x: float
    source_y: float
    target_zone_id: str
    target_x: float
    target_y: float
    min_level: int
    required_quest_id: str
    def __init__(self, portal_id: _Optional[str] = ..., name: _Optional[str] = ..., source_zone_id: _Optional[str] = ..., source_x: _Optional[float] = ..., source_y: _Optional[float] = ..., target_zone_id: _Optional[str] = ..., target_x: _Optional[float] = ..., target_y: _Optional[float] = ..., min_level: _Optional[int] = ..., required_quest_id: _Optional[str] = ...) -> None: ...

class ZoneInfoPayload(_message.Message):
    __slots__ = ("zone_id", "name", "zone_type", "environment", "min_level", "bounds_width", "bounds_height", "waypoints", "portals", "npc_ids")
    ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    ZONE_TYPE_FIELD_NUMBER: _ClassVar[int]
    ENVIRONMENT_FIELD_NUMBER: _ClassVar[int]
    MIN_LEVEL_FIELD_NUMBER: _ClassVar[int]
    BOUNDS_WIDTH_FIELD_NUMBER: _ClassVar[int]
    BOUNDS_HEIGHT_FIELD_NUMBER: _ClassVar[int]
    WAYPOINTS_FIELD_NUMBER: _ClassVar[int]
    PORTALS_FIELD_NUMBER: _ClassVar[int]
    NPC_IDS_FIELD_NUMBER: _ClassVar[int]
    zone_id: str
    name: str
    zone_type: ZoneType
    environment: ZoneEnvironment
    min_level: int
    bounds_width: float
    bounds_height: float
    waypoints: _containers.RepeatedCompositeFieldContainer[WaypointData]
    portals: _containers.RepeatedCompositeFieldContainer[ZonePortalData]
    npc_ids: _containers.RepeatedScalarFieldContainer[str]
    def __init__(self, zone_id: _Optional[str] = ..., name: _Optional[str] = ..., zone_type: _Optional[_Union[ZoneType, str]] = ..., environment: _Optional[_Union[ZoneEnvironment, str]] = ..., min_level: _Optional[int] = ..., bounds_width: _Optional[float] = ..., bounds_height: _Optional[float] = ..., waypoints: _Optional[_Iterable[_Union[WaypointData, _Mapping]]] = ..., portals: _Optional[_Iterable[_Union[ZonePortalData, _Mapping]]] = ..., npc_ids: _Optional[_Iterable[str]] = ...) -> None: ...

class EnterZoneRequest(_message.Message):
    __slots__ = ("player_id", "portal_id", "player_level")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    PORTAL_ID_FIELD_NUMBER: _ClassVar[int]
    PLAYER_LEVEL_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    portal_id: str
    player_level: int
    def __init__(self, player_id: _Optional[str] = ..., portal_id: _Optional[str] = ..., player_level: _Optional[int] = ...) -> None: ...

class EnterZoneResponse(_message.Message):
    __slots__ = ("success", "error_message", "current_zone", "spawn_x", "spawn_y")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    CURRENT_ZONE_FIELD_NUMBER: _ClassVar[int]
    SPAWN_X_FIELD_NUMBER: _ClassVar[int]
    SPAWN_Y_FIELD_NUMBER: _ClassVar[int]
    success: bool
    error_message: str
    current_zone: ZoneInfoPayload
    spawn_x: float
    spawn_y: float
    def __init__(self, success: _Optional[bool] = ..., error_message: _Optional[str] = ..., current_zone: _Optional[_Union[ZoneInfoPayload, _Mapping]] = ..., spawn_x: _Optional[float] = ..., spawn_y: _Optional[float] = ...) -> None: ...

class WaypointTeleportRequest(_message.Message):
    __slots__ = ("player_id", "target_waypoint_id")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    TARGET_WAYPOINT_ID_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    target_waypoint_id: str
    def __init__(self, player_id: _Optional[str] = ..., target_waypoint_id: _Optional[str] = ...) -> None: ...

class WaypointTeleportResponse(_message.Message):
    __slots__ = ("success", "error_message", "target_zone_id", "target_x", "target_y")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    TARGET_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    TARGET_X_FIELD_NUMBER: _ClassVar[int]
    TARGET_Y_FIELD_NUMBER: _ClassVar[int]
    success: bool
    error_message: str
    target_zone_id: str
    target_x: float
    target_y: float
    def __init__(self, success: _Optional[bool] = ..., error_message: _Optional[str] = ..., target_zone_id: _Optional[str] = ..., target_x: _Optional[float] = ..., target_y: _Optional[float] = ...) -> None: ...

class CreateInstanceRequest(_message.Message):
    __slots__ = ("template_id", "leader_player_id", "member_player_ids", "leader_level")
    TEMPLATE_ID_FIELD_NUMBER: _ClassVar[int]
    LEADER_PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    MEMBER_PLAYER_IDS_FIELD_NUMBER: _ClassVar[int]
    LEADER_LEVEL_FIELD_NUMBER: _ClassVar[int]
    template_id: str
    leader_player_id: str
    member_player_ids: _containers.RepeatedScalarFieldContainer[str]
    leader_level: int
    def __init__(self, template_id: _Optional[str] = ..., leader_player_id: _Optional[str] = ..., member_player_ids: _Optional[_Iterable[str]] = ..., leader_level: _Optional[int] = ...) -> None: ...

class CreateInstanceResponse(_message.Message):
    __slots__ = ("success", "error_message", "instance_id", "current_layer", "max_layers", "time_limit_sec", "lives_remaining")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
    CURRENT_LAYER_FIELD_NUMBER: _ClassVar[int]
    MAX_LAYERS_FIELD_NUMBER: _ClassVar[int]
    TIME_LIMIT_SEC_FIELD_NUMBER: _ClassVar[int]
    LIVES_REMAINING_FIELD_NUMBER: _ClassVar[int]
    success: bool
    error_message: str
    instance_id: str
    current_layer: int
    max_layers: int
    time_limit_sec: int
    lives_remaining: int
    def __init__(self, success: _Optional[bool] = ..., error_message: _Optional[str] = ..., instance_id: _Optional[str] = ..., current_layer: _Optional[int] = ..., max_layers: _Optional[int] = ..., time_limit_sec: _Optional[int] = ..., lives_remaining: _Optional[int] = ...) -> None: ...

class InstanceProgressSyncNotice(_message.Message):
    __slots__ = ("instance_id", "current_layer", "max_layers", "lives_remaining", "is_completed", "is_failed")
    INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
    CURRENT_LAYER_FIELD_NUMBER: _ClassVar[int]
    MAX_LAYERS_FIELD_NUMBER: _ClassVar[int]
    LIVES_REMAINING_FIELD_NUMBER: _ClassVar[int]
    IS_COMPLETED_FIELD_NUMBER: _ClassVar[int]
    IS_FAILED_FIELD_NUMBER: _ClassVar[int]
    instance_id: str
    current_layer: int
    max_layers: int
    lives_remaining: int
    is_completed: bool
    is_failed: bool
    def __init__(self, instance_id: _Optional[str] = ..., current_layer: _Optional[int] = ..., max_layers: _Optional[int] = ..., lives_remaining: _Optional[int] = ..., is_completed: _Optional[bool] = ..., is_failed: _Optional[bool] = ...) -> None: ...

class SecretChamberRevealNotice(_message.Message):
    __slots__ = ("chamber_id", "template_id", "chamber_name", "portal_zone_id", "portal_x", "portal_y", "collapse_timestamp_ms")
    CHAMBER_ID_FIELD_NUMBER: _ClassVar[int]
    TEMPLATE_ID_FIELD_NUMBER: _ClassVar[int]
    CHAMBER_NAME_FIELD_NUMBER: _ClassVar[int]
    PORTAL_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    PORTAL_X_FIELD_NUMBER: _ClassVar[int]
    PORTAL_Y_FIELD_NUMBER: _ClassVar[int]
    COLLAPSE_TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
    chamber_id: str
    template_id: str
    chamber_name: str
    portal_zone_id: str
    portal_x: float
    portal_y: float
    collapse_timestamp_ms: int
    def __init__(self, chamber_id: _Optional[str] = ..., template_id: _Optional[str] = ..., chamber_name: _Optional[str] = ..., portal_zone_id: _Optional[str] = ..., portal_x: _Optional[float] = ..., portal_y: _Optional[float] = ..., collapse_timestamp_ms: _Optional[int] = ...) -> None: ...

class EnterSecretChamberRequest(_message.Message):
    __slots__ = ("player_id", "chamber_id")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    CHAMBER_ID_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    chamber_id: str
    def __init__(self, player_id: _Optional[str] = ..., chamber_id: _Optional[str] = ...) -> None: ...

class EnterSecretChamberResponse(_message.Message):
    __slots__ = ("success", "error_message", "chamber_zone_id", "remaining_time_sec")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    CHAMBER_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    REMAINING_TIME_SEC_FIELD_NUMBER: _ClassVar[int]
    success: bool
    error_message: str
    chamber_zone_id: str
    remaining_time_sec: int
    def __init__(self, success: _Optional[bool] = ..., error_message: _Optional[str] = ..., chamber_zone_id: _Optional[str] = ..., remaining_time_sec: _Optional[int] = ...) -> None: ...

class MapExplorationSyncNotice(_message.Message):
    __slots__ = ("zone_id", "exploration_percent", "unlocked_waypoint_ids")
    ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    EXPLORATION_PERCENT_FIELD_NUMBER: _ClassVar[int]
    UNLOCKED_WAYPOINT_IDS_FIELD_NUMBER: _ClassVar[int]
    zone_id: str
    exploration_percent: float
    unlocked_waypoint_ids: _containers.RepeatedScalarFieldContainer[str]
    def __init__(self, zone_id: _Optional[str] = ..., exploration_percent: _Optional[float] = ..., unlocked_waypoint_ids: _Optional[_Iterable[str]] = ...) -> None: ...
