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 ChatChannel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    CHANNEL_UNSPECIFIED: _ClassVar[ChatChannel]
    CHANNEL_WORLD: _ClassVar[ChatChannel]
    CHANNEL_ZONE: _ClassVar[ChatChannel]
    CHANNEL_GUILD: _ClassVar[ChatChannel]
    CHANNEL_PARTY: _ClassVar[ChatChannel]
    CHANNEL_WHISPER: _ClassVar[ChatChannel]
    CHANNEL_SYSTEM: _ClassVar[ChatChannel]
    CHANNEL_RECRUIT: _ClassVar[ChatChannel]
    CHANNEL_FEEDBACK: _ClassVar[ChatChannel]
CHANNEL_UNSPECIFIED: ChatChannel
CHANNEL_WORLD: ChatChannel
CHANNEL_ZONE: ChatChannel
CHANNEL_GUILD: ChatChannel
CHANNEL_PARTY: ChatChannel
CHANNEL_WHISPER: ChatChannel
CHANNEL_SYSTEM: ChatChannel
CHANNEL_RECRUIT: ChatChannel
CHANNEL_FEEDBACK: ChatChannel

class ItemAffix(_message.Message):
    __slots__ = ("affix_id", "stat_name", "stat_value", "is_implicit")
    AFFIX_ID_FIELD_NUMBER: _ClassVar[int]
    STAT_NAME_FIELD_NUMBER: _ClassVar[int]
    STAT_VALUE_FIELD_NUMBER: _ClassVar[int]
    IS_IMPLICIT_FIELD_NUMBER: _ClassVar[int]
    affix_id: str
    stat_name: str
    stat_value: float
    is_implicit: bool
    def __init__(self, affix_id: _Optional[str] = ..., stat_name: _Optional[str] = ..., stat_value: _Optional[float] = ..., is_implicit: _Optional[bool] = ...) -> None: ...

class ItemLinkSnapshot(_message.Message):
    __slots__ = ("item_uuid", "item_name_key", "rarity", "element", "quality", "item_level", "affixes", "crafter_name", "hmac_signature", "created_at_ms")
    ITEM_UUID_FIELD_NUMBER: _ClassVar[int]
    ITEM_NAME_KEY_FIELD_NUMBER: _ClassVar[int]
    RARITY_FIELD_NUMBER: _ClassVar[int]
    ELEMENT_FIELD_NUMBER: _ClassVar[int]
    QUALITY_FIELD_NUMBER: _ClassVar[int]
    ITEM_LEVEL_FIELD_NUMBER: _ClassVar[int]
    AFFIXES_FIELD_NUMBER: _ClassVar[int]
    CRAFTER_NAME_FIELD_NUMBER: _ClassVar[int]
    HMAC_SIGNATURE_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_MS_FIELD_NUMBER: _ClassVar[int]
    item_uuid: str
    item_name_key: str
    rarity: int
    element: int
    quality: int
    item_level: int
    affixes: _containers.RepeatedCompositeFieldContainer[ItemAffix]
    crafter_name: str
    hmac_signature: str
    created_at_ms: int
    def __init__(self, item_uuid: _Optional[str] = ..., item_name_key: _Optional[str] = ..., rarity: _Optional[int] = ..., element: _Optional[int] = ..., quality: _Optional[int] = ..., item_level: _Optional[int] = ..., affixes: _Optional[_Iterable[_Union[ItemAffix, _Mapping]]] = ..., crafter_name: _Optional[str] = ..., hmac_signature: _Optional[str] = ..., created_at_ms: _Optional[int] = ...) -> None: ...

