import { ResourceBase } from "../../resource";
import { Value, List, MapOf } from "../../data-types";
export declare class ScalingTrigger {
    CloudWatchAlarmDefinition: CloudWatchAlarmDefinition;
    constructor(properties: ScalingTrigger);
}
export declare class Configuration {
    Classification?: Value<string>;
    ConfigurationProperties?: MapOf<Value<string>>;
    Configurations?: List<Configuration>;
    constructor(properties: Configuration);
}
export declare class MetricDimension {
    Key: Value<string>;
    Value: Value<string>;
    constructor(properties: MetricDimension);
}
export declare class ScalingAction {
    Market?: Value<string>;
    SimpleScalingPolicyConfiguration: SimpleScalingPolicyConfiguration;
    constructor(properties: ScalingAction);
}
export declare class EbsConfiguration {
    EbsBlockDeviceConfigs?: List<EbsBlockDeviceConfig>;
    EbsOptimized?: Value<boolean>;
    constructor(properties: EbsConfiguration);
}
export declare class ScalingRule {
    Action: ScalingAction;
    Description?: Value<string>;
    Name: Value<string>;
    Trigger: ScalingTrigger;
    constructor(properties: ScalingRule);
}
export declare class VolumeSpecification {
    Iops?: Value<number>;
    SizeInGB: Value<number>;
    VolumeType: Value<string>;
    constructor(properties: VolumeSpecification);
}
export declare class AutoScalingPolicy {
    Constraints: ScalingConstraints;
    Rules: List<ScalingRule>;
    constructor(properties: AutoScalingPolicy);
}
export declare class CloudWatchAlarmDefinition {
    Period: Value<number>;
    Unit?: Value<string>;
    Threshold: Value<number>;
    Dimensions?: List<MetricDimension>;
    ComparisonOperator: Value<string>;
    Statistic?: Value<string>;
    EvaluationPeriods?: Value<number>;
    MetricName: Value<string>;
    Namespace?: Value<string>;
    constructor(properties: CloudWatchAlarmDefinition);
}
export declare class SimpleScalingPolicyConfiguration {
    AdjustmentType?: Value<string>;
    CoolDown?: Value<number>;
    ScalingAdjustment: Value<number>;
    constructor(properties: SimpleScalingPolicyConfiguration);
}
export declare class ScalingConstraints {
    MaxCapacity: Value<number>;
    MinCapacity: Value<number>;
    constructor(properties: ScalingConstraints);
}
export declare class EbsBlockDeviceConfig {
    VolumeSpecification: VolumeSpecification;
    VolumesPerInstance?: Value<number>;
    constructor(properties: EbsBlockDeviceConfig);
}
export interface InstanceGroupConfigProperties {
    EbsConfiguration?: EbsConfiguration;
    JobFlowId: Value<string>;
    AutoScalingPolicy?: AutoScalingPolicy;
    Name?: Value<string>;
    InstanceRole: Value<string>;
    BidPrice?: Value<string>;
    InstanceType: Value<string>;
    InstanceCount: Value<number>;
    Market?: Value<string>;
    Configurations?: List<Configuration>;
}
export default class Inner_InstanceGroupConfig extends ResourceBase<InstanceGroupConfigProperties> {
    static ScalingTrigger: typeof ScalingTrigger;
    static Configuration: typeof Configuration;
    static MetricDimension: typeof MetricDimension;
    static ScalingAction: typeof ScalingAction;
    static EbsConfiguration: typeof EbsConfiguration;
    static ScalingRule: typeof ScalingRule;
    static VolumeSpecification: typeof VolumeSpecification;
    static AutoScalingPolicy: typeof AutoScalingPolicy;
    static CloudWatchAlarmDefinition: typeof CloudWatchAlarmDefinition;
    static SimpleScalingPolicyConfiguration: typeof SimpleScalingPolicyConfiguration;
    static ScalingConstraints: typeof ScalingConstraints;
    static EbsBlockDeviceConfig: typeof EbsBlockDeviceConfig;
    constructor(properties: InstanceGroupConfigProperties);
}
