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 LootAllocationMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    ALLOCATION_UNSPECIFIED: _ClassVar[LootAllocationMode]
    PERMANENT: _ClassVar[LootAllocationMode]
    SHORT: _ClassVar[LootAllocationMode]
    FREE_FOR_ALL: _ClassVar[LootAllocationMode]

class PartyRole(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    ROLE_UNSPECIFIED: _ClassVar[PartyRole]
    LEADER: _ClassVar[PartyRole]
    MEMBER: _ClassVar[PartyRole]

class PartyErrorCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    PARTY_OK: _ClassVar[PartyErrorCode]
    PARTY_ERR_NOT_IN_PARTY: _ClassVar[PartyErrorCode]
    PARTY_ERR_ALREADY_IN_PARTY: _ClassVar[PartyErrorCode]
    PARTY_ERR_PARTY_FULL: _ClassVar[PartyErrorCode]
    PARTY_ERR_NOT_LEADER: _ClassVar[PartyErrorCode]
    PARTY_ERR_TARGET_OFFLINE: _ClassVar[PartyErrorCode]
    PARTY_ERR_TARGET_BLOCKED: _ClassVar[PartyErrorCode]
    PARTY_ERR_REALM_MISMATCH: _ClassVar[PartyErrorCode]
    PARTY_ERR_INVITE_PENDING: _ClassVar[PartyErrorCode]
    PARTY_ERR_INVITE_NOT_FOUND: _ClassVar[PartyErrorCode]
    PARTY_ERR_TARGET_ALREADY_IN_PARTY: _ClassVar[PartyErrorCode]
ALLOCATION_UNSPECIFIED: LootAllocationMode
PERMANENT: LootAllocationMode
SHORT: LootAllocationMode
FREE_FOR_ALL: LootAllocationMode
ROLE_UNSPECIFIED: PartyRole
LEADER: PartyRole
MEMBER: PartyRole
PARTY_OK: PartyErrorCode
PARTY_ERR_NOT_IN_PARTY: PartyErrorCode
PARTY_ERR_ALREADY_IN_PARTY: PartyErrorCode
PARTY_ERR_PARTY_FULL: PartyErrorCode
PARTY_ERR_NOT_LEADER: PartyErrorCode
PARTY_ERR_TARGET_OFFLINE: PartyErrorCode
PARTY_ERR_TARGET_BLOCKED: PartyErrorCode
PARTY_ERR_REALM_MISMATCH: PartyErrorCode
PARTY_ERR_INVITE_PENDING: PartyErrorCode
PARTY_ERR_INVITE_NOT_FOUND: PartyErrorCode
PARTY_ERR_TARGET_ALREADY_IN_PARTY: PartyErrorCode

class PartyMemberState(_message.Message):
    __slots__ = ("player_id", "player_name", "character_class", "level", "role", "current_zone_id", "current_instance_id", "pos_x", "pos_y", "current_hp", "max_hp", "current_mana", "max_mana", "is_nearby", "is_online")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    PLAYER_NAME_FIELD_NUMBER: _ClassVar[int]
    CHARACTER_CLASS_FIELD_NUMBER: _ClassVar[int]
    LEVEL_FIELD_NUMBER: _ClassVar[int]
    ROLE_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]
    CURRENT_HP_FIELD_NUMBER: _ClassVar[int]
    MAX_HP_FIELD_NUMBER: _ClassVar[int]
    CURRENT_MANA_FIELD_NUMBER: _ClassVar[int]
    MAX_MANA_FIELD_NUMBER: _ClassVar[int]
    IS_NEARBY_FIELD_NUMBER: _ClassVar[int]
    IS_ONLINE_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    player_name: str
    character_class: str
    level: int
    role: PartyRole
    current_zone_id: str
    current_instance_id: str
    pos_x: float
    pos_y: float
    current_hp: float
    max_hp: float
    current_mana: float
    max_mana: float
    is_nearby: bool
    is_online: bool
    def __init__(self, player_id: _Optional[str] = ..., player_name: _Optional[str] = ..., character_class: _Optional[str] = ..., level: _Optional[int] = ..., role: _Optional[_Union[PartyRole, str]] = ..., current_zone_id: _Optional[str] = ..., current_instance_id: _Optional[str] = ..., pos_x: _Optional[float] = ..., pos_y: _Optional[float] = ..., current_hp: _Optional[float] = ..., max_hp: _Optional[float] = ..., current_mana: _Optional[float] = ..., max_mana: _Optional[float] = ..., is_nearby: _Optional[bool] = ..., is_online: _Optional[bool] = ...) -> None: ...

