# 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 CloudWatch
    # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html
    class CompositeAlarm
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#initialize-instance_method
      def initialize: (String name, Hash[Symbol, untyped] options) -> void
                    | (name: String, ?client: Client) -> void
                    | (Hash[Symbol, untyped] args) -> void

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#name-instance_method
      def name: () -> String
      alias alarm_name name

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#actions_enabled-instance_method
      def actions_enabled: () -> bool

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#alarm_arn-instance_method
      def alarm_arn: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#alarm_configuration_updated_timestamp-instance_method
      def alarm_configuration_updated_timestamp: () -> ::Time

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#alarm_description-instance_method
      def alarm_description: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#alarm_rule-instance_method
      def alarm_rule: () -> ::String

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

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#state_reason-instance_method
      def state_reason: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#state_reason_data-instance_method
      def state_reason_data: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#state_updated_timestamp-instance_method
      def state_updated_timestamp: () -> ::Time

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#state_value-instance_method
      def state_value: () -> ("OK" | "ALARM" | "INSUFFICIENT_DATA")

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#state_transitioned_timestamp-instance_method
      def state_transitioned_timestamp: () -> ::Time

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#actions_suppressed_by-instance_method
      def actions_suppressed_by: () -> ("WaitPeriod" | "ExtensionPeriod" | "Alarm")

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#actions_suppressed_reason-instance_method
      def actions_suppressed_reason: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#actions_suppressor-instance_method
      def actions_suppressor: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#actions_suppressor_wait_period-instance_method
      def actions_suppressor_wait_period: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#actions_suppressor_extension_period-instance_method
      def actions_suppressor_extension_period: () -> ::Integer

      def client: () -> Client

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

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

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#exists?-instance_method
      def exists?: (?max_attempts: Integer, ?delay: Numeric, ?before_attempt: (^(Integer attempts) -> void), ?before_wait: (^(Integer attempts, untyped response) -> void)) -> bool
                 | (?Hash[Symbol, untyped]) -> bool

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#wait_until_exists-instance_method
      def wait_until_exists: (?max_attempts: Integer, ?delay: Numeric, ?before_attempt: (^(Integer attempts) -> void), ?before_wait: (^(Integer attempts, untyped response) -> void)) ?{ (untyped waiter) -> void } -> CompositeAlarm
                           | (?Hash[Symbol, untyped]) ?{ (untyped waiter) -> void } -> CompositeAlarm

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#describe_history-instance_method
      def describe_history: (
                              ?alarm_types: Array[("CompositeAlarm" | "MetricAlarm")],
                              ?history_item_type: ("ConfigurationUpdate" | "StateUpdate" | "Action"),
                              ?start_date: ::Time,
                              ?end_date: ::Time,
                              ?max_records: ::Integer,
                              ?next_token: ::String,
                              ?scan_by: ("TimestampDescending" | "TimestampAscending")
                            ) -> Types::DescribeAlarmHistoryOutput
                          | (?Hash[Symbol, untyped]) -> Types::DescribeAlarmHistoryOutput

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

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/CompositeAlarm.html#set_state-instance_method
      def set_state: (
                       state_value: ("OK" | "ALARM" | "INSUFFICIENT_DATA"),
                       state_reason: ::String,
                       ?state_reason_data: ::String
                     ) -> ::Aws::EmptyStructure
                   | (?Hash[Symbol, untyped]) -> ::Aws::EmptyStructure

      class Collection < ::Aws::Resources::Collection[CompositeAlarm]

        def batch_delete!: (
                           ) -> void
                       | (?Hash[Symbol, untyped]) -> void

        def batch_disable_actions: (
                                   ) -> void
                               | (?Hash[Symbol, untyped]) -> void

        def batch_enable_actions: (
                                  ) -> void
                              | (?Hash[Symbol, untyped]) -> void
      end
    end
  end
end