"""
@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 sys
import typing

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

class _ReferenceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ReferenceType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    REFERENCE_TYPE_FRIEND: _ReferenceType.ValueType  # 0
    """We met at an event but haven't surfed or hosted"""
    REFERENCE_TYPE_SURFED: _ReferenceType.ValueType  # 1
    """The author has surfed, the referent has hosted"""
    REFERENCE_TYPE_HOSTED: _ReferenceType.ValueType  # 2
    """The author has hosted, the referent has surfed"""

class ReferenceType(_ReferenceType, metaclass=_ReferenceTypeEnumTypeWrapper): ...

REFERENCE_TYPE_FRIEND: ReferenceType.ValueType  # 0
"""We met at an event but haven't surfed or hosted"""
REFERENCE_TYPE_SURFED: ReferenceType.ValueType  # 1
"""The author has surfed, the referent has hosted"""
REFERENCE_TYPE_HOSTED: ReferenceType.ValueType  # 2
"""The author has hosted, the referent has surfed"""
Global___ReferenceType: typing_extensions.TypeAlias = ReferenceType

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

    REFERENCE_ID_FIELD_NUMBER: builtins.int
    FROM_USER_ID_FIELD_NUMBER: builtins.int
    TO_USER_ID_FIELD_NUMBER: builtins.int
    REFERENCE_TYPE_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    WRITTEN_TIME_FIELD_NUMBER: builtins.int
    HOST_REQUEST_ID_FIELD_NUMBER: builtins.int
    reference_id: builtins.int
    from_user_id: builtins.int
    to_user_id: builtins.int
    reference_type: Global___ReferenceType.ValueType
    text: builtins.str
    """plain text"""
    host_request_id: builtins.int
    """if the reference is about the current user, this tells which host request it's about"""
    @property
    def written_time(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """not exact"""

    def __init__(
        self,
        *,
        reference_id: builtins.int | None = ...,
        from_user_id: builtins.int | None = ...,
        to_user_id: builtins.int | None = ...,
        reference_type: Global___ReferenceType.ValueType | None = ...,
        text: builtins.str | None = ...,
        written_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        host_request_id: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["written_time", b"written_time"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["from_user_id", b"from_user_id", "host_request_id", b"host_request_id", "reference_id", b"reference_id", "reference_type", b"reference_type", "text", b"text", "to_user_id", b"to_user_id", "written_time", b"written_time"]) -> None: ...

Global___Reference: typing_extensions.TypeAlias = Reference

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

    FROM_USER_ID_FIELD_NUMBER: builtins.int
    TO_USER_ID_FIELD_NUMBER: builtins.int
    REFERENCE_TYPE_FILTER_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    from_user_id: builtins.int
    """at least one of these two must be set, zero means "any" """
    to_user_id: builtins.int
    page_size: builtins.int
    page_token: builtins.str
    @property
    def reference_type_filter(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[Global___ReferenceType.ValueType]:
        """empty filter means include all, otherwise only those in the filter"""

    def __init__(
        self,
        *,
        from_user_id: builtins.int | None = ...,
        to_user_id: builtins.int | None = ...,
        reference_type_filter: collections.abc.Iterable[Global___ReferenceType.ValueType] | None = ...,
        page_size: builtins.int | None = ...,
        page_token: builtins.str | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["from_user_id", b"from_user_id", "page_size", b"page_size", "page_token", b"page_token", "reference_type_filter", b"reference_type_filter", "to_user_id", b"to_user_id"]) -> None: ...

Global___ListReferencesReq: typing_extensions.TypeAlias = ListReferencesReq

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

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

Global___ListReferencesRes: typing_extensions.TypeAlias = ListReferencesRes

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

    TO_USER_ID_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    PRIVATE_TEXT_FIELD_NUMBER: builtins.int
    WAS_APPROPRIATE_FIELD_NUMBER: builtins.int
    RATING_FIELD_NUMBER: builtins.int
    to_user_id: builtins.int
    text: builtins.str
    """plain text"""
    private_text: builtins.str
    """private text to be send to moderation
    plain text
    """
    was_appropriate: builtins.bool
    rating: builtins.float
    """rating is in [0,1]"""
    def __init__(
        self,
        *,
        to_user_id: builtins.int | None = ...,
        text: builtins.str | None = ...,
        private_text: builtins.str | None = ...,
        was_appropriate: builtins.bool | None = ...,
        rating: builtins.float | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["private_text", b"private_text", "rating", b"rating", "text", b"text", "to_user_id", b"to_user_id", "was_appropriate", b"was_appropriate"]) -> None: ...

Global___WriteFriendReferenceReq: typing_extensions.TypeAlias = WriteFriendReferenceReq

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

    HOST_REQUEST_ID_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    PRIVATE_TEXT_FIELD_NUMBER: builtins.int
    WAS_APPROPRIATE_FIELD_NUMBER: builtins.int
    RATING_FIELD_NUMBER: builtins.int
    host_request_id: builtins.int
    text: builtins.str
    """plain text"""
    private_text: builtins.str
    """private text to be send to moderation
    plain text
    """
    was_appropriate: builtins.bool
    rating: builtins.float
    """rating is in [0,1]"""
    def __init__(
        self,
        *,
        host_request_id: builtins.int | None = ...,
        text: builtins.str | None = ...,
        private_text: builtins.str | None = ...,
        was_appropriate: builtins.bool | None = ...,
        rating: builtins.float | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["host_request_id", b"host_request_id", "private_text", b"private_text", "rating", b"rating", "text", b"text", "was_appropriate", b"was_appropriate"]) -> None: ...

Global___WriteHostRequestReferenceReq: typing_extensions.TypeAlias = WriteHostRequestReferenceReq

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

    HOST_REQUEST_ID_FIELD_NUMBER: builtins.int
    REASON_DIDNT_MEETUP_FIELD_NUMBER: builtins.int
    host_request_id: builtins.int
    reason_didnt_meetup: builtins.str
    """reason why the host request didn't happen, can be blank
    plain text
    """
    def __init__(
        self,
        *,
        host_request_id: builtins.int | None = ...,
        reason_didnt_meetup: builtins.str | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["host_request_id", b"host_request_id", "reason_didnt_meetup", b"reason_didnt_meetup"]) -> None: ...

Global___HostRequestIndicateDidntMeetupReq: typing_extensions.TypeAlias = HostRequestIndicateDidntMeetupReq

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

    TO_USER_ID_FIELD_NUMBER: builtins.int
    to_user_id: builtins.int
    def __init__(
        self,
        *,
        to_user_id: builtins.int | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["to_user_id", b"to_user_id"]) -> None: ...

Global___AvailableWriteReferencesReq: typing_extensions.TypeAlias = AvailableWriteReferencesReq

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

    HOST_REQUEST_ID_FIELD_NUMBER: builtins.int
    REFERENCE_TYPE_FIELD_NUMBER: builtins.int
    TIME_EXPIRES_FIELD_NUMBER: builtins.int
    host_request_id: builtins.int
    reference_type: Global___ReferenceType.ValueType
    """surfed or hosted"""
    @property
    def time_expires(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        host_request_id: builtins.int | None = ...,
        reference_type: Global___ReferenceType.ValueType | None = ...,
        time_expires: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["time_expires", b"time_expires"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["host_request_id", b"host_request_id", "reference_type", b"reference_type", "time_expires", b"time_expires"]) -> None: ...

Global___AvailableWriteReferenceType: typing_extensions.TypeAlias = AvailableWriteReferenceType

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

    CAN_WRITE_FRIEND_REFERENCE_FIELD_NUMBER: builtins.int
    AVAILABLE_WRITE_REFERENCES_FIELD_NUMBER: builtins.int
    can_write_friend_reference: builtins.bool
    @property
    def available_write_references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___AvailableWriteReferenceType]: ...
    def __init__(
        self,
        *,
        can_write_friend_reference: builtins.bool | None = ...,
        available_write_references: collections.abc.Iterable[Global___AvailableWriteReferenceType] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["available_write_references", b"available_write_references", "can_write_friend_reference", b"can_write_friend_reference"]) -> None: ...

Global___AvailableWriteReferencesRes: typing_extensions.TypeAlias = AvailableWriteReferencesRes

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

    PENDING_REFERENCES_FIELD_NUMBER: builtins.int
    @property
    def pending_references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___AvailableWriteReferenceType]: ...
    def __init__(
        self,
        *,
        pending_references: collections.abc.Iterable[Global___AvailableWriteReferenceType] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["pending_references", b"pending_references"]) -> None: ...

Global___ListPendingReferencesToWriteRes: typing_extensions.TypeAlias = ListPendingReferencesToWriteRes

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

    HOST_REQUEST_ID_FIELD_NUMBER: builtins.int
    host_request_id: builtins.int
    def __init__(
        self,
        *,
        host_request_id: builtins.int | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["host_request_id", b"host_request_id"]) -> None: ...

Global___GetHostRequestReferenceStatusReq: typing_extensions.TypeAlias = GetHostRequestReferenceStatusReq

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

    HAS_GIVEN_FIELD_NUMBER: builtins.int
    CAN_WRITE_FIELD_NUMBER: builtins.int
    IS_EXPIRED_FIELD_NUMBER: builtins.int
    DIDNT_STAY_FIELD_NUMBER: builtins.int
    has_given: builtins.bool
    """True if a reference exists for this host request written by current user"""
    can_write: builtins.bool
    is_expired: builtins.bool
    """True if the write window is past the 14-day deadline"""
    didnt_stay: builtins.bool
    def __init__(
        self,
        *,
        has_given: builtins.bool | None = ...,
        can_write: builtins.bool | None = ...,
        is_expired: builtins.bool | None = ...,
        didnt_stay: builtins.bool | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["can_write", b"can_write", "didnt_stay", b"didnt_stay", "has_given", b"has_given", "is_expired", b"is_expired"]) -> None: ...

Global___GetHostRequestReferenceStatusRes: typing_extensions.TypeAlias = GetHostRequestReferenceStatusRes
