import { Value } from '../../cloudformation/Value';
import { PredictiveScalingConfigurationProps } from './scalingpolicy/PredictiveScalingConfigurationProps';
import { StepAdjustmentProps } from './scalingpolicy/StepAdjustmentProps';
import { TargetTrackingConfigurationProps } from './scalingpolicy/TargetTrackingConfigurationProps';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type ScalingPolicyAttributes = {
    PolicyName: Attribute<string>;
    Arn: Attribute<string>;
};
export type ScalingPolicy = AwsResource<'AWS::AutoScaling::ScalingPolicy', ScalingPolicyProperties, ScalingPolicyAttributes>;
/**
  The <code>AWS::AutoScaling::ScalingPolicy</code> resource specifies an Amazon EC2 Auto Scaling scaling policy so that the Auto Scaling group can scale the number of instances available for your application.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html">the AWS Docs</a>
*/
export declare function scalingPolicy(scalingPolicyProps: ScalingPolicyProperties): ScalingPolicy;
/**
  The <code>AWS::AutoScaling::ScalingPolicy</code> resource specifies an Amazon EC2 Auto Scaling scaling policy so that the Auto Scaling group can scale the number of instances available for your application.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html">the AWS Docs</a>
*/
export interface ScalingPolicyProperties {
    /** <code>MetricAggregationType</code>  <a name="cfn-autoscaling-scalingpolicy-metricaggregationtype"></a>
  The aggregation type for the CloudWatch metrics. The valid values are <code>Minimum</code>, <code>Maximum</code>, and <code>Average</code>. If the aggregation type is null, the value is treated as <code>Average</code>.<br />
  Valid only if the policy type is <code>StepScaling</code>.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    metricAggregationType?: Value<string>;
    /** <p> */
    policyType?: Value<string>;
    /** <code>PredictiveScalingConfiguration</code>  <a name="cfn-autoscaling-scalingpolicy-predictivescalingconfiguration"></a>
  A predictive scaling policy. Provides support for predefined and custom metrics.<br />
  Predefined metrics include CPU utilization, network in/out, and the Application Load Balancer request count.<br />
  Required if the policy type is <code>PredictiveScaling</code>.<br />
  
  Required: Conditional<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    predictiveScalingConfiguration?: PredictiveScalingConfigurationProps;
    /** <code>ScalingAdjustment</code>  <a name="cfn-autoscaling-scalingpolicy-scalingadjustment"></a>
  The amount by which to scale, based on the specified adjustment type. A positive value adds to the current capacity while a negative number removes from the current capacity. For exact capacity, you must specify a non-negative value.<br />
  Required if the policy type is <code>SimpleScaling</code>. (Not used with any other policy type.)<br />
  
  Required: Conditional<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    scalingAdjustment?: Value<number>;
    /** <code>Cooldown</code>  <a name="cfn-autoscaling-scalingpolicy-cooldown"></a>
  A cooldown period, in seconds, that applies to a specific simple scaling policy. When a cooldown period is specified here, it overrides the default cooldown.<br />
  Valid only if the policy type is <code>SimpleScaling</code>. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html">Scaling cooldowns for Amazon EC2 Auto Scaling</a> in the
  Amazon EC2 Auto Scaling User Guide: br />
  Default: None<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    cooldown?: Value<string>;
    /** <code>StepAdjustments</code>  <a name="cfn-autoscaling-scalingpolicy-stepadjustments"></a>
  A set of adjustments that enable you to scale based on the size of the alarm breach.<br />
  Required if the policy type is <code>StepScaling</code>. (Not used with any other policy type.)<br />
  
  Required: Conditional<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    stepAdjustments?: StepAdjustmentProps[];
    /** <code>AutoScalingGroupName</code>  <a name="cfn-autoscaling-scalingpolicy-autoscalinggroupname"></a>
  The name of the Auto Scaling group.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    autoScalingGroupName: Value<string>;
    /** <code>MinAdjustmentMagnitude</code>  <a name="cfn-autoscaling-scalingpolicy-minadjustmentmagnitude"></a>
  The minimum value to scale by when the adjustment type is <code>PercentChangeInCapacity</code>. For example, suppose that you create a step scaling policy to scale out an Auto Scaling group by 25 percent and you specify a <code>MinAdjustmentMagnitude</code> of 2. If the group has 4 instances and the scaling policy is performed, 25 percent of 4 is 1. However, because you specified a <code>MinAdjustmentMagnitude</code> of 2, Amazon EC2 Auto Scaling scales out the group by 2 instances.<br />
  Valid only if the policy type is <code>StepScaling</code> or <code>SimpleScaling</code>. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html#as-scaling-adjustment">Scaling adjustment types</a> in the
  Amazon EC2 Auto Scaling User Guide: br />
  Some Auto Scaling groups use instance weights. In this case, set the <code>MinAdjustmentMagnitude</code> to a value that is at least as large as your largest instance weight.
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    minAdjustmentMagnitude?: Value<number>;
    /** <p> */
    targetTrackingConfiguration?: TargetTrackingConfigurationProps;
    /** <code>EstimatedInstanceWarmup</code>  <a name="cfn-autoscaling-scalingpolicy-estimatedinstancewarmup"></a>
  
  Not needed if the default instance warmup is defined for the group.: r />
  The estimated time, in seconds, until a newly launched instance can contribute to the CloudWatch metrics. This warm-up period applies to instances launched due to a specific target tracking or step scaling policy. When a warm-up period is specified here, it overrides the default instance warmup.<br />
  Valid only if the policy type is <code>TargetTrackingScaling</code> or <code>StepScaling</code>.<br />
  The default is to use the value for the default instance warmup defined for the group. If default instance warmup is null, then <code>EstimatedInstanceWarmup</code> falls back to the value of default cooldown.
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    estimatedInstanceWarmup?: Value<number>;
    /** <code>AdjustmentType</code>  <a name="cfn-autoscaling-scalingpolicy-adjustmenttype"></a>
  Specifies how the scaling adjustment is interpreted (for example, an absolute number or a percentage). The valid values are <code>ChangeInCapacity</code>, <code>ExactCapacity</code>, and <code>PercentChangeInCapacity</code>.<br />
  Required if the policy type is <code>StepScaling</code> or <code>SimpleScaling</code>. For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html#as-scaling-adjustment">Scaling adjustment types</a> in the
  Amazon EC2 Auto Scaling User Guide: br />
  
  Required: Conditional<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    adjustmentType?: Value<string>;
}
