"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.DescribeInstancesResponseBody = exports.DescribeInstancesResponseBodyInstances = exports.DescribeInstancesResponseBodyInstancesInstance = exports.DescribeInstancesResponseBodyInstancesInstanceVpcAttributes = exports.DescribeInstancesResponseBodyInstancesInstanceVpcAttributesPrivateIpAddress = exports.DescribeInstancesResponseBodyInstancesInstanceTags = exports.DescribeInstancesResponseBodyInstancesInstanceTagsTag = exports.DescribeInstancesResponseBodyInstancesInstanceSecurityGroupIds = exports.DescribeInstancesResponseBodyInstancesInstanceRdmaIpAddress = exports.DescribeInstancesResponseBodyInstancesInstancePublicIpAddress = exports.DescribeInstancesResponseBodyInstancesInstancePrivateDnsNameOptions = exports.DescribeInstancesResponseBodyInstancesInstanceOperationLocks = exports.DescribeInstancesResponseBodyInstancesInstanceOperationLocksLockReason = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfaces = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterface = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSets = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6Sets = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6SetsIpv6Set = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSets = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSetsIpv6PrefixSet = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSets = exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSetsIpv4PrefixSet = exports.DescribeInstancesResponseBodyInstancesInstanceMetadataOptions = exports.DescribeInstancesResponseBodyInstancesInstanceInnerIpAddress = exports.DescribeInstancesResponseBodyInstancesInstanceImageOptions = exports.DescribeInstancesResponseBodyInstancesInstanceHibernationOptions = exports.DescribeInstancesResponseBodyInstancesInstanceEipAddress = exports.DescribeInstancesResponseBodyInstancesInstanceEcsCapacityReservationAttr = exports.DescribeInstancesResponseBodyInstancesInstanceDedicatedInstanceAttribute = exports.DescribeInstancesResponseBodyInstancesInstanceDedicatedHostAttribute = exports.DescribeInstancesResponseBodyInstancesInstanceCpuOptions = exports.DescribeInstancesResponseBodyInstancesInstanceClockOptions = exports.DescribeInstancesResponseBodyInstancesInstanceAdditionalInfo = void 0;
// This file is auto-generated, don't edit it
const $dara = __importStar(require("@darabonba/typescript"));
class DescribeInstancesResponseBodyInstancesInstanceAdditionalInfo extends $dara.Model {
    static names() {
        return {
            enableHighDensityMode: 'EnableHighDensityMode',
        };
    }
    static types() {
        return {
            enableHighDensityMode: 'boolean',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceAdditionalInfo = DescribeInstancesResponseBodyInstancesInstanceAdditionalInfo;
class DescribeInstancesResponseBodyInstancesInstanceClockOptions extends $dara.Model {
    static names() {
        return {
            ptpStatus: 'PtpStatus',
        };
    }
    static types() {
        return {
            ptpStatus: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceClockOptions = DescribeInstancesResponseBodyInstancesInstanceClockOptions;
class DescribeInstancesResponseBodyInstancesInstanceCpuOptions extends $dara.Model {
    static names() {
        return {
            coreCount: 'CoreCount',
            enableVISST: 'EnableVISST',
            enableVRDT: 'EnableVRDT',
            numa: 'Numa',
            threadsPerCore: 'ThreadsPerCore',
            topologyType: 'TopologyType',
            turboMode: 'TurboMode',
        };
    }
    static types() {
        return {
            coreCount: 'number',
            enableVISST: 'boolean',
            enableVRDT: 'boolean',
            numa: 'string',
            threadsPerCore: 'number',
            topologyType: 'string',
            turboMode: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceCpuOptions = DescribeInstancesResponseBodyInstancesInstanceCpuOptions;
class DescribeInstancesResponseBodyInstancesInstanceDedicatedHostAttribute extends $dara.Model {
    static names() {
        return {
            dedicatedHostClusterId: 'DedicatedHostClusterId',
            dedicatedHostId: 'DedicatedHostId',
            dedicatedHostName: 'DedicatedHostName',
        };
    }
    static types() {
        return {
            dedicatedHostClusterId: 'string',
            dedicatedHostId: 'string',
            dedicatedHostName: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceDedicatedHostAttribute = DescribeInstancesResponseBodyInstancesInstanceDedicatedHostAttribute;
class DescribeInstancesResponseBodyInstancesInstanceDedicatedInstanceAttribute extends $dara.Model {
    static names() {
        return {
            affinity: 'Affinity',
            tenancy: 'Tenancy',
        };
    }
    static types() {
        return {
            affinity: 'string',
            tenancy: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceDedicatedInstanceAttribute = DescribeInstancesResponseBodyInstancesInstanceDedicatedInstanceAttribute;
class DescribeInstancesResponseBodyInstancesInstanceEcsCapacityReservationAttr extends $dara.Model {
    static names() {
        return {
            capacityReservationId: 'CapacityReservationId',
            capacityReservationPreference: 'CapacityReservationPreference',
        };
    }
    static types() {
        return {
            capacityReservationId: 'string',
            capacityReservationPreference: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceEcsCapacityReservationAttr = DescribeInstancesResponseBodyInstancesInstanceEcsCapacityReservationAttr;
class DescribeInstancesResponseBodyInstancesInstanceEipAddress extends $dara.Model {
    static names() {
        return {
            allocationId: 'AllocationId',
            bandwidth: 'Bandwidth',
            internetChargeType: 'InternetChargeType',
            ipAddress: 'IpAddress',
            isSupportUnassociate: 'IsSupportUnassociate',
        };
    }
    static types() {
        return {
            allocationId: 'string',
            bandwidth: 'number',
            internetChargeType: 'string',
            ipAddress: 'string',
            isSupportUnassociate: 'boolean',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceEipAddress = DescribeInstancesResponseBodyInstancesInstanceEipAddress;
class DescribeInstancesResponseBodyInstancesInstanceHibernationOptions extends $dara.Model {
    static names() {
        return {
            configured: 'Configured',
        };
    }
    static types() {
        return {
            configured: 'boolean',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceHibernationOptions = DescribeInstancesResponseBodyInstancesInstanceHibernationOptions;
class DescribeInstancesResponseBodyInstancesInstanceImageOptions extends $dara.Model {
    static names() {
        return {
            currentOSNVMeSupported: 'CurrentOSNVMeSupported',
            loginAsNonRoot: 'LoginAsNonRoot',
        };
    }
    static types() {
        return {
            currentOSNVMeSupported: 'boolean',
            loginAsNonRoot: 'boolean',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceImageOptions = DescribeInstancesResponseBodyInstancesInstanceImageOptions;
class DescribeInstancesResponseBodyInstancesInstanceInnerIpAddress extends $dara.Model {
    static names() {
        return {
            ipAddress: 'IpAddress',
        };
    }
    static types() {
        return {
            ipAddress: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.ipAddress)) {
            $dara.Model.validateArray(this.ipAddress);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceInnerIpAddress = DescribeInstancesResponseBodyInstancesInstanceInnerIpAddress;
class DescribeInstancesResponseBodyInstancesInstanceMetadataOptions extends $dara.Model {
    static names() {
        return {
            httpEndpoint: 'HttpEndpoint',
            httpPutResponseHopLimit: 'HttpPutResponseHopLimit',
            httpTokens: 'HttpTokens',
        };
    }
    static types() {
        return {
            httpEndpoint: 'string',
            httpPutResponseHopLimit: 'number',
            httpTokens: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceMetadataOptions = DescribeInstancesResponseBodyInstancesInstanceMetadataOptions;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSetsIpv4PrefixSet extends $dara.Model {
    static names() {
        return {
            ipv4Prefix: 'Ipv4Prefix',
        };
    }
    static types() {
        return {
            ipv4Prefix: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSetsIpv4PrefixSet = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSetsIpv4PrefixSet;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSets extends $dara.Model {
    static names() {
        return {
            ipv4PrefixSet: 'Ipv4PrefixSet',
        };
    }
    static types() {
        return {
            ipv4PrefixSet: { 'type': 'array', 'itemType': DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSetsIpv4PrefixSet },
        };
    }
    validate() {
        if (Array.isArray(this.ipv4PrefixSet)) {
            $dara.Model.validateArray(this.ipv4PrefixSet);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSets = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSets;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSetsIpv6PrefixSet extends $dara.Model {
    static names() {
        return {
            ipv6Prefix: 'Ipv6Prefix',
        };
    }
    static types() {
        return {
            ipv6Prefix: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSetsIpv6PrefixSet = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSetsIpv6PrefixSet;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSets extends $dara.Model {
    static names() {
        return {
            ipv6PrefixSet: 'Ipv6PrefixSet',
        };
    }
    static types() {
        return {
            ipv6PrefixSet: { 'type': 'array', 'itemType': DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSetsIpv6PrefixSet },
        };
    }
    validate() {
        if (Array.isArray(this.ipv6PrefixSet)) {
            $dara.Model.validateArray(this.ipv6PrefixSet);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSets = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSets;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6SetsIpv6Set extends $dara.Model {
    static names() {
        return {
            ipv6Address: 'Ipv6Address',
        };
    }
    static types() {
        return {
            ipv6Address: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6SetsIpv6Set = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6SetsIpv6Set;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6Sets extends $dara.Model {
    static names() {
        return {
            ipv6Set: 'Ipv6Set',
        };
    }
    static types() {
        return {
            ipv6Set: { 'type': 'array', 'itemType': DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6SetsIpv6Set },
        };
    }
    validate() {
        if (Array.isArray(this.ipv6Set)) {
            $dara.Model.validateArray(this.ipv6Set);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6Sets = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6Sets;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet extends $dara.Model {
    static names() {
        return {
            primary: 'Primary',
            privateDnsName: 'PrivateDnsName',
            privateIpAddress: 'PrivateIpAddress',
        };
    }
    static types() {
        return {
            primary: 'boolean',
            privateDnsName: 'string',
            privateIpAddress: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSets extends $dara.Model {
    static names() {
        return {
            privateIpSet: 'PrivateIpSet',
        };
    }
    static types() {
        return {
            privateIpSet: { 'type': 'array', 'itemType': DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet },
        };
    }
    validate() {
        if (Array.isArray(this.privateIpSet)) {
            $dara.Model.validateArray(this.privateIpSet);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSets = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSets;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterface extends $dara.Model {
    static names() {
        return {
            ipv4PrefixSets: 'Ipv4PrefixSets',
            ipv6PrefixSets: 'Ipv6PrefixSets',
            ipv6Sets: 'Ipv6Sets',
            macAddress: 'MacAddress',
            networkInterfaceId: 'NetworkInterfaceId',
            primaryIpAddress: 'PrimaryIpAddress',
            privateIpSets: 'PrivateIpSets',
            type: 'Type',
        };
    }
    static types() {
        return {
            ipv4PrefixSets: DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSets,
            ipv6PrefixSets: DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSets,
            ipv6Sets: DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6Sets,
            macAddress: 'string',
            networkInterfaceId: 'string',
            primaryIpAddress: 'string',
            privateIpSets: DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSets,
            type: 'string',
        };
    }
    validate() {
        if (this.ipv4PrefixSets && typeof this.ipv4PrefixSets.validate === 'function') {
            this.ipv4PrefixSets.validate();
        }
        if (this.ipv6PrefixSets && typeof this.ipv6PrefixSets.validate === 'function') {
            this.ipv6PrefixSets.validate();
        }
        if (this.ipv6Sets && typeof this.ipv6Sets.validate === 'function') {
            this.ipv6Sets.validate();
        }
        if (this.privateIpSets && typeof this.privateIpSets.validate === 'function') {
            this.privateIpSets.validate();
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterface = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterface;
class DescribeInstancesResponseBodyInstancesInstanceNetworkInterfaces extends $dara.Model {
    static names() {
        return {
            networkInterface: 'NetworkInterface',
        };
    }
    static types() {
        return {
            networkInterface: { 'type': 'array', 'itemType': DescribeInstancesResponseBodyInstancesInstanceNetworkInterfacesNetworkInterface },
        };
    }
    validate() {
        if (Array.isArray(this.networkInterface)) {
            $dara.Model.validateArray(this.networkInterface);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceNetworkInterfaces = DescribeInstancesResponseBodyInstancesInstanceNetworkInterfaces;
class DescribeInstancesResponseBodyInstancesInstanceOperationLocksLockReason extends $dara.Model {
    static names() {
        return {
            lockMsg: 'LockMsg',
            lockReason: 'LockReason',
        };
    }
    static types() {
        return {
            lockMsg: 'string',
            lockReason: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceOperationLocksLockReason = DescribeInstancesResponseBodyInstancesInstanceOperationLocksLockReason;
class DescribeInstancesResponseBodyInstancesInstanceOperationLocks extends $dara.Model {
    static names() {
        return {
            lockReason: 'LockReason',
        };
    }
    static types() {
        return {
            lockReason: { 'type': 'array', 'itemType': DescribeInstancesResponseBodyInstancesInstanceOperationLocksLockReason },
        };
    }
    validate() {
        if (Array.isArray(this.lockReason)) {
            $dara.Model.validateArray(this.lockReason);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceOperationLocks = DescribeInstancesResponseBodyInstancesInstanceOperationLocks;
class DescribeInstancesResponseBodyInstancesInstancePrivateDnsNameOptions extends $dara.Model {
    static names() {
        return {
            enableInstanceIdDnsAAAARecord: 'EnableInstanceIdDnsAAAARecord',
            enableInstanceIdDnsARecord: 'EnableInstanceIdDnsARecord',
            enableIpDnsARecord: 'EnableIpDnsARecord',
            enableIpDnsPtrRecord: 'EnableIpDnsPtrRecord',
            hostnameType: 'HostnameType',
        };
    }
    static types() {
        return {
            enableInstanceIdDnsAAAARecord: 'boolean',
            enableInstanceIdDnsARecord: 'boolean',
            enableIpDnsARecord: 'boolean',
            enableIpDnsPtrRecord: 'boolean',
            hostnameType: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstancePrivateDnsNameOptions = DescribeInstancesResponseBodyInstancesInstancePrivateDnsNameOptions;
class DescribeInstancesResponseBodyInstancesInstancePublicIpAddress extends $dara.Model {
    static names() {
        return {
            ipAddress: 'IpAddress',
        };
    }
    static types() {
        return {
            ipAddress: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.ipAddress)) {
            $dara.Model.validateArray(this.ipAddress);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstancePublicIpAddress = DescribeInstancesResponseBodyInstancesInstancePublicIpAddress;
class DescribeInstancesResponseBodyInstancesInstanceRdmaIpAddress extends $dara.Model {
    static names() {
        return {
            ipAddress: 'IpAddress',
        };
    }
    static types() {
        return {
            ipAddress: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.ipAddress)) {
            $dara.Model.validateArray(this.ipAddress);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceRdmaIpAddress = DescribeInstancesResponseBodyInstancesInstanceRdmaIpAddress;
class DescribeInstancesResponseBodyInstancesInstanceSecurityGroupIds extends $dara.Model {
    static names() {
        return {
            securityGroupId: 'SecurityGroupId',
        };
    }
    static types() {
        return {
            securityGroupId: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.securityGroupId)) {
            $dara.Model.validateArray(this.securityGroupId);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceSecurityGroupIds = DescribeInstancesResponseBodyInstancesInstanceSecurityGroupIds;
class DescribeInstancesResponseBodyInstancesInstanceTagsTag extends $dara.Model {
    static names() {
        return {
            tagKey: 'TagKey',
            tagValue: 'TagValue',
        };
    }
    static types() {
        return {
            tagKey: 'string',
            tagValue: 'string',
        };
    }
    validate() {
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceTagsTag = DescribeInstancesResponseBodyInstancesInstanceTagsTag;
class DescribeInstancesResponseBodyInstancesInstanceTags extends $dara.Model {
    static names() {
        return {
            tag: 'Tag',
        };
    }
    static types() {
        return {
            tag: { 'type': 'array', 'itemType': DescribeInstancesResponseBodyInstancesInstanceTagsTag },
        };
    }
    validate() {
        if (Array.isArray(this.tag)) {
            $dara.Model.validateArray(this.tag);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceTags = DescribeInstancesResponseBodyInstancesInstanceTags;
class DescribeInstancesResponseBodyInstancesInstanceVpcAttributesPrivateIpAddress extends $dara.Model {
    static names() {
        return {
            ipAddress: 'IpAddress',
        };
    }
    static types() {
        return {
            ipAddress: { 'type': 'array', 'itemType': 'string' },
        };
    }
    validate() {
        if (Array.isArray(this.ipAddress)) {
            $dara.Model.validateArray(this.ipAddress);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceVpcAttributesPrivateIpAddress = DescribeInstancesResponseBodyInstancesInstanceVpcAttributesPrivateIpAddress;
class DescribeInstancesResponseBodyInstancesInstanceVpcAttributes extends $dara.Model {
    static names() {
        return {
            natIpAddress: 'NatIpAddress',
            privateIpAddress: 'PrivateIpAddress',
            vSwitchId: 'VSwitchId',
            vpcId: 'VpcId',
        };
    }
    static types() {
        return {
            natIpAddress: 'string',
            privateIpAddress: DescribeInstancesResponseBodyInstancesInstanceVpcAttributesPrivateIpAddress,
            vSwitchId: 'string',
            vpcId: 'string',
        };
    }
    validate() {
        if (this.privateIpAddress && typeof this.privateIpAddress.validate === 'function') {
            this.privateIpAddress.validate();
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstanceVpcAttributes = DescribeInstancesResponseBodyInstancesInstanceVpcAttributes;
class DescribeInstancesResponseBodyInstancesInstance extends $dara.Model {
    static names() {
        return {
            additionalInfo: 'AdditionalInfo',
            autoReleaseTime: 'AutoReleaseTime',
            clockOptions: 'ClockOptions',
            clusterId: 'ClusterId',
            cpu: 'Cpu',
            cpuOptions: 'CpuOptions',
            creationTime: 'CreationTime',
            creditSpecification: 'CreditSpecification',
            dedicatedHostAttribute: 'DedicatedHostAttribute',
            dedicatedInstanceAttribute: 'DedicatedInstanceAttribute',
            deletionProtection: 'DeletionProtection',
            deploymentSetGroupNo: 'DeploymentSetGroupNo',
            deploymentSetId: 'DeploymentSetId',
            description: 'Description',
            deviceAvailable: 'DeviceAvailable',
            ecsCapacityReservationAttr: 'EcsCapacityReservationAttr',
            eipAddress: 'EipAddress',
            enableNVS: 'EnableNVS',
            expiredTime: 'ExpiredTime',
            GPUAmount: 'GPUAmount',
            GPUSpec: 'GPUSpec',
            hibernationOptions: 'HibernationOptions',
            hostName: 'HostName',
            hpcClusterId: 'HpcClusterId',
            ISP: 'ISP',
            imageId: 'ImageId',
            imageOptions: 'ImageOptions',
            innerIpAddress: 'InnerIpAddress',
            instanceChargeType: 'InstanceChargeType',
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
            instanceNetworkType: 'InstanceNetworkType',
            instanceType: 'InstanceType',
            instanceTypeFamily: 'InstanceTypeFamily',
            internetChargeType: 'InternetChargeType',
            internetMaxBandwidthIn: 'InternetMaxBandwidthIn',
            internetMaxBandwidthOut: 'InternetMaxBandwidthOut',
            ioOptimized: 'IoOptimized',
            keyPairName: 'KeyPairName',
            localStorageAmount: 'LocalStorageAmount',
            localStorageCapacity: 'LocalStorageCapacity',
            memory: 'Memory',
            metadataOptions: 'MetadataOptions',
            networkInterfaces: 'NetworkInterfaces',
            OSName: 'OSName',
            OSNameEn: 'OSNameEn',
            OSType: 'OSType',
            operationLocks: 'OperationLocks',
            privateDnsNameOptions: 'PrivateDnsNameOptions',
            publicIpAddress: 'PublicIpAddress',
            rdmaIpAddress: 'RdmaIpAddress',
            recyclable: 'Recyclable',
            regionId: 'RegionId',
            resourceGroupId: 'ResourceGroupId',
            saleCycle: 'SaleCycle',
            securityGroupIds: 'SecurityGroupIds',
            serialNumber: 'SerialNumber',
            spotDuration: 'SpotDuration',
            spotInterruptionBehavior: 'SpotInterruptionBehavior',
            spotPriceLimit: 'SpotPriceLimit',
            spotStrategy: 'SpotStrategy',
            startTime: 'StartTime',
            status: 'Status',
            stoppedMode: 'StoppedMode',
            tags: 'Tags',
            vlanId: 'VlanId',
            vpcAttributes: 'VpcAttributes',
            zoneId: 'ZoneId',
        };
    }
    static types() {
        return {
            additionalInfo: DescribeInstancesResponseBodyInstancesInstanceAdditionalInfo,
            autoReleaseTime: 'string',
            clockOptions: DescribeInstancesResponseBodyInstancesInstanceClockOptions,
            clusterId: 'string',
            cpu: 'number',
            cpuOptions: DescribeInstancesResponseBodyInstancesInstanceCpuOptions,
            creationTime: 'string',
            creditSpecification: 'string',
            dedicatedHostAttribute: DescribeInstancesResponseBodyInstancesInstanceDedicatedHostAttribute,
            dedicatedInstanceAttribute: DescribeInstancesResponseBodyInstancesInstanceDedicatedInstanceAttribute,
            deletionProtection: 'boolean',
            deploymentSetGroupNo: 'number',
            deploymentSetId: 'string',
            description: 'string',
            deviceAvailable: 'boolean',
            ecsCapacityReservationAttr: DescribeInstancesResponseBodyInstancesInstanceEcsCapacityReservationAttr,
            eipAddress: DescribeInstancesResponseBodyInstancesInstanceEipAddress,
            enableNVS: 'boolean',
            expiredTime: 'string',
            GPUAmount: 'number',
            GPUSpec: 'string',
            hibernationOptions: DescribeInstancesResponseBodyInstancesInstanceHibernationOptions,
            hostName: 'string',
            hpcClusterId: 'string',
            ISP: 'string',
            imageId: 'string',
            imageOptions: DescribeInstancesResponseBodyInstancesInstanceImageOptions,
            innerIpAddress: DescribeInstancesResponseBodyInstancesInstanceInnerIpAddress,
            instanceChargeType: 'string',
            instanceId: 'string',
            instanceName: 'string',
            instanceNetworkType: 'string',
            instanceType: 'string',
            instanceTypeFamily: 'string',
            internetChargeType: 'string',
            internetMaxBandwidthIn: 'number',
            internetMaxBandwidthOut: 'number',
            ioOptimized: 'boolean',
            keyPairName: 'string',
            localStorageAmount: 'number',
            localStorageCapacity: 'number',
            memory: 'number',
            metadataOptions: DescribeInstancesResponseBodyInstancesInstanceMetadataOptions,
            networkInterfaces: DescribeInstancesResponseBodyInstancesInstanceNetworkInterfaces,
            OSName: 'string',
            OSNameEn: 'string',
            OSType: 'string',
            operationLocks: DescribeInstancesResponseBodyInstancesInstanceOperationLocks,
            privateDnsNameOptions: DescribeInstancesResponseBodyInstancesInstancePrivateDnsNameOptions,
            publicIpAddress: DescribeInstancesResponseBodyInstancesInstancePublicIpAddress,
            rdmaIpAddress: DescribeInstancesResponseBodyInstancesInstanceRdmaIpAddress,
            recyclable: 'boolean',
            regionId: 'string',
            resourceGroupId: 'string',
            saleCycle: 'string',
            securityGroupIds: DescribeInstancesResponseBodyInstancesInstanceSecurityGroupIds,
            serialNumber: 'string',
            spotDuration: 'number',
            spotInterruptionBehavior: 'string',
            spotPriceLimit: 'number',
            spotStrategy: 'string',
            startTime: 'string',
            status: 'string',
            stoppedMode: 'string',
            tags: DescribeInstancesResponseBodyInstancesInstanceTags,
            vlanId: 'string',
            vpcAttributes: DescribeInstancesResponseBodyInstancesInstanceVpcAttributes,
            zoneId: 'string',
        };
    }
    validate() {
        if (this.additionalInfo && typeof this.additionalInfo.validate === 'function') {
            this.additionalInfo.validate();
        }
        if (this.clockOptions && typeof this.clockOptions.validate === 'function') {
            this.clockOptions.validate();
        }
        if (this.cpuOptions && typeof this.cpuOptions.validate === 'function') {
            this.cpuOptions.validate();
        }
        if (this.dedicatedHostAttribute && typeof this.dedicatedHostAttribute.validate === 'function') {
            this.dedicatedHostAttribute.validate();
        }
        if (this.dedicatedInstanceAttribute && typeof this.dedicatedInstanceAttribute.validate === 'function') {
            this.dedicatedInstanceAttribute.validate();
        }
        if (this.ecsCapacityReservationAttr && typeof this.ecsCapacityReservationAttr.validate === 'function') {
            this.ecsCapacityReservationAttr.validate();
        }
        if (this.eipAddress && typeof this.eipAddress.validate === 'function') {
            this.eipAddress.validate();
        }
        if (this.hibernationOptions && typeof this.hibernationOptions.validate === 'function') {
            this.hibernationOptions.validate();
        }
        if (this.imageOptions && typeof this.imageOptions.validate === 'function') {
            this.imageOptions.validate();
        }
        if (this.innerIpAddress && typeof this.innerIpAddress.validate === 'function') {
            this.innerIpAddress.validate();
        }
        if (this.metadataOptions && typeof this.metadataOptions.validate === 'function') {
            this.metadataOptions.validate();
        }
        if (this.networkInterfaces && typeof this.networkInterfaces.validate === 'function') {
            this.networkInterfaces.validate();
        }
        if (this.operationLocks && typeof this.operationLocks.validate === 'function') {
            this.operationLocks.validate();
        }
        if (this.privateDnsNameOptions && typeof this.privateDnsNameOptions.validate === 'function') {
            this.privateDnsNameOptions.validate();
        }
        if (this.publicIpAddress && typeof this.publicIpAddress.validate === 'function') {
            this.publicIpAddress.validate();
        }
        if (this.rdmaIpAddress && typeof this.rdmaIpAddress.validate === 'function') {
            this.rdmaIpAddress.validate();
        }
        if (this.securityGroupIds && typeof this.securityGroupIds.validate === 'function') {
            this.securityGroupIds.validate();
        }
        if (this.tags && typeof this.tags.validate === 'function') {
            this.tags.validate();
        }
        if (this.vpcAttributes && typeof this.vpcAttributes.validate === 'function') {
            this.vpcAttributes.validate();
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstancesInstance = DescribeInstancesResponseBodyInstancesInstance;
class DescribeInstancesResponseBodyInstances extends $dara.Model {
    static names() {
        return {
            instance: 'Instance',
        };
    }
    static types() {
        return {
            instance: { 'type': 'array', 'itemType': DescribeInstancesResponseBodyInstancesInstance },
        };
    }
    validate() {
        if (Array.isArray(this.instance)) {
            $dara.Model.validateArray(this.instance);
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBodyInstances = DescribeInstancesResponseBodyInstances;
class DescribeInstancesResponseBody extends $dara.Model {
    static names() {
        return {
            instances: 'Instances',
            nextToken: 'NextToken',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            instances: DescribeInstancesResponseBodyInstances,
            nextToken: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
    validate() {
        if (this.instances && typeof this.instances.validate === 'function') {
            this.instances.validate();
        }
        super.validate();
    }
    constructor(map) {
        super(map);
    }
}
exports.DescribeInstancesResponseBody = DescribeInstancesResponseBody;
//# sourceMappingURL=DescribeInstancesResponseBody.js.map