import * as core from "@terrascript/core";
export interface TagFilterArgs extends core.SchemaArgs {
    key: string | core.StringOut;
    values?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class TagFilter extends core.Schema<TagFilterArgs> {
    key: string | core.StringOut;
    values?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface ApplicationSourceArgs extends core.SchemaArgs {
    cloudformationStackArn?: string | core.StringOut;
    tagFilter?: core.Array<TagFilter> | core.ArrayOut<TagFilter>;
}
export declare class ApplicationSource extends core.Schema<ApplicationSourceArgs> {
    cloudformationStackArn?: string | core.StringOut;
    tagFilter?: core.Array<TagFilter> | core.ArrayOut<TagFilter>;
}
export interface PredefinedLoadMetricSpecificationArgs extends core.SchemaArgs {
    predefinedLoadMetricType: string | core.StringOut;
    resourceLabel?: string | core.StringOut;
}
export declare class PredefinedLoadMetricSpecification extends core.Schema<PredefinedLoadMetricSpecificationArgs> {
    predefinedLoadMetricType: string | core.StringOut;
    resourceLabel?: string | core.StringOut;
}
export interface CustomizedLoadMetricSpecificationArgs extends core.SchemaArgs {
    dimensions?: core.Map<string, string> | core.MapOut<core.StringOut>;
    metricName: string | core.StringOut;
    namespace: string | core.StringOut;
    statistic: string | core.StringOut;
    unit?: string | core.StringOut;
}
export declare class CustomizedLoadMetricSpecification extends core.Schema<CustomizedLoadMetricSpecificationArgs> {
    dimensions?: core.Map<string, string> | core.MapOut<core.StringOut>;
    metricName: string | core.StringOut;
    namespace: string | core.StringOut;
    statistic: string | core.StringOut;
    unit?: string | core.StringOut;
}
export interface CustomizedScalingMetricSpecificationArgs extends core.SchemaArgs {
    dimensions?: core.Map<string, string> | core.MapOut<core.StringOut>;
    metricName: string | core.StringOut;
    namespace: string | core.StringOut;
    statistic: string | core.StringOut;
    unit?: string | core.StringOut;
}
export declare class CustomizedScalingMetricSpecification extends core.Schema<CustomizedScalingMetricSpecificationArgs> {
    dimensions?: core.Map<string, string> | core.MapOut<core.StringOut>;
    metricName: string | core.StringOut;
    namespace: string | core.StringOut;
    statistic: string | core.StringOut;
    unit?: string | core.StringOut;
}
export interface PredefinedScalingMetricSpecificationArgs extends core.SchemaArgs {
    predefinedScalingMetricType: string | core.StringOut;
    resourceLabel?: string | core.StringOut;
}
export declare class PredefinedScalingMetricSpecification extends core.Schema<PredefinedScalingMetricSpecificationArgs> {
    predefinedScalingMetricType: string | core.StringOut;
    resourceLabel?: string | core.StringOut;
}
export interface TargetTrackingConfigurationArgs extends core.SchemaArgs {
    customizedScalingMetricSpecification?: CustomizedScalingMetricSpecification;
    disableScaleIn?: boolean | core.BooleanOut;
    estimatedInstanceWarmup?: number | core.NumberOut;
    predefinedScalingMetricSpecification?: PredefinedScalingMetricSpecification;
    scaleInCooldown?: number | core.NumberOut;
    scaleOutCooldown?: number | core.NumberOut;
    targetValue: number | core.NumberOut;
}
export declare class TargetTrackingConfiguration extends core.Schema<TargetTrackingConfigurationArgs> {
    customizedScalingMetricSpecification?: CustomizedScalingMetricSpecification;
    disableScaleIn?: boolean | core.BooleanOut;
    estimatedInstanceWarmup?: number | core.NumberOut;
    predefinedScalingMetricSpecification?: PredefinedScalingMetricSpecification;
    scaleInCooldown?: number | core.NumberOut;
    scaleOutCooldown?: number | core.NumberOut;
    targetValue: number | core.NumberOut;
}
export interface ScalingInstructionArgs extends core.SchemaArgs {
    customizedLoadMetricSpecification?: CustomizedLoadMetricSpecification;
    disableDynamicScaling?: boolean | core.BooleanOut;
    maxCapacity: number | core.NumberOut;
    minCapacity: number | core.NumberOut;
    predefinedLoadMetricSpecification?: PredefinedLoadMetricSpecification;
    predictiveScalingMaxCapacityBehavior?: string | core.StringOut;
    predictiveScalingMaxCapacityBuffer?: number | core.NumberOut;
    predictiveScalingMode?: string | core.StringOut;
    resourceId: string | core.StringOut;
    scalableDimension: string | core.StringOut;
    scalingPolicyUpdateBehavior?: string | core.StringOut;
    scheduledActionBufferTime?: number | core.NumberOut;
    serviceNamespace: string | core.StringOut;
    targetTrackingConfiguration: core.Array<TargetTrackingConfiguration> | core.ArrayOut<TargetTrackingConfiguration>;
}
export declare class ScalingInstruction extends core.Schema<ScalingInstructionArgs> {
    customizedLoadMetricSpecification?: CustomizedLoadMetricSpecification;
    disableDynamicScaling?: boolean | core.BooleanOut;
    maxCapacity: number | core.NumberOut;
    minCapacity: number | core.NumberOut;
    predefinedLoadMetricSpecification?: PredefinedLoadMetricSpecification;
    predictiveScalingMaxCapacityBehavior?: string | core.StringOut;
    predictiveScalingMaxCapacityBuffer?: number | core.NumberOut;
    predictiveScalingMode?: string | core.StringOut;
    resourceId: string | core.StringOut;
    scalableDimension: string | core.StringOut;
    scalingPolicyUpdateBehavior?: string | core.StringOut;
    scheduledActionBufferTime?: number | core.NumberOut;
    serviceNamespace: string | core.StringOut;
    targetTrackingConfiguration: core.Array<TargetTrackingConfiguration> | core.ArrayOut<TargetTrackingConfiguration>;
}
export interface ScalingPlanArgs extends core.ResourceArgs {
    applicationSource: ApplicationSource;
    name: string | core.StringOut;
    scalingInstruction: core.Array<ScalingInstruction> | core.ArrayOut<ScalingInstruction>;
}
export declare class ScalingPlan extends core.Resource<ScalingPlanArgs> {
    applicationSource: ApplicationSource;
    id: string | core.StringOut;
    name: string | core.StringOut;
    scalingInstruction: core.Array<ScalingInstruction> | core.ArrayOut<ScalingInstruction>;
    scalingPlanVersion: number | core.NumberOut;
    constructor(name: string, args?: ScalingPlanArgs);
    getNamespace(): string;
}
//# sourceMappingURL=scaling_plan.d.ts.map