class PartyScalingStats(_message.Message):
    __slots__ = ("party_size", "nearby_members_count", "monster_hp_multiplier", "exp_bonus_pct", "item_quantity_bonus_pct", "currency_quantity_bonus_pct", "rarity_bonus_pct", "nearby_radius")
    PARTY_SIZE_FIELD_NUMBER: _ClassVar[int]
    NEARBY_MEMBERS_COUNT_FIELD_NUMBER: _ClassVar[int]
    MONSTER_HP_MULTIPLIER_FIELD_NUMBER: _ClassVar[int]
    EXP_BONUS_PCT_FIELD_NUMBER: _ClassVar[int]
    ITEM_QUANTITY_BONUS_PCT_FIELD_NUMBER: _ClassVar[int]
    CURRENCY_QUANTITY_BONUS_PCT_FIELD_NUMBER: _ClassVar[int]
    RARITY_BONUS_PCT_FIELD_NUMBER: _ClassVar[int]
    NEARBY_RADIUS_FIELD_NUMBER: _ClassVar[int]
    party_size: int
    nearby_members_count: int
    monster_hp_multiplier: float
    exp_bonus_pct: float
    item_quantity_bonus_pct: float
    currency_quantity_bonus_pct: float
    rarity_bonus_pct: float
    nearby_radius: float
    def __init__(self, party_size: _Optional[int] = ..., nearby_members_count: _Optional[int] = ..., monster_hp_multiplier: _Optional[float] = ..., exp_bonus_pct: _Optional[float] = ..., item_quantity_bonus_pct: _Optional[float] = ..., currency_quantity_bonus_pct: _Optional[float] = ..., rarity_bonus_pct: _Optional[float] = ..., nearby_radius: _Optional[float] = ...) -> None: ...

class PartyInfo(_message.Message):
    __slots__ = ("party_id", "leader_id", "allocation_mode", "short_allocation_timeout_sec", "members", "scaling_stats", "created_at_ms")
    PARTY_ID_FIELD_NUMBER: _ClassVar[int]
    LEADER_ID_FIELD_NUMBER: _ClassVar[int]
    ALLOCATION_MODE_FIELD_NUMBER: _ClassVar[int]
    SHORT_ALLOCATION_TIMEOUT_SEC_FIELD_NUMBER: _ClassVar[int]
    MEMBERS_FIELD_NUMBER: _ClassVar[int]
    SCALING_STATS_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_MS_FIELD_NUMBER: _ClassVar[int]
    party_id: str
    leader_id: str
    allocation_mode: LootAllocationMode
    short_allocation_timeout_sec: float
    members: _containers.RepeatedCompositeFieldContainer[PartyMemberState]
    scaling_stats: PartyScalingStats
    created_at_ms: int
    def __init__(self, party_id: _Optional[str] = ..., leader_id: _Optional[str] = ..., allocation_mode: _Optional[_Union[LootAllocationMode, str]] = ..., short_allocation_timeout_sec: _Optional[float] = ..., members: _Optional[_Iterable[_Union[PartyMemberState, _Mapping]]] = ..., scaling_stats: _Optional[_Union[PartyScalingStats, _Mapping]] = ..., created_at_ms: _Optional[int] = ...) -> None: ...

class CreatePartyRequest(_message.Message):
    __slots__ = ("player_id", "allocation_mode")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    ALLOCATION_MODE_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    allocation_mode: LootAllocationMode
    def __init__(self, player_id: _Optional[str] = ..., allocation_mode: _Optional[_Union[LootAllocationMode, str]] = ...) -> None: ...

