import datetime

from google.api import annotations_pb2 as _annotations_pb2
from google.api import field_behavior_pb2 as _field_behavior_pb2
from google.protobuf import empty_pb2 as _empty_pb2
from google.protobuf import timestamp_pb2 as _timestamp_pb2
from tars.auth.v1 import auth_options_pb2 as _auth_options_pb2
from tars.cli.v1 import cli_pb2 as _cli_pb2
from tars.common.v1 import types_pb2 as _types_pb2
from tars.docs.v1 import docs_pb2 as _docs_pb2
from google.protobuf.internal import containers as _containers
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 McpOAuthClient(_message.Message):
    __slots__ = ("id", "customer_id", "project_id", "provider", "provider_name", "client_id", "authorization_url", "token_url", "scopes", "redirect_uris", "metadata", "server_ids", "status", "created_at", "updated_at")
    class MetadataEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    PROVIDER_FIELD_NUMBER: _ClassVar[int]
    PROVIDER_NAME_FIELD_NUMBER: _ClassVar[int]
    CLIENT_ID_FIELD_NUMBER: _ClassVar[int]
    AUTHORIZATION_URL_FIELD_NUMBER: _ClassVar[int]
    TOKEN_URL_FIELD_NUMBER: _ClassVar[int]
    SCOPES_FIELD_NUMBER: _ClassVar[int]
    REDIRECT_URIS_FIELD_NUMBER: _ClassVar[int]
    METADATA_FIELD_NUMBER: _ClassVar[int]
    SERVER_IDS_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    customer_id: str
    project_id: str
    provider: str
    provider_name: str
    client_id: str
    authorization_url: str
    token_url: str
    scopes: _containers.RepeatedScalarFieldContainer[str]
    redirect_uris: _containers.RepeatedScalarFieldContainer[str]
    metadata: _containers.ScalarMap[str, str]
    server_ids: _containers.RepeatedScalarFieldContainer[str]
    status: str
    created_at: _timestamp_pb2.Timestamp
    updated_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., provider: _Optional[str] = ..., provider_name: _Optional[str] = ..., client_id: _Optional[str] = ..., authorization_url: _Optional[str] = ..., token_url: _Optional[str] = ..., scopes: _Optional[_Iterable[str]] = ..., redirect_uris: _Optional[_Iterable[str]] = ..., metadata: _Optional[_Mapping[str, str]] = ..., server_ids: _Optional[_Iterable[str]] = ..., status: _Optional[str] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class CreateMcpOAuthClientRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "provider", "provider_name", "client_id", "client_secret", "authorization_url", "token_url", "scopes", "redirect_uris", "metadata", "server_ids", "status")
    class MetadataEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    PROVIDER_FIELD_NUMBER: _ClassVar[int]
    PROVIDER_NAME_FIELD_NUMBER: _ClassVar[int]
    CLIENT_ID_FIELD_NUMBER: _ClassVar[int]
    CLIENT_SECRET_FIELD_NUMBER: _ClassVar[int]
    AUTHORIZATION_URL_FIELD_NUMBER: _ClassVar[int]
    TOKEN_URL_FIELD_NUMBER: _ClassVar[int]
    SCOPES_FIELD_NUMBER: _ClassVar[int]
    REDIRECT_URIS_FIELD_NUMBER: _ClassVar[int]
    METADATA_FIELD_NUMBER: _ClassVar[int]
    SERVER_IDS_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    provider: str
    provider_name: str
    client_id: str
    client_secret: str
    authorization_url: str
    token_url: str
    scopes: _containers.RepeatedScalarFieldContainer[str]
    redirect_uris: _containers.RepeatedScalarFieldContainer[str]
    metadata: _containers.ScalarMap[str, str]
    server_ids: _containers.RepeatedScalarFieldContainer[str]
    status: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., provider: _Optional[str] = ..., provider_name: _Optional[str] = ..., client_id: _Optional[str] = ..., client_secret: _Optional[str] = ..., authorization_url: _Optional[str] = ..., token_url: _Optional[str] = ..., scopes: _Optional[_Iterable[str]] = ..., redirect_uris: _Optional[_Iterable[str]] = ..., metadata: _Optional[_Mapping[str, str]] = ..., server_ids: _Optional[_Iterable[str]] = ..., status: _Optional[str] = ...) -> None: ...

class GetMcpOAuthClientRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "id")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    ID_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    id: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ...

class ListMcpOAuthClientsRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "page")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    PAGE_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    page: _types_pb2.PageRequest
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., page: _Optional[_Union[_types_pb2.PageRequest, _Mapping]] = ...) -> None: ...

class ListMcpOAuthClientsResponse(_message.Message):
    __slots__ = ("clients", "page")
    CLIENTS_FIELD_NUMBER: _ClassVar[int]
    PAGE_FIELD_NUMBER: _ClassVar[int]
    clients: _containers.RepeatedCompositeFieldContainer[McpOAuthClient]
    page: _types_pb2.PageResponse
    def __init__(self, clients: _Optional[_Iterable[_Union[McpOAuthClient, _Mapping]]] = ..., page: _Optional[_Union[_types_pb2.PageResponse, _Mapping]] = ...) -> None: ...

class UpdateMcpOAuthClientRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "id", "provider_name", "client_id", "client_secret", "authorization_url", "token_url", "status", "scopes", "redirect_uris", "metadata", "server_ids", "replace_scopes", "replace_redirect_uris", "replace_metadata", "replace_server_ids")
    class MetadataEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    ID_FIELD_NUMBER: _ClassVar[int]
    PROVIDER_NAME_FIELD_NUMBER: _ClassVar[int]
    CLIENT_ID_FIELD_NUMBER: _ClassVar[int]
    CLIENT_SECRET_FIELD_NUMBER: _ClassVar[int]
    AUTHORIZATION_URL_FIELD_NUMBER: _ClassVar[int]
    TOKEN_URL_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    SCOPES_FIELD_NUMBER: _ClassVar[int]
    REDIRECT_URIS_FIELD_NUMBER: _ClassVar[int]
    METADATA_FIELD_NUMBER: _ClassVar[int]
    SERVER_IDS_FIELD_NUMBER: _ClassVar[int]
    REPLACE_SCOPES_FIELD_NUMBER: _ClassVar[int]
    REPLACE_REDIRECT_URIS_FIELD_NUMBER: _ClassVar[int]
    REPLACE_METADATA_FIELD_NUMBER: _ClassVar[int]
    REPLACE_SERVER_IDS_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    id: str
    provider_name: str
    client_id: str
    client_secret: str
    authorization_url: str
    token_url: str
    status: str
    scopes: _containers.RepeatedScalarFieldContainer[str]
    redirect_uris: _containers.RepeatedScalarFieldContainer[str]
    metadata: _containers.ScalarMap[str, str]
    server_ids: _containers.RepeatedScalarFieldContainer[str]
    replace_scopes: bool
    replace_redirect_uris: bool
    replace_metadata: bool
    replace_server_ids: bool
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., id: _Optional[str] = ..., provider_name: _Optional[str] = ..., client_id: _Optional[str] = ..., client_secret: _Optional[str] = ..., authorization_url: _Optional[str] = ..., token_url: _Optional[str] = ..., status: _Optional[str] = ..., scopes: _Optional[_Iterable[str]] = ..., redirect_uris: _Optional[_Iterable[str]] = ..., metadata: _Optional[_Mapping[str, str]] = ..., server_ids: _Optional[_Iterable[str]] = ..., replace_scopes: _Optional[bool] = ..., replace_redirect_uris: _Optional[bool] = ..., replace_metadata: _Optional[bool] = ..., replace_server_ids: _Optional[bool] = ...) -> None: ...

class DeleteMcpOAuthClientRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "id")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    ID_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    id: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ...
