"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import google.protobuf.timestamp_pb2
import google.protobuf.wrappers_pb2
import sys
import threads_pb2
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _PageType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _PageTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PageType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PAGE_TYPE_PLACE: _PageType.ValueType  # 0
    """point of interest, landmark, tourist attraction, etc"""
    PAGE_TYPE_GUIDE: _PageType.ValueType  # 1
    """guide"""
    PAGE_TYPE_MAIN_PAGE: _PageType.ValueType  # 2
    """main page of a group or a community"""

class PageType(_PageType, metaclass=_PageTypeEnumTypeWrapper): ...

PAGE_TYPE_PLACE: PageType.ValueType  # 0
"""point of interest, landmark, tourist attraction, etc"""
PAGE_TYPE_GUIDE: PageType.ValueType  # 1
"""guide"""
PAGE_TYPE_MAIN_PAGE: PageType.ValueType  # 2
"""main page of a group or a community"""
Global___PageType: typing_extensions.TypeAlias = PageType

@typing.final
class Coordinate(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    LAT_FIELD_NUMBER: builtins.int
    LNG_FIELD_NUMBER: builtins.int
    lat: builtins.float
    lng: builtins.float
    def __init__(
        self,
        *,
        lat: builtins.float | None = ...,
        lng: builtins.float | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["lat", b"lat", "lng", b"lng"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___Coordinate: typing_extensions.TypeAlias = Coordinate

@typing.final
class Page(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PAGE_ID_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    SLUG_FIELD_NUMBER: builtins.int
    CREATED_FIELD_NUMBER: builtins.int
    LAST_EDITED_FIELD_NUMBER: builtins.int
    LAST_EDITOR_USER_ID_FIELD_NUMBER: builtins.int
    CREATOR_USER_ID_FIELD_NUMBER: builtins.int
    OWNER_USER_ID_FIELD_NUMBER: builtins.int
    OWNER_COMMUNITY_ID_FIELD_NUMBER: builtins.int
    OWNER_GROUP_ID_FIELD_NUMBER: builtins.int
    THREAD_FIELD_NUMBER: builtins.int
    TITLE_FIELD_NUMBER: builtins.int
    CONTENT_FIELD_NUMBER: builtins.int
    PHOTO_URL_FIELD_NUMBER: builtins.int
    ADDRESS_FIELD_NUMBER: builtins.int
    LOCATION_FIELD_NUMBER: builtins.int
    EDITOR_USER_IDS_FIELD_NUMBER: builtins.int
    CAN_EDIT_FIELD_NUMBER: builtins.int
    CAN_MODERATE_FIELD_NUMBER: builtins.int
    page_id: builtins.int
    type: Global___PageType.ValueType
    slug: builtins.str
    """a short URL fragment generated from the name, e.g. New York City: a guide to Phở might become
    new-york-city-guide-to-pho
    """
    last_editor_user_id: builtins.int
    creator_user_id: builtins.int
    owner_user_id: builtins.int
    owner_community_id: builtins.int
    owner_group_id: builtins.int
    title: builtins.str
    content: builtins.str
    """CommonMark without images"""
    photo_url: builtins.str
    """empty string if no photo"""
    address: builtins.str
    can_edit: builtins.bool
    can_moderate: builtins.bool
    @property
    def created(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def last_edited(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def thread(self) -> threads_pb2.Thread: ...
    @property
    def location(self) -> Global___Coordinate: ...
    @property
    def editor_user_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        page_id: builtins.int | None = ...,
        type: Global___PageType.ValueType | None = ...,
        slug: builtins.str | None = ...,
        created: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_edited: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_editor_user_id: builtins.int | None = ...,
        creator_user_id: builtins.int | None = ...,
        owner_user_id: builtins.int | None = ...,
        owner_community_id: builtins.int | None = ...,
        owner_group_id: builtins.int | None = ...,
        thread: threads_pb2.Thread | None = ...,
        title: builtins.str | None = ...,
        content: builtins.str | None = ...,
        photo_url: builtins.str | None = ...,
        address: builtins.str | None = ...,
        location: Global___Coordinate | None = ...,
        editor_user_ids: collections.abc.Iterable[builtins.int] | None = ...,
        can_edit: builtins.bool | None = ...,
        can_moderate: builtins.bool | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["created", b"created", "last_edited", b"last_edited", "location", b"location", "owner", b"owner", "owner_community_id", b"owner_community_id", "owner_group_id", b"owner_group_id", "owner_user_id", b"owner_user_id", "thread", b"thread"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["address", b"address", "can_edit", b"can_edit", "can_moderate", b"can_moderate", "content", b"content", "created", b"created", "creator_user_id", b"creator_user_id", "editor_user_ids", b"editor_user_ids", "last_edited", b"last_edited", "last_editor_user_id", b"last_editor_user_id", "location", b"location", "owner", b"owner", "owner_community_id", b"owner_community_id", "owner_group_id", b"owner_group_id", "owner_user_id", b"owner_user_id", "page_id", b"page_id", "photo_url", b"photo_url", "slug", b"slug", "thread", b"thread", "title", b"title", "type", b"type"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType_owner: typing_extensions.TypeAlias = typing.Literal["owner_user_id", "owner_community_id", "owner_group_id"]
    _WhichOneofArgType_owner: typing_extensions.TypeAlias = typing.Literal["owner", b"owner"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType_owner) -> _WhichOneofReturnType_owner | None: ...

Global___Page: typing_extensions.TypeAlias = Page

@typing.final
class CreatePlaceReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TITLE_FIELD_NUMBER: builtins.int
    CONTENT_FIELD_NUMBER: builtins.int
    PHOTO_KEY_FIELD_NUMBER: builtins.int
    ADDRESS_FIELD_NUMBER: builtins.int
    LOCATION_FIELD_NUMBER: builtins.int
    title: builtins.str
    content: builtins.str
    photo_key: builtins.str
    """from media server"""
    address: builtins.str
    @property
    def location(self) -> Global___Coordinate: ...
    def __init__(
        self,
        *,
        title: builtins.str | None = ...,
        content: builtins.str | None = ...,
        photo_key: builtins.str | None = ...,
        address: builtins.str | None = ...,
        location: Global___Coordinate | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["location", b"location"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["address", b"address", "content", b"content", "location", b"location", "photo_key", b"photo_key", "title", b"title"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CreatePlaceReq: typing_extensions.TypeAlias = CreatePlaceReq

@typing.final
class CreateGuideReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TITLE_FIELD_NUMBER: builtins.int
    CONTENT_FIELD_NUMBER: builtins.int
    PHOTO_KEY_FIELD_NUMBER: builtins.int
    PARENT_COMMUNITY_ID_FIELD_NUMBER: builtins.int
    ADDRESS_FIELD_NUMBER: builtins.int
    LOCATION_FIELD_NUMBER: builtins.int
    title: builtins.str
    content: builtins.str
    photo_key: builtins.str
    """from media server"""
    parent_community_id: builtins.int
    address: builtins.str
    """optional"""
    @property
    def location(self) -> Global___Coordinate:
        """optional"""

    def __init__(
        self,
        *,
        title: builtins.str | None = ...,
        content: builtins.str | None = ...,
        photo_key: builtins.str | None = ...,
        parent_community_id: builtins.int | None = ...,
        address: builtins.str | None = ...,
        location: Global___Coordinate | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["location", b"location"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["address", b"address", "content", b"content", "location", b"location", "parent_community_id", b"parent_community_id", "photo_key", b"photo_key", "title", b"title"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CreateGuideReq: typing_extensions.TypeAlias = CreateGuideReq

@typing.final
class GetPageReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PAGE_ID_FIELD_NUMBER: builtins.int
    page_id: builtins.int
    def __init__(
        self,
        *,
        page_id: builtins.int | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["page_id", b"page_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GetPageReq: typing_extensions.TypeAlias = GetPageReq

@typing.final
class UpdatePageReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PAGE_ID_FIELD_NUMBER: builtins.int
    TITLE_FIELD_NUMBER: builtins.int
    CONTENT_FIELD_NUMBER: builtins.int
    PHOTO_KEY_FIELD_NUMBER: builtins.int
    ADDRESS_FIELD_NUMBER: builtins.int
    LOCATION_FIELD_NUMBER: builtins.int
    page_id: builtins.int
    @property
    def title(self) -> google.protobuf.wrappers_pb2.StringValue: ...
    @property
    def content(self) -> google.protobuf.wrappers_pb2.StringValue: ...
    @property
    def photo_key(self) -> google.protobuf.wrappers_pb2.StringValue:
        """from media server, set to empty string to clear"""

    @property
    def address(self) -> google.protobuf.wrappers_pb2.StringValue: ...
    @property
    def location(self) -> Global___Coordinate:
        """we can detect lack of this sub-message without *Value stuff, and location cannot be set to null"""

    def __init__(
        self,
        *,
        page_id: builtins.int | None = ...,
        title: google.protobuf.wrappers_pb2.StringValue | None = ...,
        content: google.protobuf.wrappers_pb2.StringValue | None = ...,
        photo_key: google.protobuf.wrappers_pb2.StringValue | None = ...,
        address: google.protobuf.wrappers_pb2.StringValue | None = ...,
        location: Global___Coordinate | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["address", b"address", "content", b"content", "location", b"location", "photo_key", b"photo_key", "title", b"title"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["address", b"address", "content", b"content", "location", b"location", "page_id", b"page_id", "photo_key", b"photo_key", "title", b"title"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___UpdatePageReq: typing_extensions.TypeAlias = UpdatePageReq

@typing.final
class TransferPageReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PAGE_ID_FIELD_NUMBER: builtins.int
    NEW_OWNER_COMMUNITY_ID_FIELD_NUMBER: builtins.int
    NEW_OWNER_GROUP_ID_FIELD_NUMBER: builtins.int
    page_id: builtins.int
    new_owner_community_id: builtins.int
    new_owner_group_id: builtins.int
    def __init__(
        self,
        *,
        page_id: builtins.int | None = ...,
        new_owner_community_id: builtins.int | None = ...,
        new_owner_group_id: builtins.int | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["new_owner", b"new_owner", "new_owner_community_id", b"new_owner_community_id", "new_owner_group_id", b"new_owner_group_id"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["new_owner", b"new_owner", "new_owner_community_id", b"new_owner_community_id", "new_owner_group_id", b"new_owner_group_id", "page_id", b"page_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType_new_owner: typing_extensions.TypeAlias = typing.Literal["new_owner_community_id", "new_owner_group_id"]
    _WhichOneofArgType_new_owner: typing_extensions.TypeAlias = typing.Literal["new_owner", b"new_owner"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType_new_owner) -> _WhichOneofReturnType_new_owner | None: ...

Global___TransferPageReq: typing_extensions.TypeAlias = TransferPageReq

@typing.final
class ListUserPlacesReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    USER_ID_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    user_id: builtins.int
    """the user to get places from, set to 0 for current user"""
    page_size: builtins.int
    page_token: builtins.str
    def __init__(
        self,
        *,
        user_id: builtins.int | None = ...,
        page_size: builtins.int | None = ...,
        page_token: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["page_size", b"page_size", "page_token", b"page_token", "user_id", b"user_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListUserPlacesReq: typing_extensions.TypeAlias = ListUserPlacesReq

@typing.final
class ListUserPlacesRes(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PLACES_FIELD_NUMBER: builtins.int
    NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
    next_page_token: builtins.str
    @property
    def places(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Page]: ...
    def __init__(
        self,
        *,
        places: collections.abc.Iterable[Global___Page] | None = ...,
        next_page_token: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["next_page_token", b"next_page_token", "places", b"places"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListUserPlacesRes: typing_extensions.TypeAlias = ListUserPlacesRes

@typing.final
class ListUserGuidesReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    USER_ID_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    user_id: builtins.int
    """the user to get guides from, set to 0 for current user"""
    page_size: builtins.int
    page_token: builtins.str
    def __init__(
        self,
        *,
        user_id: builtins.int | None = ...,
        page_size: builtins.int | None = ...,
        page_token: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["page_size", b"page_size", "page_token", b"page_token", "user_id", b"user_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListUserGuidesReq: typing_extensions.TypeAlias = ListUserGuidesReq

@typing.final
class ListUserGuidesRes(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    GUIDES_FIELD_NUMBER: builtins.int
    NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
    next_page_token: builtins.str
    @property
    def guides(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Page]: ...
    def __init__(
        self,
        *,
        guides: collections.abc.Iterable[Global___Page] | None = ...,
        next_page_token: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["guides", b"guides", "next_page_token", b"next_page_token"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListUserGuidesRes: typing_extensions.TypeAlias = ListUserGuidesRes
