import { ResourceBase, ResourceTag as Inner_ResourceTag } from "../../resource";
import { Value, List, MapOf } from "../../data-types";
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 HadoopJarStepConfig {
    Args?: List<Value<string>>;
    Jar: Value<string>;
    MainClass?: Value<string>;
    StepProperties?: List<KeyValue>;
    constructor(properties: HadoopJarStepConfig);
}
export declare class BootstrapActionConfig {
    Name: Value<string>;
    ScriptBootstrapAction: ScriptBootstrapActionConfig;
    constructor(properties: BootstrapActionConfig);
}
export declare class VolumeSpecification {
    Iops?: Value<number>;
    SizeInGB: Value<number>;
    VolumeType: Value<string>;
    constructor(properties: VolumeSpecification);
}
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 AutoScalingPolicy {
    Constraints: ScalingConstraints;
    Rules: List<ScalingRule>;
    constructor(properties: AutoScalingPolicy);
}
export declare class InstanceGroupConfig {
    AutoScalingPolicy?: AutoScalingPolicy;
    BidPrice?: Value<string>;
    Configurations?: List<Configuration>;
    EbsConfiguration?: EbsConfiguration;
    InstanceCount: Value<number>;
    InstanceType: Value<string>;
    Market?: Value<string>;
    Name?: Value<string>;
    constructor(properties: InstanceGroupConfig);
}
export declare class StepConfig {
    ActionOnFailure?: Value<string>;
    HadoopJarStep: HadoopJarStepConfig;
    Name: Value<string>;
    constructor(properties: StepConfig);
}
export declare class Application {
    AdditionalInfo?: MapOf<Value<string>>;
    Args?: List<Value<string>>;
    Name?: Value<string>;
    Version?: Value<string>;
    constructor(properties: Application);
}
export declare class EbsBlockDeviceConfig {
    VolumeSpecification: VolumeSpecification;
    VolumesPerInstance?: Value<number>;
    constructor(properties: EbsBlockDeviceConfig);
}
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 InstanceTypeConfig {
    BidPrice?: Value<string>;
    BidPriceAsPercentageOfOnDemandPrice?: Value<number>;
    Configurations?: List<Configuration>;
    EbsConfiguration?: EbsConfiguration;
    InstanceType: Value<string>;
    WeightedCapacity?: Value<number>;
    constructor(properties: InstanceTypeConfig);
}
export declare class ScalingTrigger {
    CloudWatchAlarmDefinition: CloudWatchAlarmDefinition;
    constructor(properties: ScalingTrigger);
}
export declare class KerberosAttributes {
    ADDomainJoinPassword?: Value<string>;
    ADDomainJoinUser?: Value<string>;
    CrossRealmTrustPrincipalPassword?: Value<string>;
    KdcAdminPassword: Value<string>;
    Realm: Value<string>;
    constructor(properties: KerberosAttributes);
}
export declare class SpotProvisioningSpecification {
    BlockDurationMinutes?: Value<number>;
    TimeoutAction: Value<string>;
    TimeoutDurationMinutes: Value<number>;
    constructor(properties: SpotProvisioningSpecification);
}
export declare class KeyValue {
    Key?: Value<string>;
    Value?: Value<string>;
    constructor(properties: KeyValue);
}
export declare class InstanceFleetProvisioningSpecifications {
    SpotSpecification: SpotProvisioningSpecification;
    constructor(properties: InstanceFleetProvisioningSpecifications);
}
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 JobFlowInstancesConfig {
    AdditionalSlaveSecurityGroups?: List<Value<string>>;
    KeepJobFlowAliveWhenNoSteps?: Value<boolean>;
    Placement?: PlacementType;
    ServiceAccessSecurityGroup?: Value<string>;
    Ec2SubnetIds?: List<Value<string>>;
    EmrManagedMasterSecurityGroup?: Value<string>;
    MasterInstanceGroup?: InstanceGroupConfig;
    TerminationProtected?: Value<boolean>;
    CoreInstanceGroup?: InstanceGroupConfig;
    Ec2SubnetId?: Value<string>;
    HadoopVersion?: Value<string>;
    Ec2KeyName?: Value<string>;
    MasterInstanceFleet?: InstanceFleetConfig;
    CoreInstanceFleet?: InstanceFleetConfig;
    EmrManagedSlaveSecurityGroup?: Value<string>;
    AdditionalMasterSecurityGroups?: List<Value<string>>;
    constructor(properties: JobFlowInstancesConfig);
}
export declare class ScriptBootstrapActionConfig {
    Args?: List<Value<string>>;
    Path: Value<string>;
    constructor(properties: ScriptBootstrapActionConfig);
}
export declare class InstanceFleetConfig {
    InstanceTypeConfigs?: List<InstanceTypeConfig>;
    LaunchSpecifications?: InstanceFleetProvisioningSpecifications;
    Name?: Value<string>;
    TargetOnDemandCapacity?: Value<number>;
    TargetSpotCapacity?: Value<number>;
    constructor(properties: InstanceFleetConfig);
}
export declare class ScalingAction {
    Market?: Value<string>;
    SimpleScalingPolicyConfiguration: SimpleScalingPolicyConfiguration;
    constructor(properties: ScalingAction);
}
export declare class PlacementType {
    AvailabilityZone: Value<string>;
    constructor(properties: PlacementType);
}
export interface ClusterProperties {
    JobFlowRole: Value<string>;
    Applications?: List<Application>;
    CustomAmiId?: Value<string>;
    Steps?: List<StepConfig>;
    LogUri?: Value<string>;
    ServiceRole: Value<string>;
    Name: Value<string>;
    ReleaseLabel?: Value<string>;
    AutoScalingRole?: Value<string>;
    BootstrapActions?: List<BootstrapActionConfig>;
    KerberosAttributes?: KerberosAttributes;
    EbsRootVolumeSize?: Value<number>;
    VisibleToAllUsers?: Value<boolean>;
    AdditionalInfo?: MapOf<any>;
    SecurityConfiguration?: Value<string>;
    Tags?: List<Inner_ResourceTag>;
    Configurations?: List<Configuration>;
    Instances: JobFlowInstancesConfig;
    ScaleDownBehavior?: Value<string>;
}
export default class Inner_Cluster extends ResourceBase<ClusterProperties> {
    static EbsConfiguration: typeof EbsConfiguration;
    static ScalingRule: typeof ScalingRule;
    static HadoopJarStepConfig: typeof HadoopJarStepConfig;
    static BootstrapActionConfig: typeof BootstrapActionConfig;
    static VolumeSpecification: typeof VolumeSpecification;
    static CloudWatchAlarmDefinition: typeof CloudWatchAlarmDefinition;
    static AutoScalingPolicy: typeof AutoScalingPolicy;
    static InstanceGroupConfig: typeof InstanceGroupConfig;
    static StepConfig: typeof StepConfig;
    static Application: typeof Application;
    static EbsBlockDeviceConfig: typeof EbsBlockDeviceConfig;
    static SimpleScalingPolicyConfiguration: typeof SimpleScalingPolicyConfiguration;
    static ScalingConstraints: typeof ScalingConstraints;
    static InstanceTypeConfig: typeof InstanceTypeConfig;
    static ScalingTrigger: typeof ScalingTrigger;
    static KerberosAttributes: typeof KerberosAttributes;
    static SpotProvisioningSpecification: typeof SpotProvisioningSpecification;
    static KeyValue: typeof KeyValue;
    static InstanceFleetProvisioningSpecifications: typeof InstanceFleetProvisioningSpecifications;
    static Configuration: typeof Configuration;
    static MetricDimension: typeof MetricDimension;
    static JobFlowInstancesConfig: typeof JobFlowInstancesConfig;
    static ScriptBootstrapActionConfig: typeof ScriptBootstrapActionConfig;
    static InstanceFleetConfig: typeof InstanceFleetConfig;
    static ScalingAction: typeof ScalingAction;
    static PlacementType: typeof PlacementType;
    constructor(properties: ClusterProperties);
}