class ChatMessage(_message.Message):
    __slots__ = ("message_id", "sender_id", "sender_name", "sender_title", "sender_guild_tag", "channel", "target_id", "raw_content", "filtered_content", "linked_items", "timestamp_ms", "is_censored", "moderation_risk_score")
    MESSAGE_ID_FIELD_NUMBER: _ClassVar[int]
    SENDER_ID_FIELD_NUMBER: _ClassVar[int]
    SENDER_NAME_FIELD_NUMBER: _ClassVar[int]
    SENDER_TITLE_FIELD_NUMBER: _ClassVar[int]
    SENDER_GUILD_TAG_FIELD_NUMBER: _ClassVar[int]
    CHANNEL_FIELD_NUMBER: _ClassVar[int]
    TARGET_ID_FIELD_NUMBER: _ClassVar[int]
    RAW_CONTENT_FIELD_NUMBER: _ClassVar[int]
    FILTERED_CONTENT_FIELD_NUMBER: _ClassVar[int]
    LINKED_ITEMS_FIELD_NUMBER: _ClassVar[int]
    TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
    IS_CENSORED_FIELD_NUMBER: _ClassVar[int]
    MODERATION_RISK_SCORE_FIELD_NUMBER: _ClassVar[int]
    message_id: str
    sender_id: int
    sender_name: str
    sender_title: str
    sender_guild_tag: str
    channel: ChatChannel
    target_id: int
    raw_content: str
    filtered_content: str
    linked_items: _containers.RepeatedCompositeFieldContainer[ItemLinkSnapshot]
    timestamp_ms: int
    is_censored: bool
    moderation_risk_score: int
    def __init__(self, message_id: _Optional[str] = ..., sender_id: _Optional[int] = ..., sender_name: _Optional[str] = ..., sender_title: _Optional[str] = ..., sender_guild_tag: _Optional[str] = ..., channel: _Optional[_Union[ChatChannel, str]] = ..., target_id: _Optional[int] = ..., raw_content: _Optional[str] = ..., filtered_content: _Optional[str] = ..., linked_items: _Optional[_Iterable[_Union[ItemLinkSnapshot, _Mapping]]] = ..., timestamp_ms: _Optional[int] = ..., is_censored: _Optional[bool] = ..., moderation_risk_score: _Optional[int] = ...) -> None: ...

class SendChatRequest(_message.Message):
    __slots__ = ("sender_id", "channel", "target_id", "content", "link_item_uuids")
    SENDER_ID_FIELD_NUMBER: _ClassVar[int]
    CHANNEL_FIELD_NUMBER: _ClassVar[int]
    TARGET_ID_FIELD_NUMBER: _ClassVar[int]
    CONTENT_FIELD_NUMBER: _ClassVar[int]
    LINK_ITEM_UUIDS_FIELD_NUMBER: _ClassVar[int]
    sender_id: int
    channel: ChatChannel
    target_id: int
    content: str
    link_item_uuids: _containers.RepeatedScalarFieldContainer[str]
    def __init__(self, sender_id: _Optional[int] = ..., channel: _Optional[_Union[ChatChannel, str]] = ..., target_id: _Optional[int] = ..., content: _Optional[str] = ..., link_item_uuids: _Optional[_Iterable[str]] = ...) -> None: ...

class SendChatResponse(_message.Message):
    __slots__ = ("success", "error_message", "message_id", "cooldown_remaining_ms")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_ID_FIELD_NUMBER: _ClassVar[int]
    COOLDOWN_REMAINING_MS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    error_message: str
    message_id: str
    cooldown_remaining_ms: int
    def __init__(self, success: _Optional[bool] = ..., error_message: _Optional[str] = ..., message_id: _Optional[str] = ..., cooldown_remaining_ms: _Optional[int] = ...) -> None: ...

class QueryItemSnapshotRequest(_message.Message):
    __slots__ = ("item_uuid", "hmac_signature")
    ITEM_UUID_FIELD_NUMBER: _ClassVar[int]
    HMAC_SIGNATURE_FIELD_NUMBER: _ClassVar[int]
    item_uuid: str
    hmac_signature: str
    def __init__(self, item_uuid: _Optional[str] = ..., hmac_signature: _Optional[str] = ...) -> None: ...

class QueryItemSnapshotResponse(_message.Message):
    __slots__ = ("is_valid", "item_snapshot")
    IS_VALID_FIELD_NUMBER: _ClassVar[int]
    ITEM_SNAPSHOT_FIELD_NUMBER: _ClassVar[int]
    is_valid: bool
    item_snapshot: ItemLinkSnapshot
    def __init__(self, is_valid: _Optional[bool] = ..., item_snapshot: _Optional[_Union[ItemLinkSnapshot, _Mapping]] = ...) -> None: ...
