"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreateAutoProvisioningGroupShrinkRequest = exports.CreateAutoProvisioningGroupShrinkRequestTag = exports.CreateAutoProvisioningGroupShrinkRequestSystemDiskConfig = exports.CreateAutoProvisioningGroupShrinkRequestPrePaidOptions = exports.CreateAutoProvisioningGroupShrinkRequestPrePaidOptionsSpecifyCapacityDistribution = exports.CreateAutoProvisioningGroupShrinkRequestLaunchTemplateConfig = exports.CreateAutoProvisioningGroupShrinkRequestDataDiskConfig = exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfiguration = exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSecurityOptions = exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSchedulerOptions = exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationImageOptions = exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationCpuOptions = exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationTag = exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSystemDisk = exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationDataDisk = exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationArn = void 0;
// This file is auto-generated, don't edit it
const $dara = __importStar(require("@darabonba/typescript"));
class CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationArn extends $dara.Model {
    static names() {
        return {
            assumeRoleFor: 'AssumeRoleFor',
            roleType: 'RoleType',
            rolearn: 'Rolearn',
        };
    }
    static types() {
        return {
            assumeRoleFor: 'number',
            roleType: 'string',
            rolearn: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationArn = CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationArn;
class CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationDataDisk extends $dara.Model {
    static names() {
        return {
            autoSnapshotPolicyId: 'AutoSnapshotPolicyId',
            burstingEnabled: 'BurstingEnabled',
            category: 'Category',
            deleteWithInstance: 'DeleteWithInstance',
            description: 'Description',
            device: 'Device',
            diskName: 'DiskName',
            encryptAlgorithm: 'EncryptAlgorithm',
            encrypted: 'Encrypted',
            kmsKeyId: 'KmsKeyId',
            performanceLevel: 'PerformanceLevel',
            provisionedIops: 'ProvisionedIops',
            size: 'Size',
            snapshotId: 'SnapshotId',
        };
    }
    static types() {
        return {
            autoSnapshotPolicyId: 'string',
            burstingEnabled: 'boolean',
            category: 'string',
            deleteWithInstance: 'boolean',
            description: 'string',
            device: 'string',
            diskName: 'string',
            encryptAlgorithm: 'string',
            encrypted: 'boolean',
            kmsKeyId: 'string',
            performanceLevel: 'string',
            provisionedIops: 'number',
            size: 'number',
            snapshotId: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationDataDisk = CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationDataDisk;
class CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSystemDisk extends $dara.Model {
    static names() {
        return {
            autoSnapshotPolicyId: 'AutoSnapshotPolicyId',
            burstingEnabled: 'BurstingEnabled',
            encryptAlgorithm: 'EncryptAlgorithm',
            encrypted: 'Encrypted',
            KMSKeyId: 'KMSKeyId',
            provisionedIops: 'ProvisionedIops',
        };
    }
    static types() {
        return {
            autoSnapshotPolicyId: 'string',
            burstingEnabled: 'boolean',
            encryptAlgorithm: 'string',
            encrypted: 'string',
            KMSKeyId: 'string',
            provisionedIops: 'number',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSystemDisk = CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSystemDisk;
class CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationTag extends $dara.Model {
    static names() {
        return {
            key: 'Key',
            value: 'Value',
        };
    }
    static types() {
        return {
            key: 'string',
            value: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationTag = CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationTag;
class CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationCpuOptions extends $dara.Model {
    static names() {
        return {
            core: 'Core',
            threadsPerCore: 'ThreadsPerCore',
        };
    }
    static types() {
        return {
            core: 'number',
            threadsPerCore: 'number',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationCpuOptions = CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationCpuOptions;
class CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationImageOptions extends $dara.Model {
    static names() {
        return {
            loginAsNonRoot: 'LoginAsNonRoot',
        };
    }
    static types() {
        return {
            loginAsNonRoot: 'boolean',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationImageOptions = CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationImageOptions;
class CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSchedulerOptions extends $dara.Model {
    static names() {
        return {
            dedicatedHostClusterId: 'DedicatedHostClusterId',
            dedicatedHostId: 'DedicatedHostId',
        };
    }
    static types() {
        return {
            dedicatedHostClusterId: 'string',
            dedicatedHostId: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSchedulerOptions = CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSchedulerOptions;
class CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSecurityOptions extends $dara.Model {
    static names() {
        return {
            trustedSystemMode: 'TrustedSystemMode',
        };
    }
    static types() {
        return {
            trustedSystemMode: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSecurityOptions = CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSecurityOptions;
class CreateAutoProvisioningGroupShrinkRequestLaunchConfiguration extends $dara.Model {
    static names() {
        return {
            arn: 'Arn',
            autoReleaseTime: 'AutoReleaseTime',
            creditSpecification: 'CreditSpecification',
            dataDisk: 'DataDisk',
            deploymentSetId: 'DeploymentSetId',
            hostName: 'HostName',
            hostNames: 'HostNames',
            imageFamily: 'ImageFamily',
            imageId: 'ImageId',
            instanceDescription: 'InstanceDescription',
            instanceName: 'InstanceName',
            internetChargeType: 'InternetChargeType',
            internetMaxBandwidthIn: 'InternetMaxBandwidthIn',
            internetMaxBandwidthOut: 'InternetMaxBandwidthOut',
            ioOptimized: 'IoOptimized',
            keyPairName: 'KeyPairName',
            password: 'Password',
            passwordInherit: 'PasswordInherit',
            ramRoleName: 'RamRoleName',
            resourceGroupId: 'ResourceGroupId',
            securityEnhancementStrategy: 'SecurityEnhancementStrategy',
            securityGroupId: 'SecurityGroupId',
            securityGroupIds: 'SecurityGroupIds',
            systemDisk: 'SystemDisk',
            systemDiskCategory: 'SystemDiskCategory',
            systemDiskDescription: 'SystemDiskDescription',
            systemDiskName: 'SystemDiskName',
            systemDiskPerformanceLevel: 'SystemDiskPerformanceLevel',
            systemDiskSize: 'SystemDiskSize',
            tag: 'Tag',
            userData: 'UserData',
            autoRenew: 'AutoRenew',
            autoRenewPeriod: 'AutoRenewPeriod',
            cpuOptions: 'CpuOptions',
            imageOptions: 'ImageOptions',
            period: 'Period',
            periodUnit: 'PeriodUnit',
            schedulerOptions: 'SchedulerOptions',
            securityOptions: 'SecurityOptions',
            spotDuration: 'SpotDuration',
            spotInterruptionBehavior: 'SpotInterruptionBehavior',
        };
    }
    static types() {
        return {
            arn: { 'type': 'array', 'itemType': CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationArn },
            autoReleaseTime: 'string',
            creditSpecification: 'string',
            dataDisk: { 'type': 'array', 'itemType': CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationDataDisk },
            deploymentSetId: 'string',
            hostName: 'string',
            hostNames: { 'type': 'array', 'itemType': 'string' },
            imageFamily: 'string',
            imageId: 'string',
            instanceDescription: 'string',
            instanceName: 'string',
            internetChargeType: 'string',
            internetMaxBandwidthIn: 'number',
            internetMaxBandwidthOut: 'number',
            ioOptimized: 'string',
            keyPairName: 'string',
            password: 'string',
            passwordInherit: 'boolean',
            ramRoleName: 'string',
            resourceGroupId: 'string',
            securityEnhancementStrategy: 'string',
            securityGroupId: 'string',
            securityGroupIds: { 'type': 'array', 'itemType': 'string' },
            systemDisk: CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSystemDisk,
            systemDiskCategory: 'string',
            systemDiskDescription: 'string',
            systemDiskName: 'string',
            systemDiskPerformanceLevel: 'string',
            systemDiskSize: 'number',
            tag: { 'type': 'array', 'itemType': CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationTag },
            userData: 'string',
            autoRenew: 'boolean',
            autoRenewPeriod: 'number',
            cpuOptions: CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationCpuOptions,
            imageOptions: CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationImageOptions,
            period: 'number',
            periodUnit: 'string',
            schedulerOptions: CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSchedulerOptions,
            securityOptions: CreateAutoProvisioningGroupShrinkRequestLaunchConfigurationSecurityOptions,
            spotDuration: 'number',
            spotInterruptionBehavior: 'string',
        };
    }
    validate() {
        if (Array.isArray(this.arn)) {
            $dara.Model.validateArray(this.arn);
        }
        if (Array.isArray(this.dataDisk)) {
            $dara.Model.validateArray(this.dataDisk);
        }
        if (Array.isArray(this.hostNames)) {
            $dara.Model.validateArray(this.hostNames);
        }
        if (Array.isArray(this.securityGroupIds)) {
            $dara.Model.validateArray(this.securityGroupIds);
        }
        if (this.systemDisk && typeof this.systemDisk.validate === 'function') {
            this.systemDisk.validate();
        }
        if (Array.isArray(this.tag)) {
            $dara.Model.validateArray(this.tag);
        }
        if (this.cpuOptions && typeof this.cpuOptions.validate === 'function') {
            this.cpuOptions.validate();
        }
        if (this.imageOptions && typeof this.imageOptions.validate === 'function') {
            this.imageOptions.validate();
        }
        if (this.schedulerOptions && typeof this.schedulerOptions.validate === 'function') {
            this.schedulerOptions.validate();
        }
        if (this.securityOptions && typeof this.securityOptions.validate === 'function') {
            this.securityOptions.validate();
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchConfiguration = CreateAutoProvisioningGroupShrinkRequestLaunchConfiguration;
class CreateAutoProvisioningGroupShrinkRequestDataDiskConfig extends $dara.Model {
    static names() {
        return {
            diskCategory: 'DiskCategory',
        };
    }
    static types() {
        return {
            diskCategory: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestDataDiskConfig = CreateAutoProvisioningGroupShrinkRequestDataDiskConfig;
class CreateAutoProvisioningGroupShrinkRequestLaunchTemplateConfig extends $dara.Model {
    static names() {
        return {
            architectures: 'Architectures',
            burstablePerformance: 'BurstablePerformance',
            cores: 'Cores',
            excludedInstanceTypes: 'ExcludedInstanceTypes',
            imageId: 'ImageId',
            instanceFamilyLevel: 'InstanceFamilyLevel',
            instanceType: 'InstanceType',
            maxPrice: 'MaxPrice',
            maxQuantity: 'MaxQuantity',
            memories: 'Memories',
            priority: 'Priority',
            vSwitchId: 'VSwitchId',
            weightedCapacity: 'WeightedCapacity',
        };
    }
    static types() {
        return {
            architectures: { 'type': 'array', 'itemType': 'string' },
            burstablePerformance: 'string',
            cores: { 'type': 'array', 'itemType': 'number' },
            excludedInstanceTypes: { 'type': 'array', 'itemType': 'string' },
            imageId: 'string',
            instanceFamilyLevel: 'string',
            instanceType: 'string',
            maxPrice: 'number',
            maxQuantity: 'number',
            memories: { 'type': 'array', 'itemType': 'number' },
            priority: 'number',
            vSwitchId: 'string',
            weightedCapacity: 'number',
        };
    }
    validate() {
        if (Array.isArray(this.architectures)) {
            $dara.Model.validateArray(this.architectures);
        }
        if (Array.isArray(this.cores)) {
            $dara.Model.validateArray(this.cores);
        }
        if (Array.isArray(this.excludedInstanceTypes)) {
            $dara.Model.validateArray(this.excludedInstanceTypes);
        }
        if (Array.isArray(this.memories)) {
            $dara.Model.validateArray(this.memories);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestLaunchTemplateConfig = CreateAutoProvisioningGroupShrinkRequestLaunchTemplateConfig;
class CreateAutoProvisioningGroupShrinkRequestPrePaidOptionsSpecifyCapacityDistribution extends $dara.Model {
    static names() {
        return {
            instanceTypes: 'InstanceTypes',
            minTargetCapacity: 'MinTargetCapacity',
        };
    }
    static types() {
        return {
            instanceTypes: { 'type': 'array', 'itemType': 'string' },
            minTargetCapacity: 'number',
        };
    }
    validate() {
        if (Array.isArray(this.instanceTypes)) {
            $dara.Model.validateArray(this.instanceTypes);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestPrePaidOptionsSpecifyCapacityDistribution = CreateAutoProvisioningGroupShrinkRequestPrePaidOptionsSpecifyCapacityDistribution;
class CreateAutoProvisioningGroupShrinkRequestPrePaidOptions extends $dara.Model {
    static names() {
        return {
            specifyCapacityDistribution: 'SpecifyCapacityDistribution',
        };
    }
    static types() {
        return {
            specifyCapacityDistribution: { 'type': 'array', 'itemType': CreateAutoProvisioningGroupShrinkRequestPrePaidOptionsSpecifyCapacityDistribution },
        };
    }
    validate() {
        if (Array.isArray(this.specifyCapacityDistribution)) {
            $dara.Model.validateArray(this.specifyCapacityDistribution);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestPrePaidOptions = CreateAutoProvisioningGroupShrinkRequestPrePaidOptions;
class CreateAutoProvisioningGroupShrinkRequestSystemDiskConfig extends $dara.Model {
    static names() {
        return {
            diskCategory: 'DiskCategory',
        };
    }
    static types() {
        return {
            diskCategory: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestSystemDiskConfig = CreateAutoProvisioningGroupShrinkRequestSystemDiskConfig;
class CreateAutoProvisioningGroupShrinkRequestTag extends $dara.Model {
    static names() {
        return {
            key: 'Key',
            value: 'Value',
        };
    }
    static types() {
        return {
            key: 'string',
            value: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequestTag = CreateAutoProvisioningGroupShrinkRequestTag;
class CreateAutoProvisioningGroupShrinkRequest extends $dara.Model {
    static names() {
        return {
            launchConfiguration: 'LaunchConfiguration',
            autoProvisioningGroupName: 'AutoProvisioningGroupName',
            autoProvisioningGroupType: 'AutoProvisioningGroupType',
            clientToken: 'ClientToken',
            dataDiskConfig: 'DataDiskConfig',
            defaultTargetCapacityType: 'DefaultTargetCapacityType',
            description: 'Description',
            excessCapacityTerminationPolicy: 'ExcessCapacityTerminationPolicy',
            executionMode: 'ExecutionMode',
            hibernationOptionsConfigured: 'HibernationOptionsConfigured',
            launchTemplateConfig: 'LaunchTemplateConfig',
            launchTemplateId: 'LaunchTemplateId',
            launchTemplateVersion: 'LaunchTemplateVersion',
            maxSpotPrice: 'MaxSpotPrice',
            minTargetCapacity: 'MinTargetCapacity',
            ownerAccount: 'OwnerAccount',
            ownerId: 'OwnerId',
            payAsYouGoAllocationStrategy: 'PayAsYouGoAllocationStrategy',
            payAsYouGoTargetCapacity: 'PayAsYouGoTargetCapacity',
            prePaidOptions: 'PrePaidOptions',
            regionId: 'RegionId',
            resourceGroupId: 'ResourceGroupId',
            resourceOwnerAccount: 'ResourceOwnerAccount',
            resourceOwnerId: 'ResourceOwnerId',
            resourcePoolOptionsShrink: 'ResourcePoolOptions',
            spotAllocationStrategy: 'SpotAllocationStrategy',
            spotInstanceInterruptionBehavior: 'SpotInstanceInterruptionBehavior',
            spotInstancePoolsToUseCount: 'SpotInstancePoolsToUseCount',
            spotTargetCapacity: 'SpotTargetCapacity',
            systemDiskConfig: 'SystemDiskConfig',
            tag: 'Tag',
            terminateInstances: 'TerminateInstances',
            terminateInstancesWithExpiration: 'TerminateInstancesWithExpiration',
            totalTargetCapacity: 'TotalTargetCapacity',
            validFrom: 'ValidFrom',
            validUntil: 'ValidUntil',
        };
    }
    static types() {
        return {
            launchConfiguration: CreateAutoProvisioningGroupShrinkRequestLaunchConfiguration,
            autoProvisioningGroupName: 'string',
            autoProvisioningGroupType: 'string',
            clientToken: 'string',
            dataDiskConfig: { 'type': 'array', 'itemType': CreateAutoProvisioningGroupShrinkRequestDataDiskConfig },
            defaultTargetCapacityType: 'string',
            description: 'string',
            excessCapacityTerminationPolicy: 'string',
            executionMode: 'string',
            hibernationOptionsConfigured: 'boolean',
            launchTemplateConfig: { 'type': 'array', 'itemType': CreateAutoProvisioningGroupShrinkRequestLaunchTemplateConfig },
            launchTemplateId: 'string',
            launchTemplateVersion: 'string',
            maxSpotPrice: 'number',
            minTargetCapacity: 'string',
            ownerAccount: 'string',
            ownerId: 'number',
            payAsYouGoAllocationStrategy: 'string',
            payAsYouGoTargetCapacity: 'string',
            prePaidOptions: CreateAutoProvisioningGroupShrinkRequestPrePaidOptions,
            regionId: 'string',
            resourceGroupId: 'string',
            resourceOwnerAccount: 'string',
            resourceOwnerId: 'number',
            resourcePoolOptionsShrink: 'string',
            spotAllocationStrategy: 'string',
            spotInstanceInterruptionBehavior: 'string',
            spotInstancePoolsToUseCount: 'number',
            spotTargetCapacity: 'string',
            systemDiskConfig: { 'type': 'array', 'itemType': CreateAutoProvisioningGroupShrinkRequestSystemDiskConfig },
            tag: { 'type': 'array', 'itemType': CreateAutoProvisioningGroupShrinkRequestTag },
            terminateInstances: 'boolean',
            terminateInstancesWithExpiration: 'boolean',
            totalTargetCapacity: 'string',
            validFrom: 'string',
            validUntil: 'string',
        };
    }
    validate() {
        if (this.launchConfiguration && typeof this.launchConfiguration.validate === 'function') {
            this.launchConfiguration.validate();
        }
        if (Array.isArray(this.dataDiskConfig)) {
            $dara.Model.validateArray(this.dataDiskConfig);
        }
        if (Array.isArray(this.launchTemplateConfig)) {
            $dara.Model.validateArray(this.launchTemplateConfig);
        }
        if (this.prePaidOptions && typeof this.prePaidOptions.validate === 'function') {
            this.prePaidOptions.validate();
        }
        if (Array.isArray(this.systemDiskConfig)) {
            $dara.Model.validateArray(this.systemDiskConfig);
        }
        if (Array.isArray(this.tag)) {
            $dara.Model.validateArray(this.tag);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.CreateAutoProvisioningGroupShrinkRequest = CreateAutoProvisioningGroupShrinkRequest;
//# sourceMappingURL=CreateAutoProvisioningGroupShrinkRequest.js.map