class CreatePartyResponse(_message.Message):
    __slots__ = ("success", "party", "error_code", "error_message")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    PARTY_FIELD_NUMBER: _ClassVar[int]
    ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    success: bool
    party: PartyInfo
    error_code: PartyErrorCode
    error_message: str
    def __init__(self, success: _Optional[bool] = ..., party: _Optional[_Union[PartyInfo, _Mapping]] = ..., error_code: _Optional[_Union[PartyErrorCode, str]] = ..., error_message: _Optional[str] = ...) -> None: ...

class InvitePartyRequest(_message.Message):
    __slots__ = ("party_id", "inviter_id", "target_player_id")
    PARTY_ID_FIELD_NUMBER: _ClassVar[int]
    INVITER_ID_FIELD_NUMBER: _ClassVar[int]
    TARGET_PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    party_id: str
    inviter_id: str
    target_player_id: str
    def __init__(self, party_id: _Optional[str] = ..., inviter_id: _Optional[str] = ..., target_player_id: _Optional[str] = ...) -> None: ...

class InvitePartyResponse(_message.Message):
    __slots__ = ("success", "invite_id", "error_code", "error_message")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    INVITE_ID_FIELD_NUMBER: _ClassVar[int]
    ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    success: bool
    invite_id: str
    error_code: PartyErrorCode
    error_message: str
    def __init__(self, success: _Optional[bool] = ..., invite_id: _Optional[str] = ..., error_code: _Optional[_Union[PartyErrorCode, str]] = ..., error_message: _Optional[str] = ...) -> None: ...

class PartyInviteNotice(_message.Message):
    __slots__ = ("invite_id", "party_id", "inviter_id", "inviter_name", "expires_at_ms")
    INVITE_ID_FIELD_NUMBER: _ClassVar[int]
    PARTY_ID_FIELD_NUMBER: _ClassVar[int]
    INVITER_ID_FIELD_NUMBER: _ClassVar[int]
    INVITER_NAME_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_AT_MS_FIELD_NUMBER: _ClassVar[int]
    invite_id: str
    party_id: str
    inviter_id: str
    inviter_name: str
    expires_at_ms: int
    def __init__(self, invite_id: _Optional[str] = ..., party_id: _Optional[str] = ..., inviter_id: _Optional[str] = ..., inviter_name: _Optional[str] = ..., expires_at_ms: _Optional[int] = ...) -> None: ...

class RespondPartyInviteRequest(_message.Message):
    __slots__ = ("invite_id", "player_id", "accept")
    INVITE_ID_FIELD_NUMBER: _ClassVar[int]
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    ACCEPT_FIELD_NUMBER: _ClassVar[int]
    invite_id: str
    player_id: str
    accept: bool
    def __init__(self, invite_id: _Optional[str] = ..., player_id: _Optional[str] = ..., accept: _Optional[bool] = ...) -> None: ...

class RespondPartyInviteResponse(_message.Message):
    __slots__ = ("success", "party", "error_code", "error_message")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    PARTY_FIELD_NUMBER: _ClassVar[int]
    ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    success: bool
    party: PartyInfo
    error_code: PartyErrorCode
    error_message: str
    def __init__(self, success: _Optional[bool] = ..., party: _Optional[_Union[PartyInfo, _Mapping]] = ..., error_code: _Optional[_Union[PartyErrorCode, str]] = ..., error_message: _Optional[str] = ...) -> None: ...

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

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

class KickPartyMemberRequest(_message.Message):
    __slots__ = ("party_id", "leader_id", "target_player_id")
    PARTY_ID_FIELD_NUMBER: _ClassVar[int]
    LEADER_ID_FIELD_NUMBER: _ClassVar[int]
    TARGET_PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    party_id: str
    leader_id: str
    target_player_id: str
    def __init__(self, party_id: _Optional[str] = ..., leader_id: _Optional[str] = ..., target_player_id: _Optional[str] = ...) -> None: ...

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

