import * as core from "@terrascript/core";
export interface ConfigurationsArgs extends core.SchemaArgs {
    classification?: string | core.StringOut;
    properties?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class Configurations extends core.Schema<ConfigurationsArgs> {
    classification?: string | core.StringOut;
    properties?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export interface InstanceTypeConfigsEbsConfigArgs extends core.SchemaArgs {
    iops?: number | core.NumberOut;
    size: number | core.NumberOut;
    type: string | core.StringOut;
    volumesPerInstance?: number | core.NumberOut;
}
export declare class InstanceTypeConfigsEbsConfig extends core.Schema<InstanceTypeConfigsEbsConfigArgs> {
    iops?: number | core.NumberOut;
    size: number | core.NumberOut;
    type: string | core.StringOut;
    volumesPerInstance?: number | core.NumberOut;
}
export interface InstanceTypeConfigsArgs extends core.SchemaArgs {
    bidPrice?: string | core.StringOut;
    bidPriceAsPercentageOfOnDemandPrice?: number | core.NumberOut;
    configurations?: core.Array<Configurations> | core.ArrayOut<Configurations>;
    ebsConfig?: core.Array<InstanceTypeConfigsEbsConfig> | core.ArrayOut<InstanceTypeConfigsEbsConfig>;
    instanceType: string | core.StringOut;
    weightedCapacity?: number | core.NumberOut;
}
export declare class InstanceTypeConfigs extends core.Schema<InstanceTypeConfigsArgs> {
    bidPrice?: string | core.StringOut;
    bidPriceAsPercentageOfOnDemandPrice?: number | core.NumberOut;
    configurations?: core.Array<Configurations> | core.ArrayOut<Configurations>;
    ebsConfig?: core.Array<InstanceTypeConfigsEbsConfig> | core.ArrayOut<InstanceTypeConfigsEbsConfig>;
    instanceType: string | core.StringOut;
    weightedCapacity?: number | core.NumberOut;
}
export interface OnDemandSpecificationArgs extends core.SchemaArgs {
    allocationStrategy: string | core.StringOut;
}
export declare class OnDemandSpecification extends core.Schema<OnDemandSpecificationArgs> {
    allocationStrategy: string | core.StringOut;
}
export interface SpotSpecificationArgs extends core.SchemaArgs {
    allocationStrategy: string | core.StringOut;
    blockDurationMinutes?: number | core.NumberOut;
    timeoutAction: string | core.StringOut;
    timeoutDurationMinutes: number | core.NumberOut;
}
export declare class SpotSpecification extends core.Schema<SpotSpecificationArgs> {
    allocationStrategy: string | core.StringOut;
    blockDurationMinutes?: number | core.NumberOut;
    timeoutAction: string | core.StringOut;
    timeoutDurationMinutes: number | core.NumberOut;
}
export interface LaunchSpecificationsArgs extends core.SchemaArgs {
    onDemandSpecification?: core.Array<OnDemandSpecification> | core.ArrayOut<OnDemandSpecification>;
    spotSpecification?: core.Array<SpotSpecification> | core.ArrayOut<SpotSpecification>;
}
export declare class LaunchSpecifications extends core.Schema<LaunchSpecificationsArgs> {
    onDemandSpecification?: core.Array<OnDemandSpecification> | core.ArrayOut<OnDemandSpecification>;
    spotSpecification?: core.Array<SpotSpecification> | core.ArrayOut<SpotSpecification>;
}
export interface MasterInstanceFleetArgs extends core.SchemaArgs {
    id: string | core.StringOut;
    instanceTypeConfigs?: core.Array<InstanceTypeConfigs> | core.ArrayOut<InstanceTypeConfigs>;
    launchSpecifications?: LaunchSpecifications;
    name?: string | core.StringOut;
    provisionedOnDemandCapacity: number | core.NumberOut;
    provisionedSpotCapacity: number | core.NumberOut;
    targetOnDemandCapacity?: number | core.NumberOut;
    targetSpotCapacity?: number | core.NumberOut;
}
export declare class MasterInstanceFleet extends core.Schema<MasterInstanceFleetArgs> {
    id: string | core.StringOut;
    instanceTypeConfigs?: core.Array<InstanceTypeConfigs> | core.ArrayOut<InstanceTypeConfigs>;
    launchSpecifications?: LaunchSpecifications;
    name?: string | core.StringOut;
    provisionedOnDemandCapacity: number | core.NumberOut;
    provisionedSpotCapacity: number | core.NumberOut;
    targetOnDemandCapacity?: number | core.NumberOut;
    targetSpotCapacity?: number | core.NumberOut;
}
export interface BootstrapActionArgs extends core.SchemaArgs {
    args?: core.Array<string> | core.ArrayOut<core.StringOut>;
    name: string | core.StringOut;
    path: string | core.StringOut;
}
export declare class BootstrapAction extends core.Schema<BootstrapActionArgs> {
    args?: core.Array<string> | core.ArrayOut<core.StringOut>;
    name: string | core.StringOut;
    path: string | core.StringOut;
}
export interface AutoTerminationPolicyArgs extends core.SchemaArgs {
    idleTimeout?: number | core.NumberOut;
}
export declare class AutoTerminationPolicy extends core.Schema<AutoTerminationPolicyArgs> {
    idleTimeout?: number | core.NumberOut;
}
export interface MasterInstanceGroupEbsConfigArgs extends core.SchemaArgs {
    iops?: number | core.NumberOut;
    size: number | core.NumberOut;
    throughput?: number | core.NumberOut;
    type: string | core.StringOut;
    volumesPerInstance?: number | core.NumberOut;
}
export declare class MasterInstanceGroupEbsConfig extends core.Schema<MasterInstanceGroupEbsConfigArgs> {
    iops?: number | core.NumberOut;
    size: number | core.NumberOut;
    throughput?: number | core.NumberOut;
    type: string | core.StringOut;
    volumesPerInstance?: number | core.NumberOut;
}
export interface MasterInstanceGroupArgs extends core.SchemaArgs {
    bidPrice?: string | core.StringOut;
    ebsConfig?: core.Array<MasterInstanceGroupEbsConfig> | core.ArrayOut<MasterInstanceGroupEbsConfig>;
    id: string | core.StringOut;
    instanceCount?: number | core.NumberOut;
    instanceType: string | core.StringOut;
    name?: string | core.StringOut;
}
export declare class MasterInstanceGroup extends core.Schema<MasterInstanceGroupArgs> {
    bidPrice?: string | core.StringOut;
    ebsConfig?: core.Array<MasterInstanceGroupEbsConfig> | core.ArrayOut<MasterInstanceGroupEbsConfig>;
    id: string | core.StringOut;
    instanceCount?: number | core.NumberOut;
    instanceType: string | core.StringOut;
    name?: string | core.StringOut;
}
export interface CoreInstanceFleetArgs extends core.SchemaArgs {
    id: string | core.StringOut;
    instanceTypeConfigs?: core.Array<InstanceTypeConfigs> | core.ArrayOut<InstanceTypeConfigs>;
    launchSpecifications?: LaunchSpecifications;
    name?: string | core.StringOut;
    provisionedOnDemandCapacity: number | core.NumberOut;
    provisionedSpotCapacity: number | core.NumberOut;
    targetOnDemandCapacity?: number | core.NumberOut;
    targetSpotCapacity?: number | core.NumberOut;
}
export declare class CoreInstanceFleet extends core.Schema<CoreInstanceFleetArgs> {
    id: string | core.StringOut;
    instanceTypeConfigs?: core.Array<InstanceTypeConfigs> | core.ArrayOut<InstanceTypeConfigs>;
    launchSpecifications?: LaunchSpecifications;
    name?: string | core.StringOut;
    provisionedOnDemandCapacity: number | core.NumberOut;
    provisionedSpotCapacity: number | core.NumberOut;
    targetOnDemandCapacity?: number | core.NumberOut;
    targetSpotCapacity?: number | core.NumberOut;
}
export interface HadoopJarStepArgs extends core.SchemaArgs {
    args?: core.Array<string> | core.ArrayOut<core.StringOut>;
    jar: string | core.StringOut;
    mainClass?: string | core.StringOut;
    properties?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class HadoopJarStep extends core.Schema<HadoopJarStepArgs> {
    args?: core.Array<string> | core.ArrayOut<core.StringOut>;
    jar: string | core.StringOut;
    mainClass?: string | core.StringOut;
    properties?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export interface StepArgs extends core.SchemaArgs {
    actionOnFailure: string | core.StringOut;
    hadoopJarStep: HadoopJarStep;
    name: string | core.StringOut;
}
export declare class Step extends core.Schema<StepArgs> {
    actionOnFailure: string | core.StringOut;
    hadoopJarStep: HadoopJarStep;
    name: string | core.StringOut;
}
export interface Ec2AttributesArgs extends core.SchemaArgs {
    additionalMasterSecurityGroups?: string | core.StringOut;
    additionalSlaveSecurityGroups?: string | core.StringOut;
    emrManagedMasterSecurityGroup?: string | core.StringOut;
    emrManagedSlaveSecurityGroup?: string | core.StringOut;
    instanceProfile: string | core.StringOut;
    keyName?: string | core.StringOut;
    serviceAccessSecurityGroup?: string | core.StringOut;
    subnetId?: string | core.StringOut;
    subnetIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class Ec2Attributes extends core.Schema<Ec2AttributesArgs> {
    additionalMasterSecurityGroups?: string | core.StringOut;
    additionalSlaveSecurityGroups?: string | core.StringOut;
    emrManagedMasterSecurityGroup?: string | core.StringOut;
    emrManagedSlaveSecurityGroup?: string | core.StringOut;
    instanceProfile: string | core.StringOut;
    keyName?: string | core.StringOut;
    serviceAccessSecurityGroup?: string | core.StringOut;
    subnetId?: string | core.StringOut;
    subnetIds?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface KerberosAttributesArgs extends core.SchemaArgs {
    adDomainJoinPassword?: string | core.StringOut;
    adDomainJoinUser?: string | core.StringOut;
    crossRealmTrustPrincipalPassword?: string | core.StringOut;
    kdcAdminPassword: string | core.StringOut;
    realm: string | core.StringOut;
}
export declare class KerberosAttributes extends core.Schema<KerberosAttributesArgs> {
    adDomainJoinPassword?: string | core.StringOut;
    adDomainJoinUser?: string | core.StringOut;
    crossRealmTrustPrincipalPassword?: string | core.StringOut;
    kdcAdminPassword: string | core.StringOut;
    realm: string | core.StringOut;
}
export interface CoreInstanceGroupArgs extends core.SchemaArgs {
    autoscalingPolicy?: string | core.StringOut;
    bidPrice?: string | core.StringOut;
    ebsConfig?: core.Array<MasterInstanceGroupEbsConfig> | core.ArrayOut<MasterInstanceGroupEbsConfig>;
    id: string | core.StringOut;
    instanceCount?: number | core.NumberOut;
    instanceType: string | core.StringOut;
    name?: string | core.StringOut;
}
export declare class CoreInstanceGroup extends core.Schema<CoreInstanceGroupArgs> {
    autoscalingPolicy?: string | core.StringOut;
    bidPrice?: string | core.StringOut;
    ebsConfig?: core.Array<MasterInstanceGroupEbsConfig> | core.ArrayOut<MasterInstanceGroupEbsConfig>;
    id: string | core.StringOut;
    instanceCount?: number | core.NumberOut;
    instanceType: string | core.StringOut;
    name?: string | core.StringOut;
}
export interface ClusterArgs extends core.ResourceArgs {
    additionalInfo?: string | core.StringOut;
    applications?: core.Array<string> | core.ArrayOut<core.StringOut>;
    autoTerminationPolicy?: AutoTerminationPolicy;
    autoscalingRole?: string | core.StringOut;
    bootstrapAction?: core.Array<BootstrapAction> | core.ArrayOut<BootstrapAction>;
    configurations?: string | core.StringOut;
    configurationsJson?: string | core.StringOut;
    coreInstanceFleet?: CoreInstanceFleet;
    coreInstanceGroup?: CoreInstanceGroup;
    customAmiId?: string | core.StringOut;
    ebsRootVolumeSize?: number | core.NumberOut;
    ec2Attributes?: Ec2Attributes;
    keepJobFlowAliveWhenNoSteps?: boolean | core.BooleanOut;
    kerberosAttributes?: KerberosAttributes;
    listStepsStates?: core.Array<string> | core.ArrayOut<core.StringOut>;
    logEncryptionKmsKeyId?: string | core.StringOut;
    logUri?: string | core.StringOut;
    masterInstanceFleet?: MasterInstanceFleet;
    masterInstanceGroup?: MasterInstanceGroup;
    name: string | core.StringOut;
    releaseLabel: string | core.StringOut;
    scaleDownBehavior?: string | core.StringOut;
    securityConfiguration?: string | core.StringOut;
    serviceRole: string | core.StringOut;
    step?: core.Array<Step> | core.ArrayOut<Step>;
    stepConcurrencyLevel?: number | core.NumberOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    terminationProtection?: boolean | core.BooleanOut;
    visibleToAllUsers?: boolean | core.BooleanOut;
}
export declare class Cluster extends core.Resource<ClusterArgs> {
    additionalInfo?: string | core.StringOut;
    applications?: core.Array<string> | core.ArrayOut<core.StringOut>;
    arn: string | core.StringOut;
    autoTerminationPolicy?: AutoTerminationPolicy;
    autoscalingRole?: string | core.StringOut;
    bootstrapAction?: core.Array<BootstrapAction> | core.ArrayOut<BootstrapAction>;
    clusterState: string | core.StringOut;
    configurations?: string | core.StringOut;
    configurationsJson?: string | core.StringOut;
    coreInstanceFleet?: CoreInstanceFleet;
    coreInstanceGroup?: CoreInstanceGroup;
    customAmiId?: string | core.StringOut;
    ebsRootVolumeSize?: number | core.NumberOut;
    ec2Attributes?: Ec2Attributes;
    id: string | core.StringOut;
    keepJobFlowAliveWhenNoSteps?: boolean | core.BooleanOut;
    kerberosAttributes?: KerberosAttributes;
    listStepsStates?: core.Array<string> | core.ArrayOut<core.StringOut>;
    logEncryptionKmsKeyId?: string | core.StringOut;
    logUri?: string | core.StringOut;
    masterInstanceFleet?: MasterInstanceFleet;
    masterInstanceGroup?: MasterInstanceGroup;
    masterPublicDns: string | core.StringOut;
    name: string | core.StringOut;
    releaseLabel: string | core.StringOut;
    scaleDownBehavior?: string | core.StringOut;
    securityConfiguration?: string | core.StringOut;
    serviceRole: string | core.StringOut;
    step?: core.Array<Step> | core.ArrayOut<Step>;
    stepConcurrencyLevel?: number | core.NumberOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    terminationProtection?: boolean | core.BooleanOut;
    visibleToAllUsers?: boolean | core.BooleanOut;
    constructor(name: string, args?: ClusterArgs);
    getNamespace(): string;
}
//# sourceMappingURL=cluster.d.ts.map