import { CfnResource, Resolvable } from '../../base';
export declare type GameServerGroup_Type = 'AWS::GameLift::GameServerGroup';
export declare const GameServerGroup_Type = "AWS::GameLift::GameServerGroup";
/**
 * The AWS::GameLift::GameServerGroup resource creates an Amazon GameLift
 * (GameLift) GameServerGroup. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html}
 */
export default function GameServerGroup(props: GameServerGroup_Properties): CfnResource<GameServerGroup_Properties>;
/**
 * The AWS::GameLift::GameServerGroup resource creates an Amazon GameLift
 * (GameLift) GameServerGroup. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html}
 */
export declare type GameServerGroup_Properties = {
    AutoScalingGroupArn?: AutoScalingGroupArn;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-autoscalingpolicy}
     */
    AutoScalingPolicy?: AutoScalingPolicy;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-balancingstrategy}
     */
    BalancingStrategy?: BalancingStrategy;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-deleteoption}
     */
    DeleteOption?: DeleteOption;
    GameServerGroupArn?: GameServerGroupArn;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-gameservergroupname}
     */
    GameServerGroupName: GameServerGroupName;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-gameserverprotectionpolicy}
     */
    GameServerProtectionPolicy?: GameServerProtectionPolicy;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-instancedefinitions}
     */
    InstanceDefinitions: InstanceDefinitions;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-launchtemplate}
     */
    LaunchTemplate: LaunchTemplate;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-maxsize}
     */
    MaxSize?: MaxSize;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-minsize}
     */
    MinSize?: MinSize;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-rolearn}
     */
    RoleArn: RoleArn;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-tags}
     */
    Tags?: Tags;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-vpcsubnets}
     */
    VpcSubnets?: VpcSubnets;
};
/**
 * Configuration settings to define a scaling policy for the Auto Scaling
 * group that is optimized for game hosting {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-autoscalingpolicy.html}
 */
export declare type AutoScalingPolicy = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-autoscalingpolicy.html#cfn-gamelift-gameservergroup-autoscalingpolicy-estimatedinstancewarmup}
     */
    EstimatedInstanceWarmup?: EstimatedInstanceWarmup;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-autoscalingpolicy.html#cfn-gamelift-gameservergroup-autoscalingpolicy-targettrackingconfiguration}
     */
    TargetTrackingConfiguration: TargetTrackingConfiguration;
};
export declare type EstimatedInstanceWarmup = Resolvable<number>;
/**
 * Settings for a target-based scaling policy applied to Auto Scaling
 * group. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-targettrackingconfiguration.html}
 */
export declare type TargetTrackingConfiguration = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-targettrackingconfiguration.html#cfn-gamelift-gameservergroup-targettrackingconfiguration-targetvalue}
     */
    TargetValue: TargetValue;
};
export declare type TargetValue = Resolvable<number>;
export declare type BalancingStrategy = Resolvable<'SPOT_ONLY' | 'SPOT_PREFERRED' | 'ON_DEMAND_ONLY'>;
export declare type DeleteOption = Resolvable<'SAFE_DELETE' | 'FORCE_DELETE' | 'RETAIN'>;
export declare type GameServerGroupName = Resolvable<string>;
export declare type GameServerProtectionPolicy = Resolvable<'NO_PROTECTION' | 'FULL_PROTECTION'>;
export declare type GameServerGroupArn = Resolvable<string>;
export declare type InstanceDefinitions = InstanceDefinition[];
/**
 * An allowed instance type for your game server group. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-instancedefinition.html}
 */
export declare type InstanceDefinition = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-instancedefinition.html#cfn-gamelift-gameservergroup-instancedefinition-instancetype}
     */
    InstanceType: InstanceType;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-instancedefinition.html#cfn-gamelift-gameservergroup-instancedefinition-weightedcapacity}
     */
    WeightedCapacity?: WeightedCapacity;
};
export declare type InstanceType = Resolvable<string>;
export declare type WeightedCapacity = Resolvable<string>;
/**
 * The EC2 launch template that contains configuration settings and game
 * server code to be deployed to all instances in the game server group.
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-launchtemplate.html}
 */
export declare type LaunchTemplate = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-launchtemplate.html#cfn-gamelift-gameservergroup-launchtemplate-launchtemplateid}
     */
    LaunchTemplateId?: LaunchTemplateId;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-launchtemplate.html#cfn-gamelift-gameservergroup-launchtemplate-launchtemplatename}
     */
    LaunchTemplateName?: LaunchTemplateName;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-launchtemplate.html#cfn-gamelift-gameservergroup-launchtemplate-version}
     */
    Version?: Version;
};
export declare type LaunchTemplateId = Resolvable<string>;
export declare type LaunchTemplateName = Resolvable<string>;
export declare type Version = Resolvable<string>;
export declare type MaxSize = Resolvable<number>;
export declare type MinSize = Resolvable<number>;
export declare type RoleArn = Resolvable<string>;
export declare type Tags = Tag[];
export declare type Tag = {
    Key?: Resolvable<string>;
    Value?: Resolvable<string>;
};
export declare type VpcSubnets = Resolvable<string>[];
export declare type GameServerGroup = {
    AutoScalingGroupArn?: AutoScalingGroupArn;
    BalancingStrategy?: BalancingStrategy;
    CreationTime?: CreationTime;
    GameServerGroupArn?: GameServerGroupArn;
    GameServerGroupName?: GameServerGroupName;
    GameServerProtectionPolicy?: GameServerProtectionPolicy;
    InstanceDefinitions?: InstanceDefinitions;
    LastUpdatedTime?: LastUpdatedTime;
    RoleArn?: RoleArn;
    Status?: Status;
    StatusReason?: StatusReason;
    SuspendedActions?: SuspendedActions;
};
export declare type AutoScalingGroupArn = Resolvable<string>;
export declare type CreationTime = Resolvable<string>;
export declare type LastUpdatedTime = Resolvable<string>;
export declare type Status = Resolvable<'NEW' | 'ACTIVATING' | 'ACTIVE' | 'DELETE_SCHEDULED' | 'DELETING' | 'DELETED' | 'ERROR'>;
export declare type StatusReason = Resolvable<string>;
export declare type SuspendedActions = Resolvable<'REPLACE_INSTANCE_TYPES'>[];