class PromotePartyLeaderRequest(_message.Message):
    __slots__ = ("party_id", "current_leader_id", "new_leader_id")
    PARTY_ID_FIELD_NUMBER: _ClassVar[int]
    CURRENT_LEADER_ID_FIELD_NUMBER: _ClassVar[int]
    NEW_LEADER_ID_FIELD_NUMBER: _ClassVar[int]
    party_id: str
    current_leader_id: str
    new_leader_id: str
    def __init__(self, party_id: _Optional[str] = ..., current_leader_id: _Optional[str] = ..., new_leader_id: _Optional[str] = ...) -> None: ...

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

class DisbandPartyRequest(_message.Message):
    __slots__ = ("party_id", "leader_id")
    PARTY_ID_FIELD_NUMBER: _ClassVar[int]
    LEADER_ID_FIELD_NUMBER: _ClassVar[int]
    party_id: str
    leader_id: str
    def __init__(self, party_id: _Optional[str] = ..., leader_id: _Optional[str] = ...) -> None: ...

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

class SetLootAllocationRequest(_message.Message):
    __slots__ = ("party_id", "leader_id", "allocation_mode")
    PARTY_ID_FIELD_NUMBER: _ClassVar[int]
    LEADER_ID_FIELD_NUMBER: _ClassVar[int]
    ALLOCATION_MODE_FIELD_NUMBER: _ClassVar[int]
    party_id: str
    leader_id: str
    allocation_mode: LootAllocationMode
    def __init__(self, party_id: _Optional[str] = ..., leader_id: _Optional[str] = ..., allocation_mode: _Optional[_Union[LootAllocationMode, str]] = ...) -> None: ...

class SetLootAllocationResponse(_message.Message):
    __slots__ = ("success", "active_mode", "error_code", "error_message")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    ACTIVE_MODE_FIELD_NUMBER: _ClassVar[int]
    ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    success: bool
    active_mode: LootAllocationMode
    error_code: PartyErrorCode
    error_message: str
    def __init__(self, success: _Optional[bool] = ..., active_mode: _Optional[_Union[LootAllocationMode, str]] = ..., error_code: _Optional[_Union[PartyErrorCode, str]] = ..., error_message: _Optional[str] = ...) -> None: ...

class PartySyncNotice(_message.Message):
    __slots__ = ("party", "event_type", "subject_player_id", "timestamp_ms")
    PARTY_FIELD_NUMBER: _ClassVar[int]
    EVENT_TYPE_FIELD_NUMBER: _ClassVar[int]
    SUBJECT_PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
    party: PartyInfo
    event_type: str
    subject_player_id: str
    timestamp_ms: int
    def __init__(self, party: _Optional[_Union[PartyInfo, _Mapping]] = ..., event_type: _Optional[str] = ..., subject_player_id: _Optional[str] = ..., timestamp_ms: _Optional[int] = ...) -> None: ...

class PartyMemberLocationNotice(_message.Message):
    __slots__ = ("party_id", "player_id", "zone_id", "instance_id", "pos_x", "pos_y", "current_hp", "max_hp", "is_nearby")
    PARTY_ID_FIELD_NUMBER: _ClassVar[int]
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    INSTANCE_ID_FIELD_NUMBER: _ClassVar[int]
    POS_X_FIELD_NUMBER: _ClassVar[int]
    POS_Y_FIELD_NUMBER: _ClassVar[int]
    CURRENT_HP_FIELD_NUMBER: _ClassVar[int]
    MAX_HP_FIELD_NUMBER: _ClassVar[int]
    IS_NEARBY_FIELD_NUMBER: _ClassVar[int]
    party_id: str
    player_id: str
    zone_id: str
    instance_id: str
    pos_x: float
    pos_y: float
    current_hp: float
    max_hp: float
    is_nearby: bool
    def __init__(self, party_id: _Optional[str] = ..., player_id: _Optional[str] = ..., zone_id: _Optional[str] = ..., instance_id: _Optional[str] = ..., pos_x: _Optional[float] = ..., pos_y: _Optional[float] = ..., current_hp: _Optional[float] = ..., max_hp: _Optional[float] = ..., is_nearby: _Optional[bool] = ...) -> None: ...
