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 FeedbackCategory(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    CATEGORY_UNSPECIFIED: _ClassVar[FeedbackCategory]
    CATEGORY_BUG_REPORT: _ClassVar[FeedbackCategory]
    CATEGORY_GAMEPLAY_SUGGESTION: _ClassVar[FeedbackCategory]
    CATEGORY_BALANCE_ADJUSTMENT: _ClassVar[FeedbackCategory]
    CATEGORY_LOCALIZATION: _ClassVar[FeedbackCategory]
    CATEGORY_OTHER: _ClassVar[FeedbackCategory]

class FeedbackStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    STATUS_UNSPECIFIED: _ClassVar[FeedbackStatus]
    STATUS_NEW: _ClassVar[FeedbackStatus]
    STATUS_UNDER_REVIEW: _ClassVar[FeedbackStatus]
    STATUS_PLANNED: _ClassVar[FeedbackStatus]
    STATUS_RESOLVED: _ClassVar[FeedbackStatus]
    STATUS_REJECTED: _ClassVar[FeedbackStatus]
CATEGORY_UNSPECIFIED: FeedbackCategory
CATEGORY_BUG_REPORT: FeedbackCategory
CATEGORY_GAMEPLAY_SUGGESTION: FeedbackCategory
CATEGORY_BALANCE_ADJUSTMENT: FeedbackCategory
CATEGORY_LOCALIZATION: FeedbackCategory
CATEGORY_OTHER: FeedbackCategory
STATUS_UNSPECIFIED: FeedbackStatus
STATUS_NEW: FeedbackStatus
STATUS_UNDER_REVIEW: FeedbackStatus
STATUS_PLANNED: FeedbackStatus
STATUS_RESOLVED: FeedbackStatus
STATUS_REJECTED: FeedbackStatus

class SystemDiagnostics(_message.Message):
    __slots__ = ("client_platform", "os_version", "device_model", "current_fps", "current_ping_ms", "current_zone_name", "player_x", "player_y", "player_z", "game_build_version")
    CLIENT_PLATFORM_FIELD_NUMBER: _ClassVar[int]
    OS_VERSION_FIELD_NUMBER: _ClassVar[int]
    DEVICE_MODEL_FIELD_NUMBER: _ClassVar[int]
    CURRENT_FPS_FIELD_NUMBER: _ClassVar[int]
    CURRENT_PING_MS_FIELD_NUMBER: _ClassVar[int]
    CURRENT_ZONE_NAME_FIELD_NUMBER: _ClassVar[int]
    PLAYER_X_FIELD_NUMBER: _ClassVar[int]
    PLAYER_Y_FIELD_NUMBER: _ClassVar[int]
    PLAYER_Z_FIELD_NUMBER: _ClassVar[int]
    GAME_BUILD_VERSION_FIELD_NUMBER: _ClassVar[int]
    client_platform: str
    os_version: str
    device_model: str
    current_fps: float
    current_ping_ms: int
    current_zone_name: str
    player_x: float
    player_y: float
    player_z: float
    game_build_version: str
    def __init__(self, client_platform: _Optional[str] = ..., os_version: _Optional[str] = ..., device_model: _Optional[str] = ..., current_fps: _Optional[float] = ..., current_ping_ms: _Optional[int] = ..., current_zone_name: _Optional[str] = ..., player_x: _Optional[float] = ..., player_y: _Optional[float] = ..., player_z: _Optional[float] = ..., game_build_version: _Optional[str] = ...) -> None: ...

class FeedbackEntry(_message.Message):
    __slots__ = ("feedback_id", "player_id", "player_name", "category", "title", "content", "diagnostics", "status", "admin_response", "created_at_ms", "updated_at_ms")
    FEEDBACK_ID_FIELD_NUMBER: _ClassVar[int]
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    PLAYER_NAME_FIELD_NUMBER: _ClassVar[int]
    CATEGORY_FIELD_NUMBER: _ClassVar[int]
    TITLE_FIELD_NUMBER: _ClassVar[int]
    CONTENT_FIELD_NUMBER: _ClassVar[int]
    DIAGNOSTICS_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    ADMIN_RESPONSE_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_MS_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_MS_FIELD_NUMBER: _ClassVar[int]
    feedback_id: str
    player_id: int
    player_name: str
    category: FeedbackCategory
    title: str
    content: str
    diagnostics: SystemDiagnostics
    status: FeedbackStatus
    admin_response: str
    created_at_ms: int
    updated_at_ms: int
    def __init__(self, feedback_id: _Optional[str] = ..., player_id: _Optional[int] = ..., player_name: _Optional[str] = ..., category: _Optional[_Union[FeedbackCategory, str]] = ..., title: _Optional[str] = ..., content: _Optional[str] = ..., diagnostics: _Optional[_Union[SystemDiagnostics, _Mapping]] = ..., status: _Optional[_Union[FeedbackStatus, str]] = ..., admin_response: _Optional[str] = ..., created_at_ms: _Optional[int] = ..., updated_at_ms: _Optional[int] = ...) -> None: ...

class SubmitFeedbackRequest(_message.Message):
    __slots__ = ("player_id", "player_name", "category", "title", "content", "diagnostics")
    PLAYER_ID_FIELD_NUMBER: _ClassVar[int]
    PLAYER_NAME_FIELD_NUMBER: _ClassVar[int]
    CATEGORY_FIELD_NUMBER: _ClassVar[int]
    TITLE_FIELD_NUMBER: _ClassVar[int]
    CONTENT_FIELD_NUMBER: _ClassVar[int]
    DIAGNOSTICS_FIELD_NUMBER: _ClassVar[int]
    player_id: int
    player_name: str
    category: FeedbackCategory
    title: str
    content: str
    diagnostics: SystemDiagnostics
    def __init__(self, player_id: _Optional[int] = ..., player_name: _Optional[str] = ..., category: _Optional[_Union[FeedbackCategory, str]] = ..., title: _Optional[str] = ..., content: _Optional[str] = ..., diagnostics: _Optional[_Union[SystemDiagnostics, _Mapping]] = ...) -> None: ...

class SubmitFeedbackResponse(_message.Message):
    __slots__ = ("success", "error_message", "feedback_id", "acknowledgement_message")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    FEEDBACK_ID_FIELD_NUMBER: _ClassVar[int]
    ACKNOWLEDGEMENT_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    success: bool
    error_message: str
    feedback_id: str
    acknowledgement_message: str
    def __init__(self, success: _Optional[bool] = ..., error_message: _Optional[str] = ..., feedback_id: _Optional[str] = ..., acknowledgement_message: _Optional[str] = ...) -> None: ...

class QueryFeedbackListRequest(_message.Message):
    __slots__ = ("filter_status", "filter_category", "page", "page_size")
    FILTER_STATUS_FIELD_NUMBER: _ClassVar[int]
    FILTER_CATEGORY_FIELD_NUMBER: _ClassVar[int]
    PAGE_FIELD_NUMBER: _ClassVar[int]
    PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
    filter_status: FeedbackStatus
    filter_category: FeedbackCategory
    page: int
    page_size: int
    def __init__(self, filter_status: _Optional[_Union[FeedbackStatus, str]] = ..., filter_category: _Optional[_Union[FeedbackCategory, str]] = ..., page: _Optional[int] = ..., page_size: _Optional[int] = ...) -> None: ...

class QueryFeedbackListResponse(_message.Message):
    __slots__ = ("entries", "total_count")
    ENTRIES_FIELD_NUMBER: _ClassVar[int]
    TOTAL_COUNT_FIELD_NUMBER: _ClassVar[int]
    entries: _containers.RepeatedCompositeFieldContainer[FeedbackEntry]
    total_count: int
    def __init__(self, entries: _Optional[_Iterable[_Union[FeedbackEntry, _Mapping]]] = ..., total_count: _Optional[int] = ...) -> None: ...

class UpdateFeedbackStatusRequest(_message.Message):
    __slots__ = ("feedback_id", "new_status", "admin_response", "reviewed_by")
    FEEDBACK_ID_FIELD_NUMBER: _ClassVar[int]
    NEW_STATUS_FIELD_NUMBER: _ClassVar[int]
    ADMIN_RESPONSE_FIELD_NUMBER: _ClassVar[int]
    REVIEWED_BY_FIELD_NUMBER: _ClassVar[int]
    feedback_id: str
    new_status: FeedbackStatus
    admin_response: str
    reviewed_by: str
    def __init__(self, feedback_id: _Optional[str] = ..., new_status: _Optional[_Union[FeedbackStatus, str]] = ..., admin_response: _Optional[str] = ..., reviewed_by: _Optional[str] = ...) -> None: ...

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