import * as core from "@terrascript/core";
export interface InstanceDefinitionArgs extends core.SchemaArgs {
    instanceType: string | core.StringOut;
    weightedCapacity?: string | core.StringOut;
}
export declare class InstanceDefinition extends core.Schema<InstanceDefinitionArgs> {
    instanceType: string | core.StringOut;
    weightedCapacity?: string | core.StringOut;
}
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 TargetTrackingConfigurationArgs extends core.SchemaArgs {
    targetValue: number | core.NumberOut;
}
export declare class TargetTrackingConfiguration extends core.Schema<TargetTrackingConfigurationArgs> {
    targetValue: number | core.NumberOut;
}
export interface AutoScalingPolicyArgs extends core.SchemaArgs {
    estimatedInstanceWarmup?: number | core.NumberOut;
    targetTrackingConfiguration: TargetTrackingConfiguration;
}
export declare class AutoScalingPolicy extends core.Schema<AutoScalingPolicyArgs> {
    estimatedInstanceWarmup?: number | core.NumberOut;
    targetTrackingConfiguration: TargetTrackingConfiguration;
}
export interface GameServerGroupArgs extends core.ResourceArgs {
    autoScalingPolicy?: AutoScalingPolicy;
    /**
     * (Optional) Indicates how GameLift FleetIQ balances the use of Spot Instances and On-Demand Instances
     * .
     */
    balancingStrategy?: string | core.StringOut;
    /**
     * (Required) Name of the game server group.
     */
    gameServerGroupName: string | core.StringOut;
    /**
     * (Optional) Indicates whether instances in the game server group are protected from early termination
     * .
     */
    gameServerProtectionPolicy?: string | core.StringOut;
    instanceDefinition: core.Array<InstanceDefinition> | core.ArrayOut<InstanceDefinition>;
    launchTemplate: LaunchTemplate;
    /**
     * (Required) The maximum number of instances allowed in the EC2 Auto Scaling group.
     */
    maxSize: number | core.NumberOut;
    /**
     * (Required) The minimum number of instances allowed in the EC2 Auto Scaling group.
     */
    minSize: number | core.NumberOut;
    /**
     * (Required) ARN for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups.
     */
    roleArn: string | core.StringOut;
    /**
     * (Optional) Key-value map of resource tags
     */
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * (Optional) A list of VPC subnets to use with instances in the game server group.
     */
    vpcSubnets?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class GameServerGroup extends core.Resource<GameServerGroupArgs> {
    /**
     * The ARN of the GameLift Game Server Group.
     */
    arn: string | core.StringOut;
    /**
     * The ARN of the created EC2 Auto Scaling group.
     */
    autoScalingGroupArn: string | core.StringOut;
    autoScalingPolicy?: AutoScalingPolicy;
    /**
     * (Optional) Indicates how GameLift FleetIQ balances the use of Spot Instances and On-Demand Instances
     * .
     */
    balancingStrategy?: string | core.StringOut;
    /**
     * (Required) Name of the game server group.
     */
    gameServerGroupName: string | core.StringOut;
    /**
     * (Optional) Indicates whether instances in the game server group are protected from early termination
     * .
     */
    gameServerProtectionPolicy?: string | core.StringOut;
    /**
     * (Optional) A unique identifier for an existing EC2 launch template.
     */
    id: string | core.StringOut;
    instanceDefinition: core.Array<InstanceDefinition> | core.ArrayOut<InstanceDefinition>;
    launchTemplate: LaunchTemplate;
    /**
     * (Required) The maximum number of instances allowed in the EC2 Auto Scaling group.
     */
    maxSize: number | core.NumberOut;
    /**
     * (Required) The minimum number of instances allowed in the EC2 Auto Scaling group.
     */
    minSize: number | core.NumberOut;
    /**
     * (Required) ARN for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups.
     */
    roleArn: string | core.StringOut;
    /**
     * (Optional) Key-value map of resource tags
     */
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * (Optional) A list of VPC subnets to use with instances in the game server group.
     */
    vpcSubnets?: core.Array<string> | core.ArrayOut<core.StringOut>;
    constructor(name: string, args?: GameServerGroupArgs);
    getNamespace(): string;
}
//# sourceMappingURL=game_server_group.d.ts.map