"""
@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.message
import google.protobuf.timestamp_pb2
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class S3APIGetObjectResponse(google.protobuf.message.Message):
    """Represents a response of the get object request to S3."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

    ETAG_FIELD_NUMBER: builtins.int
    REQUEST_ID_FIELD_NUMBER: builtins.int
    ACCEPT_RANGES_FIELD_NUMBER: builtins.int
    CACHE_CONTROL_FIELD_NUMBER: builtins.int
    CONTENT_DISPOSITION_FIELD_NUMBER: builtins.int
    CONTENT_ENCODING_FIELD_NUMBER: builtins.int
    CONTENT_LANGUAGE_FIELD_NUMBER: builtins.int
    CONTENT_LENGTH_FIELD_NUMBER: builtins.int
    CONTENT_RANGE_FIELD_NUMBER: builtins.int
    CONTENT_TYPE_FIELD_NUMBER: builtins.int
    VERSION_ID_FIELD_NUMBER: builtins.int
    EXPIRES_AT_FIELD_NUMBER: builtins.int
    LAST_MODIFIED_AT_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    STORAGE_CLASS_FIELD_NUMBER: builtins.int
    SERVER_SIDE_ENCRYPTION_FIELD_NUMBER: builtins.int
    SSE_KMS_KEY_ID_FIELD_NUMBER: builtins.int
    OBJECT_LOCK_MODE_FIELD_NUMBER: builtins.int
    OBJECT_LOCK_RETAIN_UNTIL_DATE_FIELD_NUMBER: builtins.int
    OBJECT_LOCK_LEGAL_HOLD_STATUS_FIELD_NUMBER: builtins.int
    etag: builtins.str
    """MD5 hash of the object."""
    request_id: builtins.str
    """Unique request ID."""
    accept_ranges: builtins.str
    """Indicates that a range of bytes was specified in the request."""
    cache_control: builtins.str
    """Specifies caching behavior along the request/reply chain."""
    content_disposition: builtins.str
    """Specifies presentational information for the object."""
    content_encoding: builtins.str
    """Indicates what content encodings have been applied to the object."""
    content_language: builtins.str
    """The language the content is in."""
    content_length: builtins.int
    """Size of the body in bytes."""
    content_range: builtins.str
    """The portion of the object returned in the response."""
    content_type: builtins.str
    """A standard MIME type describing the format of the object data."""
    version_id: builtins.str
    """Version ID of the object."""
    storage_class: builtins.str
    """Provides storage class information of the object."""
    server_side_encryption: builtins.str
    """Encryption algorithm used to encrypt the object."""
    sse_kms_key_id: builtins.str
    """ID of the key KMS."""
    object_lock_mode: builtins.str
    """Type of retention put on the object."""
    object_lock_legal_hold_status: builtins.str
    """Type of legal hold put on the object"""
    @property
    def expires_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """The date and time at which the object is no longer cacheable."""

    @property
    def last_modified_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Date and time when the object was last modified."""

    @property
    def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Object user-defined metadata."""

    @property
    def object_lock_retain_until_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Date and time until which the object is retained"""

    def __init__(
        self,
        *,
        etag: builtins.str = ...,
        request_id: builtins.str = ...,
        accept_ranges: builtins.str = ...,
        cache_control: builtins.str = ...,
        content_disposition: builtins.str = ...,
        content_encoding: builtins.str = ...,
        content_language: builtins.str = ...,
        content_length: builtins.int = ...,
        content_range: builtins.str = ...,
        content_type: builtins.str = ...,
        version_id: builtins.str = ...,
        expires_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_modified_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        storage_class: builtins.str = ...,
        server_side_encryption: builtins.str = ...,
        sse_kms_key_id: builtins.str = ...,
        object_lock_mode: builtins.str = ...,
        object_lock_retain_until_date: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        object_lock_legal_hold_status: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["expires_at", b"expires_at", "last_modified_at", b"last_modified_at", "object_lock_retain_until_date", b"object_lock_retain_until_date"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["accept_ranges", b"accept_ranges", "cache_control", b"cache_control", "content_disposition", b"content_disposition", "content_encoding", b"content_encoding", "content_language", b"content_language", "content_length", b"content_length", "content_range", b"content_range", "content_type", b"content_type", "etag", b"etag", "expires_at", b"expires_at", "last_modified_at", b"last_modified_at", "metadata", b"metadata", "object_lock_legal_hold_status", b"object_lock_legal_hold_status", "object_lock_mode", b"object_lock_mode", "object_lock_retain_until_date", b"object_lock_retain_until_date", "request_id", b"request_id", "server_side_encryption", b"server_side_encryption", "sse_kms_key_id", b"sse_kms_key_id", "storage_class", b"storage_class", "version_id", b"version_id"]) -> None: ...

global___S3APIGetObjectResponse = S3APIGetObjectResponse

@typing.final
class S3APIPutObjectResponse(google.protobuf.message.Message):
    """Represents a response of the put object request to S3."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ETAG_FIELD_NUMBER: builtins.int
    REQUEST_ID_FIELD_NUMBER: builtins.int
    VERSION_ID_FIELD_NUMBER: builtins.int
    etag: builtins.str
    """MD5 hash of the object."""
    request_id: builtins.str
    """Unique request ID."""
    version_id: builtins.str
    """Version ID of the object."""
    def __init__(
        self,
        *,
        etag: builtins.str = ...,
        request_id: builtins.str = ...,
        version_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["etag", b"etag", "request_id", b"request_id", "version_id", b"version_id"]) -> None: ...

global___S3APIPutObjectResponse = S3APIPutObjectResponse

@typing.final
class S3APIDeleteObjectResponse(google.protobuf.message.Message):
    """Represents a response of the delete object request to S3."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    REQUEST_ID_FIELD_NUMBER: builtins.int
    VERSION_ID_FIELD_NUMBER: builtins.int
    request_id: builtins.str
    """Unique request ID."""
    version_id: builtins.str
    """Version ID of the object."""
    def __init__(
        self,
        *,
        request_id: builtins.str = ...,
        version_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["request_id", b"request_id", "version_id", b"version_id"]) -> None: ...

global___S3APIDeleteObjectResponse = S3APIDeleteObjectResponse
