import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as volcengine from "@pulumi/volcengine";
 * import * as volcengine from "@volcengine/pulumi";
 *
 * const fooZones = volcengine.ecs.getZones({});
 * const fooVpc = new volcengine.vpc.Vpc("fooVpc", {
 *     vpcName: "acc-test-vpc",
 *     cidrBlock: "172.16.0.0/16",
 * });
 * const fooSubnet = new volcengine.vpc.Subnet("fooSubnet", {
 *     subnetName: "acc-test-subnet",
 *     cidrBlock: "172.16.0.0/24",
 *     zoneId: fooZones.then(fooZones => fooZones.zones?.[0]?.id),
 *     vpcId: fooVpc.id,
 * });
 * const fooSecurityGroup = new volcengine.vpc.SecurityGroup("fooSecurityGroup", {
 *     securityGroupName: "acc-test-security-group",
 *     vpcId: fooVpc.id,
 * });
 * const fooImages = volcengine.ecs.getImages({
 *     osType: "Linux",
 *     visibility: "public",
 *     instanceTypeId: "ecs.g1.large",
 * });
 * const fooScalingGroup = new volcengine.autoscaling.ScalingGroup("fooScalingGroup", {
 *     scalingGroupName: "acc-test-scaling-group",
 *     subnetIds: [fooSubnet.id],
 *     multiAzPolicy: "BALANCE",
 *     desireInstanceNumber: 0,
 *     minInstanceNumber: 0,
 *     maxInstanceNumber: 1,
 *     instanceTerminatePolicy: "OldestInstance",
 *     defaultCooldown: 10,
 * });
 * const fooScalingConfiguration = new volcengine.autoscaling.ScalingConfiguration("fooScalingConfiguration", {
 *     scalingConfigurationName: "tf-test",
 *     scalingGroupId: fooScalingGroup.id,
 *     imageId: fooImages.then(fooImages => fooImages.images?.[0]?.imageId),
 *     instanceTypes: ["ecs.g2i.large"],
 *     instanceName: "tf-test",
 *     instanceDescription: "",
 *     hostName: "",
 *     password: "",
 *     keyPairName: "tf-keypair",
 *     securityEnhancementStrategy: "InActive",
 *     volumes: [
 *         {
 *             volumeType: "ESSD_PL0",
 *             size: 20,
 *             deleteWithInstance: false,
 *         },
 *         {
 *             volumeType: "ESSD_PL0",
 *             size: 50,
 *             deleteWithInstance: true,
 *         },
 *     ],
 *     securityGroupIds: [fooSecurityGroup.id],
 *     eipBandwidth: 10,
 *     eipIsp: "ChinaMobile",
 *     eipBillingType: "PostPaidByBandwidth",
 *     userData: "IyEvYmluL2Jhc2gKZWNobyAidGVzdCI=",
 *     tags: [
 *         {
 *             key: "tf-key1",
 *             value: "tf-value1",
 *         },
 *         {
 *             key: "tf-key2",
 *             value: "tf-value2",
 *         },
 *     ],
 *     projectName: "default",
 *     hpcClusterId: "",
 *     spotStrategy: "NoSpot",
 * });
 * ```
 *
 * ## Import
 *
 * ScalingConfiguration can be imported using the id, e.g.
 *
 * ```sh
 * $ pulumi import volcengine:autoscaling/scalingConfiguration:ScalingConfiguration default scc-ybkuck3mx8cm9tm5yglz
 * ```
 */
export declare class ScalingConfiguration extends pulumi.CustomResource {
    /**
     * Get an existing ScalingConfiguration resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ScalingConfigurationState, opts?: pulumi.CustomResourceOptions): ScalingConfiguration;
    /**
     * Returns true if the given object is an instance of ScalingConfiguration.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is ScalingConfiguration;
    /**
     * The create time of the scaling configuration.
     */
    readonly createdAt: pulumi.Output<string>;
    /**
     * The EIP bandwidth which the scaling configuration set. When the value of Eip.BillingType is PostPaidByBandwidth, the value is 1 to 500. When the value of Eip.BillingType is PostPaidByTraffic, the value is 1 to 200.
     */
    readonly eipBandwidth: pulumi.Output<number>;
    /**
     * The EIP billing type which the scaling configuration set. Valid values: PostPaidByBandwidth, PostPaidByTraffic.
     */
    readonly eipBillingType: pulumi.Output<string>;
    /**
     * The EIP ISP which the scaling configuration set. Valid values: BGP, ChinaMobile, ChinaUnicom, ChinaTelecom.
     */
    readonly eipIsp: pulumi.Output<string>;
    /**
     * The ECS hostname which the scaling configuration set.
     */
    readonly hostName: pulumi.Output<string | undefined>;
    /**
     * The ID of the HPC cluster to which the instance belongs. Valid only when InstanceTypes.N specifies High Performance Computing GPU Type.
     */
    readonly hpcClusterId: pulumi.Output<string | undefined>;
    /**
     * The ECS image id which the scaling configuration set.
     */
    readonly imageId: pulumi.Output<string>;
    /**
     * The ECS instance description which the scaling configuration set.
     */
    readonly instanceDescription: pulumi.Output<string | undefined>;
    /**
     * The ECS instance name which the scaling configuration set.
     */
    readonly instanceName: pulumi.Output<string>;
    /**
     * The list of the ECS instance type which the scaling configuration set. The maximum number of instance types is 10.
     */
    readonly instanceTypes: pulumi.Output<string[]>;
    /**
     * Assign IPv6 address to instance network card. Possible values:
     * 0: Do not assign IPv6 address.
     * 1: Assign IPv6 address and the system will automatically assign an IPv6 subnet for you.
     */
    readonly ipv6AddressCount: pulumi.Output<number | undefined>;
    /**
     * The ECS key pair name which the scaling configuration set.
     */
    readonly keyPairName: pulumi.Output<string | undefined>;
    /**
     * The lifecycle state of the scaling configuration.
     */
    readonly lifecycleState: pulumi.Output<string>;
    /**
     * The ECS password which the scaling configuration set.
     */
    readonly password: pulumi.Output<string | undefined>;
    /**
     * The project to which the instance created by the scaling configuration belongs.
     */
    readonly projectName: pulumi.Output<string>;
    /**
     * The id of the scaling configuration.
     */
    readonly scalingConfigurationId: pulumi.Output<string>;
    /**
     * The name of the scaling configuration.
     */
    readonly scalingConfigurationName: pulumi.Output<string>;
    /**
     * The id of the scaling group to which the scaling configuration belongs.
     */
    readonly scalingGroupId: pulumi.Output<string>;
    /**
     * The Ecs security enhancement strategy which the scaling configuration set. Valid values: Active, InActive.
     */
    readonly securityEnhancementStrategy: pulumi.Output<string | undefined>;
    /**
     * The list of the security group id of the networkInterface which the scaling configuration set. A maximum of 5 security groups can be bound at the same time, and the value ranges from 1 to 5.
     */
    readonly securityGroupIds: pulumi.Output<string[]>;
    /**
     * The preemption policy of the instance. Valid Value: NoSpot (default), SpotAsPriceGo.
     */
    readonly spotStrategy: pulumi.Output<string | undefined>;
    /**
     * The label of the instance created by the scaling configuration. Up to 20 tags are supported.
     */
    readonly tags: pulumi.Output<outputs.autoscaling.ScalingConfigurationTag[] | undefined>;
    /**
     * The create time of the scaling configuration.
     */
    readonly updatedAt: pulumi.Output<string>;
    /**
     * The ECS user data which the scaling configuration set.
     */
    readonly userData: pulumi.Output<string | undefined>;
    /**
     * The list of volume of the scaling configuration. The number of supported volumes ranges from 1 to 15.
     */
    readonly volumes: pulumi.Output<outputs.autoscaling.ScalingConfigurationVolume[]>;
    /**
     * Create a ScalingConfiguration resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: ScalingConfigurationArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering ScalingConfiguration resources.
 */
export interface ScalingConfigurationState {
    /**
     * The create time of the scaling configuration.
     */
    createdAt?: pulumi.Input<string>;
    /**
     * The EIP bandwidth which the scaling configuration set. When the value of Eip.BillingType is PostPaidByBandwidth, the value is 1 to 500. When the value of Eip.BillingType is PostPaidByTraffic, the value is 1 to 200.
     */
    eipBandwidth?: pulumi.Input<number>;
    /**
     * The EIP billing type which the scaling configuration set. Valid values: PostPaidByBandwidth, PostPaidByTraffic.
     */
    eipBillingType?: pulumi.Input<string>;
    /**
     * The EIP ISP which the scaling configuration set. Valid values: BGP, ChinaMobile, ChinaUnicom, ChinaTelecom.
     */
    eipIsp?: pulumi.Input<string>;
    /**
     * The ECS hostname which the scaling configuration set.
     */
    hostName?: pulumi.Input<string>;
    /**
     * The ID of the HPC cluster to which the instance belongs. Valid only when InstanceTypes.N specifies High Performance Computing GPU Type.
     */
    hpcClusterId?: pulumi.Input<string>;
    /**
     * The ECS image id which the scaling configuration set.
     */
    imageId?: pulumi.Input<string>;
    /**
     * The ECS instance description which the scaling configuration set.
     */
    instanceDescription?: pulumi.Input<string>;
    /**
     * The ECS instance name which the scaling configuration set.
     */
    instanceName?: pulumi.Input<string>;
    /**
     * The list of the ECS instance type which the scaling configuration set. The maximum number of instance types is 10.
     */
    instanceTypes?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Assign IPv6 address to instance network card. Possible values:
     * 0: Do not assign IPv6 address.
     * 1: Assign IPv6 address and the system will automatically assign an IPv6 subnet for you.
     */
    ipv6AddressCount?: pulumi.Input<number>;
    /**
     * The ECS key pair name which the scaling configuration set.
     */
    keyPairName?: pulumi.Input<string>;
    /**
     * The lifecycle state of the scaling configuration.
     */
    lifecycleState?: pulumi.Input<string>;
    /**
     * The ECS password which the scaling configuration set.
     */
    password?: pulumi.Input<string>;
    /**
     * The project to which the instance created by the scaling configuration belongs.
     */
    projectName?: pulumi.Input<string>;
    /**
     * The id of the scaling configuration.
     */
    scalingConfigurationId?: pulumi.Input<string>;
    /**
     * The name of the scaling configuration.
     */
    scalingConfigurationName?: pulumi.Input<string>;
    /**
     * The id of the scaling group to which the scaling configuration belongs.
     */
    scalingGroupId?: pulumi.Input<string>;
    /**
     * The Ecs security enhancement strategy which the scaling configuration set. Valid values: Active, InActive.
     */
    securityEnhancementStrategy?: pulumi.Input<string>;
    /**
     * The list of the security group id of the networkInterface which the scaling configuration set. A maximum of 5 security groups can be bound at the same time, and the value ranges from 1 to 5.
     */
    securityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The preemption policy of the instance. Valid Value: NoSpot (default), SpotAsPriceGo.
     */
    spotStrategy?: pulumi.Input<string>;
    /**
     * The label of the instance created by the scaling configuration. Up to 20 tags are supported.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.autoscaling.ScalingConfigurationTag>[]>;
    /**
     * The create time of the scaling configuration.
     */
    updatedAt?: pulumi.Input<string>;
    /**
     * The ECS user data which the scaling configuration set.
     */
    userData?: pulumi.Input<string>;
    /**
     * The list of volume of the scaling configuration. The number of supported volumes ranges from 1 to 15.
     */
    volumes?: pulumi.Input<pulumi.Input<inputs.autoscaling.ScalingConfigurationVolume>[]>;
}
/**
 * The set of arguments for constructing a ScalingConfiguration resource.
 */
export interface ScalingConfigurationArgs {
    /**
     * The EIP bandwidth which the scaling configuration set. When the value of Eip.BillingType is PostPaidByBandwidth, the value is 1 to 500. When the value of Eip.BillingType is PostPaidByTraffic, the value is 1 to 200.
     */
    eipBandwidth?: pulumi.Input<number>;
    /**
     * The EIP billing type which the scaling configuration set. Valid values: PostPaidByBandwidth, PostPaidByTraffic.
     */
    eipBillingType?: pulumi.Input<string>;
    /**
     * The EIP ISP which the scaling configuration set. Valid values: BGP, ChinaMobile, ChinaUnicom, ChinaTelecom.
     */
    eipIsp?: pulumi.Input<string>;
    /**
     * The ECS hostname which the scaling configuration set.
     */
    hostName?: pulumi.Input<string>;
    /**
     * The ID of the HPC cluster to which the instance belongs. Valid only when InstanceTypes.N specifies High Performance Computing GPU Type.
     */
    hpcClusterId?: pulumi.Input<string>;
    /**
     * The ECS image id which the scaling configuration set.
     */
    imageId: pulumi.Input<string>;
    /**
     * The ECS instance description which the scaling configuration set.
     */
    instanceDescription?: pulumi.Input<string>;
    /**
     * The ECS instance name which the scaling configuration set.
     */
    instanceName: pulumi.Input<string>;
    /**
     * The list of the ECS instance type which the scaling configuration set. The maximum number of instance types is 10.
     */
    instanceTypes: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Assign IPv6 address to instance network card. Possible values:
     * 0: Do not assign IPv6 address.
     * 1: Assign IPv6 address and the system will automatically assign an IPv6 subnet for you.
     */
    ipv6AddressCount?: pulumi.Input<number>;
    /**
     * The ECS key pair name which the scaling configuration set.
     */
    keyPairName?: pulumi.Input<string>;
    /**
     * The ECS password which the scaling configuration set.
     */
    password?: pulumi.Input<string>;
    /**
     * The project to which the instance created by the scaling configuration belongs.
     */
    projectName?: pulumi.Input<string>;
    /**
     * The name of the scaling configuration.
     */
    scalingConfigurationName: pulumi.Input<string>;
    /**
     * The id of the scaling group to which the scaling configuration belongs.
     */
    scalingGroupId: pulumi.Input<string>;
    /**
     * The Ecs security enhancement strategy which the scaling configuration set. Valid values: Active, InActive.
     */
    securityEnhancementStrategy?: pulumi.Input<string>;
    /**
     * The list of the security group id of the networkInterface which the scaling configuration set. A maximum of 5 security groups can be bound at the same time, and the value ranges from 1 to 5.
     */
    securityGroupIds: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The preemption policy of the instance. Valid Value: NoSpot (default), SpotAsPriceGo.
     */
    spotStrategy?: pulumi.Input<string>;
    /**
     * The label of the instance created by the scaling configuration. Up to 20 tags are supported.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.autoscaling.ScalingConfigurationTag>[]>;
    /**
     * The ECS user data which the scaling configuration set.
     */
    userData?: pulumi.Input<string>;
    /**
     * The list of volume of the scaling configuration. The number of supported volumes ranges from 1 to 15.
     */
    volumes: pulumi.Input<pulumi.Input<inputs.autoscaling.ScalingConfigurationVolume>[]>;
}
