# WARNING ABOUT GENERATED CODE
#
# This file is generated. See the contributing guide for more information:
# https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
#
# WARNING ABOUT GENERATED CODE

module Aws
  module RDS
    # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html
    class DBClusterSnapshot
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#initialize-instance_method
      def initialize: (String cluster_id, String snapshot_id, Hash[Symbol, untyped] options) -> void
                    | (cluster_id: String, snapshot_id: String, ?client: Client) -> void
                    | (Hash[Symbol, untyped] args) -> void

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#cluster_id-instance_method
      def cluster_id: () -> String
      alias db_cluster_identifier cluster_id

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#snapshot_id-instance_method
      def snapshot_id: () -> String
      alias db_cluster_snapshot_identifier snapshot_id

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#availability_zones-instance_method
      def availability_zones: () -> ::Array[::String]

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#snapshot_create_time-instance_method
      def snapshot_create_time: () -> ::Time

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#engine-instance_method
      def engine: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#engine_mode-instance_method
      def engine_mode: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#allocated_storage-instance_method
      def allocated_storage: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#status-instance_method
      def status: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#port-instance_method
      def port: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#vpc_id-instance_method
      def vpc_id: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#cluster_create_time-instance_method
      def cluster_create_time: () -> ::Time

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#master_username-instance_method
      def master_username: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#engine_version-instance_method
      def engine_version: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#license_model-instance_method
      def license_model: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#snapshot_type-instance_method
      def snapshot_type: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#percent_progress-instance_method
      def percent_progress: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#storage_encrypted-instance_method
      def storage_encrypted: () -> bool

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#kms_key_id-instance_method
      def kms_key_id: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#db_cluster_snapshot_arn-instance_method
      def db_cluster_snapshot_arn: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#source_db_cluster_snapshot_arn-instance_method
      def source_db_cluster_snapshot_arn: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#iam_database_authentication_enabled-instance_method
      def iam_database_authentication_enabled: () -> bool

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#tag_list-instance_method
      def tag_list: () -> ::Array[Types::Tag]

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#db_system_id-instance_method
      def db_system_id: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#storage_type-instance_method
      def storage_type: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#db_cluster_resource_id-instance_method
      def db_cluster_resource_id: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#storage_throughput-instance_method
      def storage_throughput: () -> ::Integer

      def client: () -> Client

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#load-instance_method
      def load: () -> self
      alias reload load

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#data-instance_method
      def data: () -> Types::DBClusterSnapshot

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#data_loaded?-instance_method
      def data_loaded?: () -> bool


      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#create-instance_method
      def create: (
                    ?tags: Array[
                      {
                        key: ::String?,
                        value: ::String?
                      },
                    ]
                  ) -> DBClusterSnapshot
                | (?Hash[Symbol, untyped]) -> DBClusterSnapshot

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#copy-instance_method
      def copy: (
                  target_db_cluster_snapshot_identifier: ::String,
                  ?kms_key_id: ::String,
                  ?pre_signed_url: ::String,
                  ?copy_tags: bool,
                  ?tags: Array[
                    {
                      key: ::String?,
                      value: ::String?
                    },
                  ],
                  ?source_region: ::String
                ) -> DBClusterSnapshot
              | (?Hash[Symbol, untyped]) -> DBClusterSnapshot

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#delete-instance_method
      def delete: (
                  ) -> DBClusterSnapshot
                | (?Hash[Symbol, untyped]) -> DBClusterSnapshot

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#restore-instance_method
      def restore: (
                     ?availability_zones: Array[::String],
                     db_cluster_identifier: ::String,
                     engine: ::String,
                     ?engine_version: ::String,
                     ?port: ::Integer,
                     ?db_subnet_group_name: ::String,
                     ?database_name: ::String,
                     ?option_group_name: ::String,
                     ?vpc_security_group_ids: Array[::String],
                     ?tags: Array[
                       {
                         key: ::String?,
                         value: ::String?
                       },
                     ],
                     ?kms_key_id: ::String,
                     ?enable_iam_database_authentication: bool,
                     ?backtrack_window: ::Integer,
                     ?enable_cloudwatch_logs_exports: Array[::String],
                     ?engine_mode: ::String,
                     ?scaling_configuration: {
                       min_capacity: ::Integer?,
                       max_capacity: ::Integer?,
                       auto_pause: bool?,
                       seconds_until_auto_pause: ::Integer?,
                       timeout_action: ::String?,
                       seconds_before_timeout: ::Integer?
                     },
                     ?db_cluster_parameter_group_name: ::String,
                     ?deletion_protection: bool,
                     ?copy_tags_to_snapshot: bool,
                     ?domain: ::String,
                     ?domain_iam_role_name: ::String,
                     ?db_cluster_instance_class: ::String,
                     ?storage_type: ::String,
                     ?iops: ::Integer,
                     ?publicly_accessible: bool,
                     ?serverless_v2_scaling_configuration: {
                       min_capacity: ::Float?,
                       max_capacity: ::Float?
                     },
                     ?network_type: ::String,
                     ?rds_custom_cluster_configuration: {
                       interconnect_subnet_id: ::String?,
                       transit_gateway_multicast_domain_id: ::String?,
                       replica_mode: ("open-read-only" | "mounted")?
                     },
                     ?monitoring_interval: ::Integer,
                     ?monitoring_role_arn: ::String,
                     ?enable_performance_insights: bool,
                     ?performance_insights_kms_key_id: ::String,
                     ?performance_insights_retention_period: ::Integer,
                     ?engine_lifecycle_support: ::String
                   ) -> DBCluster
                 | (?Hash[Symbol, untyped]) -> DBCluster

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#cluster-instance_method
      def cluster: () -> DBCluster

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/DBClusterSnapshot.html#events-instance_method
      def events: (
                    ?start_time: ::Time,
                    ?end_time: ::Time,
                    ?duration: ::Integer,
                    ?event_categories: Array[::String],
                    ?filters: Array[
                      {
                        name: ::String,
                        values: Array[::String]
                      },
                    ]
                  ) -> Event::Collection
                | (?Hash[Symbol, untyped]) -> Event::Collection

      class Collection < ::Aws::Resources::Collection[DBClusterSnapshot]
      end
    end
  end
end