import * as core from "@terrascript/core";
export interface InstanceReusePolicyArgs extends core.SchemaArgs {
    reuseOnScaleIn?: boolean | core.BooleanOut;
}
export declare class InstanceReusePolicy extends core.Schema<InstanceReusePolicyArgs> {
    reuseOnScaleIn?: boolean | core.BooleanOut;
}
export interface WarmPoolArgs extends core.SchemaArgs {
    instanceReusePolicy?: InstanceReusePolicy;
    maxGroupPreparedCapacity?: number | core.NumberOut;
    minSize?: number | core.NumberOut;
    poolState?: string | core.StringOut;
}
export declare class WarmPool extends core.Schema<WarmPoolArgs> {
    instanceReusePolicy?: InstanceReusePolicy;
    maxGroupPreparedCapacity?: number | core.NumberOut;
    minSize?: number | core.NumberOut;
    poolState?: string | core.StringOut;
}
export interface InstancesDistributionArgs extends core.SchemaArgs {
    onDemandAllocationStrategy?: string | core.StringOut;
    onDemandBaseCapacity?: number | core.NumberOut;
    onDemandPercentageAboveBaseCapacity?: number | core.NumberOut;
    spotAllocationStrategy?: string | core.StringOut;
    spotInstancePools?: number | core.NumberOut;
    spotMaxPrice?: string | core.StringOut;
}
export declare class InstancesDistribution extends core.Schema<InstancesDistributionArgs> {
    onDemandAllocationStrategy?: string | core.StringOut;
    onDemandBaseCapacity?: number | core.NumberOut;
    onDemandPercentageAboveBaseCapacity?: number | core.NumberOut;
    spotAllocationStrategy?: string | core.StringOut;
    spotInstancePools?: number | core.NumberOut;
    spotMaxPrice?: string | core.StringOut;
}
export interface LaunchTemplateSpecificationArgs extends core.SchemaArgs {
    launchTemplateId?: string | core.StringOut;
    launchTemplateName?: string | core.StringOut;
    version?: string | core.StringOut;
}
export declare class LaunchTemplateSpecification extends core.Schema<LaunchTemplateSpecificationArgs> {
    launchTemplateId?: string | core.StringOut;
    launchTemplateName?: string | core.StringOut;
    version?: string | core.StringOut;
}
export interface AcceleratorCountArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class AcceleratorCount extends core.Schema<AcceleratorCountArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface AcceleratorTotalMemoryMibArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class AcceleratorTotalMemoryMib extends core.Schema<AcceleratorTotalMemoryMibArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface BaselineEbsBandwidthMbpsArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class BaselineEbsBandwidthMbps extends core.Schema<BaselineEbsBandwidthMbpsArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface VcpuCountArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class VcpuCount extends core.Schema<VcpuCountArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface TotalLocalStorageGbArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class TotalLocalStorageGb extends core.Schema<TotalLocalStorageGbArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface NetworkInterfaceCountArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class NetworkInterfaceCount extends core.Schema<NetworkInterfaceCountArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface MemoryMibArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class MemoryMib extends core.Schema<MemoryMibArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface MemoryGibPerVcpuArgs extends core.SchemaArgs {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export declare class MemoryGibPerVcpu extends core.Schema<MemoryGibPerVcpuArgs> {
    max?: number | core.NumberOut;
    min?: number | core.NumberOut;
}
export interface InstanceRequirementsArgs extends core.SchemaArgs {
    acceleratorCount?: AcceleratorCount;
    acceleratorManufacturers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    acceleratorNames?: core.Array<string> | core.ArrayOut<core.StringOut>;
    acceleratorTotalMemoryMib?: AcceleratorTotalMemoryMib;
    acceleratorTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    bareMetal?: string | core.StringOut;
    baselineEbsBandwidthMbps?: BaselineEbsBandwidthMbps;
    burstablePerformance?: string | core.StringOut;
    cpuManufacturers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    excludedInstanceTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    instanceGenerations?: core.Array<string> | core.ArrayOut<core.StringOut>;
    localStorage?: string | core.StringOut;
    localStorageTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    memoryGibPerVcpu?: MemoryGibPerVcpu;
    memoryMib?: MemoryMib;
    networkInterfaceCount?: NetworkInterfaceCount;
    onDemandMaxPricePercentageOverLowestPrice?: number | core.NumberOut;
    requireHibernateSupport?: boolean | core.BooleanOut;
    spotMaxPricePercentageOverLowestPrice?: number | core.NumberOut;
    totalLocalStorageGb?: TotalLocalStorageGb;
    vcpuCount?: VcpuCount;
}
export declare class InstanceRequirements extends core.Schema<InstanceRequirementsArgs> {
    acceleratorCount?: AcceleratorCount;
    acceleratorManufacturers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    acceleratorNames?: core.Array<string> | core.ArrayOut<core.StringOut>;
    acceleratorTotalMemoryMib?: AcceleratorTotalMemoryMib;
    acceleratorTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    bareMetal?: string | core.StringOut;
    baselineEbsBandwidthMbps?: BaselineEbsBandwidthMbps;
    burstablePerformance?: string | core.StringOut;
    cpuManufacturers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    excludedInstanceTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    instanceGenerations?: core.Array<string> | core.ArrayOut<core.StringOut>;
    localStorage?: string | core.StringOut;
    localStorageTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    memoryGibPerVcpu?: MemoryGibPerVcpu;
    memoryMib?: MemoryMib;
    networkInterfaceCount?: NetworkInterfaceCount;
    onDemandMaxPricePercentageOverLowestPrice?: number | core.NumberOut;
    requireHibernateSupport?: boolean | core.BooleanOut;
    spotMaxPricePercentageOverLowestPrice?: number | core.NumberOut;
    totalLocalStorageGb?: TotalLocalStorageGb;
    vcpuCount?: VcpuCount;
}
export interface OverrideArgs extends core.SchemaArgs {
    instanceRequirements?: InstanceRequirements;
    instanceType?: string | core.StringOut;
    launchTemplateSpecification?: LaunchTemplateSpecification;
    weightedCapacity?: string | core.StringOut;
}
export declare class Override extends core.Schema<OverrideArgs> {
    instanceRequirements?: InstanceRequirements;
    instanceType?: string | core.StringOut;
    launchTemplateSpecification?: LaunchTemplateSpecification;
    weightedCapacity?: string | core.StringOut;
}
export interface MixedInstancesPolicyLaunchTemplateArgs extends core.SchemaArgs {
    launchTemplateSpecification: LaunchTemplateSpecification;
    override?: core.Array<Override> | core.ArrayOut<Override>;
}
export declare class MixedInstancesPolicyLaunchTemplate extends core.Schema<MixedInstancesPolicyLaunchTemplateArgs> {
    launchTemplateSpecification: LaunchTemplateSpecification;
    override?: core.Array<Override> | core.ArrayOut<Override>;
}
export interface MixedInstancesPolicyArgs extends core.SchemaArgs {
    instancesDistribution?: InstancesDistribution;
    launchTemplate: MixedInstancesPolicyLaunchTemplate;
}
export declare class MixedInstancesPolicy extends core.Schema<MixedInstancesPolicyArgs> {
    instancesDistribution?: InstancesDistribution;
    launchTemplate: MixedInstancesPolicyLaunchTemplate;
}
export interface LaunchTemplateArgs extends core.SchemaArgs {
    id?: string | core.StringOut;
    name?: string | core.StringOut;
    version?: string | core.StringOut;
}
export declare class LaunchTemplate extends core.Schema<LaunchTemplateArgs> {
    id?: string | core.StringOut;
    name?: string | core.StringOut;
    version?: string | core.StringOut;
}
export interface InitialLifecycleHookArgs extends core.SchemaArgs {
    defaultResult?: string | core.StringOut;
    heartbeatTimeout?: number | core.NumberOut;
    lifecycleTransition: string | core.StringOut;
    name: string | core.StringOut;
    notificationMetadata?: string | core.StringOut;
    notificationTargetArn?: string | core.StringOut;
    roleArn?: string | core.StringOut;
}
export declare class InitialLifecycleHook extends core.Schema<InitialLifecycleHookArgs> {
    defaultResult?: string | core.StringOut;
    heartbeatTimeout?: number | core.NumberOut;
    lifecycleTransition: string | core.StringOut;
    name: string | core.StringOut;
    notificationMetadata?: string | core.StringOut;
    notificationTargetArn?: string | core.StringOut;
    roleArn?: string | core.StringOut;
}
export interface TagArgs extends core.SchemaArgs {
    key: string | core.StringOut;
    propagateAtLaunch: boolean | core.BooleanOut;
    value: string | core.StringOut;
}
export declare class Tag extends core.Schema<TagArgs> {
    key: string | core.StringOut;
    propagateAtLaunch: boolean | core.BooleanOut;
    value: string | core.StringOut;
}
export interface PreferencesArgs extends core.SchemaArgs {
    checkpointDelay?: string | core.StringOut;
    checkpointPercentages?: core.Array<number> | core.ArrayOut<core.NumberOut>;
    instanceWarmup?: string | core.StringOut;
    minHealthyPercentage?: number | core.NumberOut;
    skipMatching?: boolean | core.BooleanOut;
}
export declare class Preferences extends core.Schema<PreferencesArgs> {
    checkpointDelay?: string | core.StringOut;
    checkpointPercentages?: core.Array<number> | core.ArrayOut<core.NumberOut>;
    instanceWarmup?: string | core.StringOut;
    minHealthyPercentage?: number | core.NumberOut;
    skipMatching?: boolean | core.BooleanOut;
}
export interface InstanceRefreshArgs extends core.SchemaArgs {
    preferences?: Preferences;
    strategy: string | core.StringOut;
    triggers?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class InstanceRefresh extends core.Schema<InstanceRefreshArgs> {
    preferences?: Preferences;
    strategy: string | core.StringOut;
    triggers?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface GroupArgs extends core.ResourceArgs {
    availabilityZones?: core.Array<string> | core.ArrayOut<core.StringOut>;
    capacityRebalance?: boolean | core.BooleanOut;
    context?: string | core.StringOut;
    defaultCooldown?: number | core.NumberOut;
    defaultInstanceWarmup?: number | core.NumberOut;
    desiredCapacity?: number | core.NumberOut;
    enabledMetrics?: core.Array<string> | core.ArrayOut<core.StringOut>;
    forceDelete?: boolean | core.BooleanOut;
    forceDeleteWarmPool?: boolean | core.BooleanOut;
    healthCheckGracePeriod?: number | core.NumberOut;
    healthCheckType?: string | core.StringOut;
    initialLifecycleHook?: core.Array<InitialLifecycleHook> | core.ArrayOut<InitialLifecycleHook>;
    instanceRefresh?: InstanceRefresh;
    launchConfiguration?: string | core.StringOut;
    launchTemplate?: LaunchTemplate;
    loadBalancers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    maxInstanceLifetime?: number | core.NumberOut;
    maxSize: number | core.NumberOut;
    metricsGranularity?: string | core.StringOut;
    minElbCapacity?: number | core.NumberOut;
    minSize: number | core.NumberOut;
    mixedInstancesPolicy?: MixedInstancesPolicy;
    name?: string | core.StringOut;
    namePrefix?: string | core.StringOut;
    placementGroup?: string | core.StringOut;
    protectFromScaleIn?: boolean | core.BooleanOut;
    serviceLinkedRoleArn?: string | core.StringOut;
    suspendedProcesses?: core.Array<string> | core.ArrayOut<core.StringOut>;
    tag?: core.Array<Tag> | core.ArrayOut<Tag>;
    tags?: core.Array<Map<string, string>> | core.MapArrayOut<core.StringOut>;
    targetGroupArns?: core.Array<string> | core.ArrayOut<core.StringOut>;
    terminationPolicies?: core.Array<string> | core.ArrayOut<core.StringOut>;
    vpcZoneIdentifier?: core.Array<string> | core.ArrayOut<core.StringOut>;
    waitForCapacityTimeout?: string | core.StringOut;
    waitForElbCapacity?: number | core.NumberOut;
    warmPool?: WarmPool;
}
export declare class Group extends core.Resource<GroupArgs> {
    arn: string | core.StringOut;
    availabilityZones?: core.Array<string> | core.ArrayOut<core.StringOut>;
    capacityRebalance?: boolean | core.BooleanOut;
    context?: string | core.StringOut;
    defaultCooldown?: number | core.NumberOut;
    defaultInstanceWarmup?: number | core.NumberOut;
    desiredCapacity?: number | core.NumberOut;
    enabledMetrics?: core.Array<string> | core.ArrayOut<core.StringOut>;
    forceDelete?: boolean | core.BooleanOut;
    forceDeleteWarmPool?: boolean | core.BooleanOut;
    healthCheckGracePeriod?: number | core.NumberOut;
    healthCheckType?: string | core.StringOut;
    id: string | core.StringOut;
    initialLifecycleHook?: core.Array<InitialLifecycleHook> | core.ArrayOut<InitialLifecycleHook>;
    instanceRefresh?: InstanceRefresh;
    launchConfiguration?: string | core.StringOut;
    launchTemplate?: LaunchTemplate;
    loadBalancers?: core.Array<string> | core.ArrayOut<core.StringOut>;
    maxInstanceLifetime?: number | core.NumberOut;
    maxSize: number | core.NumberOut;
    metricsGranularity?: string | core.StringOut;
    minElbCapacity?: number | core.NumberOut;
    minSize: number | core.NumberOut;
    mixedInstancesPolicy?: MixedInstancesPolicy;
    name?: string | core.StringOut;
    namePrefix?: string | core.StringOut;
    placementGroup?: string | core.StringOut;
    protectFromScaleIn?: boolean | core.BooleanOut;
    serviceLinkedRoleArn?: string | core.StringOut;
    suspendedProcesses?: core.Array<string> | core.ArrayOut<core.StringOut>;
    tag?: core.Array<Tag> | core.ArrayOut<Tag>;
    tags?: core.Array<Map<string, string>> | core.MapArrayOut<core.StringOut>;
    targetGroupArns?: core.Array<string> | core.ArrayOut<core.StringOut>;
    terminationPolicies?: core.Array<string> | core.ArrayOut<core.StringOut>;
    vpcZoneIdentifier?: core.Array<string> | core.ArrayOut<core.StringOut>;
    waitForCapacityTimeout?: string | core.StringOut;
    waitForElbCapacity?: number | core.NumberOut;
    warmPool?: WarmPool;
    constructor(name: string, args?: GroupArgs);
    getNamespace(): string;
}
//# sourceMappingURL=group.d.ts.map