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 MetricDimensionArgs extends core.SchemaArgs {
    name: string | core.StringOut;
    value: string | core.StringOut;
}
export declare class MetricDimension extends core.Schema<MetricDimensionArgs> {
    name: string | core.StringOut;
    value: string | core.StringOut;
}
export interface CustomizedMetricSpecificationArgs extends core.SchemaArgs {
    metricDimension?: core.Array<MetricDimension> | core.ArrayOut<MetricDimension>;
    metricName: string | core.StringOut;
    namespace: string | core.StringOut;
    statistic: string | core.StringOut;
    unit?: string | core.StringOut;
}
export declare class CustomizedMetricSpecification extends core.Schema<CustomizedMetricSpecificationArgs> {
    metricDimension?: core.Array<MetricDimension> | core.ArrayOut<MetricDimension>;
    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 TargetTrackingConfigurationArgs extends core.SchemaArgs {
    customizedMetricSpecification?: CustomizedMetricSpecification;
    disableScaleIn?: boolean | core.BooleanOut;
    predefinedMetricSpecification?: PredefinedMetricSpecification;
    targetValue: number | core.NumberOut;
}
export declare class TargetTrackingConfiguration extends core.Schema<TargetTrackingConfigurationArgs> {
    customizedMetricSpecification?: CustomizedMetricSpecification;
    disableScaleIn?: boolean | core.BooleanOut;
    predefinedMetricSpecification?: PredefinedMetricSpecification;
    targetValue: number | core.NumberOut;
}
export interface PredefinedScalingMetricSpecificationArgs extends core.SchemaArgs {
    predefinedMetricType: string | core.StringOut;
    resourceLabel: string | core.StringOut;
}
export declare class PredefinedScalingMetricSpecification extends core.Schema<PredefinedScalingMetricSpecificationArgs> {
    predefinedMetricType: string | core.StringOut;
    resourceLabel: string | core.StringOut;
}
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 MetricArgs extends core.SchemaArgs {
    dimensions?: core.Array<Dimensions> | core.ArrayOut<Dimensions>;
    metricName: string | core.StringOut;
    namespace: string | core.StringOut;
}
export declare class Metric extends core.Schema<MetricArgs> {
    dimensions?: core.Array<Dimensions> | core.ArrayOut<Dimensions>;
    metricName: string | core.StringOut;
    namespace: string | core.StringOut;
}
export interface MetricStatArgs extends core.SchemaArgs {
    metric: Metric;
    stat: string | core.StringOut;
    unit?: string | core.StringOut;
}
export declare class MetricStat extends core.Schema<MetricStatArgs> {
    metric: Metric;
    stat: string | core.StringOut;
    unit?: string | core.StringOut;
}
export interface MetricDataQueriesArgs extends core.SchemaArgs {
    expression?: string | core.StringOut;
    id: string | core.StringOut;
    label?: string | core.StringOut;
    metricStat?: MetricStat;
    returnData?: boolean | core.BooleanOut;
}
export declare class MetricDataQueries extends core.Schema<MetricDataQueriesArgs> {
    expression?: string | core.StringOut;
    id: string | core.StringOut;
    label?: string | core.StringOut;
    metricStat?: MetricStat;
    returnData?: boolean | core.BooleanOut;
}
export interface CustomizedCapacityMetricSpecificationArgs extends core.SchemaArgs {
    metricDataQueries: core.Array<MetricDataQueries> | core.ArrayOut<MetricDataQueries>;
}
export declare class CustomizedCapacityMetricSpecification extends core.Schema<CustomizedCapacityMetricSpecificationArgs> {
    metricDataQueries: core.Array<MetricDataQueries> | core.ArrayOut<MetricDataQueries>;
}
export interface CustomizedLoadMetricSpecificationArgs extends core.SchemaArgs {
    metricDataQueries: core.Array<MetricDataQueries> | core.ArrayOut<MetricDataQueries>;
}
export declare class CustomizedLoadMetricSpecification extends core.Schema<CustomizedLoadMetricSpecificationArgs> {
    metricDataQueries: core.Array<MetricDataQueries> | core.ArrayOut<MetricDataQueries>;
}
export interface CustomizedScalingMetricSpecificationArgs extends core.SchemaArgs {
    metricDataQueries: core.Array<MetricDataQueries> | core.ArrayOut<MetricDataQueries>;
}
export declare class CustomizedScalingMetricSpecification extends core.Schema<CustomizedScalingMetricSpecificationArgs> {
    metricDataQueries: core.Array<MetricDataQueries> | core.ArrayOut<MetricDataQueries>;
}
export interface PredefinedLoadMetricSpecificationArgs extends core.SchemaArgs {
    predefinedMetricType: string | core.StringOut;
    resourceLabel: string | core.StringOut;
}
export declare class PredefinedLoadMetricSpecification extends core.Schema<PredefinedLoadMetricSpecificationArgs> {
    predefinedMetricType: string | core.StringOut;
    resourceLabel: string | core.StringOut;
}
export interface PredefinedMetricPairSpecificationArgs extends core.SchemaArgs {
    predefinedMetricType: string | core.StringOut;
    resourceLabel: string | core.StringOut;
}
export declare class PredefinedMetricPairSpecification extends core.Schema<PredefinedMetricPairSpecificationArgs> {
    predefinedMetricType: string | core.StringOut;
    resourceLabel: string | core.StringOut;
}
export interface MetricSpecificationArgs extends core.SchemaArgs {
    customizedCapacityMetricSpecification?: CustomizedCapacityMetricSpecification;
    customizedLoadMetricSpecification?: CustomizedLoadMetricSpecification;
    customizedScalingMetricSpecification?: CustomizedScalingMetricSpecification;
    predefinedLoadMetricSpecification?: PredefinedLoadMetricSpecification;
    predefinedMetricPairSpecification?: PredefinedMetricPairSpecification;
    predefinedScalingMetricSpecification?: PredefinedScalingMetricSpecification;
    targetValue: number | core.NumberOut;
}
export declare class MetricSpecification extends core.Schema<MetricSpecificationArgs> {
    customizedCapacityMetricSpecification?: CustomizedCapacityMetricSpecification;
    customizedLoadMetricSpecification?: CustomizedLoadMetricSpecification;
    customizedScalingMetricSpecification?: CustomizedScalingMetricSpecification;
    predefinedLoadMetricSpecification?: PredefinedLoadMetricSpecification;
    predefinedMetricPairSpecification?: PredefinedMetricPairSpecification;
    predefinedScalingMetricSpecification?: PredefinedScalingMetricSpecification;
    targetValue: number | core.NumberOut;
}
export interface PredictiveScalingConfigurationArgs extends core.SchemaArgs {
    maxCapacityBreachBehavior?: string | core.StringOut;
    maxCapacityBuffer?: string | core.StringOut;
    metricSpecification: MetricSpecification;
    mode?: string | core.StringOut;
    schedulingBufferTime?: string | core.StringOut;
}
export declare class PredictiveScalingConfiguration extends core.Schema<PredictiveScalingConfigurationArgs> {
    maxCapacityBreachBehavior?: string | core.StringOut;
    maxCapacityBuffer?: string | core.StringOut;
    metricSpecification: MetricSpecification;
    mode?: string | core.StringOut;
    schedulingBufferTime?: string | core.StringOut;
}
export interface PolicyArgs extends core.ResourceArgs {
    adjustmentType?: string | core.StringOut;
    autoscalingGroupName: string | core.StringOut;
    cooldown?: number | core.NumberOut;
    enabled?: boolean | core.BooleanOut;
    estimatedInstanceWarmup?: number | core.NumberOut;
    metricAggregationType?: string | core.StringOut;
    minAdjustmentMagnitude?: number | core.NumberOut;
    name: string | core.StringOut;
    policyType?: string | core.StringOut;
    predictiveScalingConfiguration?: PredictiveScalingConfiguration;
    scalingAdjustment?: number | core.NumberOut;
    stepAdjustment?: core.Array<StepAdjustment> | core.ArrayOut<StepAdjustment>;
    targetTrackingConfiguration?: TargetTrackingConfiguration;
}
export declare class Policy extends core.Resource<PolicyArgs> {
    adjustmentType?: string | core.StringOut;
    arn: string | core.StringOut;
    autoscalingGroupName: string | core.StringOut;
    cooldown?: number | core.NumberOut;
    enabled?: boolean | core.BooleanOut;
    estimatedInstanceWarmup?: number | core.NumberOut;
    id: string | core.StringOut;
    metricAggregationType?: string | core.StringOut;
    minAdjustmentMagnitude?: number | core.NumberOut;
    name: string | core.StringOut;
    policyType?: string | core.StringOut;
    predictiveScalingConfiguration?: PredictiveScalingConfiguration;
    scalingAdjustment?: number | core.NumberOut;
    stepAdjustment?: core.Array<StepAdjustment> | core.ArrayOut<StepAdjustment>;
    targetTrackingConfiguration?: TargetTrackingConfiguration;
    constructor(name: string, args?: PolicyArgs);
    getNamespace(): string;
}
//# sourceMappingURL=policy.d.ts.map