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 QuestType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    QUEST_TYPE_UNSPECIFIED: _ClassVar[QuestType]
    QUEST_TYPE_NORMAL: _ClassVar[QuestType]
    QUEST_TYPE_HIDDEN: _ClassVar[QuestType]
    QUEST_TYPE_HIGH_TIER: _ClassVar[QuestType]

class QuestStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    QUEST_STATUS_UNSPECIFIED: _ClassVar[QuestStatus]
    QUEST_STATUS_LOCKED: _ClassVar[QuestStatus]
    QUEST_STATUS_AVAILABLE: _ClassVar[QuestStatus]
    QUEST_STATUS_IN_PROGRESS: _ClassVar[QuestStatus]
    QUEST_STATUS_COMPLETED: _ClassVar[QuestStatus]
    QUEST_STATUS_CLAIMED: _ClassVar[QuestStatus]
    QUEST_STATUS_FAILED: _ClassVar[QuestStatus]

class ObjectiveType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    OBJ_TYPE_UNSPECIFIED: _ClassVar[ObjectiveType]
    OBJ_TYPE_KILL_MONSTER: _ClassVar[ObjectiveType]
    OBJ_TYPE_COLLECT_ITEM: _ClassVar[ObjectiveType]
    OBJ_TYPE_CRAFT_ITEM: _ClassVar[ObjectiveType]
    OBJ_TYPE_DISCOVER_LOCATION: _ClassVar[ObjectiveType]
    OBJ_TYPE_ACTIVATE_MERIDIAN: _ClassVar[ObjectiveType]
    OBJ_TYPE_PERFORM_ACTION: _ClassVar[ObjectiveType]
    OBJ_TYPE_TALK_NPC: _ClassVar[ObjectiveType]
    OBJ_TYPE_DELIVER_TO_NPC: _ClassVar[ObjectiveType]
QUEST_TYPE_UNSPECIFIED: QuestType
QUEST_TYPE_NORMAL: QuestType
QUEST_TYPE_HIDDEN: QuestType
QUEST_TYPE_HIGH_TIER: QuestType
QUEST_STATUS_UNSPECIFIED: QuestStatus
QUEST_STATUS_LOCKED: QuestStatus
QUEST_STATUS_AVAILABLE: QuestStatus
QUEST_STATUS_IN_PROGRESS: QuestStatus
QUEST_STATUS_COMPLETED: QuestStatus
QUEST_STATUS_CLAIMED: QuestStatus
QUEST_STATUS_FAILED: QuestStatus
OBJ_TYPE_UNSPECIFIED: ObjectiveType
OBJ_TYPE_KILL_MONSTER: ObjectiveType
OBJ_TYPE_COLLECT_ITEM: ObjectiveType
OBJ_TYPE_CRAFT_ITEM: ObjectiveType
OBJ_TYPE_DISCOVER_LOCATION: ObjectiveType
OBJ_TYPE_ACTIVATE_MERIDIAN: ObjectiveType
OBJ_TYPE_PERFORM_ACTION: ObjectiveType
OBJ_TYPE_TALK_NPC: ObjectiveType
OBJ_TYPE_DELIVER_TO_NPC: ObjectiveType

class QuestRewardItem(_message.Message):
    __slots__ = ("item_id", "name", "quantity")
    ITEM_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    QUANTITY_FIELD_NUMBER: _ClassVar[int]
    item_id: str
    name: str
    quantity: int
    def __init__(self, item_id: _Optional[str] = ..., name: _Optional[str] = ..., quantity: _Optional[int] = ...) -> None: ...

class QuestRewardPayload(_message.Message):
    __slots__ = ("exp", "spirit_stones", "meridian_points", "granted_title")
    EXP_FIELD_NUMBER: _ClassVar[int]
    SPIRIT_STONES_FIELD_NUMBER: _ClassVar[int]
    MERIDIAN_POINTS_FIELD_NUMBER: _ClassVar[int]
    GRANTED_TITLE_FIELD_NUMBER: _ClassVar[int]
    exp: int
    spirit_stones: _containers.RepeatedCompositeFieldContainer[QuestRewardItem]
    meridian_points: int
    granted_title: str
    def __init__(self, exp: _Optional[int] = ..., spirit_stones: _Optional[_Iterable[_Union[QuestRewardItem, _Mapping]]] = ..., meridian_points: _Optional[int] = ..., granted_title: _Optional[str] = ...) -> None: ...

class QuestObjective(_message.Message):
    __slots__ = ("objective_id", "description", "obj_type", "target_id", "target_count", "current_count", "is_completed")
    OBJECTIVE_ID_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    OBJ_TYPE_FIELD_NUMBER: _ClassVar[int]
    TARGET_ID_FIELD_NUMBER: _ClassVar[int]
    TARGET_COUNT_FIELD_NUMBER: _ClassVar[int]
    CURRENT_COUNT_FIELD_NUMBER: _ClassVar[int]
    IS_COMPLETED_FIELD_NUMBER: _ClassVar[int]
    objective_id: str
    description: str
    obj_type: ObjectiveType
    target_id: str
    target_count: int
    current_count: int
    is_completed: bool
    def __init__(self, objective_id: _Optional[str] = ..., description: _Optional[str] = ..., obj_type: _Optional[_Union[ObjectiveType, str]] = ..., target_id: _Optional[str] = ..., target_count: _Optional[int] = ..., current_count: _Optional[int] = ..., is_completed: _Optional[bool] = ...) -> None: ...

