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 Mapping as _Mapping
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class TeleportTargetType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    TARGET_UNSPECIFIED: _ClassVar[TeleportTargetType]
    TARGET_PARTY_MEMBER: _ClassVar[TeleportTargetType]
    TARGET_FRIEND: _ClassVar[TeleportTargetType]
    TARGET_GUILDMATE: _ClassVar[TeleportTargetType]
    TARGET_TOWN_PORTAL: _ClassVar[TeleportTargetType]

class TeleportChannelState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    CHANNEL_IDLE: _ClassVar[TeleportChannelState]
    CHANNEL_CASTING: _ClassVar[TeleportChannelState]
    CHANNEL_COMPLETED: _ClassVar[TeleportChannelState]
    CHANNEL_INTERRUPTED: _ClassVar[TeleportChannelState]
    CHANNEL_FAILED: _ClassVar[TeleportChannelState]

class TeleportCancelReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    REASON_NONE: _ClassVar[TeleportCancelReason]
    REASON_MOVEMENT: _ClassVar[TeleportCancelReason]
    REASON_DAMAGE_TAKEN: _ClassVar[TeleportCancelReason]
    REASON_TARGET_OFFLINE: _ClassVar[TeleportCancelReason]
    REASON_TARGET_DIFFERENT_REALM: _ClassVar[TeleportCancelReason]
    REASON_DESTINATION_FULL: _ClassVar[TeleportCancelReason]
    REASON_DESTINATION_QUARANTINED: _ClassVar[TeleportCancelReason]
    REASON_MANUAL_CANCEL: _ClassVar[TeleportCancelReason]

class QuarantineErrorCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    QUARANTINE_OK: _ClassVar[QuarantineErrorCode]
    QUARANTINE_BOSS_COMBAT_ACTIVE: _ClassVar[QuarantineErrorCode]
    QUARANTINE_SECRET_CHAMBER_ACTIVE: _ClassVar[QuarantineErrorCode]
    QUARANTINE_MAX_PORTALS_EXHAUSTED: _ClassVar[QuarantineErrorCode]
    QUARANTINE_ZONE_DISALLOWS_PORTAL: _ClassVar[QuarantineErrorCode]
    QUARANTINE_REALM_MISMATCH: _ClassVar[QuarantineErrorCode]
TARGET_UNSPECIFIED: TeleportTargetType
TARGET_PARTY_MEMBER: TeleportTargetType
TARGET_FRIEND: TeleportTargetType
TARGET_GUILDMATE: TeleportTargetType
TARGET_TOWN_PORTAL: TeleportTargetType
CHANNEL_IDLE: TeleportChannelState
CHANNEL_CASTING: TeleportChannelState
CHANNEL_COMPLETED: TeleportChannelState
CHANNEL_INTERRUPTED: TeleportChannelState
CHANNEL_FAILED: TeleportChannelState
REASON_NONE: TeleportCancelReason
REASON_MOVEMENT: TeleportCancelReason
REASON_DAMAGE_TAKEN: TeleportCancelReason
REASON_TARGET_OFFLINE: TeleportCancelReason
REASON_TARGET_DIFFERENT_REALM: TeleportCancelReason
REASON_DESTINATION_FULL: TeleportCancelReason
REASON_DESTINATION_QUARANTINED: TeleportCancelReason
REASON_MANUAL_CANCEL: TeleportCancelReason
QUARANTINE_OK: QuarantineErrorCode
QUARANTINE_BOSS_COMBAT_ACTIVE: QuarantineErrorCode
QUARANTINE_SECRET_CHAMBER_ACTIVE: QuarantineErrorCode
QUARANTINE_MAX_PORTALS_EXHAUSTED: QuarantineErrorCode
QUARANTINE_ZONE_DISALLOWS_PORTAL: QuarantineErrorCode
QUARANTINE_REALM_MISMATCH: QuarantineErrorCode

