# 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 AutoScaling
    # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html
    class AutoScalingGroup
      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.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/AutoScaling/AutoScalingGroup.html#name-instance_method
      def name: () -> String
      alias auto_scaling_group_name name

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#auto_scaling_group_arn-instance_method
      def auto_scaling_group_arn: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#launch_configuration_name-instance_method
      def launch_configuration_name: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#launch_template-instance_method
      def launch_template: () -> Types::LaunchTemplateSpecification

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#mixed_instances_policy-instance_method
      def mixed_instances_policy: () -> Types::MixedInstancesPolicy

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#min_size-instance_method
      def min_size: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#max_size-instance_method
      def max_size: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#desired_capacity-instance_method
      def desired_capacity: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#predicted_capacity-instance_method
      def predicted_capacity: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#default_cooldown-instance_method
      def default_cooldown: () -> ::Integer

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

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

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#health_check_type-instance_method
      def health_check_type: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#health_check_grace_period-instance_method
      def health_check_grace_period: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#created_time-instance_method
      def created_time: () -> ::Time

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#suspended_processes-instance_method
      def suspended_processes: () -> ::Array[Types::SuspendedProcess]

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#placement_group-instance_method
      def placement_group: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#vpc_zone_identifier-instance_method
      def vpc_zone_identifier: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#enabled_metrics-instance_method
      def enabled_metrics: () -> ::Array[Types::EnabledMetric]

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

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#new_instances_protected_from_scale_in-instance_method
      def new_instances_protected_from_scale_in: () -> bool

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#service_linked_role_arn-instance_method
      def service_linked_role_arn: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#max_instance_lifetime-instance_method
      def max_instance_lifetime: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#capacity_rebalance-instance_method
      def capacity_rebalance: () -> bool

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#warm_pool_configuration-instance_method
      def warm_pool_configuration: () -> Types::WarmPoolConfiguration

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#warm_pool_size-instance_method
      def warm_pool_size: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#context-instance_method
      def context: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#desired_capacity_type-instance_method
      def desired_capacity_type: () -> ::String

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#default_instance_warmup-instance_method
      def default_instance_warmup: () -> ::Integer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#traffic_sources-instance_method
      def traffic_sources: () -> ::Array[Types::TrafficSourceIdentifier]

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#instance_maintenance_policy-instance_method
      def instance_maintenance_policy: () -> Types::InstanceMaintenancePolicy

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#availability_zone_distribution-instance_method
      def availability_zone_distribution: () -> Types::AvailabilityZoneDistribution

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#availability_zone_impairment_policy-instance_method
      def availability_zone_impairment_policy: () -> Types::AvailabilityZoneImpairmentPolicy

      def client: () -> Client

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

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

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.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/AutoScaling/AutoScalingGroup.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 } -> AutoScalingGroup
                           | (?Hash[Symbol, untyped]) ?{ (untyped waiter) -> void } -> AutoScalingGroup

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

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#attach_instances-instance_method
      def attach_instances: (
                              ?instance_ids: Array[::String]
                            ) -> ::Aws::EmptyStructure
                          | (?Hash[Symbol, untyped]) -> ::Aws::EmptyStructure

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

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#detach_instances-instance_method
      def detach_instances: (
                              ?instance_ids: Array[::String],
                              should_decrement_desired_capacity: bool
                            ) -> Activity::Collection
                          | (?Hash[Symbol, untyped]) -> Activity::Collection

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#disable_metrics_collection-instance_method
      def disable_metrics_collection: (
                                        ?metrics: Array[::String]
                                      ) -> ::Aws::EmptyStructure
                                    | (?Hash[Symbol, untyped]) -> ::Aws::EmptyStructure

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#enable_metrics_collection-instance_method
      def enable_metrics_collection: (
                                       ?metrics: Array[::String],
                                       granularity: ::String
                                     ) -> ::Aws::EmptyStructure
                                   | (?Hash[Symbol, untyped]) -> ::Aws::EmptyStructure

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#put_scaling_policy-instance_method
      def put_scaling_policy: (
                                policy_name: ::String,
                                ?policy_type: ::String,
                                ?adjustment_type: ::String,
                                ?min_adjustment_step: ::Integer,
                                ?min_adjustment_magnitude: ::Integer,
                                ?scaling_adjustment: ::Integer,
                                ?cooldown: ::Integer,
                                ?metric_aggregation_type: ::String,
                                ?step_adjustments: Array[
                                  {
                                    metric_interval_lower_bound: ::Float?,
                                    metric_interval_upper_bound: ::Float?,
                                    scaling_adjustment: ::Integer
                                  },
                                ],
                                ?estimated_instance_warmup: ::Integer,
                                ?target_tracking_configuration: {
                                  predefined_metric_specification: {
                                    predefined_metric_type: ("ASGAverageCPUUtilization" | "ASGAverageNetworkIn" | "ASGAverageNetworkOut" | "ALBRequestCountPerTarget"),
                                    resource_label: ::String?
                                  }?,
                                  customized_metric_specification: {
                                    metric_name: ::String?,
                                    namespace: ::String?,
                                    dimensions: Array[
                                      {
                                        name: ::String,
                                        value: ::String
                                      },
                                    ]?,
                                    statistic: ("Average" | "Minimum" | "Maximum" | "SampleCount" | "Sum")?,
                                    unit: ::String?,
                                    metrics: Array[
                                      {
                                        id: ::String,
                                        expression: ::String?,
                                        metric_stat: {
                                          metric: {
                                            namespace: ::String,
                                            metric_name: ::String,
                                            dimensions: Array[
                                              {
                                                name: ::String,
                                                value: ::String
                                              },
                                            ]?
                                          },
                                          stat: ::String,
                                          unit: ::String?
                                        }?,
                                        label: ::String?,
                                        return_data: bool?
                                      },
                                    ]?
                                  }?,
                                  target_value: ::Float,
                                  disable_scale_in: bool?
                                },
                                ?enabled: bool,
                                ?predictive_scaling_configuration: {
                                  metric_specifications: Array[
                                    {
                                      target_value: ::Float,
                                      predefined_metric_pair_specification: {
                                        predefined_metric_type: ("ASGCPUUtilization" | "ASGNetworkIn" | "ASGNetworkOut" | "ALBRequestCount"),
                                        resource_label: ::String?
                                      }?,
                                      predefined_scaling_metric_specification: {
                                        predefined_metric_type: ("ASGAverageCPUUtilization" | "ASGAverageNetworkIn" | "ASGAverageNetworkOut" | "ALBRequestCountPerTarget"),
                                        resource_label: ::String?
                                      }?,
                                      predefined_load_metric_specification: {
                                        predefined_metric_type: ("ASGTotalCPUUtilization" | "ASGTotalNetworkIn" | "ASGTotalNetworkOut" | "ALBTargetGroupRequestCount"),
                                        resource_label: ::String?
                                      }?,
                                      customized_scaling_metric_specification: {
                                        metric_data_queries: Array[
                                          {
                                            id: ::String,
                                            expression: ::String?,
                                            metric_stat: {
                                              metric: {
                                                namespace: ::String,
                                                metric_name: ::String,
                                                dimensions: Array[
                                                  {
                                                    name: ::String,
                                                    value: ::String
                                                  },
                                                ]?
                                              },
                                              stat: ::String,
                                              unit: ::String?
                                            }?,
                                            label: ::String?,
                                            return_data: bool?
                                          },
                                        ]
                                      }?,
                                      customized_load_metric_specification: {
                                        metric_data_queries: Array[
                                          {
                                            id: ::String,
                                            expression: ::String?,
                                            metric_stat: {
                                              metric: {
                                                namespace: ::String,
                                                metric_name: ::String,
                                                dimensions: Array[
                                                  {
                                                    name: ::String,
                                                    value: ::String
                                                  },
                                                ]?
                                              },
                                              stat: ::String,
                                              unit: ::String?
                                            }?,
                                            label: ::String?,
                                            return_data: bool?
                                          },
                                        ]
                                      }?,
                                      customized_capacity_metric_specification: {
                                        metric_data_queries: Array[
                                          {
                                            id: ::String,
                                            expression: ::String?,
                                            metric_stat: {
                                              metric: {
                                                namespace: ::String,
                                                metric_name: ::String,
                                                dimensions: Array[
                                                  {
                                                    name: ::String,
                                                    value: ::String
                                                  },
                                                ]?
                                              },
                                              stat: ::String,
                                              unit: ::String?
                                            }?,
                                            label: ::String?,
                                            return_data: bool?
                                          },
                                        ]
                                      }?
                                    },
                                  ],
                                  mode: ("ForecastAndScale" | "ForecastOnly")?,
                                  scheduling_buffer_time: ::Integer?,
                                  max_capacity_breach_behavior: ("HonorMaxCapacity" | "IncreaseMaxCapacity")?,
                                  max_capacity_buffer: ::Integer?
                                }
                              ) -> ScalingPolicy
                            | (?Hash[Symbol, untyped]) -> ScalingPolicy

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#put_scheduled_update_group_action-instance_method
      def put_scheduled_update_group_action: (
                                               scheduled_action_name: ::String,
                                               ?time: ::Time,
                                               ?start_time: ::Time,
                                               ?end_time: ::Time,
                                               ?recurrence: ::String,
                                               ?min_size: ::Integer,
                                               ?max_size: ::Integer,
                                               ?desired_capacity: ::Integer,
                                               ?time_zone: ::String
                                             ) -> ScheduledAction
                                           | (?Hash[Symbol, untyped]) -> ScheduledAction

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#resume_processes-instance_method
      def resume_processes: (
                              ?scaling_processes: Array[::String]
                            ) -> ::Aws::EmptyStructure
                          | (?Hash[Symbol, untyped]) -> ::Aws::EmptyStructure

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#set_desired_capacity-instance_method
      def set_desired_capacity: (
                                  desired_capacity: ::Integer,
                                  ?honor_cooldown: bool
                                ) -> ::Aws::EmptyStructure
                              | (?Hash[Symbol, untyped]) -> ::Aws::EmptyStructure

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#suspend_processes-instance_method
      def suspend_processes: (
                               ?scaling_processes: Array[::String]
                             ) -> ::Aws::EmptyStructure
                           | (?Hash[Symbol, untyped]) -> ::Aws::EmptyStructure

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#update-instance_method
      def update: (
                    ?launch_configuration_name: ::String,
                    ?launch_template: {
                      launch_template_id: ::String?,
                      launch_template_name: ::String?,
                      version: ::String?
                    },
                    ?mixed_instances_policy: {
                      launch_template: {
                        launch_template_specification: {
                          launch_template_id: ::String?,
                          launch_template_name: ::String?,
                          version: ::String?
                        }?,
                        overrides: Array[
                          {
                            instance_type: ::String?,
                            weighted_capacity: ::String?,
                            launch_template_specification: {
                              launch_template_id: ::String?,
                              launch_template_name: ::String?,
                              version: ::String?
                            }?,
                            instance_requirements: {
                              v_cpu_count: {
                                min: ::Integer,
                                max: ::Integer?
                              },
                              memory_mi_b: {
                                min: ::Integer,
                                max: ::Integer?
                              },
                              cpu_manufacturers: Array[("intel" | "amd" | "amazon-web-services")]?,
                              memory_gi_b_per_v_cpu: {
                                min: ::Float?,
                                max: ::Float?
                              }?,
                              excluded_instance_types: Array[::String]?,
                              instance_generations: Array[("current" | "previous")]?,
                              spot_max_price_percentage_over_lowest_price: ::Integer?,
                              max_spot_price_as_percentage_of_optimal_on_demand_price: ::Integer?,
                              on_demand_max_price_percentage_over_lowest_price: ::Integer?,
                              bare_metal: ("included" | "excluded" | "required")?,
                              burstable_performance: ("included" | "excluded" | "required")?,
                              require_hibernate_support: bool?,
                              network_interface_count: {
                                min: ::Integer?,
                                max: ::Integer?
                              }?,
                              local_storage: ("included" | "excluded" | "required")?,
                              local_storage_types: Array[("hdd" | "ssd")]?,
                              total_local_storage_gb: {
                                min: ::Float?,
                                max: ::Float?
                              }?,
                              baseline_ebs_bandwidth_mbps: {
                                min: ::Integer?,
                                max: ::Integer?
                              }?,
                              accelerator_types: Array[("gpu" | "fpga" | "inference")]?,
                              accelerator_count: {
                                min: ::Integer?,
                                max: ::Integer?
                              }?,
                              accelerator_manufacturers: Array[("nvidia" | "amd" | "amazon-web-services" | "xilinx")]?,
                              accelerator_names: Array[("a100" | "v100" | "k80" | "t4" | "m60" | "radeon-pro-v520" | "vu9p")]?,
                              accelerator_total_memory_mi_b: {
                                min: ::Integer?,
                                max: ::Integer?
                              }?,
                              network_bandwidth_gbps: {
                                min: ::Float?,
                                max: ::Float?
                              }?,
                              allowed_instance_types: Array[::String]?
                            }?
                          },
                        ]?
                      }?,
                      instances_distribution: {
                        on_demand_allocation_strategy: ::String?,
                        on_demand_base_capacity: ::Integer?,
                        on_demand_percentage_above_base_capacity: ::Integer?,
                        spot_allocation_strategy: ::String?,
                        spot_instance_pools: ::Integer?,
                        spot_max_price: ::String?
                      }?
                    },
                    ?min_size: ::Integer,
                    ?max_size: ::Integer,
                    ?desired_capacity: ::Integer,
                    ?default_cooldown: ::Integer,
                    ?availability_zones: Array[::String],
                    ?health_check_type: ::String,
                    ?health_check_grace_period: ::Integer,
                    ?placement_group: ::String,
                    ?vpc_zone_identifier: ::String,
                    ?termination_policies: Array[::String],
                    ?new_instances_protected_from_scale_in: bool,
                    ?service_linked_role_arn: ::String,
                    ?max_instance_lifetime: ::Integer,
                    ?capacity_rebalance: bool,
                    ?context: ::String,
                    ?desired_capacity_type: ::String,
                    ?default_instance_warmup: ::Integer,
                    ?instance_maintenance_policy: {
                      min_healthy_percentage: ::Integer?,
                      max_healthy_percentage: ::Integer?
                    },
                    ?availability_zone_distribution: {
                      capacity_distribution_strategy: ("balanced-only" | "balanced-best-effort")?
                    },
                    ?availability_zone_impairment_policy: {
                      zonal_shift_enabled: bool?,
                      impaired_zone_health_check_behavior: ("ReplaceUnhealthy" | "IgnoreUnhealthy")?
                    },
                    ?skip_zonal_shift_validation: bool
                  ) -> AutoScalingGroup
                | (?Hash[Symbol, untyped]) -> AutoScalingGroup

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#activities-instance_method
      def activities: (
                        ?activity_ids: Array[::String],
                        ?include_deleted_groups: bool
                      ) -> Activity::Collection
                    | (?Hash[Symbol, untyped]) -> Activity::Collection

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#instances-instance_method
      def instances: () -> Instance::Collection

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#launch_configuration-instance_method
      def launch_configuration: () -> LaunchConfiguration?

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#lifecycle_hook-instance_method
      def lifecycle_hook: (String name) -> LifecycleHook

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#lifecycle_hooks-instance_method
      def lifecycle_hooks: (
                             ?lifecycle_hook_names: Array[::String]
                           ) -> LifecycleHook::Collection
                         | (?Hash[Symbol, untyped]) -> LifecycleHook::Collection

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#load_balancer-instance_method
      def load_balancer: (String name) -> LoadBalancer

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#load_balancers-instance_method
      def load_balancers: (
                          ) -> LoadBalancer::Collection
                        | (?Hash[Symbol, untyped]) -> LoadBalancer::Collection

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#notification_configurations-instance_method
      def notification_configurations: (
                                       ) -> NotificationConfiguration::Collection
                                     | (?Hash[Symbol, untyped]) -> NotificationConfiguration::Collection

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#policies-instance_method
      def policies: (
                      ?policy_names: Array[::String],
                      ?policy_types: Array[::String]
                    ) -> ScalingPolicy::Collection
                  | (?Hash[Symbol, untyped]) -> ScalingPolicy::Collection

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#scheduled_actions-instance_method
      def scheduled_actions: (
                               ?scheduled_action_names: Array[::String],
                               ?start_time: ::Time,
                               ?end_time: ::Time
                             ) -> ScheduledAction::Collection
                           | (?Hash[Symbol, untyped]) -> ScheduledAction::Collection

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#tag-instance_method
      def tag: (String key) -> Tag

      # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AutoScaling/AutoScalingGroup.html#tags-instance_method
      def tags: () -> Tag::Collection

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