"""
@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 shared.shared_pb2
import sys

if sys.version_info >= (3, 8):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing_extensions.final
class ReplicationGroupNodeGroupConfiguration(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RESOURCE_INFO_FIELD_NUMBER: builtins.int
    NODE_GROUP_ID_FIELD_NUMBER: builtins.int
    PRIMARY_AVAILABILITY_ZONE_FIELD_NUMBER: builtins.int
    REPLICA_AVAILABILITY_ZONES_FIELD_NUMBER: builtins.int
    REPLICA_COUNT_FIELD_NUMBER: builtins.int
    SLOTS_FIELD_NUMBER: builtins.int
    @property
    def resource_info(self) -> shared.shared_pb2.ResourceInfo: ...
    node_group_id: builtins.str
    primary_availability_zone: builtins.str
    @property
    def replica_availability_zones(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    replica_count: builtins.int
    slots: builtins.str
    def __init__(
        self,
        *,
        resource_info: shared.shared_pb2.ResourceInfo | None = ...,
        node_group_id: builtins.str = ...,
        primary_availability_zone: builtins.str = ...,
        replica_availability_zones: collections.abc.Iterable[builtins.str] | None = ...,
        replica_count: builtins.int = ...,
        slots: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["resource_info", b"resource_info"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["node_group_id", b"node_group_id", "primary_availability_zone", b"primary_availability_zone", "replica_availability_zones", b"replica_availability_zones", "replica_count", b"replica_count", "resource_info", b"resource_info", "slots", b"slots"]) -> None: ...

global___ReplicationGroupNodeGroupConfiguration = ReplicationGroupNodeGroupConfiguration

@typing_extensions.final
class ReplicationGroup(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class TagsEntry(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_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    RESOURCE_INFO_FIELD_NUMBER: builtins.int
    AT_REST_ENCRYPTION_ENABLED_FIELD_NUMBER: builtins.int
    AUTH_TOKEN_FIELD_NUMBER: builtins.int
    AUTO_MINOR_VERSION_UPGRADE_FIELD_NUMBER: builtins.int
    AUTOMATIC_FAILOVER_ENABLED_FIELD_NUMBER: builtins.int
    CACHE_NODE_TYPE_FIELD_NUMBER: builtins.int
    CACHE_PARAMETER_GROUP_NAME_FIELD_NUMBER: builtins.int
    CACHE_SECURITY_GROUP_NAMES_FIELD_NUMBER: builtins.int
    CACHE_SUBNET_GROUP_NAME_FIELD_NUMBER: builtins.int
    ENGINE_FIELD_NUMBER: builtins.int
    ENGINE_VERSION_FIELD_NUMBER: builtins.int
    KMS_KEY_ID_FIELD_NUMBER: builtins.int
    MULTI_AZ_ENABLED_FIELD_NUMBER: builtins.int
    NODE_GROUP_CONFIGURATION_FIELD_NUMBER: builtins.int
    NOTIFICATION_TOPIC_ARN_FIELD_NUMBER: builtins.int
    NUM_CACHE_CLUSTERS_FIELD_NUMBER: builtins.int
    NUM_NODE_GROUPS_FIELD_NUMBER: builtins.int
    PORT_FIELD_NUMBER: builtins.int
    PREFERRED_CACHE_CLUSTER_AZS_FIELD_NUMBER: builtins.int
    PREFERRED_MAINTENANCE_WINDOW_FIELD_NUMBER: builtins.int
    PRIMARY_CLUSTER_ID_FIELD_NUMBER: builtins.int
    REPLICAS_PER_NODE_GROUP_FIELD_NUMBER: builtins.int
    REPLICATION_GROUP_DESCRIPTION_FIELD_NUMBER: builtins.int
    REPLICATION_GROUP_ID_FIELD_NUMBER: builtins.int
    SECURITY_GROUP_IDS_FIELD_NUMBER: builtins.int
    SNAPSHOT_ARNS_FIELD_NUMBER: builtins.int
    SNAPSHOT_NAME_FIELD_NUMBER: builtins.int
    SNAPSHOT_RETENTION_LIMIT_FIELD_NUMBER: builtins.int
    SNAPSHOT_WINDOW_FIELD_NUMBER: builtins.int
    SNAPSHOTTING_CLUSTER_ID_FIELD_NUMBER: builtins.int
    TAGS_FIELD_NUMBER: builtins.int
    TRANSIT_ENCRYPTION_ENABLED_FIELD_NUMBER: builtins.int
    @property
    def resource_info(self) -> shared.shared_pb2.ResourceInfo: ...
    at_rest_encryption_enabled: builtins.bool
    auth_token: builtins.str
    auto_minor_version_upgrade: builtins.bool
    automatic_failover_enabled: builtins.bool
    cache_node_type: builtins.str
    cache_parameter_group_name: builtins.str
    @property
    def cache_security_group_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    cache_subnet_group_name: builtins.str
    engine: builtins.str
    engine_version: builtins.str
    kms_key_id: builtins.str
    multi_az_enabled: builtins.bool
    @property
    def node_group_configuration(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ReplicationGroupNodeGroupConfiguration]: ...
    notification_topic_arn: builtins.str
    num_cache_clusters: builtins.int
    num_node_groups: builtins.int
    port: builtins.int
    @property
    def preferred_cache_cluster_azs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    preferred_maintenance_window: builtins.str
    primary_cluster_id: builtins.str
    replicas_per_node_group: builtins.int
    replication_group_description: builtins.str
    replication_group_id: builtins.str
    @property
    def security_group_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def snapshot_arns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    snapshot_name: builtins.str
    snapshot_retention_limit: builtins.int
    snapshot_window: builtins.str
    snapshotting_cluster_id: builtins.str
    @property
    def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ...
    transit_encryption_enabled: builtins.bool
    def __init__(
        self,
        *,
        resource_info: shared.shared_pb2.ResourceInfo | None = ...,
        at_rest_encryption_enabled: builtins.bool = ...,
        auth_token: builtins.str = ...,
        auto_minor_version_upgrade: builtins.bool = ...,
        automatic_failover_enabled: builtins.bool = ...,
        cache_node_type: builtins.str = ...,
        cache_parameter_group_name: builtins.str = ...,
        cache_security_group_names: collections.abc.Iterable[builtins.str] | None = ...,
        cache_subnet_group_name: builtins.str = ...,
        engine: builtins.str = ...,
        engine_version: builtins.str = ...,
        kms_key_id: builtins.str = ...,
        multi_az_enabled: builtins.bool = ...,
        node_group_configuration: collections.abc.Iterable[global___ReplicationGroupNodeGroupConfiguration] | None = ...,
        notification_topic_arn: builtins.str = ...,
        num_cache_clusters: builtins.int = ...,
        num_node_groups: builtins.int = ...,
        port: builtins.int = ...,
        preferred_cache_cluster_azs: collections.abc.Iterable[builtins.str] | None = ...,
        preferred_maintenance_window: builtins.str = ...,
        primary_cluster_id: builtins.str = ...,
        replicas_per_node_group: builtins.int = ...,
        replication_group_description: builtins.str = ...,
        replication_group_id: builtins.str = ...,
        security_group_ids: collections.abc.Iterable[builtins.str] | None = ...,
        snapshot_arns: collections.abc.Iterable[builtins.str] | None = ...,
        snapshot_name: builtins.str = ...,
        snapshot_retention_limit: builtins.int = ...,
        snapshot_window: builtins.str = ...,
        snapshotting_cluster_id: builtins.str = ...,
        tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        transit_encryption_enabled: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["resource_info", b"resource_info"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["at_rest_encryption_enabled", b"at_rest_encryption_enabled", "auth_token", b"auth_token", "auto_minor_version_upgrade", b"auto_minor_version_upgrade", "automatic_failover_enabled", b"automatic_failover_enabled", "cache_node_type", b"cache_node_type", "cache_parameter_group_name", b"cache_parameter_group_name", "cache_security_group_names", b"cache_security_group_names", "cache_subnet_group_name", b"cache_subnet_group_name", "engine", b"engine", "engine_version", b"engine_version", "kms_key_id", b"kms_key_id", "multi_az_enabled", b"multi_az_enabled", "node_group_configuration", b"node_group_configuration", "notification_topic_arn", b"notification_topic_arn", "num_cache_clusters", b"num_cache_clusters", "num_node_groups", b"num_node_groups", "port", b"port", "preferred_cache_cluster_azs", b"preferred_cache_cluster_azs", "preferred_maintenance_window", b"preferred_maintenance_window", "primary_cluster_id", b"primary_cluster_id", "replicas_per_node_group", b"replicas_per_node_group", "replication_group_description", b"replication_group_description", "replication_group_id", b"replication_group_id", "resource_info", b"resource_info", "security_group_ids", b"security_group_ids", "snapshot_arns", b"snapshot_arns", "snapshot_name", b"snapshot_name", "snapshot_retention_limit", b"snapshot_retention_limit", "snapshot_window", b"snapshot_window", "snapshotting_cluster_id", b"snapshotting_cluster_id", "tags", b"tags", "transit_encryption_enabled", b"transit_encryption_enabled"]) -> None: ...

global___ReplicationGroup = ReplicationGroup

@typing_extensions.final
class ElastiCache_ReplicationGroup(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    REPLICATION_GROUP_FIELD_NUMBER: builtins.int
    SECURITY_GROUP_FIELD_NUMBER: builtins.int
    SECURITY_GROUP_INGRESS_FIELD_NUMBER: builtins.int
    SUBNET_GROUP_FIELD_NUMBER: builtins.int
    @property
    def replication_group(self) -> global___ReplicationGroup: ...
    @property
    def security_group(self) -> global___SecurityGroup: ...
    @property
    def security_group_ingress(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SecurityGroupIngress]: ...
    @property
    def subnet_group(self) -> global___SubnetGroup: ...
    def __init__(
        self,
        *,
        replication_group: global___ReplicationGroup | None = ...,
        security_group: global___SecurityGroup | None = ...,
        security_group_ingress: collections.abc.Iterable[global___SecurityGroupIngress] | None = ...,
        subnet_group: global___SubnetGroup | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["replication_group", b"replication_group", "security_group", b"security_group", "subnet_group", b"subnet_group"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["replication_group", b"replication_group", "security_group", b"security_group", "security_group_ingress", b"security_group_ingress", "subnet_group", b"subnet_group"]) -> None: ...

global___ElastiCache_ReplicationGroup = ElastiCache_ReplicationGroup

@typing_extensions.final
class SecurityGroup(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RESOURCE_INFO_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    @property
    def resource_info(self) -> shared.shared_pb2.ResourceInfo: ...
    description: builtins.str
    def __init__(
        self,
        *,
        resource_info: shared.shared_pb2.ResourceInfo | None = ...,
        description: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["resource_info", b"resource_info"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "resource_info", b"resource_info"]) -> None: ...

global___SecurityGroup = SecurityGroup

@typing_extensions.final
class SecurityGroupIngress(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RESOURCE_INFO_FIELD_NUMBER: builtins.int
    CACHE_SECURITY_GROUP_NAME_FIELD_NUMBER: builtins.int
    E_C2_SECURITY_GROUP_NAME_FIELD_NUMBER: builtins.int
    E_C2_SECURITY_GROUP_OWNER_ID_FIELD_NUMBER: builtins.int
    @property
    def resource_info(self) -> shared.shared_pb2.ResourceInfo: ...
    cache_security_group_name: builtins.str
    e_c2_security_group_name: builtins.str
    e_c2_security_group_owner_id: builtins.str
    def __init__(
        self,
        *,
        resource_info: shared.shared_pb2.ResourceInfo | None = ...,
        cache_security_group_name: builtins.str = ...,
        e_c2_security_group_name: builtins.str = ...,
        e_c2_security_group_owner_id: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["resource_info", b"resource_info"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["cache_security_group_name", b"cache_security_group_name", "e_c2_security_group_name", b"e_c2_security_group_name", "e_c2_security_group_owner_id", b"e_c2_security_group_owner_id", "resource_info", b"resource_info"]) -> None: ...

global___SecurityGroupIngress = SecurityGroupIngress

@typing_extensions.final
class SubnetGroup(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RESOURCE_INFO_FIELD_NUMBER: builtins.int
    CACHE_SUBNET_GROUP_NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    SUBNET_IDS_FIELD_NUMBER: builtins.int
    @property
    def resource_info(self) -> shared.shared_pb2.ResourceInfo: ...
    cache_subnet_group_name: builtins.str
    description: builtins.str
    @property
    def subnet_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    def __init__(
        self,
        *,
        resource_info: shared.shared_pb2.ResourceInfo | None = ...,
        cache_subnet_group_name: builtins.str = ...,
        description: builtins.str = ...,
        subnet_ids: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["resource_info", b"resource_info"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["cache_subnet_group_name", b"cache_subnet_group_name", "description", b"description", "resource_info", b"resource_info", "subnet_ids", b"subnet_ids"]) -> None: ...

global___SubnetGroup = SubnetGroup