class TeleportChannelProgress(_message.Message):
    __slots__ = ("player_id", "target_type", "target_id", "channel_state", "cast_time_seconds", "elapsed_seconds", "cancel_reason", "channel_start_timestamp_ms")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    TARGET_TYPE_FIELD_NUMBER: _ClassVar[int]
    TARGET_ID_FIELD_NUMBER: _ClassVar[int]
    CHANNEL_STATE_FIELD_NUMBER: _ClassVar[int]
    CAST_TIME_SECONDS_FIELD_NUMBER: _ClassVar[int]
    ELAPSED_SECONDS_FIELD_NUMBER: _ClassVar[int]
    CANCEL_REASON_FIELD_NUMBER: _ClassVar[int]
    CHANNEL_START_TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    target_type: TeleportTargetType
    target_id: str
    channel_state: TeleportChannelState
    cast_time_seconds: float
    elapsed_seconds: float
    cancel_reason: TeleportCancelReason
    channel_start_timestamp_ms: int
    def __init__(self, player_id: _Optional[str] = ..., target_type: _Optional[_Union[TeleportTargetType, str]] = ..., target_id: _Optional[str] = ..., channel_state: _Optional[_Union[TeleportChannelState, str]] = ..., cast_time_seconds: _Optional[float] = ..., elapsed_seconds: _Optional[float] = ..., cancel_reason: _Optional[_Union[TeleportCancelReason, str]] = ..., channel_start_timestamp_ms: _Optional[int] = ...) -> None: ...

class TownPortalLink(_message.Message):
    __slots__ = ("portal_id", "owner_id", "wilderness_zone_id", "wilderness_instance_id", "wilderness_x", "wilderness_y", "sanctuary_zone_id", "sanctuary_instance_id", "sanctuary_x", "sanctuary_y", "remaining_charges", "is_open", "created_at_ms")
    PORTAL_ID_FIELD_NUMBER: _ClassVar[int]
    OWNER_ID_FIELD_NUMBER: _ClassVar[int]
    WILDERNESS_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    WILDERNESS_INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
    WILDERNESS_X_FIELD_NUMBER: _ClassVar[int]
    WILDERNESS_Y_FIELD_NUMBER: _ClassVar[int]
    SANCTUARY_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    SANCTUARY_INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
    SANCTUARY_X_FIELD_NUMBER: _ClassVar[int]
    SANCTUARY_Y_FIELD_NUMBER: _ClassVar[int]
    REMAINING_CHARGES_FIELD_NUMBER: _ClassVar[int]
    IS_OPEN_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_MS_FIELD_NUMBER: _ClassVar[int]
    portal_id: str
    owner_id: str
    wilderness_zone_id: str
    wilderness_instance_id: str
    wilderness_x: float
    wilderness_y: float
    sanctuary_zone_id: str
    sanctuary_instance_id: str
    sanctuary_x: float
    sanctuary_y: float
    remaining_charges: int
    is_open: bool
    created_at_ms: int
    def __init__(self, portal_id: _Optional[str] = ..., owner_id: _Optional[str] = ..., wilderness_zone_id: _Optional[str] = ..., wilderness_instance_id: _Optional[str] = ..., wilderness_x: _Optional[float] = ..., wilderness_y: _Optional[float] = ..., sanctuary_zone_id: _Optional[str] = ..., sanctuary_instance_id: _Optional[str] = ..., sanctuary_x: _Optional[float] = ..., sanctuary_y: _Optional[float] = ..., remaining_charges: _Optional[int] = ..., is_open: _Optional[bool] = ..., created_at_ms: _Optional[int] = ...) -> None: ...

class StartTeleportChannelRequest(_message.Message):
    __slots__ = ("player_id", "target_type", "target_id")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    TARGET_TYPE_FIELD_NUMBER: _ClassVar[int]
    TARGET_ID_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    target_type: TeleportTargetType
    target_id: str
    def __init__(self, player_id: _Optional[str] = ..., target_type: _Optional[_Union[TeleportTargetType, str]] = ..., target_id: _Optional[str] = ...) -> None: ...

class StartTeleportChannelResponse(_message.Message):
    __slots__ = ("success", "cast_time_seconds", "error_code", "error_message")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    CAST_TIME_SECONDS_FIELD_NUMBER: _ClassVar[int]
    ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    success: bool
    cast_time_seconds: float
    error_code: QuarantineErrorCode
    error_message: str
    def __init__(self, success: _Optional[bool] = ..., cast_time_seconds: _Optional[float] = ..., error_code: _Optional[_Union[QuarantineErrorCode, str]] = ..., error_message: _Optional[str] = ...) -> None: ...

class InterruptTeleportChannelNotice(_message.Message):
    __slots__ = ("player_id", "reason", "details")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    REASON_FIELD_NUMBER: _ClassVar[int]
    DETAILS_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    reason: TeleportCancelReason
    details: str
    def __init__(self, player_id: _Optional[str] = ..., reason: _Optional[_Union[TeleportCancelReason, str]] = ..., details: _Optional[str] = ...) -> None: ...

