from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
DESCRIPTOR: _descriptor.FileDescriptor

class Authentication(_message.Message):
    __slots__ = ('rules', 'providers')
    RULES_FIELD_NUMBER: _ClassVar[int]
    PROVIDERS_FIELD_NUMBER: _ClassVar[int]
    rules: _containers.RepeatedCompositeFieldContainer[AuthenticationRule]
    providers: _containers.RepeatedCompositeFieldContainer[AuthProvider]

    def __init__(self, rules: _Optional[_Iterable[_Union[AuthenticationRule, _Mapping]]]=..., providers: _Optional[_Iterable[_Union[AuthProvider, _Mapping]]]=...) -> None:
        ...

class AuthenticationRule(_message.Message):
    __slots__ = ('selector', 'oauth', 'allow_without_credential', 'requirements')
    SELECTOR_FIELD_NUMBER: _ClassVar[int]
    OAUTH_FIELD_NUMBER: _ClassVar[int]
    ALLOW_WITHOUT_CREDENTIAL_FIELD_NUMBER: _ClassVar[int]
    REQUIREMENTS_FIELD_NUMBER: _ClassVar[int]
    selector: str
    oauth: OAuthRequirements
    allow_without_credential: bool
    requirements: _containers.RepeatedCompositeFieldContainer[AuthRequirement]

    def __init__(self, selector: _Optional[str]=..., oauth: _Optional[_Union[OAuthRequirements, _Mapping]]=..., allow_without_credential: bool=..., requirements: _Optional[_Iterable[_Union[AuthRequirement, _Mapping]]]=...) -> None:
        ...

class JwtLocation(_message.Message):
    __slots__ = ('header', 'query', 'cookie', 'value_prefix')
    HEADER_FIELD_NUMBER: _ClassVar[int]
    QUERY_FIELD_NUMBER: _ClassVar[int]
    COOKIE_FIELD_NUMBER: _ClassVar[int]
    VALUE_PREFIX_FIELD_NUMBER: _ClassVar[int]
    header: str
    query: str
    cookie: str
    value_prefix: str

    def __init__(self, header: _Optional[str]=..., query: _Optional[str]=..., cookie: _Optional[str]=..., value_prefix: _Optional[str]=...) -> None:
        ...

class AuthProvider(_message.Message):
    __slots__ = ('id', 'issuer', 'jwks_uri', 'audiences', 'authorization_url', 'jwt_locations')
    ID_FIELD_NUMBER: _ClassVar[int]
    ISSUER_FIELD_NUMBER: _ClassVar[int]
    JWKS_URI_FIELD_NUMBER: _ClassVar[int]
    AUDIENCES_FIELD_NUMBER: _ClassVar[int]
    AUTHORIZATION_URL_FIELD_NUMBER: _ClassVar[int]
    JWT_LOCATIONS_FIELD_NUMBER: _ClassVar[int]
    id: str
    issuer: str
    jwks_uri: str
    audiences: str
    authorization_url: str
    jwt_locations: _containers.RepeatedCompositeFieldContainer[JwtLocation]

    def __init__(self, id: _Optional[str]=..., issuer: _Optional[str]=..., jwks_uri: _Optional[str]=..., audiences: _Optional[str]=..., authorization_url: _Optional[str]=..., jwt_locations: _Optional[_Iterable[_Union[JwtLocation, _Mapping]]]=...) -> None:
        ...

class OAuthRequirements(_message.Message):
    __slots__ = ('canonical_scopes',)
    CANONICAL_SCOPES_FIELD_NUMBER: _ClassVar[int]
    canonical_scopes: str

    def __init__(self, canonical_scopes: _Optional[str]=...) -> None:
        ...

class AuthRequirement(_message.Message):
    __slots__ = ('provider_id', 'audiences')
    PROVIDER_ID_FIELD_NUMBER: _ClassVar[int]
    AUDIENCES_FIELD_NUMBER: _ClassVar[int]
    provider_id: str
    audiences: str

    def __init__(self, provider_id: _Optional[str]=..., audiences: _Optional[str]=...) -> None:
        ...