import * as core from "@terrascript/core";
export interface StepAdjustmentArgs extends core.SchemaArgs {
    metricIntervalLowerBound?: string | core.StringOut;
    metricIntervalUpperBound?: string | core.StringOut;
    scalingAdjustment: number | core.NumberOut;
}
export declare class StepAdjustment extends core.Schema<StepAdjustmentArgs> {
    metricIntervalLowerBound?: string | core.StringOut;
    metricIntervalUpperBound?: string | core.StringOut;
    scalingAdjustment: number | core.NumberOut;
}
export interface StepScalingPolicyConfigurationArgs extends core.SchemaArgs {
    adjustmentType?: string | core.StringOut;
    cooldown?: number | core.NumberOut;
    metricAggregationType?: string | core.StringOut;
    minAdjustmentMagnitude?: number | core.NumberOut;
    stepAdjustment?: core.Array<StepAdjustment> | core.ArrayOut<StepAdjustment>;
}
export declare class StepScalingPolicyConfiguration extends core.Schema<StepScalingPolicyConfigurationArgs> {
    adjustmentType?: string | core.StringOut;
    cooldown?: number | core.NumberOut;
    metricAggregationType?: string | core.StringOut;
    minAdjustmentMagnitude?: number | core.NumberOut;
    stepAdjustment?: core.Array<StepAdjustment> | core.ArrayOut<StepAdjustment>;
}
export interface DimensionsArgs extends core.SchemaArgs {
    name: string | core.StringOut;
    value: string | core.StringOut;
}
export declare class Dimensions extends core.Schema<DimensionsArgs> {
    name: string | core.StringOut;
    value: string | core.StringOut;
}
export interface CustomizedMetricSpecificationArgs extends core.SchemaArgs {
    dimensions?: core.Array<Dimensions> | core.ArrayOut<Dimensions>;
    metricName: string | core.StringOut;
    namespace: string | core.StringOut;
    statistic: string | core.StringOut;
    unit?: string | core.StringOut;
}
export declare class CustomizedMetricSpecification extends core.Schema<CustomizedMetricSpecificationArgs> {
    dimensions?: core.Array<Dimensions> | core.ArrayOut<Dimensions>;
    metricName: string | core.StringOut;
    namespace: string | core.StringOut;
    statistic: string | core.StringOut;
    unit?: string | core.StringOut;
}
export interface PredefinedMetricSpecificationArgs extends core.SchemaArgs {
    predefinedMetricType: string | core.StringOut;
    resourceLabel?: string | core.StringOut;
}
export declare class PredefinedMetricSpecification extends core.Schema<PredefinedMetricSpecificationArgs> {
    predefinedMetricType: string | core.StringOut;
    resourceLabel?: string | core.StringOut;
}
export interface TargetTrackingScalingPolicyConfigurationArgs extends core.SchemaArgs {
    customizedMetricSpecification?: CustomizedMetricSpecification;
    disableScaleIn?: boolean | core.BooleanOut;
    predefinedMetricSpecification?: PredefinedMetricSpecification;
    scaleInCooldown?: number | core.NumberOut;
    scaleOutCooldown?: number | core.NumberOut;
    targetValue: number | core.NumberOut;
}
export declare class TargetTrackingScalingPolicyConfiguration extends core.Schema<TargetTrackingScalingPolicyConfigurationArgs> {
    customizedMetricSpecification?: CustomizedMetricSpecification;
    disableScaleIn?: boolean | core.BooleanOut;
    predefinedMetricSpecification?: PredefinedMetricSpecification;
    scaleInCooldown?: number | core.NumberOut;
    scaleOutCooldown?: number | core.NumberOut;
    targetValue: number | core.NumberOut;
}
export interface AppautoscalingPolicyArgs extends core.ResourceArgs {
    name: string | core.StringOut;
    policyType?: string | core.StringOut;
    resourceId: string | core.StringOut;
    scalableDimension: string | core.StringOut;
    serviceNamespace: string | core.StringOut;
    stepScalingPolicyConfiguration?: StepScalingPolicyConfiguration;
    targetTrackingScalingPolicyConfiguration?: TargetTrackingScalingPolicyConfiguration;
}
export declare class AppautoscalingPolicy extends core.Resource<AppautoscalingPolicyArgs> {
    arn: string | core.StringOut;
    id: string | core.StringOut;
    name: string | core.StringOut;
    policyType?: string | core.StringOut;
    resourceId: string | core.StringOut;
    scalableDimension: string | core.StringOut;
    serviceNamespace: string | core.StringOut;
    stepScalingPolicyConfiguration?: StepScalingPolicyConfiguration;
    targetTrackingScalingPolicyConfiguration?: TargetTrackingScalingPolicyConfiguration;
    constructor(name: string, args?: AppautoscalingPolicyArgs);
    getNamespace(): string;
}
//# sourceMappingURL=appautoscaling_policy.d.ts.map