class OpenTownPortalRequest(_message.Message):
    __slots__ = ("player_id", "current_zone_id", "current_instance_id", "pos_x", "pos_y")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    CURRENT_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    CURRENT_INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
    POS_X_FIELD_NUMBER: _ClassVar[int]
    POS_Y_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    current_zone_id: str
    current_instance_id: str
    pos_x: float
    pos_y: float
    def __init__(self, player_id: _Optional[str] = ..., current_zone_id: _Optional[str] = ..., current_instance_id: _Optional[str] = ..., pos_x: _Optional[float] = ..., pos_y: _Optional[float] = ...) -> None: ...

class OpenTownPortalResponse(_message.Message):
    __slots__ = ("success", "portal_link", "error_code", "error_message")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    PORTAL_LINK_FIELD_NUMBER: _ClassVar[int]
    ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    success: bool
    portal_link: TownPortalLink
    error_code: QuarantineErrorCode
    error_message: str
    def __init__(self, success: _Optional[bool] = ..., portal_link: _Optional[_Union[TownPortalLink, _Mapping]] = ..., error_code: _Optional[_Union[QuarantineErrorCode, str]] = ..., error_message: _Optional[str] = ...) -> None: ...

class EnterTownPortalRequest(_message.Message):
    __slots__ = ("player_id", "portal_id", "to_sanctuary")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    PORTAL_ID_FIELD_NUMBER: _ClassVar[int]
    TO_SANCTUARY_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    portal_id: str
    to_sanctuary: bool
    def __init__(self, player_id: _Optional[str] = ..., portal_id: _Optional[str] = ..., to_sanctuary: _Optional[bool] = ...) -> None: ...

class EnterTownPortalResponse(_message.Message):
    __slots__ = ("success", "destination_zone_id", "destination_instance_id", "spawn_x", "spawn_y", "remaining_charges", "error_code", "error_message")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    DESTINATION_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    DESTINATION_INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
    SPAWN_X_FIELD_NUMBER: _ClassVar[int]
    SPAWN_Y_FIELD_NUMBER: _ClassVar[int]
    REMAINING_CHARGES_FIELD_NUMBER: _ClassVar[int]
    ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    success: bool
    destination_zone_id: str
    destination_instance_id: str
    spawn_x: float
    spawn_y: float
    remaining_charges: int
    error_code: QuarantineErrorCode
    error_message: str
    def __init__(self, success: _Optional[bool] = ..., destination_zone_id: _Optional[str] = ..., destination_instance_id: _Optional[str] = ..., spawn_x: _Optional[float] = ..., spawn_y: _Optional[float] = ..., remaining_charges: _Optional[int] = ..., error_code: _Optional[_Union[QuarantineErrorCode, str]] = ..., error_message: _Optional[str] = ...) -> None: ...

class CheckQuarantineRequest(_message.Message):
    __slots__ = ("zone_id", "instance_id", "player_id")
    ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    zone_id: str
    instance_id: str
    player_id: str
    def __init__(self, zone_id: _Optional[str] = ..., instance_id: _Optional[str] = ..., player_id: _Optional[str] = ...) -> None: ...

class CheckQuarantineResponse(_message.Message):
    __slots__ = ("is_quarantined", "error_code", "reason")
    IS_QUARANTINED_FIELD_NUMBER: _ClassVar[int]
    ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
    REASON_FIELD_NUMBER: _ClassVar[int]
    is_quarantined: bool
    error_code: QuarantineErrorCode
    reason: str
    def __init__(self, is_quarantined: _Optional[bool] = ..., error_code: _Optional[_Union[QuarantineErrorCode, str]] = ..., reason: _Optional[str] = ...) -> None: ...

class PlayerDeathPortalPenaltyNotice(_message.Message):
    __slots__ = ("player_id", "portal_id", "portal_closed", "remaining_charges")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    PORTAL_ID_FIELD_NUMBER: _ClassVar[int]
    PORTAL_CLOSED_FIELD_NUMBER: _ClassVar[int]
    REMAINING_CHARGES_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    portal_id: str
    portal_closed: bool
    remaining_charges: int
    def __init__(self, player_id: _Optional[str] = ..., portal_id: _Optional[str] = ..., portal_closed: _Optional[bool] = ..., remaining_charges: _Optional[int] = ...) -> None: ...
