"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.DescribeZonesResponseBody = exports.DescribeZonesResponseBodyZones = exports.DescribeZonesResponseBodyZonesZone = exports.DescribeZonesResponseBodyZonesZoneDedicatedHostGenerations = exports.DescribeZonesResponseBodyZonesZoneAvailableVolumeCategories = exports.DescribeZonesResponseBodyZonesZoneAvailableResources = exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfo = exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoSystemDiskCategories = exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoNetworkTypes = exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypes = exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypeFamilies = exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceGenerations = exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoDataDiskCategories = exports.DescribeZonesResponseBodyZonesZoneAvailableResourceCreation = exports.DescribeZonesResponseBodyZonesZoneAvailableInstanceTypes = exports.DescribeZonesResponseBodyZonesZoneAvailableDiskCategories = exports.DescribeZonesResponseBodyZonesZoneAvailableDedicatedHostTypes = void 0;
// This file is auto-generated, don't edit it
const $dara = __importStar(require("@darabonba/typescript"));
class DescribeZonesResponseBodyZonesZoneAvailableDedicatedHostTypes extends $dara.Model {
    static names() {
        return {
            dedicatedHostType: 'DedicatedHostType',
        };
    }
    static types() {
        return {
            dedicatedHostType: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.dedicatedHostType)) {
            $dara.Model.validateArray(this.dedicatedHostType);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableDedicatedHostTypes = DescribeZonesResponseBodyZonesZoneAvailableDedicatedHostTypes;
class DescribeZonesResponseBodyZonesZoneAvailableDiskCategories extends $dara.Model {
    static names() {
        return {
            diskCategories: 'DiskCategories',
        };
    }
    static types() {
        return {
            diskCategories: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.diskCategories)) {
            $dara.Model.validateArray(this.diskCategories);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableDiskCategories = DescribeZonesResponseBodyZonesZoneAvailableDiskCategories;
class DescribeZonesResponseBodyZonesZoneAvailableInstanceTypes extends $dara.Model {
    static names() {
        return {
            instanceTypes: 'InstanceTypes',
        };
    }
    static types() {
        return {
            instanceTypes: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.instanceTypes)) {
            $dara.Model.validateArray(this.instanceTypes);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableInstanceTypes = DescribeZonesResponseBodyZonesZoneAvailableInstanceTypes;
class DescribeZonesResponseBodyZonesZoneAvailableResourceCreation extends $dara.Model {
    static names() {
        return {
            resourceTypes: 'ResourceTypes',
        };
    }
    static types() {
        return {
            resourceTypes: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.resourceTypes)) {
            $dara.Model.validateArray(this.resourceTypes);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableResourceCreation = DescribeZonesResponseBodyZonesZoneAvailableResourceCreation;
class DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoDataDiskCategories extends $dara.Model {
    static names() {
        return {
            supportedDataDiskCategory: 'supportedDataDiskCategory',
        };
    }
    static types() {
        return {
            supportedDataDiskCategory: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.supportedDataDiskCategory)) {
            $dara.Model.validateArray(this.supportedDataDiskCategory);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoDataDiskCategories = DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoDataDiskCategories;
class DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceGenerations extends $dara.Model {
    static names() {
        return {
            supportedInstanceGeneration: 'supportedInstanceGeneration',
        };
    }
    static types() {
        return {
            supportedInstanceGeneration: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.supportedInstanceGeneration)) {
            $dara.Model.validateArray(this.supportedInstanceGeneration);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceGenerations = DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceGenerations;
class DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypeFamilies extends $dara.Model {
    static names() {
        return {
            supportedInstanceTypeFamily: 'supportedInstanceTypeFamily',
        };
    }
    static types() {
        return {
            supportedInstanceTypeFamily: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.supportedInstanceTypeFamily)) {
            $dara.Model.validateArray(this.supportedInstanceTypeFamily);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypeFamilies = DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypeFamilies;
class DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypes extends $dara.Model {
    static names() {
        return {
            supportedInstanceType: 'supportedInstanceType',
        };
    }
    static types() {
        return {
            supportedInstanceType: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.supportedInstanceType)) {
            $dara.Model.validateArray(this.supportedInstanceType);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypes = DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypes;
class DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoNetworkTypes extends $dara.Model {
    static names() {
        return {
            supportedNetworkCategory: 'supportedNetworkCategory',
        };
    }
    static types() {
        return {
            supportedNetworkCategory: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.supportedNetworkCategory)) {
            $dara.Model.validateArray(this.supportedNetworkCategory);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoNetworkTypes = DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoNetworkTypes;
class DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoSystemDiskCategories extends $dara.Model {
    static names() {
        return {
            supportedSystemDiskCategory: 'supportedSystemDiskCategory',
        };
    }
    static types() {
        return {
            supportedSystemDiskCategory: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.supportedSystemDiskCategory)) {
            $dara.Model.validateArray(this.supportedSystemDiskCategory);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoSystemDiskCategories = DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoSystemDiskCategories;
class DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfo extends $dara.Model {
    static names() {
        return {
            dataDiskCategories: 'DataDiskCategories',
            instanceGenerations: 'InstanceGenerations',
            instanceTypeFamilies: 'InstanceTypeFamilies',
            instanceTypes: 'InstanceTypes',
            ioOptimized: 'IoOptimized',
            networkTypes: 'NetworkTypes',
            systemDiskCategories: 'SystemDiskCategories',
        };
    }
    static types() {
        return {
            dataDiskCategories: DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoDataDiskCategories,
            instanceGenerations: DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceGenerations,
            instanceTypeFamilies: DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypeFamilies,
            instanceTypes: DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoInstanceTypes,
            ioOptimized: 'boolean',
            networkTypes: DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoNetworkTypes,
            systemDiskCategories: DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfoSystemDiskCategories,
        };
    }
    validate() {
        if (this.dataDiskCategories && typeof this.dataDiskCategories.validate === 'function') {
            this.dataDiskCategories.validate();
        }
        if (this.instanceGenerations && typeof this.instanceGenerations.validate === 'function') {
            this.instanceGenerations.validate();
        }
        if (this.instanceTypeFamilies && typeof this.instanceTypeFamilies.validate === 'function') {
            this.instanceTypeFamilies.validate();
        }
        if (this.instanceTypes && typeof this.instanceTypes.validate === 'function') {
            this.instanceTypes.validate();
        }
        if (this.networkTypes && typeof this.networkTypes.validate === 'function') {
            this.networkTypes.validate();
        }
        if (this.systemDiskCategories && typeof this.systemDiskCategories.validate === 'function') {
            this.systemDiskCategories.validate();
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfo = DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfo;
class DescribeZonesResponseBodyZonesZoneAvailableResources extends $dara.Model {
    static names() {
        return {
            resourcesInfo: 'ResourcesInfo',
        };
    }
    static types() {
        return {
            resourcesInfo: { 'type': 'array', 'itemType': DescribeZonesResponseBodyZonesZoneAvailableResourcesResourcesInfo },
        };
    }
    validate() {
        if (Array.isArray(this.resourcesInfo)) {
            $dara.Model.validateArray(this.resourcesInfo);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableResources = DescribeZonesResponseBodyZonesZoneAvailableResources;
class DescribeZonesResponseBodyZonesZoneAvailableVolumeCategories extends $dara.Model {
    static names() {
        return {
            volumeCategories: 'VolumeCategories',
        };
    }
    static types() {
        return {
            volumeCategories: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.volumeCategories)) {
            $dara.Model.validateArray(this.volumeCategories);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneAvailableVolumeCategories = DescribeZonesResponseBodyZonesZoneAvailableVolumeCategories;
class DescribeZonesResponseBodyZonesZoneDedicatedHostGenerations extends $dara.Model {
    static names() {
        return {
            dedicatedHostGeneration: 'DedicatedHostGeneration',
        };
    }
    static types() {
        return {
            dedicatedHostGeneration: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.dedicatedHostGeneration)) {
            $dara.Model.validateArray(this.dedicatedHostGeneration);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZoneDedicatedHostGenerations = DescribeZonesResponseBodyZonesZoneDedicatedHostGenerations;
class DescribeZonesResponseBodyZonesZone extends $dara.Model {
    static names() {
        return {
            availableDedicatedHostTypes: 'AvailableDedicatedHostTypes',
            availableDiskCategories: 'AvailableDiskCategories',
            availableInstanceTypes: 'AvailableInstanceTypes',
            availableResourceCreation: 'AvailableResourceCreation',
            availableResources: 'AvailableResources',
            availableVolumeCategories: 'AvailableVolumeCategories',
            dedicatedHostGenerations: 'DedicatedHostGenerations',
            localName: 'LocalName',
            zoneId: 'ZoneId',
            zoneType: 'ZoneType',
        };
    }
    static types() {
        return {
            availableDedicatedHostTypes: DescribeZonesResponseBodyZonesZoneAvailableDedicatedHostTypes,
            availableDiskCategories: DescribeZonesResponseBodyZonesZoneAvailableDiskCategories,
            availableInstanceTypes: DescribeZonesResponseBodyZonesZoneAvailableInstanceTypes,
            availableResourceCreation: DescribeZonesResponseBodyZonesZoneAvailableResourceCreation,
            availableResources: DescribeZonesResponseBodyZonesZoneAvailableResources,
            availableVolumeCategories: DescribeZonesResponseBodyZonesZoneAvailableVolumeCategories,
            dedicatedHostGenerations: DescribeZonesResponseBodyZonesZoneDedicatedHostGenerations,
            localName: 'string',
            zoneId: 'string',
            zoneType: 'string',
        };
    }
    validate() {
        if (this.availableDedicatedHostTypes && typeof this.availableDedicatedHostTypes.validate === 'function') {
            this.availableDedicatedHostTypes.validate();
        }
        if (this.availableDiskCategories && typeof this.availableDiskCategories.validate === 'function') {
            this.availableDiskCategories.validate();
        }
        if (this.availableInstanceTypes && typeof this.availableInstanceTypes.validate === 'function') {
            this.availableInstanceTypes.validate();
        }
        if (this.availableResourceCreation && typeof this.availableResourceCreation.validate === 'function') {
            this.availableResourceCreation.validate();
        }
        if (this.availableResources && typeof this.availableResources.validate === 'function') {
            this.availableResources.validate();
        }
        if (this.availableVolumeCategories && typeof this.availableVolumeCategories.validate === 'function') {
            this.availableVolumeCategories.validate();
        }
        if (this.dedicatedHostGenerations && typeof this.dedicatedHostGenerations.validate === 'function') {
            this.dedicatedHostGenerations.validate();
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZonesZone = DescribeZonesResponseBodyZonesZone;
class DescribeZonesResponseBodyZones extends $dara.Model {
    static names() {
        return {
            zone: 'Zone',
        };
    }
    static types() {
        return {
            zone: { 'type': 'array', 'itemType': DescribeZonesResponseBodyZonesZone },
        };
    }
    validate() {
        if (Array.isArray(this.zone)) {
            $dara.Model.validateArray(this.zone);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBodyZones = DescribeZonesResponseBodyZones;
class DescribeZonesResponseBody extends $dara.Model {
    static names() {
        return {
            requestId: 'RequestId',
            zones: 'Zones',
        };
    }
    static types() {
        return {
            requestId: 'string',
            zones: DescribeZonesResponseBodyZones,
        };
    }
    validate() {
        if (this.zones && typeof this.zones.validate === 'function') {
            this.zones.validate();
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeZonesResponseBody = DescribeZonesResponseBody;
//# sourceMappingURL=DescribeZonesResponseBody.js.map