class QuestState(_message.Message):
    __slots__ = ("quest_id", "title", "description", "quest_type", "status", "required_level", "objectives", "reward")
    QUEST_ID_FIELD_NUMBER: _ClassVar[int]
    TITLE_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    QUEST_TYPE_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    REQUIRED_LEVEL_FIELD_NUMBER: _ClassVar[int]
    OBJECTIVES_FIELD_NUMBER: _ClassVar[int]
    REWARD_FIELD_NUMBER: _ClassVar[int]
    quest_id: str
    title: str
    description: str
    quest_type: QuestType
    status: QuestStatus
    required_level: int
    objectives: _containers.RepeatedCompositeFieldContainer[QuestObjective]
    reward: QuestRewardPayload
    def __init__(self, quest_id: _Optional[str] = ..., title: _Optional[str] = ..., description: _Optional[str] = ..., quest_type: _Optional[_Union[QuestType, str]] = ..., status: _Optional[_Union[QuestStatus, str]] = ..., required_level: _Optional[int] = ..., objectives: _Optional[_Iterable[_Union[QuestObjective, _Mapping]]] = ..., reward: _Optional[_Union[QuestRewardPayload, _Mapping]] = ...) -> None: ...

class AcceptQuestRequest(_message.Message):
    __slots__ = ("player_id", "quest_id", "client_timestamp_ms")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    QUEST_ID_FIELD_NUMBER: _ClassVar[int]
    CLIENT_TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    quest_id: str
    client_timestamp_ms: int
    def __init__(self, player_id: _Optional[str] = ..., quest_id: _Optional[str] = ..., client_timestamp_ms: _Optional[int] = ...) -> None: ...

class AcceptQuestResponse(_message.Message):
    __slots__ = ("success", "message", "quest")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    QUEST_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    quest: QuestState
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., quest: _Optional[_Union[QuestState, _Mapping]] = ...) -> None: ...

class ClaimQuestRewardRequest(_message.Message):
    __slots__ = ("player_id", "quest_id", "client_timestamp_ms")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    QUEST_ID_FIELD_NUMBER: _ClassVar[int]
    CLIENT_TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    quest_id: str
    client_timestamp_ms: int
    def __init__(self, player_id: _Optional[str] = ..., quest_id: _Optional[str] = ..., client_timestamp_ms: _Optional[int] = ...) -> None: ...

class ClaimQuestRewardResponse(_message.Message):
    __slots__ = ("success", "message", "reward")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    REWARD_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    reward: QuestRewardPayload
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., reward: _Optional[_Union[QuestRewardPayload, _Mapping]] = ...) -> None: ...

class MilestoneTierInfo(_message.Message):
    __slots__ = ("milestone_id", "title", "description", "required_total_completed", "required_hidden_completed", "required_high_tier_completed", "reward", "is_claimed", "is_eligible")
    MILESTONE_ID_FIELD_NUMBER: _ClassVar[int]
    TITLE_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    REQUIRED_TOTAL_COMPLETED_FIELD_NUMBER: _ClassVar[int]
    REQUIRED_HIDDEN_COMPLETED_FIELD_NUMBER: _ClassVar[int]
    REQUIRED_HIGH_TIER_COMPLETED_FIELD_NUMBER: _ClassVar[int]
    REWARD_FIELD_NUMBER: _ClassVar[int]
    IS_CLAIMED_FIELD_NUMBER: _ClassVar[int]
    IS_ELIGIBLE_FIELD_NUMBER: _ClassVar[int]
    milestone_id: str
    title: str
    description: str
    required_total_completed: int
    required_hidden_completed: int
    required_high_tier_completed: int
    reward: QuestRewardPayload
    is_claimed: bool
    is_eligible: bool
    def __init__(self, milestone_id: _Optional[str] = ..., title: _Optional[str] = ..., description: _Optional[str] = ..., required_total_completed: _Optional[int] = ..., required_hidden_completed: _Optional[int] = ..., required_high_tier_completed: _Optional[int] = ..., reward: _Optional[_Union[QuestRewardPayload, _Mapping]] = ..., is_claimed: _Optional[bool] = ..., is_eligible: _Optional[bool] = ...) -> None: ...

class ClaimMilestoneRewardRequest(_message.Message):
    __slots__ = ("player_id", "milestone_id", "client_timestamp_ms")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    MILESTONE_ID_FIELD_NUMBER: _ClassVar[int]
    CLIENT_TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    milestone_id: str
    client_timestamp_ms: int
    def __init__(self, player_id: _Optional[str] = ..., milestone_id: _Optional[str] = ..., client_timestamp_ms: _Optional[int] = ...) -> None: ...

class ClaimMilestoneRewardResponse(_message.Message):
    __slots__ = ("success", "message", "reward")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    REWARD_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    reward: QuestRewardPayload
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., reward: _Optional[_Union[QuestRewardPayload, _Mapping]] = ...) -> None: ...

class QuestProgressSyncNotice(_message.Message):
    __slots__ = ("player_id", "active_quests", "milestones", "sync_timestamp_ms")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    ACTIVE_QUESTS_FIELD_NUMBER: _ClassVar[int]
    MILESTONES_FIELD_NUMBER: _ClassVar[int]
    SYNC_TIMESTAMP_MS_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    active_quests: _containers.RepeatedCompositeFieldContainer[QuestState]
    milestones: _containers.RepeatedCompositeFieldContainer[MilestoneTierInfo]
    sync_timestamp_ms: int
    def __init__(self, player_id: _Optional[str] = ..., active_quests: _Optional[_Iterable[_Union[QuestState, _Mapping]]] = ..., milestones: _Optional[_Iterable[_Union[MilestoneTierInfo, _Mapping]]] = ..., sync_timestamp_ms: _Optional[int] = ...) -> None: ...
