# 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 CloudFormation
    # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudFormation/Resource.html
    class Resource
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudFormation/Resource.html#initialize-instance_method
      def initialize: (
                        ?client: Client,
                        ?credentials: untyped,
                        ?region: String,
                        ?access_key_id: String,
                        ?active_endpoint_cache: bool,
                        ?adaptive_retry_wait_to_fill: bool,
                        ?client_side_monitoring: bool,
                        ?client_side_monitoring_client_id: String,
                        ?client_side_monitoring_host: String,
                        ?client_side_monitoring_port: Integer,
                        ?client_side_monitoring_publisher: untyped,
                        ?convert_params: bool,
                        ?correct_clock_skew: bool,
                        ?defaults_mode: String,
                        ?disable_host_prefix_injection: bool,
                        ?disable_request_compression: bool,
                        ?endpoint: String,
                        ?endpoint_cache_max_entries: Integer,
                        ?endpoint_cache_max_threads: Integer,
                        ?endpoint_cache_poll_interval: Integer,
                        ?endpoint_discovery: bool,
                        ?ignore_configured_endpoint_urls: bool,
                        ?log_formatter: untyped,
                        ?log_level: Symbol,
                        ?logger: untyped,
                        ?max_attempts: Integer,
                        ?profile: String,
                        ?request_min_compression_size_bytes: Integer,
                        ?retry_backoff: Proc,
                        ?retry_base_delay: Float,
                        ?retry_jitter: (:none | :equal | :full | ^(Integer) -> Integer),
                        ?retry_limit: Integer,
                        ?retry_max_delay: Integer,
                        ?retry_mode: ("legacy" | "standard" | "adaptive"),
                        ?sdk_ua_app_id: String,
                        ?secret_access_key: String,
                        ?session_token: String,
                        ?sigv4a_signing_region_set: Array[String],
                        ?stub_responses: untyped,
                        ?token_provider: untyped,
                        ?use_dualstack_endpoint: bool,
                        ?use_fips_endpoint: bool,
                        ?validate_params: bool,
                        ?endpoint_provider: untyped,
                        ?http_proxy: String,
                        ?http_open_timeout: (Float | Integer),
                        ?http_read_timeout: (Float | Integer),
                        ?http_idle_timeout: (Float | Integer),
                        ?http_continue_timeout: (Float | Integer),
                        ?ssl_timeout: (Float | Integer | nil),
                        ?http_wire_trace: bool,
                        ?ssl_verify_peer: bool,
                        ?ssl_ca_bundle: String,
                        ?ssl_ca_directory: String,
                        ?ssl_ca_store: String,
                        ?on_chunk_received: Proc,
                        ?on_chunk_sent: Proc,
                        ?raise_response_errors: bool
                      ) -> void
                    | (?Hash[Symbol, untyped]) -> void

      def client: () -> Client


      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudFormation/Resource.html#create_stack-instance_method
      def create_stack: (
                          stack_name: ::String,
                          ?template_body: ::String,
                          ?template_url: ::String,
                          ?parameters: Array[
                            {
                              parameter_key: ::String?,
                              parameter_value: ::String?,
                              use_previous_value: bool?,
                              resolved_value: ::String?
                            },
                          ],
                          ?disable_rollback: bool,
                          ?rollback_configuration: {
                            rollback_triggers: Array[
                              {
                                arn: ::String,
                                type: ::String
                              },
                            ]?,
                            monitoring_time_in_minutes: ::Integer?
                          },
                          ?timeout_in_minutes: ::Integer,
                          ?notification_arns: Array[::String],
                          ?capabilities: Array[("CAPABILITY_IAM" | "CAPABILITY_NAMED_IAM" | "CAPABILITY_AUTO_EXPAND")],
                          ?resource_types: Array[::String],
                          ?role_arn: ::String,
                          ?on_failure: ("DO_NOTHING" | "ROLLBACK" | "DELETE"),
                          ?stack_policy_body: ::String,
                          ?stack_policy_url: ::String,
                          ?tags: Array[
                            {
                              key: ::String,
                              value: ::String
                            },
                          ],
                          ?client_request_token: ::String,
                          ?enable_termination_protection: bool,
                          ?retain_except_on_create: bool
                        ) -> Stack
                      | (?Hash[Symbol, untyped]) -> Stack


      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudFormation/Resource.html#event-instance_method
      def event: (String id) -> Event

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudFormation/Resource.html#stack-instance_method
      def stack: (String name) -> Stack

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudFormation/Resource.html#stacks-instance_method
      def stacks: (
                    ?stack_name: ::String
                  ) -> Stack::Collection
                | (?Hash[Symbol, untyped]) -> Stack::Collection
    end
  end
end