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

import api_pb2
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 _PublicTripStatus:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _PublicTripStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PublicTripStatus.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PUBLIC_TRIP_STATUS_UNSPECIFIED: _PublicTripStatus.ValueType  # 0
    PUBLIC_TRIP_STATUS_SEARCHING_FOR_HOST: _PublicTripStatus.ValueType  # 1
    PUBLIC_TRIP_STATUS_CLOSED: _PublicTripStatus.ValueType  # 2

class PublicTripStatus(_PublicTripStatus, metaclass=_PublicTripStatusEnumTypeWrapper): ...

PUBLIC_TRIP_STATUS_UNSPECIFIED: PublicTripStatus.ValueType  # 0
PUBLIC_TRIP_STATUS_SEARCHING_FOR_HOST: PublicTripStatus.ValueType  # 1
PUBLIC_TRIP_STATUS_CLOSED: PublicTripStatus.ValueType  # 2
Global___PublicTripStatus: typing_extensions.TypeAlias = PublicTripStatus

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

    TRIP_ID_FIELD_NUMBER: builtins.int
    USER_FIELD_NUMBER: builtins.int
    COMMUNITY_ID_FIELD_NUMBER: builtins.int
    FROM_DATE_FIELD_NUMBER: builtins.int
    TO_DATE_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    CREATED_FIELD_NUMBER: builtins.int
    COMMUNITY_SLUG_FIELD_NUMBER: builtins.int
    SAME_GENDER_ONLY_FIELD_NUMBER: builtins.int
    OFFERS_COUNT_FIELD_NUMBER: builtins.int
    COMMUNITY_NAME_FIELD_NUMBER: builtins.int
    VIEWER_HOST_REQUEST_ID_FIELD_NUMBER: builtins.int
    trip_id: builtins.int
    community_id: builtins.int
    from_date: builtins.str
    """Trip date range
    YYYY-MM-DD
    """
    to_date: builtins.str
    """YYYY-MM-DD"""
    description: builtins.str
    """User's description of their trip"""
    status: Global___PublicTripStatus.ValueType
    community_slug: builtins.str
    """Slug of the community this trip belongs to, for client-side routing"""
    same_gender_only: builtins.bool
    """If true, only users with the same gender as the poster can see this trip"""
    offers_count: builtins.int
    """Number of non-cancelled host offers linked to this trip.
    Only populated when the viewer is the trip owner.
    """
    community_name: builtins.str
    """Display name of the community this trip belongs to"""
    viewer_host_request_id: builtins.int
    """The id of the viewer's own non-cancelled host request (offer) on this trip,
    or 0 if they haven't offered. Lets the client show an "already offered"
    state and link to the existing thread. Not set for the trip owner.
    """
    @property
    def user(self) -> api_pb2.User: ...
    @property
    def created(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        trip_id: builtins.int | None = ...,
        user: api_pb2.User | None = ...,
        community_id: builtins.int | None = ...,
        from_date: builtins.str | None = ...,
        to_date: builtins.str | None = ...,
        description: builtins.str | None = ...,
        status: Global___PublicTripStatus.ValueType | None = ...,
        created: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        community_slug: builtins.str | None = ...,
        same_gender_only: builtins.bool | None = ...,
        offers_count: builtins.int | None = ...,
        community_name: builtins.str | None = ...,
        viewer_host_request_id: builtins.int | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_offers_count", b"_offers_count", "created", b"created", "offers_count", b"offers_count", "user", b"user"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_offers_count", b"_offers_count", "community_id", b"community_id", "community_name", b"community_name", "community_slug", b"community_slug", "created", b"created", "description", b"description", "from_date", b"from_date", "offers_count", b"offers_count", "same_gender_only", b"same_gender_only", "status", b"status", "to_date", b"to_date", "trip_id", b"trip_id", "user", b"user", "viewer_host_request_id", b"viewer_host_request_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__offers_count: typing_extensions.TypeAlias = typing.Literal["offers_count"]
    _WhichOneofArgType__offers_count: typing_extensions.TypeAlias = typing.Literal["_offers_count", b"_offers_count"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType__offers_count) -> _WhichOneofReturnType__offers_count | None: ...

Global___PublicTrip: typing_extensions.TypeAlias = PublicTrip

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

    COMMUNITY_ID_FIELD_NUMBER: builtins.int
    FROM_DATE_FIELD_NUMBER: builtins.int
    TO_DATE_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    SAME_GENDER_ONLY_FIELD_NUMBER: builtins.int
    community_id: builtins.int
    from_date: builtins.str
    """YYYY-MM-DD"""
    to_date: builtins.str
    """YYYY-MM-DD"""
    description: builtins.str
    same_gender_only: builtins.bool
    def __init__(
        self,
        *,
        community_id: builtins.int | None = ...,
        from_date: builtins.str | None = ...,
        to_date: builtins.str | None = ...,
        description: builtins.str | None = ...,
        same_gender_only: builtins.bool | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["community_id", b"community_id", "description", b"description", "from_date", b"from_date", "same_gender_only", b"same_gender_only", "to_date", b"to_date"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CreatePublicTripReq: typing_extensions.TypeAlias = CreatePublicTripReq

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

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

Global___GetPublicTripReq: typing_extensions.TypeAlias = GetPublicTripReq

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

    COMMUNITY_ID_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    community_id: builtins.int
    page_size: builtins.int
    page_token: builtins.str
    def __init__(
        self,
        *,
        community_id: builtins.int | None = ...,
        page_size: builtins.int | None = ...,
        page_token: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["community_id", b"community_id", "page_size", b"page_size", "page_token", b"page_token"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListPublicTripsReq: typing_extensions.TypeAlias = ListPublicTripsReq

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

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

Global___ListPublicTripsRes: typing_extensions.TypeAlias = ListPublicTripsRes

@typing.final
class ListPublicTripsByUserReq(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
    STATUSES_IN_FIELD_NUMBER: builtins.int
    ASCENDING_FIELD_NUMBER: builtins.int
    user_id: builtins.int
    page_size: builtins.int
    page_token: builtins.str
    ascending: builtins.bool
    """If true, trips are sorted ascending by start date (soonest first).
    Default (false) sorts descending (latest start date first).
    """
    @property
    def statuses_in(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[Global___PublicTripStatus.ValueType]:
        """If non-empty, only trips with these statuses are returned.
        Ignored when viewing another user's trips (always filtered to active+upcoming).
        """

    def __init__(
        self,
        *,
        user_id: builtins.int | None = ...,
        page_size: builtins.int | None = ...,
        page_token: builtins.str | None = ...,
        statuses_in: collections.abc.Iterable[Global___PublicTripStatus.ValueType] | None = ...,
        ascending: builtins.bool | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["ascending", b"ascending", "page_size", b"page_size", "page_token", b"page_token", "statuses_in", b"statuses_in", "user_id", b"user_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ListPublicTripsByUserReq: typing_extensions.TypeAlias = ListPublicTripsByUserReq

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

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

Global___ListPublicTripsByUserRes: typing_extensions.TypeAlias = ListPublicTripsByUserRes

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

    TRIP_ID_FIELD_NUMBER: builtins.int
    FROM_DATE_FIELD_NUMBER: builtins.int
    TO_DATE_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    SAME_GENDER_ONLY_FIELD_NUMBER: builtins.int
    trip_id: builtins.int
    from_date: builtins.str
    """Only supplied fields are updated.
    YYYY-MM-DD
    """
    to_date: builtins.str
    """YYYY-MM-DD"""
    description: builtins.str
    status: Global___PublicTripStatus.ValueType
    same_gender_only: builtins.bool
    def __init__(
        self,
        *,
        trip_id: builtins.int | None = ...,
        from_date: builtins.str | None = ...,
        to_date: builtins.str | None = ...,
        description: builtins.str | None = ...,
        status: Global___PublicTripStatus.ValueType | None = ...,
        same_gender_only: builtins.bool | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_description", b"_description", "_from_date", b"_from_date", "_same_gender_only", b"_same_gender_only", "_status", b"_status", "_to_date", b"_to_date", "description", b"description", "from_date", b"from_date", "same_gender_only", b"same_gender_only", "status", b"status", "to_date", b"to_date"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_description", b"_description", "_from_date", b"_from_date", "_same_gender_only", b"_same_gender_only", "_status", b"_status", "_to_date", b"_to_date", "description", b"description", "from_date", b"from_date", "same_gender_only", b"same_gender_only", "status", b"status", "to_date", b"to_date", "trip_id", b"trip_id"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__description: typing_extensions.TypeAlias = typing.Literal["description"]
    _WhichOneofArgType__description: typing_extensions.TypeAlias = typing.Literal["_description", b"_description"]
    _WhichOneofReturnType__from_date: typing_extensions.TypeAlias = typing.Literal["from_date"]
    _WhichOneofArgType__from_date: typing_extensions.TypeAlias = typing.Literal["_from_date", b"_from_date"]
    _WhichOneofReturnType__same_gender_only: typing_extensions.TypeAlias = typing.Literal["same_gender_only"]
    _WhichOneofArgType__same_gender_only: typing_extensions.TypeAlias = typing.Literal["_same_gender_only", b"_same_gender_only"]
    _WhichOneofReturnType__status: typing_extensions.TypeAlias = typing.Literal["status"]
    _WhichOneofArgType__status: typing_extensions.TypeAlias = typing.Literal["_status", b"_status"]
    _WhichOneofReturnType__to_date: typing_extensions.TypeAlias = typing.Literal["to_date"]
    _WhichOneofArgType__to_date: typing_extensions.TypeAlias = typing.Literal["_to_date", b"_to_date"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__description) -> _WhichOneofReturnType__description | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__from_date) -> _WhichOneofReturnType__from_date | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__same_gender_only) -> _WhichOneofReturnType__same_gender_only | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__status) -> _WhichOneofReturnType__status | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__to_date) -> _WhichOneofReturnType__to_date | None: ...

Global___UpdatePublicTripReq: typing_extensions.TypeAlias = UpdatePublicTripReq
