import datetime

from google.api import annotations_pb2 as _annotations_pb2
from google.protobuf import timestamp_pb2 as _timestamp_pb2
from tars.auth.v1 import auth_options_pb2 as _auth_options_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 GetRevocationListRequest(_message.Message):
    __slots__ = ("since", "limit")
    SINCE_FIELD_NUMBER: _ClassVar[int]
    LIMIT_FIELD_NUMBER: _ClassVar[int]
    since: _timestamp_pb2.Timestamp
    limit: int
    def __init__(self, since: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., limit: _Optional[int] = ...) -> None: ...

class GetRevocationListResponse(_message.Message):
    __slots__ = ("revocations", "snapshot_at", "total_count")
    REVOCATIONS_FIELD_NUMBER: _ClassVar[int]
    SNAPSHOT_AT_FIELD_NUMBER: _ClassVar[int]
    TOTAL_COUNT_FIELD_NUMBER: _ClassVar[int]
    revocations: _containers.RepeatedCompositeFieldContainer[RevokedTokenInfo]
    snapshot_at: _timestamp_pb2.Timestamp
    total_count: int
    def __init__(self, revocations: _Optional[_Iterable[_Union[RevokedTokenInfo, _Mapping]]] = ..., snapshot_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., total_count: _Optional[int] = ...) -> None: ...

class RevokedTokenInfo(_message.Message):
    __slots__ = ("jti", "revoked_at", "reason")
    JTI_FIELD_NUMBER: _ClassVar[int]
    REVOKED_AT_FIELD_NUMBER: _ClassVar[int]
    REASON_FIELD_NUMBER: _ClassVar[int]
    jti: str
    revoked_at: _timestamp_pb2.Timestamp
    reason: str
    def __init__(self, jti: _Optional[str] = ..., revoked_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., reason: _Optional[str] = ...) -> None: ...

class UpdateLastUsedRequest(_message.Message):
    __slots__ = ("jti", "used_at")
    JTI_FIELD_NUMBER: _ClassVar[int]
    USED_AT_FIELD_NUMBER: _ClassVar[int]
    jti: str
    used_at: _timestamp_pb2.Timestamp
    def __init__(self, jti: _Optional[str] = ..., used_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class UpdateLastUsedResponse(_message.Message):
    __slots__ = ("success", "recorded_at")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    RECORDED_AT_FIELD_NUMBER: _ClassVar[int]
    success: bool
    recorded_at: _timestamp_pb2.Timestamp
    def __init__(self, success: _Optional[bool] = ..., recorded_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
