# 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
    class Client < ::Seahorse::Client::Base
      include ::Aws::ClientStubs

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#initialize-instance_method
      def self.new: (
                      ?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
                    ) -> instance
                  | (?Hash[Symbol, untyped]) -> instance


      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#delete_alarms-instance_method
      def delete_alarms: (
                           alarm_names: Array[::String]
                         ) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
                       | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]

      interface _DeleteAnomalyDetectorResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DeleteAnomalyDetectorOutput]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#delete_anomaly_detector-instance_method
      def delete_anomaly_detector: (
                                     ?namespace: ::String,
                                     ?metric_name: ::String,
                                     ?dimensions: Array[
                                       {
                                         name: ::String,
                                         value: ::String
                                       },
                                     ],
                                     ?stat: ::String,
                                     ?single_metric_anomaly_detector: {
                                       account_id: ::String?,
                                       namespace: ::String?,
                                       metric_name: ::String?,
                                       dimensions: Array[
                                         {
                                           name: ::String,
                                           value: ::String
                                         },
                                       ]?,
                                       stat: ::String?
                                     },
                                     ?metric_math_anomaly_detector: {
                                       metric_data_queries: Array[
                                         {
                                           id: ::String,
                                           metric_stat: {
                                             metric: {
                                               namespace: ::String?,
                                               metric_name: ::String?,
                                               dimensions: Array[
                                                 {
                                                   name: ::String,
                                                   value: ::String
                                                 },
                                               ]?
                                             },
                                             period: ::Integer,
                                             stat: ::String,
                                             unit: ("Seconds" | "Microseconds" | "Milliseconds" | "Bytes" | "Kilobytes" | "Megabytes" | "Gigabytes" | "Terabytes" | "Bits" | "Kilobits" | "Megabits" | "Gigabits" | "Terabits" | "Percent" | "Count" | "Bytes/Second" | "Kilobytes/Second" | "Megabytes/Second" | "Gigabytes/Second" | "Terabytes/Second" | "Bits/Second" | "Kilobits/Second" | "Megabits/Second" | "Gigabits/Second" | "Terabits/Second" | "Count/Second" | "None")?
                                           }?,
                                           expression: ::String?,
                                           label: ::String?,
                                           return_data: bool?,
                                           period: ::Integer?,
                                           account_id: ::String?
                                         },
                                       ]?
                                     }
                                   ) -> _DeleteAnomalyDetectorResponseSuccess
                                 | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteAnomalyDetectorResponseSuccess

      interface _DeleteDashboardsResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DeleteDashboardsOutput]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#delete_dashboards-instance_method
      def delete_dashboards: (
                               dashboard_names: Array[::String]
                             ) -> _DeleteDashboardsResponseSuccess
                           | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteDashboardsResponseSuccess

      interface _DeleteInsightRulesResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DeleteInsightRulesOutput]
        def failures: () -> ::Array[Types::PartialFailure]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#delete_insight_rules-instance_method
      def delete_insight_rules: (
                                  rule_names: Array[::String]
                                ) -> _DeleteInsightRulesResponseSuccess
                              | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteInsightRulesResponseSuccess

      interface _DeleteMetricStreamResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DeleteMetricStreamOutput]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#delete_metric_stream-instance_method
      def delete_metric_stream: (
                                  name: ::String
                                ) -> _DeleteMetricStreamResponseSuccess
                              | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteMetricStreamResponseSuccess

      interface _DescribeAlarmHistoryResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DescribeAlarmHistoryOutput]
        def alarm_history_items: () -> ::Array[Types::AlarmHistoryItem]
        def next_token: () -> ::String
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#describe_alarm_history-instance_method
      def describe_alarm_history: (
                                    ?alarm_name: ::String,
                                    ?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")
                                  ) -> _DescribeAlarmHistoryResponseSuccess
                                | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DescribeAlarmHistoryResponseSuccess

      interface _DescribeAlarmsResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DescribeAlarmsOutput]
        def composite_alarms: () -> ::Array[Types::CompositeAlarm]
        def metric_alarms: () -> ::Array[Types::MetricAlarm]
        def next_token: () -> ::String
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#describe_alarms-instance_method
      def describe_alarms: (
                             ?alarm_names: Array[::String],
                             ?alarm_name_prefix: ::String,
                             ?alarm_types: Array[("CompositeAlarm" | "MetricAlarm")],
                             ?children_of_alarm_name: ::String,
                             ?parents_of_alarm_name: ::String,
                             ?state_value: ("OK" | "ALARM" | "INSUFFICIENT_DATA"),
                             ?action_prefix: ::String,
                             ?max_records: ::Integer,
                             ?next_token: ::String
                           ) -> _DescribeAlarmsResponseSuccess
                         | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DescribeAlarmsResponseSuccess

      interface _DescribeAlarmsForMetricResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DescribeAlarmsForMetricOutput]
        def metric_alarms: () -> ::Array[Types::MetricAlarm]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#describe_alarms_for_metric-instance_method
      def describe_alarms_for_metric: (
                                        metric_name: ::String,
                                        namespace: ::String,
                                        ?statistic: ("SampleCount" | "Average" | "Sum" | "Minimum" | "Maximum"),
                                        ?extended_statistic: ::String,
                                        ?dimensions: Array[
                                          {
                                            name: ::String,
                                            value: ::String
                                          },
                                        ],
                                        ?period: ::Integer,
                                        ?unit: ("Seconds" | "Microseconds" | "Milliseconds" | "Bytes" | "Kilobytes" | "Megabytes" | "Gigabytes" | "Terabytes" | "Bits" | "Kilobits" | "Megabits" | "Gigabits" | "Terabits" | "Percent" | "Count" | "Bytes/Second" | "Kilobytes/Second" | "Megabytes/Second" | "Gigabytes/Second" | "Terabytes/Second" | "Bits/Second" | "Kilobits/Second" | "Megabits/Second" | "Gigabits/Second" | "Terabits/Second" | "Count/Second" | "None")
                                      ) -> _DescribeAlarmsForMetricResponseSuccess
                                    | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DescribeAlarmsForMetricResponseSuccess

      interface _DescribeAnomalyDetectorsResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DescribeAnomalyDetectorsOutput]
        def anomaly_detectors: () -> ::Array[Types::AnomalyDetector]
        def next_token: () -> ::String
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#describe_anomaly_detectors-instance_method
      def describe_anomaly_detectors: (
                                        ?next_token: ::String,
                                        ?max_results: ::Integer,
                                        ?namespace: ::String,
                                        ?metric_name: ::String,
                                        ?dimensions: Array[
                                          {
                                            name: ::String,
                                            value: ::String
                                          },
                                        ],
                                        ?anomaly_detector_types: Array[("SINGLE_METRIC" | "METRIC_MATH")]
                                      ) -> _DescribeAnomalyDetectorsResponseSuccess
                                    | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DescribeAnomalyDetectorsResponseSuccess

      interface _DescribeInsightRulesResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DescribeInsightRulesOutput]
        def next_token: () -> ::String
        def insight_rules: () -> ::Array[Types::InsightRule]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#describe_insight_rules-instance_method
      def describe_insight_rules: (
                                    ?next_token: ::String,
                                    ?max_results: ::Integer
                                  ) -> _DescribeInsightRulesResponseSuccess
                                | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DescribeInsightRulesResponseSuccess

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#disable_alarm_actions-instance_method
      def disable_alarm_actions: (
                                   alarm_names: Array[::String]
                                 ) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
                               | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]

      interface _DisableInsightRulesResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::DisableInsightRulesOutput]
        def failures: () -> ::Array[Types::PartialFailure]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#disable_insight_rules-instance_method
      def disable_insight_rules: (
                                   rule_names: Array[::String]
                                 ) -> _DisableInsightRulesResponseSuccess
                               | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DisableInsightRulesResponseSuccess

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#enable_alarm_actions-instance_method
      def enable_alarm_actions: (
                                  alarm_names: Array[::String]
                                ) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
                              | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]

      interface _EnableInsightRulesResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::EnableInsightRulesOutput]
        def failures: () -> ::Array[Types::PartialFailure]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#enable_insight_rules-instance_method
      def enable_insight_rules: (
                                  rule_names: Array[::String]
                                ) -> _EnableInsightRulesResponseSuccess
                              | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _EnableInsightRulesResponseSuccess

      interface _GetDashboardResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::GetDashboardOutput]
        def dashboard_arn: () -> ::String
        def dashboard_body: () -> ::String
        def dashboard_name: () -> ::String
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#get_dashboard-instance_method
      def get_dashboard: (
                           dashboard_name: ::String
                         ) -> _GetDashboardResponseSuccess
                       | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetDashboardResponseSuccess

      interface _GetInsightRuleReportResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::GetInsightRuleReportOutput]
        def key_labels: () -> ::Array[::String]
        def aggregation_statistic: () -> ::String
        def aggregate_value: () -> ::Float
        def approximate_unique_count: () -> ::Integer
        def contributors: () -> ::Array[Types::InsightRuleContributor]
        def metric_datapoints: () -> ::Array[Types::InsightRuleMetricDatapoint]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#get_insight_rule_report-instance_method
      def get_insight_rule_report: (
                                     rule_name: ::String,
                                     start_time: ::Time,
                                     end_time: ::Time,
                                     period: ::Integer,
                                     ?max_contributor_count: ::Integer,
                                     ?metrics: Array[::String],
                                     ?order_by: ::String
                                   ) -> _GetInsightRuleReportResponseSuccess
                                 | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetInsightRuleReportResponseSuccess

      interface _GetMetricDataResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::GetMetricDataOutput]
        def metric_data_results: () -> ::Array[Types::MetricDataResult]
        def next_token: () -> ::String
        def messages: () -> ::Array[Types::MessageData]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#get_metric_data-instance_method
      def get_metric_data: (
                             metric_data_queries: Array[
                               {
                                 id: ::String,
                                 metric_stat: {
                                   metric: {
                                     namespace: ::String?,
                                     metric_name: ::String?,
                                     dimensions: Array[
                                       {
                                         name: ::String,
                                         value: ::String
                                       },
                                     ]?
                                   },
                                   period: ::Integer,
                                   stat: ::String,
                                   unit: ("Seconds" | "Microseconds" | "Milliseconds" | "Bytes" | "Kilobytes" | "Megabytes" | "Gigabytes" | "Terabytes" | "Bits" | "Kilobits" | "Megabits" | "Gigabits" | "Terabits" | "Percent" | "Count" | "Bytes/Second" | "Kilobytes/Second" | "Megabytes/Second" | "Gigabytes/Second" | "Terabytes/Second" | "Bits/Second" | "Kilobits/Second" | "Megabits/Second" | "Gigabits/Second" | "Terabits/Second" | "Count/Second" | "None")?
                                 }?,
                                 expression: ::String?,
                                 label: ::String?,
                                 return_data: bool?,
                                 period: ::Integer?,
                                 account_id: ::String?
                               },
                             ],
                             start_time: ::Time,
                             end_time: ::Time,
                             ?next_token: ::String,
                             ?scan_by: ("TimestampDescending" | "TimestampAscending"),
                             ?max_datapoints: ::Integer,
                             ?label_options: {
                               timezone: ::String?
                             }
                           ) -> _GetMetricDataResponseSuccess
                         | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetMetricDataResponseSuccess

      interface _GetMetricStatisticsResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::GetMetricStatisticsOutput]
        def label: () -> ::String
        def datapoints: () -> ::Array[Types::Datapoint]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#get_metric_statistics-instance_method
      def get_metric_statistics: (
                                   namespace: ::String,
                                   metric_name: ::String,
                                   ?dimensions: Array[
                                     {
                                       name: ::String,
                                       value: ::String
                                     },
                                   ],
                                   start_time: ::Time,
                                   end_time: ::Time,
                                   period: ::Integer,
                                   ?statistics: Array[("SampleCount" | "Average" | "Sum" | "Minimum" | "Maximum")],
                                   ?extended_statistics: Array[::String],
                                   ?unit: ("Seconds" | "Microseconds" | "Milliseconds" | "Bytes" | "Kilobytes" | "Megabytes" | "Gigabytes" | "Terabytes" | "Bits" | "Kilobits" | "Megabits" | "Gigabits" | "Terabits" | "Percent" | "Count" | "Bytes/Second" | "Kilobytes/Second" | "Megabytes/Second" | "Gigabytes/Second" | "Terabytes/Second" | "Bits/Second" | "Kilobits/Second" | "Megabits/Second" | "Gigabits/Second" | "Terabits/Second" | "Count/Second" | "None")
                                 ) -> _GetMetricStatisticsResponseSuccess
                               | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetMetricStatisticsResponseSuccess

      interface _GetMetricStreamResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::GetMetricStreamOutput]
        def arn: () -> ::String
        def name: () -> ::String
        def include_filters: () -> ::Array[Types::MetricStreamFilter]
        def exclude_filters: () -> ::Array[Types::MetricStreamFilter]
        def firehose_arn: () -> ::String
        def role_arn: () -> ::String
        def state: () -> ::String
        def creation_date: () -> ::Time
        def last_update_date: () -> ::Time
        def output_format: () -> ("json" | "opentelemetry0.7" | "opentelemetry1.0")
        def statistics_configurations: () -> ::Array[Types::MetricStreamStatisticsConfiguration]
        def include_linked_accounts_metrics: () -> bool
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#get_metric_stream-instance_method
      def get_metric_stream: (
                               name: ::String
                             ) -> _GetMetricStreamResponseSuccess
                           | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetMetricStreamResponseSuccess

      interface _GetMetricWidgetImageResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::GetMetricWidgetImageOutput]
        def metric_widget_image: () -> ::String
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#get_metric_widget_image-instance_method
      def get_metric_widget_image: (
                                     metric_widget: ::String,
                                     ?output_format: ::String
                                   ) -> _GetMetricWidgetImageResponseSuccess
                                 | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetMetricWidgetImageResponseSuccess

      interface _ListDashboardsResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::ListDashboardsOutput]
        def dashboard_entries: () -> ::Array[Types::DashboardEntry]
        def next_token: () -> ::String
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#list_dashboards-instance_method
      def list_dashboards: (
                             ?dashboard_name_prefix: ::String,
                             ?next_token: ::String
                           ) -> _ListDashboardsResponseSuccess
                         | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListDashboardsResponseSuccess

      interface _ListManagedInsightRulesResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::ListManagedInsightRulesOutput]
        def managed_rules: () -> ::Array[Types::ManagedRuleDescription]
        def next_token: () -> ::String
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#list_managed_insight_rules-instance_method
      def list_managed_insight_rules: (
                                        resource_arn: ::String,
                                        ?next_token: ::String,
                                        ?max_results: ::Integer
                                      ) -> _ListManagedInsightRulesResponseSuccess
                                    | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListManagedInsightRulesResponseSuccess

      interface _ListMetricStreamsResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::ListMetricStreamsOutput]
        def next_token: () -> ::String
        def entries: () -> ::Array[Types::MetricStreamEntry]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#list_metric_streams-instance_method
      def list_metric_streams: (
                                 ?next_token: ::String,
                                 ?max_results: ::Integer
                               ) -> _ListMetricStreamsResponseSuccess
                             | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListMetricStreamsResponseSuccess

      interface _ListMetricsResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::ListMetricsOutput]
        def metrics: () -> ::Array[Types::Metric]
        def next_token: () -> ::String
        def owning_accounts: () -> ::Array[::String]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#list_metrics-instance_method
      def list_metrics: (
                          ?namespace: ::String,
                          ?metric_name: ::String,
                          ?dimensions: Array[
                            {
                              name: ::String,
                              value: ::String?
                            },
                          ],
                          ?next_token: ::String,
                          ?recently_active: ("PT3H"),
                          ?include_linked_accounts: bool,
                          ?owning_account: ::String
                        ) -> _ListMetricsResponseSuccess
                      | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListMetricsResponseSuccess

      interface _ListTagsForResourceResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::ListTagsForResourceOutput]
        def tags: () -> ::Array[Types::Tag]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#list_tags_for_resource-instance_method
      def list_tags_for_resource: (
                                    resource_arn: ::String
                                  ) -> _ListTagsForResourceResponseSuccess
                                | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListTagsForResourceResponseSuccess

      interface _PutAnomalyDetectorResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::PutAnomalyDetectorOutput]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#put_anomaly_detector-instance_method
      def put_anomaly_detector: (
                                  ?namespace: ::String,
                                  ?metric_name: ::String,
                                  ?dimensions: Array[
                                    {
                                      name: ::String,
                                      value: ::String
                                    },
                                  ],
                                  ?stat: ::String,
                                  ?configuration: {
                                    excluded_time_ranges: Array[
                                      {
                                        start_time: ::Time,
                                        end_time: ::Time
                                      },
                                    ]?,
                                    metric_timezone: ::String?
                                  },
                                  ?metric_characteristics: {
                                    periodic_spikes: bool?
                                  },
                                  ?single_metric_anomaly_detector: {
                                    account_id: ::String?,
                                    namespace: ::String?,
                                    metric_name: ::String?,
                                    dimensions: Array[
                                      {
                                        name: ::String,
                                        value: ::String
                                      },
                                    ]?,
                                    stat: ::String?
                                  },
                                  ?metric_math_anomaly_detector: {
                                    metric_data_queries: Array[
                                      {
                                        id: ::String,
                                        metric_stat: {
                                          metric: {
                                            namespace: ::String?,
                                            metric_name: ::String?,
                                            dimensions: Array[
                                              {
                                                name: ::String,
                                                value: ::String
                                              },
                                            ]?
                                          },
                                          period: ::Integer,
                                          stat: ::String,
                                          unit: ("Seconds" | "Microseconds" | "Milliseconds" | "Bytes" | "Kilobytes" | "Megabytes" | "Gigabytes" | "Terabytes" | "Bits" | "Kilobits" | "Megabits" | "Gigabits" | "Terabits" | "Percent" | "Count" | "Bytes/Second" | "Kilobytes/Second" | "Megabytes/Second" | "Gigabytes/Second" | "Terabytes/Second" | "Bits/Second" | "Kilobits/Second" | "Megabits/Second" | "Gigabits/Second" | "Terabits/Second" | "Count/Second" | "None")?
                                        }?,
                                        expression: ::String?,
                                        label: ::String?,
                                        return_data: bool?,
                                        period: ::Integer?,
                                        account_id: ::String?
                                      },
                                    ]?
                                  }
                                ) -> _PutAnomalyDetectorResponseSuccess
                              | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _PutAnomalyDetectorResponseSuccess

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#put_composite_alarm-instance_method
      def put_composite_alarm: (
                                 ?actions_enabled: bool,
                                 ?alarm_actions: Array[::String],
                                 ?alarm_description: ::String,
                                 alarm_name: ::String,
                                 alarm_rule: ::String,
                                 ?insufficient_data_actions: Array[::String],
                                 ?ok_actions: Array[::String],
                                 ?tags: Array[
                                   {
                                     key: ::String,
                                     value: ::String
                                   },
                                 ],
                                 ?actions_suppressor: ::String,
                                 ?actions_suppressor_wait_period: ::Integer,
                                 ?actions_suppressor_extension_period: ::Integer
                               ) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
                             | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]

      interface _PutDashboardResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::PutDashboardOutput]
        def dashboard_validation_messages: () -> ::Array[Types::DashboardValidationMessage]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#put_dashboard-instance_method
      def put_dashboard: (
                           dashboard_name: ::String,
                           dashboard_body: ::String
                         ) -> _PutDashboardResponseSuccess
                       | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _PutDashboardResponseSuccess

      interface _PutInsightRuleResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::PutInsightRuleOutput]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#put_insight_rule-instance_method
      def put_insight_rule: (
                              rule_name: ::String,
                              ?rule_state: ::String,
                              rule_definition: ::String,
                              ?tags: Array[
                                {
                                  key: ::String,
                                  value: ::String
                                },
                              ]
                            ) -> _PutInsightRuleResponseSuccess
                          | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _PutInsightRuleResponseSuccess

      interface _PutManagedInsightRulesResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::PutManagedInsightRulesOutput]
        def failures: () -> ::Array[Types::PartialFailure]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#put_managed_insight_rules-instance_method
      def put_managed_insight_rules: (
                                       managed_rules: Array[
                                         {
                                           template_name: ::String,
                                           resource_arn: ::String,
                                           tags: Array[
                                             {
                                               key: ::String,
                                               value: ::String
                                             },
                                           ]?
                                         },
                                       ]
                                     ) -> _PutManagedInsightRulesResponseSuccess
                                   | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _PutManagedInsightRulesResponseSuccess

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#put_metric_alarm-instance_method
      def put_metric_alarm: (
                              alarm_name: ::String,
                              ?alarm_description: ::String,
                              ?actions_enabled: bool,
                              ?ok_actions: Array[::String],
                              ?alarm_actions: Array[::String],
                              ?insufficient_data_actions: Array[::String],
                              ?metric_name: ::String,
                              ?namespace: ::String,
                              ?statistic: ("SampleCount" | "Average" | "Sum" | "Minimum" | "Maximum"),
                              ?extended_statistic: ::String,
                              ?dimensions: Array[
                                {
                                  name: ::String,
                                  value: ::String
                                },
                              ],
                              ?period: ::Integer,
                              ?unit: ("Seconds" | "Microseconds" | "Milliseconds" | "Bytes" | "Kilobytes" | "Megabytes" | "Gigabytes" | "Terabytes" | "Bits" | "Kilobits" | "Megabits" | "Gigabits" | "Terabits" | "Percent" | "Count" | "Bytes/Second" | "Kilobytes/Second" | "Megabytes/Second" | "Gigabytes/Second" | "Terabytes/Second" | "Bits/Second" | "Kilobits/Second" | "Megabits/Second" | "Gigabits/Second" | "Terabits/Second" | "Count/Second" | "None"),
                              evaluation_periods: ::Integer,
                              ?datapoints_to_alarm: ::Integer,
                              ?threshold: ::Float,
                              comparison_operator: ("GreaterThanOrEqualToThreshold" | "GreaterThanThreshold" | "LessThanThreshold" | "LessThanOrEqualToThreshold" | "LessThanLowerOrGreaterThanUpperThreshold" | "LessThanLowerThreshold" | "GreaterThanUpperThreshold"),
                              ?treat_missing_data: ::String,
                              ?evaluate_low_sample_count_percentile: ::String,
                              ?metrics: Array[
                                {
                                  id: ::String,
                                  metric_stat: {
                                    metric: {
                                      namespace: ::String?,
                                      metric_name: ::String?,
                                      dimensions: Array[
                                        {
                                          name: ::String,
                                          value: ::String
                                        },
                                      ]?
                                    },
                                    period: ::Integer,
                                    stat: ::String,
                                    unit: ("Seconds" | "Microseconds" | "Milliseconds" | "Bytes" | "Kilobytes" | "Megabytes" | "Gigabytes" | "Terabytes" | "Bits" | "Kilobits" | "Megabits" | "Gigabits" | "Terabits" | "Percent" | "Count" | "Bytes/Second" | "Kilobytes/Second" | "Megabytes/Second" | "Gigabytes/Second" | "Terabytes/Second" | "Bits/Second" | "Kilobits/Second" | "Megabits/Second" | "Gigabits/Second" | "Terabits/Second" | "Count/Second" | "None")?
                                  }?,
                                  expression: ::String?,
                                  label: ::String?,
                                  return_data: bool?,
                                  period: ::Integer?,
                                  account_id: ::String?
                                },
                              ],
                              ?tags: Array[
                                {
                                  key: ::String,
                                  value: ::String
                                },
                              ],
                              ?threshold_metric_id: ::String
                            ) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
                          | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#put_metric_data-instance_method
      def put_metric_data: (
                             namespace: ::String,
                             metric_data: Array[
                               {
                                 metric_name: ::String,
                                 dimensions: Array[
                                   {
                                     name: ::String,
                                     value: ::String
                                   },
                                 ]?,
                                 timestamp: ::Time?,
                                 value: ::Float?,
                                 statistic_values: {
                                   sample_count: ::Float,
                                   sum: ::Float,
                                   minimum: ::Float,
                                   maximum: ::Float
                                 }?,
                                 values: Array[::Float]?,
                                 counts: Array[::Float]?,
                                 unit: ("Seconds" | "Microseconds" | "Milliseconds" | "Bytes" | "Kilobytes" | "Megabytes" | "Gigabytes" | "Terabytes" | "Bits" | "Kilobits" | "Megabits" | "Gigabits" | "Terabits" | "Percent" | "Count" | "Bytes/Second" | "Kilobytes/Second" | "Megabytes/Second" | "Gigabytes/Second" | "Terabytes/Second" | "Bits/Second" | "Kilobits/Second" | "Megabits/Second" | "Gigabits/Second" | "Terabits/Second" | "Count/Second" | "None")?,
                                 storage_resolution: ::Integer?
                               },
                             ]
                           ) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
                         | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]

      interface _PutMetricStreamResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::PutMetricStreamOutput]
        def arn: () -> ::String
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#put_metric_stream-instance_method
      def put_metric_stream: (
                               name: ::String,
                               ?include_filters: Array[
                                 {
                                   namespace: ::String?,
                                   metric_names: Array[::String]?
                                 },
                               ],
                               ?exclude_filters: Array[
                                 {
                                   namespace: ::String?,
                                   metric_names: Array[::String]?
                                 },
                               ],
                               firehose_arn: ::String,
                               role_arn: ::String,
                               output_format: ("json" | "opentelemetry0.7" | "opentelemetry1.0"),
                               ?tags: Array[
                                 {
                                   key: ::String,
                                   value: ::String
                                 },
                               ],
                               ?statistics_configurations: Array[
                                 {
                                   include_metrics: Array[
                                     {
                                       namespace: ::String,
                                       metric_name: ::String
                                     },
                                   ],
                                   additional_statistics: Array[::String]
                                 },
                               ],
                               ?include_linked_accounts_metrics: bool
                             ) -> _PutMetricStreamResponseSuccess
                           | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _PutMetricStreamResponseSuccess

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

      interface _StartMetricStreamsResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::StartMetricStreamsOutput]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#start_metric_streams-instance_method
      def start_metric_streams: (
                                  names: Array[::String]
                                ) -> _StartMetricStreamsResponseSuccess
                              | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _StartMetricStreamsResponseSuccess

      interface _StopMetricStreamsResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::StopMetricStreamsOutput]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#stop_metric_streams-instance_method
      def stop_metric_streams: (
                                 names: Array[::String]
                               ) -> _StopMetricStreamsResponseSuccess
                             | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _StopMetricStreamsResponseSuccess

      interface _TagResourceResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::TagResourceOutput]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#tag_resource-instance_method
      def tag_resource: (
                          resource_arn: ::String,
                          tags: Array[
                            {
                              key: ::String,
                              value: ::String
                            },
                          ]
                        ) -> _TagResourceResponseSuccess
                      | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _TagResourceResponseSuccess

      interface _UntagResourceResponseSuccess
        include ::Seahorse::Client::_ResponseSuccess[Types::UntagResourceOutput]
      end
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#untag_resource-instance_method
      def untag_resource: (
                            resource_arn: ::String,
                            tag_keys: Array[::String]
                          ) -> _UntagResourceResponseSuccess
                        | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _UntagResourceResponseSuccess

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Client.html#wait_until-instance_method
      def wait_until: (:alarm_exists waiter_name, 
                    ?alarm_names: Array[::String],
                    ?alarm_name_prefix: ::String,
                    ?alarm_types: Array[("CompositeAlarm" | "MetricAlarm")],
                    ?children_of_alarm_name: ::String,
                    ?parents_of_alarm_name: ::String,
                    ?state_value: ("OK" | "ALARM" | "INSUFFICIENT_DATA"),
                    ?action_prefix: ::String,
                    ?max_records: ::Integer,
                    ?next_token: ::String
                  ) -> Client::_DescribeAlarmsResponseSuccess
                    | (:alarm_exists waiter_name, ?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_DescribeAlarmsResponseSuccess
                    | (:composite_alarm_exists waiter_name, 
                    ?alarm_names: Array[::String],
                    ?alarm_name_prefix: ::String,
                    ?alarm_types: Array[("CompositeAlarm" | "MetricAlarm")],
                    ?children_of_alarm_name: ::String,
                    ?parents_of_alarm_name: ::String,
                    ?state_value: ("OK" | "ALARM" | "INSUFFICIENT_DATA"),
                    ?action_prefix: ::String,
                    ?max_records: ::Integer,
                    ?next_token: ::String
                  ) -> Client::_DescribeAlarmsResponseSuccess
                    | (:composite_alarm_exists waiter_name, ?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> Client::_DescribeAlarmsResponseSuccess
    end
  end
end