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 StoryAct(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    STORY_ACT_UNSPECIFIED: _ClassVar[StoryAct]
    STORY_ACT_I_HUNGER: _ClassVar[StoryAct]
    STORY_ACT_II_MIASMA: _ClassVar[StoryAct]
    STORY_ACT_III_CRUCIBLE: _ClassVar[StoryAct]
    STORY_ACT_IV_TITAN_HUNT: _ClassVar[StoryAct]
    STORY_ACT_V_SOVEREIGN: _ClassVar[StoryAct]

class BeggarAscentStage(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    STAGE_UNSPECIFIED: _ClassVar[BeggarAscentStage]
    STAGE_MENDICANT: _ClassVar[BeggarAscentStage]
    STAGE_SCAVENGER: _ClassVar[BeggarAscentStage]
    STAGE_BONE_WARRIOR: _ClassVar[BeggarAscentStage]
    STAGE_PRIMAL_HUNTER: _ClassVar[BeggarAscentStage]
    STAGE_SOVEREIGN_OUTCAST: _ClassVar[BeggarAscentStage]
STORY_ACT_UNSPECIFIED: StoryAct
STORY_ACT_I_HUNGER: StoryAct
STORY_ACT_II_MIASMA: StoryAct
STORY_ACT_III_CRUCIBLE: StoryAct
STORY_ACT_IV_TITAN_HUNT: StoryAct
STORY_ACT_V_SOVEREIGN: StoryAct
STAGE_UNSPECIFIED: BeggarAscentStage
STAGE_MENDICANT: BeggarAscentStage
STAGE_SCAVENGER: BeggarAscentStage
STAGE_BONE_WARRIOR: BeggarAscentStage
STAGE_PRIMAL_HUNTER: BeggarAscentStage
STAGE_SOVEREIGN_OUTCAST: BeggarAscentStage

class JournalEntryMessage(_message.Message):
    __slots__ = ("journal_id", "act", "stage", "chapter_index", "title", "narrator_monologue", "unlock_quest_id", "location_name", "quote_highlight", "is_unlocked", "is_read")
    JOURNAL_ID_FIELD_NUMBER: _ClassVar[int]
    ACT_FIELD_NUMBER: _ClassVar[int]
    STAGE_FIELD_NUMBER: _ClassVar[int]
    CHAPTER_INDEX_FIELD_NUMBER: _ClassVar[int]
    TITLE_FIELD_NUMBER: _ClassVar[int]
    NARRATOR_MONOLOGUE_FIELD_NUMBER: _ClassVar[int]
    UNLOCK_QUEST_ID_FIELD_NUMBER: _ClassVar[int]
    LOCATION_NAME_FIELD_NUMBER: _ClassVar[int]
    QUOTE_HIGHLIGHT_FIELD_NUMBER: _ClassVar[int]
    IS_UNLOCKED_FIELD_NUMBER: _ClassVar[int]
    IS_READ_FIELD_NUMBER: _ClassVar[int]
    journal_id: str
    act: StoryAct
    stage: BeggarAscentStage
    chapter_index: int
    title: str
    narrator_monologue: str
    unlock_quest_id: str
    location_name: str
    quote_highlight: str
    is_unlocked: bool
    is_read: bool
    def __init__(self, journal_id: _Optional[str] = ..., act: _Optional[_Union[StoryAct, str]] = ..., stage: _Optional[_Union[BeggarAscentStage, str]] = ..., chapter_index: _Optional[int] = ..., title: _Optional[str] = ..., narrator_monologue: _Optional[str] = ..., unlock_quest_id: _Optional[str] = ..., location_name: _Optional[str] = ..., quote_highlight: _Optional[str] = ..., is_unlocked: _Optional[bool] = ..., is_read: _Optional[bool] = ...) -> None: ...

class StoryActMessage(_message.Message):
    __slots__ = ("act", "title", "subtitle", "description", "recommended_level_range", "primary_zone_id", "climax_boss_name", "stage_unlocked", "completion_reward_title", "is_completed")
    ACT_FIELD_NUMBER: _ClassVar[int]
    TITLE_FIELD_NUMBER: _ClassVar[int]
    SUBTITLE_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    RECOMMENDED_LEVEL_RANGE_FIELD_NUMBER: _ClassVar[int]
    PRIMARY_ZONE_ID_FIELD_NUMBER: _ClassVar[int]
    CLIMAX_BOSS_NAME_FIELD_NUMBER: _ClassVar[int]
    STAGE_UNLOCKED_FIELD_NUMBER: _ClassVar[int]
    COMPLETION_REWARD_TITLE_FIELD_NUMBER: _ClassVar[int]
    IS_COMPLETED_FIELD_NUMBER: _ClassVar[int]
    act: StoryAct
    title: str
    subtitle: str
    description: str
    recommended_level_range: str
    primary_zone_id: str
    climax_boss_name: str
    stage_unlocked: BeggarAscentStage
    completion_reward_title: str
    is_completed: bool
    def __init__(self, act: _Optional[_Union[StoryAct, str]] = ..., title: _Optional[str] = ..., subtitle: _Optional[str] = ..., description: _Optional[str] = ..., recommended_level_range: _Optional[str] = ..., primary_zone_id: _Optional[str] = ..., climax_boss_name: _Optional[str] = ..., stage_unlocked: _Optional[_Union[BeggarAscentStage, str]] = ..., completion_reward_title: _Optional[str] = ..., is_completed: _Optional[bool] = ...) -> None: ...

class StoryCutsceneMessage(_message.Message):
    __slots__ = ("cutscene_id", "act", "trigger_quest_id", "title", "speaker_name", "monologue_lines", "ambiance_sound", "granted_exp")
    CUTSCENE_ID_FIELD_NUMBER: _ClassVar[int]
    ACT_FIELD_NUMBER: _ClassVar[int]
    TRIGGER_QUEST_ID_FIELD_NUMBER: _ClassVar[int]
    TITLE_FIELD_NUMBER: _ClassVar[int]
    SPEAKER_NAME_FIELD_NUMBER: _ClassVar[int]
    MONOLOGUE_LINES_FIELD_NUMBER: _ClassVar[int]
    AMBIANCE_SOUND_FIELD_NUMBER: _ClassVar[int]
    GRANTED_EXP_FIELD_NUMBER: _ClassVar[int]
    cutscene_id: str
    act: StoryAct
    trigger_quest_id: str
    title: str
    speaker_name: str
    monologue_lines: _containers.RepeatedScalarFieldContainer[str]
    ambiance_sound: str
    granted_exp: int
    def __init__(self, cutscene_id: _Optional[str] = ..., act: _Optional[_Union[StoryAct, str]] = ..., trigger_quest_id: _Optional[str] = ..., title: _Optional[str] = ..., speaker_name: _Optional[str] = ..., monologue_lines: _Optional[_Iterable[str]] = ..., ambiance_sound: _Optional[str] = ..., granted_exp: _Optional[int] = ...) -> None: ...

class PlayerStoryStateMessage(_message.Message):
    __slots__ = ("player_id", "current_act", "current_stage", "completed_acts", "unlocked_journal_ids", "read_journal_ids", "completed_quest_ids", "reputation_title")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    CURRENT_ACT_FIELD_NUMBER: _ClassVar[int]
    CURRENT_STAGE_FIELD_NUMBER: _ClassVar[int]
    COMPLETED_ACTS_FIELD_NUMBER: _ClassVar[int]
    UNLOCKED_JOURNAL_IDS_FIELD_NUMBER: _ClassVar[int]
    READ_JOURNAL_IDS_FIELD_NUMBER: _ClassVar[int]
    COMPLETED_QUEST_IDS_FIELD_NUMBER: _ClassVar[int]
    REPUTATION_TITLE_FIELD_NUMBER: _ClassVar[int]
    player_id: str
    current_act: StoryAct
    current_stage: BeggarAscentStage
    completed_acts: _containers.RepeatedScalarFieldContainer[StoryAct]
    unlocked_journal_ids: _containers.RepeatedScalarFieldContainer[str]
    read_journal_ids: _containers.RepeatedScalarFieldContainer[str]
    completed_quest_ids: _containers.RepeatedScalarFieldContainer[str]
    reputation_title: str
    def __init__(self, player_id: _Optional[str] = ..., current_act: _Optional[_Union[StoryAct, str]] = ..., current_stage: _Optional[_Union[BeggarAscentStage, str]] = ..., completed_acts: _Optional[_Iterable[_Union[StoryAct, str]]] = ..., unlocked_journal_ids: _Optional[_Iterable[str]] = ..., read_journal_ids: _Optional[_Iterable[str]] = ..., completed_quest_ids: _Optional[_Iterable[str]] = ..., reputation_title: _Optional[str] = ...) -> None: ...

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

class GetStoryStateResponse(_message.Message):
    __slots__ = ("success", "message", "state", "journals", "acts")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    STATE_FIELD_NUMBER: _ClassVar[int]
    JOURNALS_FIELD_NUMBER: _ClassVar[int]
    ACTS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    state: PlayerStoryStateMessage
    journals: _containers.RepeatedCompositeFieldContainer[JournalEntryMessage]
    acts: _containers.RepeatedCompositeFieldContainer[StoryActMessage]
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., state: _Optional[_Union[PlayerStoryStateMessage, _Mapping]] = ..., journals: _Optional[_Iterable[_Union[JournalEntryMessage, _Mapping]]] = ..., acts: _Optional[_Iterable[_Union[StoryActMessage, _Mapping]]] = ...) -> None: ...

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

class ReadJournalResponse(_message.Message):
    __slots__ = ("success", "message", "journal")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    JOURNAL_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    journal: JournalEntryMessage
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., journal: _Optional[_Union[JournalEntryMessage, _Mapping]] = ...) -> None: ...
