import * as $dara from '@darabonba/typescript';
export declare class CreateElasticityAssuranceRequestPrivatePoolOptions extends $dara.Model {
    /**
     * @remarks
     * The type of the private pool with which you want to associate the elasticity assurance. Valid values:
     *
     * *   Open: open private pool. If you use the elasticity assurance to create ECS instances, the open private pool that is associated with the elasticity assurance is automatically matched. If no capacity is available in the open private pool, resources in the public pool are automatically used to create the ECS instances.
     * *   Target: targeted private pool. If you use the elasticity assurance to create ECS instances, the specified private pool that is associated with the elasticity assurance is automatically matched. If no capacity is available in the private pool, the ECS instances fail to be created.
     *
     * Default value: Open.
     *
     * @example
     * Open
     */
    matchCriteria?: string;
    /**
     * @remarks
     * The name of the elasticity assurance. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with `http://` or `https://`. It can contain letters, digits, colons (:), underscores (_), and hyphens (-).
     *
     * @example
     * eapTestName
     */
    name?: string;
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
export declare class CreateElasticityAssuranceRequestRecurrenceRules extends $dara.Model {
    /**
     * @remarks
     * The end time of the assurance period for the capacity reservation. Specify an on-the-hour point in time.
     *
     * @example
     * 10
     */
    endHour?: number;
    /**
     * @remarks
     * The type of the assurance schedule. Valid values:
     *
     * *   Daily
     * *   Weekly
     * *   Monthly
     *
     * >  You must specify both `RecurrenceType` and `RecurrenceValue`.
     *
     * @example
     * Daily
     */
    recurrenceType?: string;
    /**
     * @remarks
     * The days of the week or month on which the capacity reservation takes effect or the interval, in number of days, at which the capacity reservation takes effect.
     *
     * *   If you set `RecurrenceType` to `Daily`, you can specify only one value for this parameter. Valid values: 1 to 31. The value specifies that the capacity reservation takes effect every few days.
     * *   If you set `RecurrenceType` to `Weekly`, you can specify multiple values for this parameter. Separate the values with commas (,). Valid values: 0, 1, 2, 3, 4, 5, and 6, which specify Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, and Saturday, respectively. Example: `1,2`, which specifies that the capacity reservation takes effect on Monday and Tuesday.
     * *   If you set `RecurrenceType` to `Monthly`, you can specify two values in the `A-B` format for this parameter. Valid values of A and B: 1 to 31. B must be greater than or equal to A. For example, `1-5` indicates that the execution is repeated from the 1st to 5th of each month.
     *
     * > You must specify both `RecurrenceType` and `RecurrenceValue`.
     *
     * @example
     * 1
     */
    recurrenceValue?: string;
    /**
     * @remarks
     * The start time of the assurance period for the capacity reservation. Specify an on-the-hour point in time.
     *
     * >  You must specify both `StartHour` and `EndHour`. EndHour must be at least four hours later than StartHour.
     *
     * @example
     * 4
     */
    startHour?: number;
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
export declare class CreateElasticityAssuranceRequestTag extends $dara.Model {
    /**
     * @remarks
     * The key of tag N to add to the elasticity assurance. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.
     *
     * @example
     * TestKey
     */
    key?: string;
    /**
     * @remarks
     * The value of tag N to add to the elasticity assurance. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot start with `acs:`. The tag value cannot contain `http://` or `https://`.
     *
     * @example
     * TestValue
     */
    value?: string;
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
export declare class CreateElasticityAssuranceRequest extends $dara.Model {
    privatePoolOptions?: CreateElasticityAssuranceRequestPrivatePoolOptions;
    /**
     * @remarks
     * The total number of times that the elasticity assurance can be used. Set the value to Unlimited. This value specifies that the elasticity assurance can be used for an unlimited number of times within its validity period.
     *
     * Default value: Unlimited.
     *
     * @example
     * Unlimited
     */
    assuranceTimes?: string;
    /**
     * @remarks
     * Specifies whether to enable auto-renewal for the elasticity assurance. Valid values:
     *
     * *   true
     * *   false
     *
     * Default value: false.
     *
     * @example
     * true
     */
    autoRenew?: boolean;
    /**
     * @remarks
     * The auto-renewal period. Unit: month. Valid values: 1, 2, 3, 6, 12, 24, and 36.
     *
     * *   Default value when `PeriodUnit` is set to Month: 1.
     * *   Default value when `PeriodUnit` is set to Year: 12.
     *
     * >  If you set `AutoRenew` to `true`, you must specify this parameter.
     *
     * @example
     * 1
     */
    autoRenewPeriod?: number;
    /**
     * @remarks
     * The client token that you want to use to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The `token` can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](https://help.aliyun.com/document_detail/25693.html).
     *
     * @example
     * 0c593ea1-3bea-11e9-b96b-88e9fe637760
     */
    clientToken?: string;
    /**
     * @remarks
     * The description of the elasticity assurance. The description must be 2 to 256 characters in length. It cannot start with `http://` or `https://`.
     *
     * This parameter is empty by default.
     *
     * @example
     * This is description.
     */
    description?: string;
    /**
     * @remarks
     * The total number of instances of an instance type for which you want to reserve capacity.
     *
     * Valid values: 1 to 1000.
     *
     * >  You must specify this parameter.
     *
     * @example
     * 2
     */
    instanceAmount?: number;
    /**
     * @remarks
     * > This parameter is no longer used.
     *
     * @example
     * null
     */
    instanceCpuCoreCount?: number;
    /**
     * @remarks
     * The instance type. An elasticity assurance can be created to reserve the capacity of a single instance type.
     *
     * This parameter is required.
     *
     * @example
     * ecs.c6.xlarge
     */
    instanceType?: string[];
    ownerAccount?: string;
    ownerId?: number;
    /**
     * @remarks
     * The validity period of the elasticity assurance. The unit of the validity period is determined by the value of `PeriodUnit`. Specifies whether to check the image used by the instance supports hot migration. Valid values:
     *
     * *   When the value of `PeriodUnit` is `Month`, the valid values are 1, 2, 3, 4, 5, 6, 7, 8, and 9.
     * *   When the value of `PeriodUnit` is `Year`, the valid values are 1, 2, 3, 4, and 5.
     * *   When the value of `PeriodUnit` is `Day`, the valid values are 1 to 365.
     *
     * Default value: 1
     *
     * @example
     * 1
     */
    period?: number;
    /**
     * @remarks
     * The unit of the validity period of the elasticity assurance. Valid values:
     *
     * *   Month
     *
     * *   Year
     *
     * *   Day
     *
     *     **
     *
     *     **Note** If you set `PeriodUnit` to `Day`, you must specify RecurrenceRules to create a time-segmented elasticity assurance.
     *
     * Default value: Year.
     *
     * @example
     * Year
     */
    periodUnit?: string;
    /**
     * @remarks
     * The assurance schedules based on which the capacity reservation takes effect.
     *
     * >  Time-segmented elasticity assurances are available only in specific regions and to specific users. To use time-segmented elasticity assurances, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).
     */
    recurrenceRules?: CreateElasticityAssuranceRequestRecurrenceRules[];
    /**
     * @remarks
     * The ID of the region in which to create the elasticity assurance. You can call the [DescribeRegions](https://help.aliyun.com/document_detail/25609.html) operation to query the most recent region list.
     *
     * This parameter is required.
     *
     * @example
     * cn-hangzhou
     */
    regionId?: string;
    /**
     * @remarks
     * The ID of the resource group to which to assign the elasticity assurance.
     *
     * @example
     * rg-bp67acfmxazb4p****
     */
    resourceGroupId?: string;
    resourceOwnerAccount?: string;
    resourceOwnerId?: number;
    /**
     * @remarks
     * The time when the elasticity assurance takes effect. The default value is the time when the CreateElasticityAssurance operation is called to create the elasticity assurance. Specify the time in the ISO 8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC. For more information, see [ISO 8601](https://help.aliyun.com/document_detail/25696.html).
     *
     * @example
     * 2020-10-30T06:32:00Z
     */
    startTime?: string;
    /**
     * @remarks
     * The tags to add to the elasticity assurance.
     */
    tag?: CreateElasticityAssuranceRequestTag[];
    /**
     * @remarks
     * The ID of the zone in which to create the elasticity assurance. An elasticity assurance can be used to reserve resources within a single zone.
     *
     * This parameter is required.
     *
     * @example
     * cn-hangzhou-h
     */
    zoneId?: string[];
    static names(): {
        [key: string]: string;
    };
    static types(): {
        [key: string]: any;
    };
    validate(): void;
    constructor(map?: {
        [key: string]: any;
    });
}
