"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (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 (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UpdateGtmMonitorRequestIspCityNode = exports.UpdateGtmAddressPoolRequestAddr = exports.UpdateDnsGtmMonitorRequestIspCityNode = exports.UpdateDnsGtmInstanceGlobalConfigRequestAlertConfig = exports.UpdateDnsGtmAddressPoolRequestAddr = exports.UpdateDnsGtmAccessStrategyRequestFailoverAddrPool = exports.UpdateDnsGtmAccessStrategyRequestDefaultAddrPool = exports.UpdateDnsCacheDomainRequestSourceDnsServer = exports.UpdateCustomLineRequestIpSegment = exports.TagResourcesRequestTag = exports.PreviewGtmRecoveryPlanResponseBodyPreviews = exports.PreviewGtmRecoveryPlanResponseBodyPreviewsPreview = exports.PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfos = exports.PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfosSwitchInfo = exports.OperateBatchDomainRequestDomainRecordInfo = exports.ModifyHichinaDomainDNSResponseBodyOriginalDnsServers = exports.ModifyHichinaDomainDNSResponseBodyNewDnsServers = exports.ListTagResourcesResponseBodyTagResources = exports.ListTagResourcesRequestTag = exports.DescribeTransferDomainsResponseBodyDomainTransfers = exports.DescribeTransferDomainsResponseBodyDomainTransfersDomainTransfer = exports.DescribeTagsResponseBodyTags = exports.DescribeSupportLinesResponseBodyRecordLines = exports.DescribeSupportLinesResponseBodyRecordLinesRecordLine = exports.DescribeSubDomainRecordsResponseBodyDomainRecords = exports.DescribeSubDomainRecordsResponseBodyDomainRecordsRecord = exports.DescribeRecordStatisticsSummaryResponseBodyStatistics = exports.DescribeRecordStatisticsSummaryResponseBodyStatisticsStatistic = exports.DescribeRecordStatisticsResponseBodyStatistics = exports.DescribeRecordStatisticsResponseBodyStatisticsStatistic = exports.DescribeRecordResolveStatisticsSummaryResponseBodyStatistics = exports.DescribeRecordLogsResponseBodyRecordLogs = exports.DescribeRecordLogsResponseBodyRecordLogsRecordLog = exports.DescribePdnsUserInfoResponseBodyUserInfo = exports.DescribePdnsUdpIpSegmentsResponseBodyIpSegments = exports.DescribePdnsThreatStatisticsResponseBodyData = exports.DescribePdnsThreatStatisticResponseBodyData = exports.DescribePdnsThreatLogsResponseBodyLogs = exports.DescribePdnsRequestStatisticsResponseBodyData = exports.DescribePdnsRequestStatisticsResponseBodyDataThreatInfo = exports.DescribePdnsRequestStatisticResponseBodyData = exports.DescribePdnsOperateLogsResponseBodyLogs = exports.DescribePdnsAppKeysResponseBodyAppKeys = exports.DescribePdnsAppKeyResponseBodyAppKey = exports.DescribePdnsAccountSummaryResponseBodyData = exports.DescribeIspFlushCacheTasksResponseBodyIspFlushCacheTasks = exports.DescribeIspFlushCacheTaskResponseBodyFlushCacheResults = exports.DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodes = exports.DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodesAnswers = exports.DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstances = exports.DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstancesQuotaInfo = exports.DescribeInternetDnsLogsResponseBodyLogs = exports.DescribeInternetDnsLogsResponseBodyLogsLog = exports.DescribeInternetDnsLogsResponseBodyLogsLogValue = exports.DescribeInstanceDomainsResponseBodyInstanceDomains = exports.DescribeGtmRecoveryPlansResponseBodyRecoveryPlans = exports.DescribeGtmRecoveryPlansResponseBodyRecoveryPlansRecoveryPlan = exports.DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstances = exports.DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstance = exports.DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPools = exports.DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPoolsAddrPool = exports.DescribeGtmRecoveryPlanResponseBodyFaultAddrPools = exports.DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPool = exports.DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrs = exports.DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrsAddr = exports.DescribeGtmMonitorConfigResponseBodyIspCityNodes = exports.DescribeGtmMonitorConfigResponseBodyIspCityNodesIspCityNode = exports.DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodes = exports.DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodesIspCityNode = exports.DescribeGtmLogsResponseBodyLogs = exports.DescribeGtmLogsResponseBodyLogsLog = exports.DescribeGtmInstancesResponseBodyGtmInstances = exports.DescribeGtmInstancesResponseBodyGtmInstancesGtmInstance = exports.DescribeGtmInstanceAddressPoolsResponseBodyAddrPools = exports.DescribeGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool = exports.DescribeGtmInstanceAddressPoolResponseBodyAddrs = exports.DescribeGtmInstanceAddressPoolResponseBodyAddrsAddr = exports.DescribeGtmAccessStrategyAvailableConfigResponseBodyLines = exports.DescribeGtmAccessStrategyAvailableConfigResponseBodyLinesLine = exports.DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPools = exports.DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPoolsAddrPool = exports.DescribeGtmAccessStrategyResponseBodyLines = exports.DescribeGtmAccessStrategyResponseBodyLinesLine = exports.DescribeGtmAccessStrategiesResponseBodyStrategies = exports.DescribeGtmAccessStrategiesResponseBodyStrategiesStrategy = exports.DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLines = exports.DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine = exports.DescribeDomainsResponseBodyDomains = exports.DescribeDomainsResponseBodyDomainsDomain = exports.DescribeDomainsResponseBodyDomainsDomainTags = exports.DescribeDomainsResponseBodyDomainsDomainTagsTag = exports.DescribeDomainsResponseBodyDomainsDomainDnsServers = exports.DescribeDomainStatisticsSummaryResponseBodyStatistics = exports.DescribeDomainStatisticsSummaryResponseBodyStatisticsStatistic = exports.DescribeDomainStatisticsResponseBodyStatistics = exports.DescribeDomainStatisticsResponseBodyStatisticsStatistic = exports.DescribeDomainResolveStatisticsSummaryResponseBodyStatistics = exports.DescribeDomainRecordsResponseBodyDomainRecords = exports.DescribeDomainRecordsResponseBodyDomainRecordsRecord = exports.DescribeDomainNsResponseBodyExpectDnsServers = exports.DescribeDomainNsResponseBodyDnsServers = exports.DescribeDomainLogsResponseBodyDomainLogs = exports.DescribeDomainLogsResponseBodyDomainLogsDomainLog = exports.DescribeDomainInfoResponseBodyRecordLines = exports.DescribeDomainInfoResponseBodyRecordLinesRecordLine = exports.DescribeDomainInfoResponseBodyDnsServers = exports.DescribeDomainInfoResponseBodyAvailableTtls = exports.DescribeDomainGroupsResponseBodyDomainGroups = exports.DescribeDomainGroupsResponseBodyDomainGroupsDomainGroup = exports.DescribeDohSubDomainStatisticsSummaryResponseBodyStatistics = exports.DescribeDohSubDomainStatisticsResponseBodyStatistics = exports.DescribeDohDomainStatisticsSummaryResponseBodyStatistics = exports.DescribeDohDomainStatisticsResponseBodyStatistics = exports.DescribeDohAccountStatisticsResponseBodyStatistics = exports.DescribeDnsProductInstancesResponseBodyDnsProducts = exports.DescribeDnsProductInstancesResponseBodyDnsProductsDnsProduct = exports.DescribeDnsProductInstanceResponseBodyDnsServers = exports.DescribeDnsGtmMonitorConfigResponseBodyIspCityNodes = exports.DescribeDnsGtmMonitorConfigResponseBodyIspCityNodesIspCityNode = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodes = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNode = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNodeIps = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodes = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNode = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNodeIps = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodes = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNode = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNodeIps = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodes = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNode = exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNodeIps = exports.DescribeDnsGtmLogsResponseBodyLogs = exports.DescribeDnsGtmLogsResponseBodyLogsLog = exports.DescribeDnsGtmInstancesResponseBodyGtmInstances = exports.DescribeDnsGtmInstancesResponseBodyGtmInstancesUsedQuota = exports.DescribeDnsGtmInstancesResponseBodyGtmInstancesConfig = exports.DescribeDnsGtmInstancesResponseBodyGtmInstancesConfigAlertConfig = exports.DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPools = exports.DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool = exports.DescribeDnsGtmInstanceAddressPoolResponseBodyAddrs = exports.DescribeDnsGtmInstanceAddressPoolResponseBodyAddrsAddr = exports.DescribeDnsGtmInstanceResponseBodyUsedQuota = exports.DescribeDnsGtmInstanceResponseBodyConfig = exports.DescribeDnsGtmInstanceResponseBodyConfigAlertConfig = exports.DescribeDnsGtmInstanceResponseBodyConfigAlertConfigAlertConfig = exports.DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfos = exports.DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfosAttributeInfo = exports.DescribeDnsGtmAddrAttributeInfoResponseBodyAddr = exports.DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddr = exports.DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddrAttributeInfo = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv6Lines = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv4Lines = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedDomainLines = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLines = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLinesLine = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPools = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPoolsIpv6AddrPool = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPools = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPoolsIpv4AddrPool = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPools = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPoolsDomainAddrPool = exports.DescribeDnsGtmAccessStrategyResponseBodyLines = exports.DescribeDnsGtmAccessStrategyResponseBodyLinesLine = exports.DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPools = exports.DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPoolsFailoverAddrPool = exports.DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPools = exports.DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPoolsDefaultAddrPool = exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategies = exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategy = exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLines = exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine = exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPools = exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPoolsEffectiveAddrPool = exports.DescribeDnsCacheDomainsResponseBodyDomains = exports.DescribeDnsCacheDomainsResponseBodyDomainsSourceDnsServers = exports.DescribeDNSSLBSubDomainsResponseBodySlbSubDomains = exports.DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomain = exports.DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithms = exports.DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithmsLineAlgorithm = exports.DescribeCustomLinesResponseBodyCustomLines = exports.DescribeCustomLineResponseBodyIpSegmentList = exports.DescribeBatchResultDetailResponseBodyBatchResultDetails = exports.DescribeBatchResultDetailResponseBodyBatchResultDetailsBatchResultDetail = exports.AddGtmMonitorRequestIspCityNode = exports.AddGtmAddressPoolRequestIspCityNode = exports.AddGtmAddressPoolRequestAddr = exports.AddDomainResponseBodyDnsServers = exports.AddDnsGtmMonitorRequestIspCityNode = exports.AddDnsGtmAddressPoolRequestIspCityNode = exports.AddDnsGtmAddressPoolRequestAddr = exports.AddDnsGtmAccessStrategyRequestFailoverAddrPool = exports.AddDnsGtmAccessStrategyRequestDefaultAddrPool = exports.AddDnsCacheDomainRequestSourceDnsServer = exports.AddCustomLineRequestIpSegment = exports.ValidatePdnsUdpIpSegmentResponse = exports.ValidatePdnsUdpIpSegmentResponseBody = exports.ValidatePdnsUdpIpSegmentRequest = exports.ValidateDnsGtmCnameRrCanUseResponse = exports.ValidateDnsGtmCnameRrCanUseResponseBody = exports.ValidateDnsGtmCnameRrCanUseRequest = exports.UpdateIspFlushCacheInstanceConfigResponse = exports.UpdateIspFlushCacheInstanceConfigResponseBody = exports.UpdateIspFlushCacheInstanceConfigRequest = exports.UpdateGtmRecoveryPlanResponse = exports.UpdateGtmRecoveryPlanResponseBody = exports.UpdateGtmRecoveryPlanRequest = exports.UpdateGtmMonitorResponse = exports.UpdateGtmMonitorResponseBody = exports.UpdateGtmMonitorRequest = exports.UpdateGtmInstanceGlobalConfigResponse = exports.UpdateGtmInstanceGlobalConfigResponseBody = exports.UpdateGtmInstanceGlobalConfigRequest = exports.UpdateGtmAddressPoolResponse = exports.UpdateGtmAddressPoolResponseBody = exports.UpdateGtmAddressPoolRequest = exports.UpdateGtmAccessStrategyResponse = exports.UpdateGtmAccessStrategyResponseBody = exports.UpdateGtmAccessStrategyRequest = exports.UpdateDomainRemarkResponse = exports.UpdateDomainRemarkResponseBody = exports.UpdateDomainRemarkRequest = exports.UpdateDomainRecordRemarkResponse = exports.UpdateDomainRecordRemarkResponseBody = exports.UpdateDomainRecordRemarkRequest = exports.UpdateDomainRecordResponse = exports.UpdateDomainRecordResponseBody = exports.UpdateDomainRecordRequest = exports.UpdateDomainGroupResponse = exports.UpdateDomainGroupResponseBody = exports.UpdateDomainGroupRequest = exports.UpdateDnsGtmMonitorResponse = exports.UpdateDnsGtmMonitorResponseBody = exports.UpdateDnsGtmMonitorRequest = exports.UpdateDnsGtmInstanceGlobalConfigResponse = exports.UpdateDnsGtmInstanceGlobalConfigResponseBody = exports.UpdateDnsGtmInstanceGlobalConfigRequest = exports.UpdateDnsGtmAddressPoolResponse = exports.UpdateDnsGtmAddressPoolResponseBody = exports.UpdateDnsGtmAddressPoolRequest = exports.UpdateDnsGtmAccessStrategyResponse = exports.UpdateDnsGtmAccessStrategyResponseBody = exports.UpdateDnsGtmAccessStrategyRequest = exports.UpdateDnsCacheDomainRemarkResponse = exports.UpdateDnsCacheDomainRemarkResponseBody = exports.UpdateDnsCacheDomainRemarkRequest = exports.UpdateDnsCacheDomainResponse = exports.UpdateDnsCacheDomainResponseBody = exports.UpdateDnsCacheDomainRequest = exports.UpdateDNSSLBWeightResponse = exports.UpdateDNSSLBWeightResponseBody = exports.UpdateDNSSLBWeightRequest = exports.UpdateCustomLineResponse = exports.UpdateCustomLineResponseBody = exports.UpdateCustomLineRequest = exports.UpdateAppKeyStateResponse = exports.UpdateAppKeyStateResponseBody = exports.UpdateAppKeyStateRequest = exports.UntagResourcesResponse = exports.UntagResourcesResponseBody = exports.UntagResourcesRequest = exports.UnbindInstanceDomainsResponse = exports.UnbindInstanceDomainsResponseBody = exports.UnbindInstanceDomainsRequest = exports.TransferDomainResponse = exports.TransferDomainResponseBody = exports.TransferDomainRequest = exports.TagResourcesResponse = exports.TagResourcesResponseBody = exports.TagResourcesRequest = exports.SwitchDnsGtmInstanceStrategyModeResponse = exports.SwitchDnsGtmInstanceStrategyModeResponseBody = exports.SwitchDnsGtmInstanceStrategyModeRequest = exports.SubmitIspFlushCacheTaskResponse = exports.SubmitIspFlushCacheTaskResponseBody = exports.SubmitIspFlushCacheTaskRequest = exports.SetGtmMonitorStatusResponse = exports.SetGtmMonitorStatusResponseBody = exports.SetGtmMonitorStatusRequest = exports.SetGtmAccessModeResponse = exports.SetGtmAccessModeResponseBody = exports.SetGtmAccessModeRequest = exports.SetDomainRecordStatusResponse = exports.SetDomainRecordStatusResponseBody = exports.SetDomainRecordStatusRequest = exports.SetDomainDnssecStatusResponse = exports.SetDomainDnssecStatusResponseBody = exports.SetDomainDnssecStatusRequest = exports.SetDnsGtmMonitorStatusResponse = exports.SetDnsGtmMonitorStatusResponseBody = exports.SetDnsGtmMonitorStatusRequest = exports.SetDnsGtmAccessModeResponse = exports.SetDnsGtmAccessModeResponseBody = exports.SetDnsGtmAccessModeRequest = exports.SetDNSSLBStatusResponse = exports.SetDNSSLBStatusResponseBody = exports.SetDNSSLBStatusRequest = exports.RollbackGtmRecoveryPlanResponse = exports.RollbackGtmRecoveryPlanResponseBody = exports.RollbackGtmRecoveryPlanRequest = exports.RetrieveDomainResponse = exports.RetrieveDomainResponseBody = exports.RetrieveDomainRequest = exports.ResumePdnsServiceResponse = exports.ResumePdnsServiceResponseBody = exports.ResumePdnsServiceRequest = exports.RemovePdnsUdpIpSegmentResponse = exports.RemovePdnsUdpIpSegmentResponseBody = exports.RemovePdnsUdpIpSegmentRequest = exports.RemovePdnsAppKeyResponse = exports.RemovePdnsAppKeyResponseBody = exports.RemovePdnsAppKeyRequest = exports.PreviewGtmRecoveryPlanResponse = exports.PreviewGtmRecoveryPlanResponseBody = exports.PreviewGtmRecoveryPlanRequest = exports.PausePdnsServiceResponse = exports.PausePdnsServiceResponseBody = exports.PausePdnsServiceRequest = exports.OperateBatchDomainResponse = exports.OperateBatchDomainResponseBody = exports.OperateBatchDomainRequest = exports.MoveGtmResourceGroupResponse = exports.MoveGtmResourceGroupResponseBody = exports.MoveGtmResourceGroupRequest = exports.MoveDomainResourceGroupResponse = exports.MoveDomainResourceGroupResponseBody = exports.MoveDomainResourceGroupRequest = exports.ModifyHichinaDomainDNSResponse = exports.ModifyHichinaDomainDNSResponseBody = exports.ModifyHichinaDomainDNSRequest = exports.ListTagResourcesResponse = exports.ListTagResourcesResponseBody = exports.ListTagResourcesRequest = exports.GetTxtRecordForVerifyResponse = exports.GetTxtRecordForVerifyResponseBody = exports.GetTxtRecordForVerifyRequest = exports.GetMainDomainNameResponse = exports.GetMainDomainNameResponseBody = exports.GetMainDomainNameRequest = exports.ExecuteGtmRecoveryPlanResponse = exports.ExecuteGtmRecoveryPlanResponseBody = exports.ExecuteGtmRecoveryPlanRequest = exports.DescribeTransferDomainsResponse = exports.DescribeTransferDomainsResponseBody = exports.DescribeTransferDomainsRequest = exports.DescribeTagsResponse = exports.DescribeTagsResponseBody = exports.DescribeTagsRequest = exports.DescribeSupportLinesResponse = exports.DescribeSupportLinesResponseBody = exports.DescribeSupportLinesRequest = exports.DescribeSubDomainRecordsResponse = exports.DescribeSubDomainRecordsResponseBody = exports.DescribeSubDomainRecordsRequest = exports.DescribeRecordStatisticsSummaryResponse = exports.DescribeRecordStatisticsSummaryResponseBody = exports.DescribeRecordStatisticsSummaryRequest = exports.DescribeRecordStatisticsResponse = exports.DescribeRecordStatisticsResponseBody = exports.DescribeRecordStatisticsRequest = exports.DescribeRecordResolveStatisticsSummaryResponse = exports.DescribeRecordResolveStatisticsSummaryResponseBody = exports.DescribeRecordResolveStatisticsSummaryRequest = exports.DescribeRecordLogsResponse = exports.DescribeRecordLogsResponseBody = exports.DescribeRecordLogsRequest = exports.DescribePdnsUserInfoResponse = exports.DescribePdnsUserInfoResponseBody = exports.DescribePdnsUserInfoRequest = exports.DescribePdnsUdpIpSegmentsResponse = exports.DescribePdnsUdpIpSegmentsResponseBody = exports.DescribePdnsUdpIpSegmentsRequest = exports.DescribePdnsThreatStatisticsResponse = exports.DescribePdnsThreatStatisticsResponseBody = exports.DescribePdnsThreatStatisticsRequest = exports.DescribePdnsThreatStatisticResponse = exports.DescribePdnsThreatStatisticResponseBody = exports.DescribePdnsThreatStatisticRequest = exports.DescribePdnsThreatLogsResponse = exports.DescribePdnsThreatLogsResponseBody = exports.DescribePdnsThreatLogsRequest = exports.DescribePdnsRequestStatisticsResponse = exports.DescribePdnsRequestStatisticsResponseBody = exports.DescribePdnsRequestStatisticsRequest = exports.DescribePdnsRequestStatisticResponse = exports.DescribePdnsRequestStatisticResponseBody = exports.DescribePdnsRequestStatisticRequest = exports.DescribePdnsOperateLogsResponse = exports.DescribePdnsOperateLogsResponseBody = exports.DescribePdnsOperateLogsRequest = exports.DescribePdnsAppKeysResponse = exports.DescribePdnsAppKeysResponseBody = exports.DescribePdnsAppKeysRequest = exports.DescribePdnsAppKeyResponse = exports.DescribePdnsAppKeyResponseBody = exports.DescribePdnsAppKeyRequest = exports.DescribePdnsAccountSummaryResponse = exports.DescribePdnsAccountSummaryResponseBody = exports.DescribePdnsAccountSummaryRequest = exports.DescribeIspFlushCacheTasksResponse = exports.DescribeIspFlushCacheTasksResponseBody = exports.DescribeIspFlushCacheTasksRequest = exports.DescribeIspFlushCacheTaskResponse = exports.DescribeIspFlushCacheTaskResponseBody = exports.DescribeIspFlushCacheTaskRequest = exports.DescribeIspFlushCacheRemainQuotaResponse = exports.DescribeIspFlushCacheRemainQuotaResponseBody = exports.DescribeIspFlushCacheRemainQuotaRequest = exports.DescribeIspFlushCacheInstancesResponse = exports.DescribeIspFlushCacheInstancesResponseBody = exports.DescribeIspFlushCacheInstancesRequest = exports.DescribeInternetDnsLogsResponse = exports.DescribeInternetDnsLogsResponseBody = exports.DescribeInternetDnsLogsRequest = exports.DescribeInstanceDomainsResponse = exports.DescribeInstanceDomainsResponseBody = exports.DescribeInstanceDomainsRequest = exports.DescribeGtmRecoveryPlansResponse = exports.DescribeGtmRecoveryPlansResponseBody = exports.DescribeGtmRecoveryPlansRequest = exports.DescribeGtmRecoveryPlanAvailableConfigResponse = exports.DescribeGtmRecoveryPlanAvailableConfigResponseBody = exports.DescribeGtmRecoveryPlanAvailableConfigRequest = exports.DescribeGtmRecoveryPlanResponse = exports.DescribeGtmRecoveryPlanResponseBody = exports.DescribeGtmRecoveryPlanRequest = exports.DescribeGtmMonitorConfigResponse = exports.DescribeGtmMonitorConfigResponseBody = exports.DescribeGtmMonitorConfigRequest = exports.DescribeGtmMonitorAvailableConfigResponse = exports.DescribeGtmMonitorAvailableConfigResponseBody = exports.DescribeGtmMonitorAvailableConfigRequest = exports.DescribeGtmLogsResponse = exports.DescribeGtmLogsResponseBody = exports.DescribeGtmLogsRequest = exports.DescribeGtmInstancesResponse = exports.DescribeGtmInstancesResponseBody = exports.DescribeGtmInstancesRequest = exports.DescribeGtmInstanceSystemCnameResponse = exports.DescribeGtmInstanceSystemCnameResponseBody = exports.DescribeGtmInstanceSystemCnameRequest = exports.DescribeGtmInstanceStatusResponse = exports.DescribeGtmInstanceStatusResponseBody = exports.DescribeGtmInstanceStatusRequest = exports.DescribeGtmInstanceAddressPoolsResponse = exports.DescribeGtmInstanceAddressPoolsResponseBody = exports.DescribeGtmInstanceAddressPoolsRequest = exports.DescribeGtmInstanceAddressPoolResponse = exports.DescribeGtmInstanceAddressPoolResponseBody = exports.DescribeGtmInstanceAddressPoolRequest = exports.DescribeGtmInstanceResponse = exports.DescribeGtmInstanceResponseBody = exports.DescribeGtmInstanceRequest = exports.DescribeGtmAvailableAlertGroupResponse = exports.DescribeGtmAvailableAlertGroupResponseBody = exports.DescribeGtmAvailableAlertGroupRequest = exports.DescribeGtmAccessStrategyAvailableConfigResponse = exports.DescribeGtmAccessStrategyAvailableConfigResponseBody = exports.DescribeGtmAccessStrategyAvailableConfigRequest = exports.DescribeGtmAccessStrategyResponse = exports.DescribeGtmAccessStrategyResponseBody = exports.DescribeGtmAccessStrategyRequest = exports.DescribeGtmAccessStrategiesResponse = exports.DescribeGtmAccessStrategiesResponseBody = exports.DescribeGtmAccessStrategiesRequest = exports.DescribeDomainsResponse = exports.DescribeDomainsResponseBody = exports.DescribeDomainsRequest = exports.DescribeDomainStatisticsSummaryResponse = exports.DescribeDomainStatisticsSummaryResponseBody = exports.DescribeDomainStatisticsSummaryRequest = exports.DescribeDomainStatisticsResponse = exports.DescribeDomainStatisticsResponseBody = exports.DescribeDomainStatisticsRequest = exports.DescribeDomainResolveStatisticsSummaryResponse = exports.DescribeDomainResolveStatisticsSummaryResponseBody = exports.DescribeDomainResolveStatisticsSummaryRequest = exports.DescribeDomainRecordsResponse = exports.DescribeDomainRecordsResponseBody = exports.DescribeDomainRecordsRequest = exports.DescribeDomainRecordInfoResponse = exports.DescribeDomainRecordInfoResponseBody = exports.DescribeDomainRecordInfoRequest = exports.DescribeDomainNsResponse = exports.DescribeDomainNsResponseBody = exports.DescribeDomainNsRequest = exports.DescribeDomainLogsResponse = exports.DescribeDomainLogsResponseBody = exports.DescribeDomainLogsRequest = exports.DescribeDomainInfoResponse = exports.DescribeDomainInfoResponseBody = exports.DescribeDomainInfoRequest = exports.DescribeDomainGroupsResponse = exports.DescribeDomainGroupsResponseBody = exports.DescribeDomainGroupsRequest = exports.DescribeDomainDnssecInfoResponse = exports.DescribeDomainDnssecInfoResponseBody = exports.DescribeDomainDnssecInfoRequest = exports.DescribeDohUserInfoResponse = exports.DescribeDohUserInfoResponseBody = exports.DescribeDohUserInfoRequest = exports.DescribeDohSubDomainStatisticsSummaryResponse = exports.DescribeDohSubDomainStatisticsSummaryResponseBody = exports.DescribeDohSubDomainStatisticsSummaryRequest = exports.DescribeDohSubDomainStatisticsResponse = exports.DescribeDohSubDomainStatisticsResponseBody = exports.DescribeDohSubDomainStatisticsRequest = exports.DescribeDohDomainStatisticsSummaryResponse = exports.DescribeDohDomainStatisticsSummaryResponseBody = exports.DescribeDohDomainStatisticsSummaryRequest = exports.DescribeDohDomainStatisticsResponse = exports.DescribeDohDomainStatisticsResponseBody = exports.DescribeDohDomainStatisticsRequest = exports.DescribeDohAccountStatisticsResponse = exports.DescribeDohAccountStatisticsResponseBody = exports.DescribeDohAccountStatisticsRequest = exports.DescribeDnsProductInstancesResponse = exports.DescribeDnsProductInstancesResponseBody = exports.DescribeDnsProductInstancesRequest = exports.DescribeDnsProductInstanceResponse = exports.DescribeDnsProductInstanceResponseBody = exports.DescribeDnsProductInstanceRequest = exports.DescribeDnsGtmMonitorConfigResponse = exports.DescribeDnsGtmMonitorConfigResponseBody = exports.DescribeDnsGtmMonitorConfigRequest = exports.DescribeDnsGtmMonitorAvailableConfigResponse = exports.DescribeDnsGtmMonitorAvailableConfigResponseBody = exports.DescribeDnsGtmMonitorAvailableConfigRequest = exports.DescribeDnsGtmLogsResponse = exports.DescribeDnsGtmLogsResponseBody = exports.DescribeDnsGtmLogsRequest = exports.DescribeDnsGtmInstancesResponse = exports.DescribeDnsGtmInstancesResponseBody = exports.DescribeDnsGtmInstancesRequest = exports.DescribeDnsGtmInstanceSystemCnameResponse = exports.DescribeDnsGtmInstanceSystemCnameResponseBody = exports.DescribeDnsGtmInstanceSystemCnameRequest = exports.DescribeDnsGtmInstanceStatusResponse = exports.DescribeDnsGtmInstanceStatusResponseBody = exports.DescribeDnsGtmInstanceStatusRequest = exports.DescribeDnsGtmInstanceAddressPoolsResponse = exports.DescribeDnsGtmInstanceAddressPoolsResponseBody = exports.DescribeDnsGtmInstanceAddressPoolsRequest = exports.DescribeDnsGtmInstanceAddressPoolResponse = exports.DescribeDnsGtmInstanceAddressPoolResponseBody = exports.DescribeDnsGtmInstanceAddressPoolRequest = exports.DescribeDnsGtmInstanceResponse = exports.DescribeDnsGtmInstanceResponseBody = exports.DescribeDnsGtmInstanceRequest = exports.DescribeDnsGtmAvailableAlertGroupResponse = exports.DescribeDnsGtmAvailableAlertGroupResponseBody = exports.DescribeDnsGtmAvailableAlertGroupRequest = exports.DescribeDnsGtmAddressPoolAvailableConfigResponse = exports.DescribeDnsGtmAddressPoolAvailableConfigResponseBody = exports.DescribeDnsGtmAddressPoolAvailableConfigRequest = exports.DescribeDnsGtmAddrAttributeInfoResponse = exports.DescribeDnsGtmAddrAttributeInfoResponseBody = exports.DescribeDnsGtmAddrAttributeInfoRequest = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponse = exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBody = exports.DescribeDnsGtmAccessStrategyAvailableConfigRequest = exports.DescribeDnsGtmAccessStrategyResponse = exports.DescribeDnsGtmAccessStrategyResponseBody = exports.DescribeDnsGtmAccessStrategyRequest = exports.DescribeDnsGtmAccessStrategiesResponse = exports.DescribeDnsGtmAccessStrategiesResponseBody = exports.DescribeDnsGtmAccessStrategiesRequest = exports.DescribeDnsCacheDomainsResponse = exports.DescribeDnsCacheDomainsResponseBody = exports.DescribeDnsCacheDomainsRequest = exports.DescribeDNSSLBSubDomainsResponse = exports.DescribeDNSSLBSubDomainsResponseBody = exports.DescribeDNSSLBSubDomainsRequest = exports.DescribeCustomLinesResponse = exports.DescribeCustomLinesResponseBody = exports.DescribeCustomLinesRequest = exports.DescribeCustomLineResponse = exports.DescribeCustomLineResponseBody = exports.DescribeCustomLineRequest = exports.DescribeBatchResultDetailResponse = exports.DescribeBatchResultDetailResponseBody = exports.DescribeBatchResultDetailRequest = exports.DescribeBatchResultCountResponse = exports.DescribeBatchResultCountResponseBody = exports.DescribeBatchResultCountRequest = exports.DeleteSubDomainRecordsResponse = exports.DeleteSubDomainRecordsResponseBody = exports.DeleteSubDomainRecordsRequest = exports.DeleteGtmRecoveryPlanResponse = exports.DeleteGtmRecoveryPlanResponseBody = exports.DeleteGtmRecoveryPlanRequest = exports.DeleteGtmAddressPoolResponse = exports.DeleteGtmAddressPoolResponseBody = exports.DeleteGtmAddressPoolRequest = exports.DeleteGtmAccessStrategyResponse = exports.DeleteGtmAccessStrategyResponseBody = exports.DeleteGtmAccessStrategyRequest = exports.DeleteDomainRecordResponse = exports.DeleteDomainRecordResponseBody = exports.DeleteDomainRecordRequest = exports.DeleteDomainGroupResponse = exports.DeleteDomainGroupResponseBody = exports.DeleteDomainGroupRequest = exports.DeleteDomainResponse = exports.DeleteDomainResponseBody = exports.DeleteDomainRequest = exports.DeleteDnsGtmAddressPoolResponse = exports.DeleteDnsGtmAddressPoolResponseBody = exports.DeleteDnsGtmAddressPoolRequest = exports.DeleteDnsGtmAccessStrategyResponse = exports.DeleteDnsGtmAccessStrategyResponseBody = exports.DeleteDnsGtmAccessStrategyRequest = exports.DeleteDnsCacheDomainResponse = exports.DeleteDnsCacheDomainResponseBody = exports.DeleteDnsCacheDomainRequest = exports.DeleteCustomLinesResponse = exports.DeleteCustomLinesResponseBody = exports.DeleteCustomLinesRequest = exports.CreatePdnsUdpIpSegmentResponse = exports.CreatePdnsUdpIpSegmentResponseBody = exports.CreatePdnsUdpIpSegmentRequest = exports.CreatePdnsAppKeyResponse = exports.CreatePdnsAppKeyResponseBody = exports.CreatePdnsAppKeyRequest = exports.CopyGtmConfigResponse = exports.CopyGtmConfigResponseBody = exports.CopyGtmConfigRequest = exports.ChangeDomainOfDnsProductResponse = exports.ChangeDomainOfDnsProductResponseBody = exports.ChangeDomainOfDnsProductRequest = exports.ChangeDomainGroupResponse = exports.ChangeDomainGroupResponseBody = exports.ChangeDomainGroupRequest = exports.BindInstanceDomainsResponse = exports.BindInstanceDomainsResponseBody = exports.BindInstanceDomainsRequest = exports.AddGtmRecoveryPlanResponse = exports.AddGtmRecoveryPlanResponseBody = exports.AddGtmRecoveryPlanRequest = exports.AddGtmMonitorResponse = exports.AddGtmMonitorResponseBody = exports.AddGtmMonitorRequest = exports.AddGtmAddressPoolResponse = exports.AddGtmAddressPoolResponseBody = exports.AddGtmAddressPoolRequest = exports.AddGtmAccessStrategyResponse = exports.AddGtmAccessStrategyResponseBody = exports.AddGtmAccessStrategyRequest = exports.AddDomainRecordResponse = exports.AddDomainRecordResponseBody = exports.AddDomainRecordRequest = exports.AddDomainGroupResponse = exports.AddDomainGroupResponseBody = exports.AddDomainGroupRequest = exports.AddDomainBackupResponse = exports.AddDomainBackupResponseBody = exports.AddDomainBackupRequest = exports.AddDomainResponse = exports.AddDomainResponseBody = exports.AddDomainRequest = exports.AddDnsGtmMonitorResponse = exports.AddDnsGtmMonitorResponseBody = exports.AddDnsGtmMonitorRequest = exports.AddDnsGtmAddressPoolResponse = exports.AddDnsGtmAddressPoolResponseBody = exports.AddDnsGtmAddressPoolRequest = exports.AddDnsGtmAccessStrategyResponse = exports.AddDnsGtmAccessStrategyResponseBody = exports.AddDnsGtmAccessStrategyRequest = exports.AddDnsCacheDomainResponse = exports.AddDnsCacheDomainResponseBody = exports.AddDnsCacheDomainRequest = exports.AddCustomLineResponse = exports.AddCustomLineResponseBody = exports.AddCustomLineRequest = void 0;
// This file is auto-generated, don't edit it
/**
 *
 */
const tea_util_1 = __importStar(require("@alicloud/tea-util")), $Util = tea_util_1;
const openapi_client_1 = __importStar(require("@alicloud/openapi-client")), $OpenApi = openapi_client_1;
const openapi_util_1 = __importDefault(require("@alicloud/openapi-util"));
const endpoint_util_1 = __importDefault(require("@alicloud/endpoint-util"));
const $tea = __importStar(require("@alicloud/tea-typescript"));
class AddCustomLineRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            ipSegment: 'IpSegment',
            lang: 'Lang',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            domainName: 'string',
            ipSegment: { 'type': 'array', 'itemType': AddCustomLineRequestIpSegment },
            lang: 'string',
            lineName: 'string',
        };
    }
}
exports.AddCustomLineRequest = AddCustomLineRequest;
class AddCustomLineResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lineCode: 'LineCode',
            lineId: 'LineId',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            lineCode: 'string',
            lineId: 'number',
            requestId: 'string',
        };
    }
}
exports.AddCustomLineResponseBody = AddCustomLineResponseBody;
class AddCustomLineResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddCustomLineResponseBody,
        };
    }
}
exports.AddCustomLineResponse = AddCustomLineResponse;
class AddDnsCacheDomainRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cacheTtlMax: 'CacheTtlMax',
            cacheTtlMin: 'CacheTtlMin',
            domainName: 'DomainName',
            instanceId: 'InstanceId',
            lang: 'Lang',
            remark: 'Remark',
            sourceDnsServer: 'SourceDnsServer',
            sourceEdns: 'SourceEdns',
            sourceProtocol: 'SourceProtocol',
        };
    }
    static types() {
        return {
            cacheTtlMax: 'number',
            cacheTtlMin: 'number',
            domainName: 'string',
            instanceId: 'string',
            lang: 'string',
            remark: 'string',
            sourceDnsServer: { 'type': 'array', 'itemType': AddDnsCacheDomainRequestSourceDnsServer },
            sourceEdns: 'string',
            sourceProtocol: 'string',
        };
    }
}
exports.AddDnsCacheDomainRequest = AddDnsCacheDomainRequest;
class AddDnsCacheDomainResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.AddDnsCacheDomainResponseBody = AddDnsCacheDomainResponseBody;
class AddDnsCacheDomainResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddDnsCacheDomainResponseBody,
        };
    }
}
exports.AddDnsCacheDomainResponse = AddDnsCacheDomainResponse;
class AddDnsGtmAccessStrategyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            defaultAddrPool: 'DefaultAddrPool',
            defaultAddrPoolType: 'DefaultAddrPoolType',
            defaultLatencyOptimization: 'DefaultLatencyOptimization',
            defaultLbaStrategy: 'DefaultLbaStrategy',
            defaultMaxReturnAddrNum: 'DefaultMaxReturnAddrNum',
            defaultMinAvailableAddrNum: 'DefaultMinAvailableAddrNum',
            failoverAddrPool: 'FailoverAddrPool',
            failoverAddrPoolType: 'FailoverAddrPoolType',
            failoverLatencyOptimization: 'FailoverLatencyOptimization',
            failoverLbaStrategy: 'FailoverLbaStrategy',
            failoverMaxReturnAddrNum: 'FailoverMaxReturnAddrNum',
            failoverMinAvailableAddrNum: 'FailoverMinAvailableAddrNum',
            instanceId: 'InstanceId',
            lang: 'Lang',
            lines: 'Lines',
            strategyMode: 'StrategyMode',
            strategyName: 'StrategyName',
        };
    }
    static types() {
        return {
            defaultAddrPool: { 'type': 'array', 'itemType': AddDnsGtmAccessStrategyRequestDefaultAddrPool },
            defaultAddrPoolType: 'string',
            defaultLatencyOptimization: 'string',
            defaultLbaStrategy: 'string',
            defaultMaxReturnAddrNum: 'number',
            defaultMinAvailableAddrNum: 'number',
            failoverAddrPool: { 'type': 'array', 'itemType': AddDnsGtmAccessStrategyRequestFailoverAddrPool },
            failoverAddrPoolType: 'string',
            failoverLatencyOptimization: 'string',
            failoverLbaStrategy: 'string',
            failoverMaxReturnAddrNum: 'number',
            failoverMinAvailableAddrNum: 'number',
            instanceId: 'string',
            lang: 'string',
            lines: 'string',
            strategyMode: 'string',
            strategyName: 'string',
        };
    }
}
exports.AddDnsGtmAccessStrategyRequest = AddDnsGtmAccessStrategyRequest;
class AddDnsGtmAccessStrategyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            strategyId: 'StrategyId',
        };
    }
    static types() {
        return {
            requestId: 'string',
            strategyId: 'string',
        };
    }
}
exports.AddDnsGtmAccessStrategyResponseBody = AddDnsGtmAccessStrategyResponseBody;
class AddDnsGtmAccessStrategyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddDnsGtmAccessStrategyResponseBody,
        };
    }
}
exports.AddDnsGtmAccessStrategyResponse = AddDnsGtmAccessStrategyResponse;
class AddDnsGtmAddressPoolRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
            evaluationCount: 'EvaluationCount',
            instanceId: 'InstanceId',
            interval: 'Interval',
            ispCityNode: 'IspCityNode',
            lang: 'Lang',
            lbaStrategy: 'LbaStrategy',
            monitorExtendInfo: 'MonitorExtendInfo',
            monitorStatus: 'MonitorStatus',
            name: 'Name',
            protocolType: 'ProtocolType',
            timeout: 'Timeout',
            type: 'Type',
        };
    }
    static types() {
        return {
            addr: { 'type': 'array', 'itemType': AddDnsGtmAddressPoolRequestAddr },
            evaluationCount: 'number',
            instanceId: 'string',
            interval: 'number',
            ispCityNode: { 'type': 'array', 'itemType': AddDnsGtmAddressPoolRequestIspCityNode },
            lang: 'string',
            lbaStrategy: 'string',
            monitorExtendInfo: 'string',
            monitorStatus: 'string',
            name: 'string',
            protocolType: 'string',
            timeout: 'number',
            type: 'string',
        };
    }
}
exports.AddDnsGtmAddressPoolRequest = AddDnsGtmAddressPoolRequest;
class AddDnsGtmAddressPoolResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            monitorConfigId: 'MonitorConfigId',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            monitorConfigId: 'string',
            requestId: 'string',
        };
    }
}
exports.AddDnsGtmAddressPoolResponseBody = AddDnsGtmAddressPoolResponseBody;
class AddDnsGtmAddressPoolResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddDnsGtmAddressPoolResponseBody,
        };
    }
}
exports.AddDnsGtmAddressPoolResponse = AddDnsGtmAddressPoolResponse;
class AddDnsGtmMonitorRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            evaluationCount: 'EvaluationCount',
            interval: 'Interval',
            ispCityNode: 'IspCityNode',
            lang: 'Lang',
            monitorExtendInfo: 'MonitorExtendInfo',
            protocolType: 'ProtocolType',
            timeout: 'Timeout',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            evaluationCount: 'number',
            interval: 'number',
            ispCityNode: { 'type': 'array', 'itemType': AddDnsGtmMonitorRequestIspCityNode },
            lang: 'string',
            monitorExtendInfo: 'string',
            protocolType: 'string',
            timeout: 'number',
        };
    }
}
exports.AddDnsGtmMonitorRequest = AddDnsGtmMonitorRequest;
class AddDnsGtmMonitorResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            monitorConfigId: 'MonitorConfigId',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            monitorConfigId: 'string',
            requestId: 'string',
        };
    }
}
exports.AddDnsGtmMonitorResponseBody = AddDnsGtmMonitorResponseBody;
class AddDnsGtmMonitorResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddDnsGtmMonitorResponseBody,
        };
    }
}
exports.AddDnsGtmMonitorResponse = AddDnsGtmMonitorResponse;
class AddDomainRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            groupId: 'GroupId',
            lang: 'Lang',
            resourceGroupId: 'ResourceGroupId',
        };
    }
    static types() {
        return {
            domainName: 'string',
            groupId: 'string',
            lang: 'string',
            resourceGroupId: 'string',
        };
    }
}
exports.AddDomainRequest = AddDomainRequest;
class AddDomainResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsServers: 'DnsServers',
            domainId: 'DomainId',
            domainName: 'DomainName',
            groupId: 'GroupId',
            groupName: 'GroupName',
            punyCode: 'PunyCode',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            dnsServers: AddDomainResponseBodyDnsServers,
            domainId: 'string',
            domainName: 'string',
            groupId: 'string',
            groupName: 'string',
            punyCode: 'string',
            requestId: 'string',
        };
    }
}
exports.AddDomainResponseBody = AddDomainResponseBody;
class AddDomainResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddDomainResponseBody,
        };
    }
}
exports.AddDomainResponse = AddDomainResponse;
class AddDomainBackupRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            periodType: 'PeriodType',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            periodType: 'string',
        };
    }
}
exports.AddDomainBackupRequest = AddDomainBackupRequest;
class AddDomainBackupResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            periodType: 'PeriodType',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            domainName: 'string',
            periodType: 'string',
            requestId: 'string',
        };
    }
}
exports.AddDomainBackupResponseBody = AddDomainBackupResponseBody;
class AddDomainBackupResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddDomainBackupResponseBody,
        };
    }
}
exports.AddDomainBackupResponse = AddDomainBackupResponse;
class AddDomainGroupRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupName: 'GroupName',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            groupName: 'string',
            lang: 'string',
        };
    }
}
exports.AddDomainGroupRequest = AddDomainGroupRequest;
class AddDomainGroupResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupId: 'GroupId',
            groupName: 'GroupName',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            groupId: 'string',
            groupName: 'string',
            requestId: 'string',
        };
    }
}
exports.AddDomainGroupResponseBody = AddDomainGroupResponseBody;
class AddDomainGroupResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddDomainGroupResponseBody,
        };
    }
}
exports.AddDomainGroupResponse = AddDomainGroupResponse;
class AddDomainRecordRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            line: 'Line',
            priority: 'Priority',
            RR: 'RR',
            TTL: 'TTL',
            type: 'Type',
            userClientIp: 'UserClientIp',
            value: 'Value',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            line: 'string',
            priority: 'number',
            RR: 'string',
            TTL: 'number',
            type: 'string',
            userClientIp: 'string',
            value: 'string',
        };
    }
}
exports.AddDomainRecordRequest = AddDomainRecordRequest;
class AddDomainRecordResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recordId: 'RecordId',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            recordId: 'string',
            requestId: 'string',
        };
    }
}
exports.AddDomainRecordResponseBody = AddDomainRecordResponseBody;
class AddDomainRecordResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddDomainRecordResponseBody,
        };
    }
}
exports.AddDomainRecordResponse = AddDomainRecordResponse;
class AddGtmAccessStrategyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessLines: 'AccessLines',
            defaultAddrPoolId: 'DefaultAddrPoolId',
            failoverAddrPoolId: 'FailoverAddrPoolId',
            instanceId: 'InstanceId',
            lang: 'Lang',
            strategyName: 'StrategyName',
        };
    }
    static types() {
        return {
            accessLines: 'string',
            defaultAddrPoolId: 'string',
            failoverAddrPoolId: 'string',
            instanceId: 'string',
            lang: 'string',
            strategyName: 'string',
        };
    }
}
exports.AddGtmAccessStrategyRequest = AddGtmAccessStrategyRequest;
class AddGtmAccessStrategyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            strategyId: 'StrategyId',
        };
    }
    static types() {
        return {
            requestId: 'string',
            strategyId: 'string',
        };
    }
}
exports.AddGtmAccessStrategyResponseBody = AddGtmAccessStrategyResponseBody;
class AddGtmAccessStrategyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddGtmAccessStrategyResponseBody,
        };
    }
}
exports.AddGtmAccessStrategyResponse = AddGtmAccessStrategyResponse;
class AddGtmAddressPoolRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
            evaluationCount: 'EvaluationCount',
            instanceId: 'InstanceId',
            interval: 'Interval',
            ispCityNode: 'IspCityNode',
            lang: 'Lang',
            minAvailableAddrNum: 'MinAvailableAddrNum',
            monitorExtendInfo: 'MonitorExtendInfo',
            monitorStatus: 'MonitorStatus',
            name: 'Name',
            protocolType: 'ProtocolType',
            timeout: 'Timeout',
            type: 'Type',
        };
    }
    static types() {
        return {
            addr: { 'type': 'array', 'itemType': AddGtmAddressPoolRequestAddr },
            evaluationCount: 'number',
            instanceId: 'string',
            interval: 'number',
            ispCityNode: { 'type': 'array', 'itemType': AddGtmAddressPoolRequestIspCityNode },
            lang: 'string',
            minAvailableAddrNum: 'number',
            monitorExtendInfo: 'string',
            monitorStatus: 'string',
            name: 'string',
            protocolType: 'string',
            timeout: 'number',
            type: 'string',
        };
    }
}
exports.AddGtmAddressPoolRequest = AddGtmAddressPoolRequest;
class AddGtmAddressPoolResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            monitorConfigId: 'MonitorConfigId',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            monitorConfigId: 'string',
            requestId: 'string',
        };
    }
}
exports.AddGtmAddressPoolResponseBody = AddGtmAddressPoolResponseBody;
class AddGtmAddressPoolResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddGtmAddressPoolResponseBody,
        };
    }
}
exports.AddGtmAddressPoolResponse = AddGtmAddressPoolResponse;
class AddGtmMonitorRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            evaluationCount: 'EvaluationCount',
            interval: 'Interval',
            ispCityNode: 'IspCityNode',
            lang: 'Lang',
            monitorExtendInfo: 'MonitorExtendInfo',
            protocolType: 'ProtocolType',
            timeout: 'Timeout',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            evaluationCount: 'number',
            interval: 'number',
            ispCityNode: { 'type': 'array', 'itemType': AddGtmMonitorRequestIspCityNode },
            lang: 'string',
            monitorExtendInfo: 'string',
            protocolType: 'string',
            timeout: 'number',
        };
    }
}
exports.AddGtmMonitorRequest = AddGtmMonitorRequest;
class AddGtmMonitorResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            monitorConfigId: 'MonitorConfigId',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            monitorConfigId: 'string',
            requestId: 'string',
        };
    }
}
exports.AddGtmMonitorResponseBody = AddGtmMonitorResponseBody;
class AddGtmMonitorResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddGtmMonitorResponseBody,
        };
    }
}
exports.AddGtmMonitorResponse = AddGtmMonitorResponse;
class AddGtmRecoveryPlanRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            faultAddrPool: 'FaultAddrPool',
            lang: 'Lang',
            name: 'Name',
            remark: 'Remark',
        };
    }
    static types() {
        return {
            faultAddrPool: 'string',
            lang: 'string',
            name: 'string',
            remark: 'string',
        };
    }
}
exports.AddGtmRecoveryPlanRequest = AddGtmRecoveryPlanRequest;
class AddGtmRecoveryPlanResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recoveryPlanId: 'RecoveryPlanId',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            recoveryPlanId: 'string',
            requestId: 'string',
        };
    }
}
exports.AddGtmRecoveryPlanResponseBody = AddGtmRecoveryPlanResponseBody;
class AddGtmRecoveryPlanResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: AddGtmRecoveryPlanResponseBody,
        };
    }
}
exports.AddGtmRecoveryPlanResponse = AddGtmRecoveryPlanResponse;
class BindInstanceDomainsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainNames: 'DomainNames',
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            domainNames: 'string',
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.BindInstanceDomainsRequest = BindInstanceDomainsRequest;
class BindInstanceDomainsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            failedCount: 'FailedCount',
            requestId: 'RequestId',
            successCount: 'SuccessCount',
        };
    }
    static types() {
        return {
            failedCount: 'number',
            requestId: 'string',
            successCount: 'number',
        };
    }
}
exports.BindInstanceDomainsResponseBody = BindInstanceDomainsResponseBody;
class BindInstanceDomainsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: BindInstanceDomainsResponseBody,
        };
    }
}
exports.BindInstanceDomainsResponse = BindInstanceDomainsResponse;
class ChangeDomainGroupRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            groupId: 'GroupId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            domainName: 'string',
            groupId: 'string',
            lang: 'string',
        };
    }
}
exports.ChangeDomainGroupRequest = ChangeDomainGroupRequest;
class ChangeDomainGroupResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupId: 'GroupId',
            groupName: 'GroupName',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            groupId: 'string',
            groupName: 'string',
            requestId: 'string',
        };
    }
}
exports.ChangeDomainGroupResponseBody = ChangeDomainGroupResponseBody;
class ChangeDomainGroupResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: ChangeDomainGroupResponseBody,
        };
    }
}
exports.ChangeDomainGroupResponse = ChangeDomainGroupResponse;
class ChangeDomainOfDnsProductRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            force: 'Force',
            instanceId: 'InstanceId',
            lang: 'Lang',
            newDomain: 'NewDomain',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            force: 'boolean',
            instanceId: 'string',
            lang: 'string',
            newDomain: 'string',
            userClientIp: 'string',
        };
    }
}
exports.ChangeDomainOfDnsProductRequest = ChangeDomainOfDnsProductRequest;
class ChangeDomainOfDnsProductResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            originalDomain: 'OriginalDomain',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            originalDomain: 'string',
            requestId: 'string',
        };
    }
}
exports.ChangeDomainOfDnsProductResponseBody = ChangeDomainOfDnsProductResponseBody;
class ChangeDomainOfDnsProductResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: ChangeDomainOfDnsProductResponseBody,
        };
    }
}
exports.ChangeDomainOfDnsProductResponse = ChangeDomainOfDnsProductResponse;
class CopyGtmConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            copyType: 'CopyType',
            lang: 'Lang',
            sourceId: 'SourceId',
            targetId: 'TargetId',
        };
    }
    static types() {
        return {
            copyType: 'string',
            lang: 'string',
            sourceId: 'string',
            targetId: 'string',
        };
    }
}
exports.CopyGtmConfigRequest = CopyGtmConfigRequest;
class CopyGtmConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.CopyGtmConfigResponseBody = CopyGtmConfigResponseBody;
class CopyGtmConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: CopyGtmConfigResponseBody,
        };
    }
}
exports.CopyGtmConfigResponse = CopyGtmConfigResponse;
class CreatePdnsAppKeyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
        };
    }
    static types() {
        return {
            lang: 'string',
        };
    }
}
exports.CreatePdnsAppKeyRequest = CreatePdnsAppKeyRequest;
class CreatePdnsAppKeyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.CreatePdnsAppKeyResponseBody = CreatePdnsAppKeyResponseBody;
class CreatePdnsAppKeyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: CreatePdnsAppKeyResponseBody,
        };
    }
}
exports.CreatePdnsAppKeyResponse = CreatePdnsAppKeyResponse;
class CreatePdnsUdpIpSegmentRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ip: 'Ip',
            lang: 'Lang',
            name: 'Name',
        };
    }
    static types() {
        return {
            ip: 'string',
            lang: 'string',
            name: 'string',
        };
    }
}
exports.CreatePdnsUdpIpSegmentRequest = CreatePdnsUdpIpSegmentRequest;
class CreatePdnsUdpIpSegmentResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            validMessage: 'ValidMessage',
        };
    }
    static types() {
        return {
            requestId: 'string',
            validMessage: 'string',
        };
    }
}
exports.CreatePdnsUdpIpSegmentResponseBody = CreatePdnsUdpIpSegmentResponseBody;
class CreatePdnsUdpIpSegmentResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: CreatePdnsUdpIpSegmentResponseBody,
        };
    }
}
exports.CreatePdnsUdpIpSegmentResponse = CreatePdnsUdpIpSegmentResponse;
class DeleteCustomLinesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            lineIds: 'LineIds',
        };
    }
    static types() {
        return {
            lang: 'string',
            lineIds: 'string',
        };
    }
}
exports.DeleteCustomLinesRequest = DeleteCustomLinesRequest;
class DeleteCustomLinesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.DeleteCustomLinesResponseBody = DeleteCustomLinesResponseBody;
class DeleteCustomLinesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteCustomLinesResponseBody,
        };
    }
}
exports.DeleteCustomLinesResponse = DeleteCustomLinesResponse;
class DeleteDnsCacheDomainRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
        };
    }
}
exports.DeleteDnsCacheDomainRequest = DeleteDnsCacheDomainRequest;
class DeleteDnsCacheDomainResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.DeleteDnsCacheDomainResponseBody = DeleteDnsCacheDomainResponseBody;
class DeleteDnsCacheDomainResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteDnsCacheDomainResponseBody,
        };
    }
}
exports.DeleteDnsCacheDomainResponse = DeleteDnsCacheDomainResponse;
class DeleteDnsGtmAccessStrategyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            strategyId: 'StrategyId',
        };
    }
    static types() {
        return {
            lang: 'string',
            strategyId: 'string',
        };
    }
}
exports.DeleteDnsGtmAccessStrategyRequest = DeleteDnsGtmAccessStrategyRequest;
class DeleteDnsGtmAccessStrategyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.DeleteDnsGtmAccessStrategyResponseBody = DeleteDnsGtmAccessStrategyResponseBody;
class DeleteDnsGtmAccessStrategyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteDnsGtmAccessStrategyResponseBody,
        };
    }
}
exports.DeleteDnsGtmAccessStrategyResponse = DeleteDnsGtmAccessStrategyResponse;
class DeleteDnsGtmAddressPoolRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            lang: 'string',
        };
    }
}
exports.DeleteDnsGtmAddressPoolRequest = DeleteDnsGtmAddressPoolRequest;
class DeleteDnsGtmAddressPoolResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.DeleteDnsGtmAddressPoolResponseBody = DeleteDnsGtmAddressPoolResponseBody;
class DeleteDnsGtmAddressPoolResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteDnsGtmAddressPoolResponseBody,
        };
    }
}
exports.DeleteDnsGtmAddressPoolResponse = DeleteDnsGtmAddressPoolResponse;
class DeleteDomainRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
        };
    }
}
exports.DeleteDomainRequest = DeleteDomainRequest;
class DeleteDomainResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            domainName: 'string',
            requestId: 'string',
        };
    }
}
exports.DeleteDomainResponseBody = DeleteDomainResponseBody;
class DeleteDomainResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteDomainResponseBody,
        };
    }
}
exports.DeleteDomainResponse = DeleteDomainResponse;
class DeleteDomainGroupRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupId: 'GroupId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            groupId: 'string',
            lang: 'string',
        };
    }
}
exports.DeleteDomainGroupRequest = DeleteDomainGroupRequest;
class DeleteDomainGroupResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupName: 'GroupName',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            groupName: 'string',
            requestId: 'string',
        };
    }
}
exports.DeleteDomainGroupResponseBody = DeleteDomainGroupResponseBody;
class DeleteDomainGroupResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteDomainGroupResponseBody,
        };
    }
}
exports.DeleteDomainGroupResponse = DeleteDomainGroupResponse;
class DeleteDomainRecordRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            recordId: 'RecordId',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            lang: 'string',
            recordId: 'string',
            userClientIp: 'string',
        };
    }
}
exports.DeleteDomainRecordRequest = DeleteDomainRecordRequest;
class DeleteDomainRecordResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recordId: 'RecordId',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            recordId: 'string',
            requestId: 'string',
        };
    }
}
exports.DeleteDomainRecordResponseBody = DeleteDomainRecordResponseBody;
class DeleteDomainRecordResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteDomainRecordResponseBody,
        };
    }
}
exports.DeleteDomainRecordResponse = DeleteDomainRecordResponse;
class DeleteGtmAccessStrategyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            strategyId: 'StrategyId',
        };
    }
    static types() {
        return {
            lang: 'string',
            strategyId: 'string',
        };
    }
}
exports.DeleteGtmAccessStrategyRequest = DeleteGtmAccessStrategyRequest;
class DeleteGtmAccessStrategyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.DeleteGtmAccessStrategyResponseBody = DeleteGtmAccessStrategyResponseBody;
class DeleteGtmAccessStrategyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteGtmAccessStrategyResponseBody,
        };
    }
}
exports.DeleteGtmAccessStrategyResponse = DeleteGtmAccessStrategyResponse;
class DeleteGtmAddressPoolRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            lang: 'string',
        };
    }
}
exports.DeleteGtmAddressPoolRequest = DeleteGtmAddressPoolRequest;
class DeleteGtmAddressPoolResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.DeleteGtmAddressPoolResponseBody = DeleteGtmAddressPoolResponseBody;
class DeleteGtmAddressPoolResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteGtmAddressPoolResponseBody,
        };
    }
}
exports.DeleteGtmAddressPoolResponse = DeleteGtmAddressPoolResponse;
class DeleteGtmRecoveryPlanRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            recoveryPlanId: 'RecoveryPlanId',
        };
    }
    static types() {
        return {
            lang: 'string',
            recoveryPlanId: 'number',
        };
    }
}
exports.DeleteGtmRecoveryPlanRequest = DeleteGtmRecoveryPlanRequest;
class DeleteGtmRecoveryPlanResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.DeleteGtmRecoveryPlanResponseBody = DeleteGtmRecoveryPlanResponseBody;
class DeleteGtmRecoveryPlanResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteGtmRecoveryPlanResponseBody,
        };
    }
}
exports.DeleteGtmRecoveryPlanResponse = DeleteGtmRecoveryPlanResponse;
class DeleteSubDomainRecordsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            RR: 'RR',
            type: 'Type',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            RR: 'string',
            type: 'string',
            userClientIp: 'string',
        };
    }
}
exports.DeleteSubDomainRecordsRequest = DeleteSubDomainRecordsRequest;
class DeleteSubDomainRecordsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            RR: 'RR',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            RR: 'string',
            requestId: 'string',
            totalCount: 'string',
        };
    }
}
exports.DeleteSubDomainRecordsResponseBody = DeleteSubDomainRecordsResponseBody;
class DeleteSubDomainRecordsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DeleteSubDomainRecordsResponseBody,
        };
    }
}
exports.DeleteSubDomainRecordsResponse = DeleteSubDomainRecordsResponse;
class DescribeBatchResultCountRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            batchType: 'BatchType',
            lang: 'Lang',
            taskId: 'TaskId',
        };
    }
    static types() {
        return {
            batchType: 'string',
            lang: 'string',
            taskId: 'number',
        };
    }
}
exports.DescribeBatchResultCountRequest = DescribeBatchResultCountRequest;
class DescribeBatchResultCountResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            batchType: 'BatchType',
            failedCount: 'FailedCount',
            reason: 'Reason',
            requestId: 'RequestId',
            status: 'Status',
            successCount: 'SuccessCount',
            taskId: 'TaskId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            batchType: 'string',
            failedCount: 'number',
            reason: 'string',
            requestId: 'string',
            status: 'number',
            successCount: 'number',
            taskId: 'number',
            totalCount: 'number',
        };
    }
}
exports.DescribeBatchResultCountResponseBody = DescribeBatchResultCountResponseBody;
class DescribeBatchResultCountResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeBatchResultCountResponseBody,
        };
    }
}
exports.DescribeBatchResultCountResponse = DescribeBatchResultCountResponse;
class DescribeBatchResultDetailRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            batchType: 'BatchType',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            status: 'Status',
            taskId: 'TaskId',
        };
    }
    static types() {
        return {
            batchType: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            status: 'string',
            taskId: 'number',
        };
    }
}
exports.DescribeBatchResultDetailRequest = DescribeBatchResultDetailRequest;
class DescribeBatchResultDetailResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            batchResultDetails: 'BatchResultDetails',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            batchResultDetails: DescribeBatchResultDetailResponseBodyBatchResultDetails,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeBatchResultDetailResponseBody = DescribeBatchResultDetailResponseBody;
class DescribeBatchResultDetailResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeBatchResultDetailResponseBody,
        };
    }
}
exports.DescribeBatchResultDetailResponse = DescribeBatchResultDetailResponse;
class DescribeCustomLineRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            lineId: 'LineId',
        };
    }
    static types() {
        return {
            lang: 'string',
            lineId: 'number',
        };
    }
}
exports.DescribeCustomLineRequest = DescribeCustomLineRequest;
class DescribeCustomLineResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            code: 'Code',
            domainName: 'DomainName',
            id: 'Id',
            ipSegmentList: 'IpSegmentList',
            name: 'Name',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            code: 'string',
            domainName: 'string',
            id: 'number',
            ipSegmentList: { 'type': 'array', 'itemType': DescribeCustomLineResponseBodyIpSegmentList },
            name: 'string',
            requestId: 'string',
        };
    }
}
exports.DescribeCustomLineResponseBody = DescribeCustomLineResponseBody;
class DescribeCustomLineResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeCustomLineResponseBody,
        };
    }
}
exports.DescribeCustomLineResponse = DescribeCustomLineResponse;
class DescribeCustomLinesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribeCustomLinesRequest = DescribeCustomLinesRequest;
class DescribeCustomLinesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            customLines: 'CustomLines',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            customLines: { 'type': 'array', 'itemType': DescribeCustomLinesResponseBodyCustomLines },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeCustomLinesResponseBody = DescribeCustomLinesResponseBody;
class DescribeCustomLinesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeCustomLinesResponseBody,
        };
    }
}
exports.DescribeCustomLinesResponse = DescribeCustomLinesResponse;
class DescribeDNSSLBSubDomainsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            rr: 'Rr',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            rr: 'string',
            userClientIp: 'string',
        };
    }
}
exports.DescribeDNSSLBSubDomainsRequest = DescribeDNSSLBSubDomainsRequest;
class DescribeDNSSLBSubDomainsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            slbSubDomains: 'SlbSubDomains',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            slbSubDomains: DescribeDNSSLBSubDomainsResponseBodySlbSubDomains,
            totalCount: 'number',
        };
    }
}
exports.DescribeDNSSLBSubDomainsResponseBody = DescribeDNSSLBSubDomainsResponseBody;
class DescribeDNSSLBSubDomainsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDNSSLBSubDomainsResponseBody,
        };
    }
}
exports.DescribeDNSSLBSubDomainsResponse = DescribeDNSSLBSubDomainsResponse;
class DescribeDnsCacheDomainsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribeDnsCacheDomainsRequest = DescribeDnsCacheDomainsRequest;
class DescribeDnsCacheDomainsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domains: 'Domains',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            domains: { 'type': 'array', 'itemType': DescribeDnsCacheDomainsResponseBodyDomains },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeDnsCacheDomainsResponseBody = DescribeDnsCacheDomainsResponseBody;
class DescribeDnsCacheDomainsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsCacheDomainsResponseBody,
        };
    }
}
exports.DescribeDnsCacheDomainsResponse = DescribeDnsCacheDomainsResponse;
class DescribeDnsGtmAccessStrategiesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            strategyMode: 'StrategyMode',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            strategyMode: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategiesRequest = DescribeDnsGtmAccessStrategiesRequest;
class DescribeDnsGtmAccessStrategiesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            strategies: 'Strategies',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            strategies: DescribeDnsGtmAccessStrategiesResponseBodyStrategies,
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeDnsGtmAccessStrategiesResponseBody = DescribeDnsGtmAccessStrategiesResponseBody;
class DescribeDnsGtmAccessStrategiesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmAccessStrategiesResponseBody,
        };
    }
}
exports.DescribeDnsGtmAccessStrategiesResponse = DescribeDnsGtmAccessStrategiesResponse;
class DescribeDnsGtmAccessStrategyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            strategyId: 'StrategyId',
        };
    }
    static types() {
        return {
            lang: 'string',
            strategyId: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyRequest = DescribeDnsGtmAccessStrategyRequest;
class DescribeDnsGtmAccessStrategyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessMode: 'AccessMode',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            defaultAddrPoolGroupStatus: 'DefaultAddrPoolGroupStatus',
            defaultAddrPoolType: 'DefaultAddrPoolType',
            defaultAddrPools: 'DefaultAddrPools',
            defaultAvailableAddrNum: 'DefaultAvailableAddrNum',
            defaultLatencyOptimization: 'DefaultLatencyOptimization',
            defaultLbaStrategy: 'DefaultLbaStrategy',
            defaultMaxReturnAddrNum: 'DefaultMaxReturnAddrNum',
            defaultMinAvailableAddrNum: 'DefaultMinAvailableAddrNum',
            effectiveAddrPoolGroupType: 'EffectiveAddrPoolGroupType',
            failoverAddrPoolGroupStatus: 'FailoverAddrPoolGroupStatus',
            failoverAddrPoolType: 'FailoverAddrPoolType',
            failoverAddrPools: 'FailoverAddrPools',
            failoverAvailableAddrNum: 'FailoverAvailableAddrNum',
            failoverLatencyOptimization: 'FailoverLatencyOptimization',
            failoverLbaStrategy: 'FailoverLbaStrategy',
            failoverMaxReturnAddrNum: 'FailoverMaxReturnAddrNum',
            failoverMinAvailableAddrNum: 'FailoverMinAvailableAddrNum',
            instanceId: 'InstanceId',
            lines: 'Lines',
            requestId: 'RequestId',
            strategyId: 'StrategyId',
            strategyMode: 'StrategyMode',
            strategyName: 'StrategyName',
        };
    }
    static types() {
        return {
            accessMode: 'string',
            createTime: 'string',
            createTimestamp: 'number',
            defaultAddrPoolGroupStatus: 'string',
            defaultAddrPoolType: 'string',
            defaultAddrPools: DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPools,
            defaultAvailableAddrNum: 'number',
            defaultLatencyOptimization: 'string',
            defaultLbaStrategy: 'string',
            defaultMaxReturnAddrNum: 'number',
            defaultMinAvailableAddrNum: 'number',
            effectiveAddrPoolGroupType: 'string',
            failoverAddrPoolGroupStatus: 'string',
            failoverAddrPoolType: 'string',
            failoverAddrPools: DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPools,
            failoverAvailableAddrNum: 'number',
            failoverLatencyOptimization: 'string',
            failoverLbaStrategy: 'string',
            failoverMaxReturnAddrNum: 'number',
            failoverMinAvailableAddrNum: 'number',
            instanceId: 'string',
            lines: DescribeDnsGtmAccessStrategyResponseBodyLines,
            requestId: 'string',
            strategyId: 'string',
            strategyMode: 'string',
            strategyName: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyResponseBody = DescribeDnsGtmAccessStrategyResponseBody;
class DescribeDnsGtmAccessStrategyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmAccessStrategyResponseBody,
        };
    }
}
exports.DescribeDnsGtmAccessStrategyResponse = DescribeDnsGtmAccessStrategyResponse;
class DescribeDnsGtmAccessStrategyAvailableConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
            strategyMode: 'StrategyMode',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
            strategyMode: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigRequest = DescribeDnsGtmAccessStrategyAvailableConfigRequest;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainAddrPools: 'DomainAddrPools',
            ipv4AddrPools: 'Ipv4AddrPools',
            ipv6AddrPools: 'Ipv6AddrPools',
            lines: 'Lines',
            requestId: 'RequestId',
            selectedDomainLines: 'SelectedDomainLines',
            selectedIpv4Lines: 'SelectedIpv4Lines',
            selectedIpv6Lines: 'SelectedIpv6Lines',
            suggestSetDefaultLine: 'SuggestSetDefaultLine',
        };
    }
    static types() {
        return {
            domainAddrPools: DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPools,
            ipv4AddrPools: DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPools,
            ipv6AddrPools: DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPools,
            lines: DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLines,
            requestId: 'string',
            selectedDomainLines: DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedDomainLines,
            selectedIpv4Lines: DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv4Lines,
            selectedIpv6Lines: DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv6Lines,
            suggestSetDefaultLine: 'boolean',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBody = DescribeDnsGtmAccessStrategyAvailableConfigResponseBody;
class DescribeDnsGtmAccessStrategyAvailableConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmAccessStrategyAvailableConfigResponseBody,
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponse = DescribeDnsGtmAccessStrategyAvailableConfigResponse;
class DescribeDnsGtmAddrAttributeInfoRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrs: 'Addrs',
            lang: 'Lang',
            type: 'Type',
        };
    }
    static types() {
        return {
            addrs: 'string',
            lang: 'string',
            type: 'string',
        };
    }
}
exports.DescribeDnsGtmAddrAttributeInfoRequest = DescribeDnsGtmAddrAttributeInfoRequest;
class DescribeDnsGtmAddrAttributeInfoResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            addr: DescribeDnsGtmAddrAttributeInfoResponseBodyAddr,
            requestId: 'string',
        };
    }
}
exports.DescribeDnsGtmAddrAttributeInfoResponseBody = DescribeDnsGtmAddrAttributeInfoResponseBody;
class DescribeDnsGtmAddrAttributeInfoResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmAddrAttributeInfoResponseBody,
        };
    }
}
exports.DescribeDnsGtmAddrAttributeInfoResponse = DescribeDnsGtmAddrAttributeInfoResponse;
class DescribeDnsGtmAddressPoolAvailableConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeDnsGtmAddressPoolAvailableConfigRequest = DescribeDnsGtmAddressPoolAvailableConfigRequest;
class DescribeDnsGtmAddressPoolAvailableConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            attributeInfos: 'AttributeInfos',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            attributeInfos: DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfos,
            requestId: 'string',
        };
    }
}
exports.DescribeDnsGtmAddressPoolAvailableConfigResponseBody = DescribeDnsGtmAddressPoolAvailableConfigResponseBody;
class DescribeDnsGtmAddressPoolAvailableConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmAddressPoolAvailableConfigResponseBody,
        };
    }
}
exports.DescribeDnsGtmAddressPoolAvailableConfigResponse = DescribeDnsGtmAddressPoolAvailableConfigResponse;
class DescribeDnsGtmAvailableAlertGroupRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
        };
    }
    static types() {
        return {
            lang: 'string',
        };
    }
}
exports.DescribeDnsGtmAvailableAlertGroupRequest = DescribeDnsGtmAvailableAlertGroupRequest;
class DescribeDnsGtmAvailableAlertGroupResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            availableAlertGroup: 'AvailableAlertGroup',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            availableAlertGroup: 'string',
            requestId: 'string',
        };
    }
}
exports.DescribeDnsGtmAvailableAlertGroupResponseBody = DescribeDnsGtmAvailableAlertGroupResponseBody;
class DescribeDnsGtmAvailableAlertGroupResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmAvailableAlertGroupResponseBody,
        };
    }
}
exports.DescribeDnsGtmAvailableAlertGroupResponse = DescribeDnsGtmAvailableAlertGroupResponse;
class DescribeDnsGtmInstanceRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeDnsGtmInstanceRequest = DescribeDnsGtmInstanceRequest;
class DescribeDnsGtmInstanceResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            config: 'Config',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            expireTime: 'ExpireTime',
            expireTimestamp: 'ExpireTimestamp',
            instanceId: 'InstanceId',
            paymentType: 'PaymentType',
            requestId: 'RequestId',
            resourceGroupId: 'ResourceGroupId',
            smsQuota: 'SmsQuota',
            taskQuota: 'TaskQuota',
            usedQuota: 'UsedQuota',
            versionCode: 'VersionCode',
        };
    }
    static types() {
        return {
            config: DescribeDnsGtmInstanceResponseBodyConfig,
            createTime: 'string',
            createTimestamp: 'number',
            expireTime: 'string',
            expireTimestamp: 'number',
            instanceId: 'string',
            paymentType: 'string',
            requestId: 'string',
            resourceGroupId: 'string',
            smsQuota: 'number',
            taskQuota: 'number',
            usedQuota: DescribeDnsGtmInstanceResponseBodyUsedQuota,
            versionCode: 'string',
        };
    }
}
exports.DescribeDnsGtmInstanceResponseBody = DescribeDnsGtmInstanceResponseBody;
class DescribeDnsGtmInstanceResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmInstanceResponseBody,
        };
    }
}
exports.DescribeDnsGtmInstanceResponse = DescribeDnsGtmInstanceResponse;
class DescribeDnsGtmInstanceAddressPoolRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolRequest = DescribeDnsGtmInstanceAddressPoolRequest;
class DescribeDnsGtmInstanceAddressPoolResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            addrPoolId: 'AddrPoolId',
            addrs: 'Addrs',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            lbaStrategy: 'LbaStrategy',
            monitorConfigId: 'MonitorConfigId',
            monitorStatus: 'MonitorStatus',
            name: 'Name',
            requestId: 'RequestId',
            type: 'Type',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            addrPoolId: 'string',
            addrs: DescribeDnsGtmInstanceAddressPoolResponseBodyAddrs,
            createTime: 'string',
            createTimestamp: 'number',
            lbaStrategy: 'string',
            monitorConfigId: 'string',
            monitorStatus: 'string',
            name: 'string',
            requestId: 'string',
            type: 'string',
            updateTime: 'string',
            updateTimestamp: 'number',
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolResponseBody = DescribeDnsGtmInstanceAddressPoolResponseBody;
class DescribeDnsGtmInstanceAddressPoolResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmInstanceAddressPoolResponseBody,
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolResponse = DescribeDnsGtmInstanceAddressPoolResponse;
class DescribeDnsGtmInstanceAddressPoolsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolsRequest = DescribeDnsGtmInstanceAddressPoolsRequest;
class DescribeDnsGtmInstanceAddressPoolsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPools: 'AddrPools',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            addrPools: DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPools,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolsResponseBody = DescribeDnsGtmInstanceAddressPoolsResponseBody;
class DescribeDnsGtmInstanceAddressPoolsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmInstanceAddressPoolsResponseBody,
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolsResponse = DescribeDnsGtmInstanceAddressPoolsResponse;
class DescribeDnsGtmInstanceStatusRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeDnsGtmInstanceStatusRequest = DescribeDnsGtmInstanceStatusRequest;
class DescribeDnsGtmInstanceStatusResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrAvailableNum: 'AddrAvailableNum',
            addrNotAvailableNum: 'AddrNotAvailableNum',
            addrPoolGroupNotAvailableNum: 'AddrPoolGroupNotAvailableNum',
            requestId: 'RequestId',
            strategyNotAvailableNum: 'StrategyNotAvailableNum',
            switchToFailoverStrategyNum: 'SwitchToFailoverStrategyNum',
        };
    }
    static types() {
        return {
            addrAvailableNum: 'number',
            addrNotAvailableNum: 'number',
            addrPoolGroupNotAvailableNum: 'number',
            requestId: 'string',
            strategyNotAvailableNum: 'number',
            switchToFailoverStrategyNum: 'number',
        };
    }
}
exports.DescribeDnsGtmInstanceStatusResponseBody = DescribeDnsGtmInstanceStatusResponseBody;
class DescribeDnsGtmInstanceStatusResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmInstanceStatusResponseBody,
        };
    }
}
exports.DescribeDnsGtmInstanceStatusResponse = DescribeDnsGtmInstanceStatusResponse;
class DescribeDnsGtmInstanceSystemCnameRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeDnsGtmInstanceSystemCnameRequest = DescribeDnsGtmInstanceSystemCnameRequest;
class DescribeDnsGtmInstanceSystemCnameResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            systemCname: 'SystemCname',
        };
    }
    static types() {
        return {
            requestId: 'string',
            systemCname: 'string',
        };
    }
}
exports.DescribeDnsGtmInstanceSystemCnameResponseBody = DescribeDnsGtmInstanceSystemCnameResponseBody;
class DescribeDnsGtmInstanceSystemCnameResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmInstanceSystemCnameResponseBody,
        };
    }
}
exports.DescribeDnsGtmInstanceSystemCnameResponse = DescribeDnsGtmInstanceSystemCnameResponse;
class DescribeDnsGtmInstancesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            resourceGroupId: 'ResourceGroupId',
        };
    }
    static types() {
        return {
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            resourceGroupId: 'string',
        };
    }
}
exports.DescribeDnsGtmInstancesRequest = DescribeDnsGtmInstancesRequest;
class DescribeDnsGtmInstancesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            gtmInstances: 'GtmInstances',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            gtmInstances: { 'type': 'array', 'itemType': DescribeDnsGtmInstancesResponseBodyGtmInstances },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeDnsGtmInstancesResponseBody = DescribeDnsGtmInstancesResponseBody;
class DescribeDnsGtmInstancesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmInstancesResponseBody,
        };
    }
}
exports.DescribeDnsGtmInstancesResponse = DescribeDnsGtmInstancesResponse;
class DescribeDnsGtmLogsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endTimestamp: 'EndTimestamp',
            instanceId: 'InstanceId',
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startTimestamp: 'StartTimestamp',
        };
    }
    static types() {
        return {
            endTimestamp: 'number',
            instanceId: 'string',
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startTimestamp: 'number',
        };
    }
}
exports.DescribeDnsGtmLogsRequest = DescribeDnsGtmLogsRequest;
class DescribeDnsGtmLogsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            logs: 'Logs',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            logs: DescribeDnsGtmLogsResponseBodyLogs,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeDnsGtmLogsResponseBody = DescribeDnsGtmLogsResponseBody;
class DescribeDnsGtmLogsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmLogsResponseBody,
        };
    }
}
exports.DescribeDnsGtmLogsResponse = DescribeDnsGtmLogsResponse;
class DescribeDnsGtmMonitorAvailableConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
        };
    }
    static types() {
        return {
            lang: 'string',
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigRequest = DescribeDnsGtmMonitorAvailableConfigRequest;
class DescribeDnsGtmMonitorAvailableConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainIpv4IspCityNodes: 'DomainIpv4IspCityNodes',
            domainIpv6IspCityNodes: 'DomainIpv6IspCityNodes',
            ipv4IspCityNodes: 'Ipv4IspCityNodes',
            ipv6IspCityNodes: 'Ipv6IspCityNodes',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            domainIpv4IspCityNodes: DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodes,
            domainIpv6IspCityNodes: DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodes,
            ipv4IspCityNodes: DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodes,
            ipv6IspCityNodes: DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodes,
            requestId: 'string',
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBody = DescribeDnsGtmMonitorAvailableConfigResponseBody;
class DescribeDnsGtmMonitorAvailableConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmMonitorAvailableConfigResponseBody,
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponse = DescribeDnsGtmMonitorAvailableConfigResponse;
class DescribeDnsGtmMonitorConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            monitorConfigId: 'MonitorConfigId',
        };
    }
    static types() {
        return {
            lang: 'string',
            monitorConfigId: 'string',
        };
    }
}
exports.DescribeDnsGtmMonitorConfigRequest = DescribeDnsGtmMonitorConfigRequest;
class DescribeDnsGtmMonitorConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            evaluationCount: 'EvaluationCount',
            interval: 'Interval',
            ispCityNodes: 'IspCityNodes',
            monitorConfigId: 'MonitorConfigId',
            monitorExtendInfo: 'MonitorExtendInfo',
            protocolType: 'ProtocolType',
            requestId: 'RequestId',
            timeout: 'Timeout',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
        };
    }
    static types() {
        return {
            createTime: 'string',
            createTimestamp: 'number',
            evaluationCount: 'number',
            interval: 'number',
            ispCityNodes: DescribeDnsGtmMonitorConfigResponseBodyIspCityNodes,
            monitorConfigId: 'string',
            monitorExtendInfo: 'string',
            protocolType: 'string',
            requestId: 'string',
            timeout: 'number',
            updateTime: 'string',
            updateTimestamp: 'number',
        };
    }
}
exports.DescribeDnsGtmMonitorConfigResponseBody = DescribeDnsGtmMonitorConfigResponseBody;
class DescribeDnsGtmMonitorConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsGtmMonitorConfigResponseBody,
        };
    }
}
exports.DescribeDnsGtmMonitorConfigResponse = DescribeDnsGtmMonitorConfigResponse;
class DescribeDnsProductInstanceRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
            userClientIp: 'string',
        };
    }
}
exports.DescribeDnsProductInstanceRequest = DescribeDnsProductInstanceRequest;
class DescribeDnsProductInstanceResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            autoRenewal: 'AutoRenewal',
            bindCount: 'BindCount',
            bindDomainCount: 'BindDomainCount',
            bindDomainUsedCount: 'BindDomainUsedCount',
            bindUsedCount: 'BindUsedCount',
            DDosDefendFlow: 'DDosDefendFlow',
            DDosDefendQuery: 'DDosDefendQuery',
            dnsSLBCount: 'DnsSLBCount',
            dnsSecurity: 'DnsSecurity',
            dnsServers: 'DnsServers',
            domain: 'Domain',
            domainType: 'DomainType',
            endTime: 'EndTime',
            endTimestamp: 'EndTimestamp',
            gslb: 'Gslb',
            ISPLines: 'ISPLines',
            ISPRegionLines: 'ISPRegionLines',
            inBlackHole: 'InBlackHole',
            inClean: 'InClean',
            instanceId: 'InstanceId',
            monitorFrequency: 'MonitorFrequency',
            monitorNodeCount: 'MonitorNodeCount',
            monitorTaskCount: 'MonitorTaskCount',
            overseaDDosDefendFlow: 'OverseaDDosDefendFlow',
            overseaLine: 'OverseaLine',
            paymentType: 'PaymentType',
            regionLines: 'RegionLines',
            requestId: 'RequestId',
            searchEngineLines: 'SearchEngineLines',
            startTime: 'StartTime',
            startTimestamp: 'StartTimestamp',
            subDomainLevel: 'SubDomainLevel',
            TTLMinValue: 'TTLMinValue',
            URLForwardCount: 'URLForwardCount',
            versionCode: 'VersionCode',
            versionName: 'VersionName',
        };
    }
    static types() {
        return {
            autoRenewal: 'boolean',
            bindCount: 'number',
            bindDomainCount: 'number',
            bindDomainUsedCount: 'number',
            bindUsedCount: 'number',
            DDosDefendFlow: 'number',
            DDosDefendQuery: 'number',
            dnsSLBCount: 'number',
            dnsSecurity: 'string',
            dnsServers: DescribeDnsProductInstanceResponseBodyDnsServers,
            domain: 'string',
            domainType: 'string',
            endTime: 'string',
            endTimestamp: 'number',
            gslb: 'boolean',
            ISPLines: 'string',
            ISPRegionLines: 'string',
            inBlackHole: 'boolean',
            inClean: 'boolean',
            instanceId: 'string',
            monitorFrequency: 'number',
            monitorNodeCount: 'number',
            monitorTaskCount: 'number',
            overseaDDosDefendFlow: 'number',
            overseaLine: 'string',
            paymentType: 'string',
            regionLines: 'boolean',
            requestId: 'string',
            searchEngineLines: 'string',
            startTime: 'string',
            startTimestamp: 'number',
            subDomainLevel: 'number',
            TTLMinValue: 'number',
            URLForwardCount: 'number',
            versionCode: 'string',
            versionName: 'string',
        };
    }
}
exports.DescribeDnsProductInstanceResponseBody = DescribeDnsProductInstanceResponseBody;
class DescribeDnsProductInstanceResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsProductInstanceResponseBody,
        };
    }
}
exports.DescribeDnsProductInstanceResponse = DescribeDnsProductInstanceResponse;
class DescribeDnsProductInstancesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            direction: 'Direction',
            domainType: 'DomainType',
            lang: 'Lang',
            orderBy: 'OrderBy',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            userClientIp: 'UserClientIp',
            versionCode: 'VersionCode',
        };
    }
    static types() {
        return {
            direction: 'string',
            domainType: 'string',
            lang: 'string',
            orderBy: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            userClientIp: 'string',
            versionCode: 'string',
        };
    }
}
exports.DescribeDnsProductInstancesRequest = DescribeDnsProductInstancesRequest;
class DescribeDnsProductInstancesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsProducts: 'DnsProducts',
            domainType: 'DomainType',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            dnsProducts: DescribeDnsProductInstancesResponseBodyDnsProducts,
            domainType: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeDnsProductInstancesResponseBody = DescribeDnsProductInstancesResponseBody;
class DescribeDnsProductInstancesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDnsProductInstancesResponseBody,
        };
    }
}
exports.DescribeDnsProductInstancesResponse = DescribeDnsProductInstancesResponse;
class DescribeDohAccountStatisticsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endDate: 'EndDate',
            lang: 'Lang',
            startDate: 'StartDate',
        };
    }
    static types() {
        return {
            endDate: 'string',
            lang: 'string',
            startDate: 'string',
        };
    }
}
exports.DescribeDohAccountStatisticsRequest = DescribeDohAccountStatisticsRequest;
class DescribeDohAccountStatisticsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            statistics: 'Statistics',
        };
    }
    static types() {
        return {
            requestId: 'string',
            statistics: { 'type': 'array', 'itemType': DescribeDohAccountStatisticsResponseBodyStatistics },
        };
    }
}
exports.DescribeDohAccountStatisticsResponseBody = DescribeDohAccountStatisticsResponseBody;
class DescribeDohAccountStatisticsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDohAccountStatisticsResponseBody,
        };
    }
}
exports.DescribeDohAccountStatisticsResponse = DescribeDohAccountStatisticsResponse;
class DescribeDohDomainStatisticsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            endDate: 'EndDate',
            lang: 'Lang',
            startDate: 'StartDate',
        };
    }
    static types() {
        return {
            domainName: 'string',
            endDate: 'string',
            lang: 'string',
            startDate: 'string',
        };
    }
}
exports.DescribeDohDomainStatisticsRequest = DescribeDohDomainStatisticsRequest;
class DescribeDohDomainStatisticsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            statistics: 'Statistics',
        };
    }
    static types() {
        return {
            requestId: 'string',
            statistics: { 'type': 'array', 'itemType': DescribeDohDomainStatisticsResponseBodyStatistics },
        };
    }
}
exports.DescribeDohDomainStatisticsResponseBody = DescribeDohDomainStatisticsResponseBody;
class DescribeDohDomainStatisticsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDohDomainStatisticsResponseBody,
        };
    }
}
exports.DescribeDohDomainStatisticsResponse = DescribeDohDomainStatisticsResponse;
class DescribeDohDomainStatisticsSummaryRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            endDate: 'EndDate',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startDate: 'StartDate',
        };
    }
    static types() {
        return {
            domainName: 'string',
            endDate: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startDate: 'string',
        };
    }
}
exports.DescribeDohDomainStatisticsSummaryRequest = DescribeDohDomainStatisticsSummaryRequest;
class DescribeDohDomainStatisticsSummaryResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            statistics: 'Statistics',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            statistics: { 'type': 'array', 'itemType': DescribeDohDomainStatisticsSummaryResponseBodyStatistics },
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeDohDomainStatisticsSummaryResponseBody = DescribeDohDomainStatisticsSummaryResponseBody;
class DescribeDohDomainStatisticsSummaryResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDohDomainStatisticsSummaryResponseBody,
        };
    }
}
exports.DescribeDohDomainStatisticsSummaryResponse = DescribeDohDomainStatisticsSummaryResponse;
class DescribeDohSubDomainStatisticsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endDate: 'EndDate',
            lang: 'Lang',
            startDate: 'StartDate',
            subDomain: 'SubDomain',
        };
    }
    static types() {
        return {
            endDate: 'string',
            lang: 'string',
            startDate: 'string',
            subDomain: 'string',
        };
    }
}
exports.DescribeDohSubDomainStatisticsRequest = DescribeDohSubDomainStatisticsRequest;
class DescribeDohSubDomainStatisticsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            statistics: 'Statistics',
        };
    }
    static types() {
        return {
            requestId: 'string',
            statistics: { 'type': 'array', 'itemType': DescribeDohSubDomainStatisticsResponseBodyStatistics },
        };
    }
}
exports.DescribeDohSubDomainStatisticsResponseBody = DescribeDohSubDomainStatisticsResponseBody;
class DescribeDohSubDomainStatisticsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDohSubDomainStatisticsResponseBody,
        };
    }
}
exports.DescribeDohSubDomainStatisticsResponse = DescribeDohSubDomainStatisticsResponse;
class DescribeDohSubDomainStatisticsSummaryRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            endDate: 'EndDate',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startDate: 'StartDate',
            subDomain: 'SubDomain',
        };
    }
    static types() {
        return {
            domainName: 'string',
            endDate: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startDate: 'string',
            subDomain: 'string',
        };
    }
}
exports.DescribeDohSubDomainStatisticsSummaryRequest = DescribeDohSubDomainStatisticsSummaryRequest;
class DescribeDohSubDomainStatisticsSummaryResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            statistics: 'Statistics',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            statistics: { 'type': 'array', 'itemType': DescribeDohSubDomainStatisticsSummaryResponseBodyStatistics },
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeDohSubDomainStatisticsSummaryResponseBody = DescribeDohSubDomainStatisticsSummaryResponseBody;
class DescribeDohSubDomainStatisticsSummaryResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDohSubDomainStatisticsSummaryResponseBody,
        };
    }
}
exports.DescribeDohSubDomainStatisticsSummaryResponse = DescribeDohSubDomainStatisticsSummaryResponse;
class DescribeDohUserInfoRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endDate: 'EndDate',
            lang: 'Lang',
            startDate: 'StartDate',
        };
    }
    static types() {
        return {
            endDate: 'string',
            lang: 'string',
            startDate: 'string',
        };
    }
}
exports.DescribeDohUserInfoRequest = DescribeDohUserInfoRequest;
class DescribeDohUserInfoResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainCount: 'DomainCount',
            pdnsId: 'PdnsId',
            requestId: 'RequestId',
            subDomainCount: 'SubDomainCount',
        };
    }
    static types() {
        return {
            domainCount: 'number',
            pdnsId: 'number',
            requestId: 'string',
            subDomainCount: 'number',
        };
    }
}
exports.DescribeDohUserInfoResponseBody = DescribeDohUserInfoResponseBody;
class DescribeDohUserInfoResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDohUserInfoResponseBody,
        };
    }
}
exports.DescribeDohUserInfoResponse = DescribeDohUserInfoResponse;
class DescribeDomainDnssecInfoRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeDomainDnssecInfoRequest = DescribeDomainDnssecInfoRequest;
class DescribeDomainDnssecInfoResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            algorithm: 'Algorithm',
            digest: 'Digest',
            digestType: 'DigestType',
            domainName: 'DomainName',
            dsRecord: 'DsRecord',
            flags: 'Flags',
            keyTag: 'KeyTag',
            publicKey: 'PublicKey',
            requestId: 'RequestId',
            status: 'Status',
        };
    }
    static types() {
        return {
            algorithm: 'string',
            digest: 'string',
            digestType: 'string',
            domainName: 'string',
            dsRecord: 'string',
            flags: 'string',
            keyTag: 'string',
            publicKey: 'string',
            requestId: 'string',
            status: 'string',
        };
    }
}
exports.DescribeDomainDnssecInfoResponseBody = DescribeDomainDnssecInfoResponseBody;
class DescribeDomainDnssecInfoResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainDnssecInfoResponseBody,
        };
    }
}
exports.DescribeDomainDnssecInfoResponse = DescribeDomainDnssecInfoResponse;
class DescribeDomainGroupsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            keyWord: 'KeyWord',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            keyWord: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribeDomainGroupsRequest = DescribeDomainGroupsRequest;
class DescribeDomainGroupsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainGroups: 'DomainGroups',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            domainGroups: DescribeDomainGroupsResponseBodyDomainGroups,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeDomainGroupsResponseBody = DescribeDomainGroupsResponseBody;
class DescribeDomainGroupsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainGroupsResponseBody,
        };
    }
}
exports.DescribeDomainGroupsResponse = DescribeDomainGroupsResponse;
class DescribeDomainInfoRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            needDetailAttributes: 'NeedDetailAttributes',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            needDetailAttributes: 'boolean',
        };
    }
}
exports.DescribeDomainInfoRequest = DescribeDomainInfoRequest;
class DescribeDomainInfoResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            aliDomain: 'AliDomain',
            availableTtls: 'AvailableTtls',
            createTime: 'CreateTime',
            dnsServers: 'DnsServers',
            domainId: 'DomainId',
            domainLoggingSwitchStatus: 'DomainLoggingSwitchStatus',
            domainName: 'DomainName',
            groupId: 'GroupId',
            groupName: 'GroupName',
            inBlackHole: 'InBlackHole',
            inClean: 'InClean',
            instanceId: 'InstanceId',
            lineType: 'LineType',
            minTtl: 'MinTtl',
            punyCode: 'PunyCode',
            recordLineTreeJson: 'RecordLineTreeJson',
            recordLines: 'RecordLines',
            regionLines: 'RegionLines',
            remark: 'Remark',
            requestId: 'RequestId',
            resourceGroupId: 'ResourceGroupId',
            slaveDns: 'SlaveDns',
            subDomain: 'SubDomain',
            versionCode: 'VersionCode',
            versionName: 'VersionName',
        };
    }
    static types() {
        return {
            aliDomain: 'boolean',
            availableTtls: DescribeDomainInfoResponseBodyAvailableTtls,
            createTime: 'string',
            dnsServers: DescribeDomainInfoResponseBodyDnsServers,
            domainId: 'string',
            domainLoggingSwitchStatus: 'string',
            domainName: 'string',
            groupId: 'string',
            groupName: 'string',
            inBlackHole: 'boolean',
            inClean: 'boolean',
            instanceId: 'string',
            lineType: 'string',
            minTtl: 'number',
            punyCode: 'string',
            recordLineTreeJson: 'string',
            recordLines: DescribeDomainInfoResponseBodyRecordLines,
            regionLines: 'boolean',
            remark: 'string',
            requestId: 'string',
            resourceGroupId: 'string',
            slaveDns: 'boolean',
            subDomain: 'boolean',
            versionCode: 'string',
            versionName: 'string',
        };
    }
}
exports.DescribeDomainInfoResponseBody = DescribeDomainInfoResponseBody;
class DescribeDomainInfoResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainInfoResponseBody,
        };
    }
}
exports.DescribeDomainInfoResponse = DescribeDomainInfoResponse;
class DescribeDomainLogsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupId: 'GroupId',
            keyWord: 'KeyWord',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startDate: 'StartDate',
            type: 'Type',
            endDate: 'endDate',
        };
    }
    static types() {
        return {
            groupId: 'string',
            keyWord: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startDate: 'string',
            type: 'string',
            endDate: 'string',
        };
    }
}
exports.DescribeDomainLogsRequest = DescribeDomainLogsRequest;
class DescribeDomainLogsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainLogs: 'DomainLogs',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            domainLogs: DescribeDomainLogsResponseBodyDomainLogs,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeDomainLogsResponseBody = DescribeDomainLogsResponseBody;
class DescribeDomainLogsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainLogsResponseBody,
        };
    }
}
exports.DescribeDomainLogsResponse = DescribeDomainLogsResponse;
class DescribeDomainNsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeDomainNsRequest = DescribeDomainNsRequest;
class DescribeDomainNsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            allAliDns: 'AllAliDns',
            detectFailedReasonCode: 'DetectFailedReasonCode',
            dnsServers: 'DnsServers',
            expectDnsServers: 'ExpectDnsServers',
            includeAliDns: 'IncludeAliDns',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            allAliDns: 'boolean',
            detectFailedReasonCode: 'string',
            dnsServers: DescribeDomainNsResponseBodyDnsServers,
            expectDnsServers: DescribeDomainNsResponseBodyExpectDnsServers,
            includeAliDns: 'boolean',
            requestId: 'string',
        };
    }
}
exports.DescribeDomainNsResponseBody = DescribeDomainNsResponseBody;
class DescribeDomainNsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainNsResponseBody,
        };
    }
}
exports.DescribeDomainNsResponse = DescribeDomainNsResponse;
class DescribeDomainRecordInfoRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            recordId: 'RecordId',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            lang: 'string',
            recordId: 'string',
            userClientIp: 'string',
        };
    }
}
exports.DescribeDomainRecordInfoRequest = DescribeDomainRecordInfoRequest;
class DescribeDomainRecordInfoResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainId: 'DomainId',
            domainName: 'DomainName',
            groupId: 'GroupId',
            groupName: 'GroupName',
            line: 'Line',
            locked: 'Locked',
            priority: 'Priority',
            punyCode: 'PunyCode',
            RR: 'RR',
            recordId: 'RecordId',
            remark: 'Remark',
            requestId: 'RequestId',
            status: 'Status',
            TTL: 'TTL',
            type: 'Type',
            value: 'Value',
        };
    }
    static types() {
        return {
            domainId: 'string',
            domainName: 'string',
            groupId: 'string',
            groupName: 'string',
            line: 'string',
            locked: 'boolean',
            priority: 'number',
            punyCode: 'string',
            RR: 'string',
            recordId: 'string',
            remark: 'string',
            requestId: 'string',
            status: 'string',
            TTL: 'number',
            type: 'string',
            value: 'string',
        };
    }
}
exports.DescribeDomainRecordInfoResponseBody = DescribeDomainRecordInfoResponseBody;
class DescribeDomainRecordInfoResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainRecordInfoResponseBody,
        };
    }
}
exports.DescribeDomainRecordInfoResponse = DescribeDomainRecordInfoResponse;
class DescribeDomainRecordsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            direction: 'Direction',
            domainName: 'DomainName',
            groupId: 'GroupId',
            keyWord: 'KeyWord',
            lang: 'Lang',
            line: 'Line',
            orderBy: 'OrderBy',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            RRKeyWord: 'RRKeyWord',
            searchMode: 'SearchMode',
            status: 'Status',
            type: 'Type',
            typeKeyWord: 'TypeKeyWord',
            valueKeyWord: 'ValueKeyWord',
        };
    }
    static types() {
        return {
            direction: 'string',
            domainName: 'string',
            groupId: 'number',
            keyWord: 'string',
            lang: 'string',
            line: 'string',
            orderBy: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            RRKeyWord: 'string',
            searchMode: 'string',
            status: 'string',
            type: 'string',
            typeKeyWord: 'string',
            valueKeyWord: 'string',
        };
    }
}
exports.DescribeDomainRecordsRequest = DescribeDomainRecordsRequest;
class DescribeDomainRecordsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainRecords: 'DomainRecords',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            domainRecords: DescribeDomainRecordsResponseBodyDomainRecords,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeDomainRecordsResponseBody = DescribeDomainRecordsResponseBody;
class DescribeDomainRecordsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainRecordsResponseBody,
        };
    }
}
exports.DescribeDomainRecordsResponse = DescribeDomainRecordsResponse;
class DescribeDomainResolveStatisticsSummaryRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            direction: 'Direction',
            endDate: 'EndDate',
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            searchMode: 'SearchMode',
            startDate: 'StartDate',
            threshold: 'Threshold',
        };
    }
    static types() {
        return {
            direction: 'string',
            endDate: 'string',
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            searchMode: 'string',
            startDate: 'string',
            threshold: 'number',
        };
    }
}
exports.DescribeDomainResolveStatisticsSummaryRequest = DescribeDomainResolveStatisticsSummaryRequest;
class DescribeDomainResolveStatisticsSummaryResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            statistics: 'Statistics',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            statistics: { 'type': 'array', 'itemType': DescribeDomainResolveStatisticsSummaryResponseBodyStatistics },
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeDomainResolveStatisticsSummaryResponseBody = DescribeDomainResolveStatisticsSummaryResponseBody;
class DescribeDomainResolveStatisticsSummaryResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainResolveStatisticsSummaryResponseBody,
        };
    }
}
exports.DescribeDomainResolveStatisticsSummaryResponse = DescribeDomainResolveStatisticsSummaryResponse;
class DescribeDomainStatisticsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            domainType: 'DomainType',
            endDate: 'EndDate',
            lang: 'Lang',
            startDate: 'StartDate',
        };
    }
    static types() {
        return {
            domainName: 'string',
            domainType: 'string',
            endDate: 'string',
            lang: 'string',
            startDate: 'string',
        };
    }
}
exports.DescribeDomainStatisticsRequest = DescribeDomainStatisticsRequest;
class DescribeDomainStatisticsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            statistics: 'Statistics',
        };
    }
    static types() {
        return {
            requestId: 'string',
            statistics: DescribeDomainStatisticsResponseBodyStatistics,
        };
    }
}
exports.DescribeDomainStatisticsResponseBody = DescribeDomainStatisticsResponseBody;
class DescribeDomainStatisticsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainStatisticsResponseBody,
        };
    }
}
exports.DescribeDomainStatisticsResponse = DescribeDomainStatisticsResponse;
class DescribeDomainStatisticsSummaryRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endDate: 'EndDate',
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            searchMode: 'SearchMode',
            startDate: 'StartDate',
            threshold: 'Threshold',
        };
    }
    static types() {
        return {
            endDate: 'string',
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            searchMode: 'string',
            startDate: 'string',
            threshold: 'number',
        };
    }
}
exports.DescribeDomainStatisticsSummaryRequest = DescribeDomainStatisticsSummaryRequest;
class DescribeDomainStatisticsSummaryResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            statistics: 'Statistics',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            statistics: DescribeDomainStatisticsSummaryResponseBodyStatistics,
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeDomainStatisticsSummaryResponseBody = DescribeDomainStatisticsSummaryResponseBody;
class DescribeDomainStatisticsSummaryResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainStatisticsSummaryResponseBody,
        };
    }
}
exports.DescribeDomainStatisticsSummaryResponse = DescribeDomainStatisticsSummaryResponse;
class DescribeDomainsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupId: 'GroupId',
            keyWord: 'KeyWord',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            resourceGroupId: 'ResourceGroupId',
            searchMode: 'SearchMode',
            starmark: 'Starmark',
        };
    }
    static types() {
        return {
            groupId: 'string',
            keyWord: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            resourceGroupId: 'string',
            searchMode: 'string',
            starmark: 'boolean',
        };
    }
}
exports.DescribeDomainsRequest = DescribeDomainsRequest;
class DescribeDomainsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domains: 'Domains',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            domains: DescribeDomainsResponseBodyDomains,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeDomainsResponseBody = DescribeDomainsResponseBody;
class DescribeDomainsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeDomainsResponseBody,
        };
    }
}
exports.DescribeDomainsResponse = DescribeDomainsResponse;
class DescribeGtmAccessStrategiesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribeGtmAccessStrategiesRequest = DescribeGtmAccessStrategiesRequest;
class DescribeGtmAccessStrategiesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            strategies: 'Strategies',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            strategies: DescribeGtmAccessStrategiesResponseBodyStrategies,
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeGtmAccessStrategiesResponseBody = DescribeGtmAccessStrategiesResponseBody;
class DescribeGtmAccessStrategiesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmAccessStrategiesResponseBody,
        };
    }
}
exports.DescribeGtmAccessStrategiesResponse = DescribeGtmAccessStrategiesResponse;
class DescribeGtmAccessStrategyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            strategyId: 'StrategyId',
        };
    }
    static types() {
        return {
            lang: 'string',
            strategyId: 'string',
        };
    }
}
exports.DescribeGtmAccessStrategyRequest = DescribeGtmAccessStrategyRequest;
class DescribeGtmAccessStrategyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessMode: 'AccessMode',
            accessStatus: 'AccessStatus',
            defaultAddrPoolMonitorStatus: 'DefaultAddrPoolMonitorStatus',
            defaultAddrPoolName: 'DefaultAddrPoolName',
            defaultAddrPoolStatus: 'DefaultAddrPoolStatus',
            defultAddrPoolId: 'DefultAddrPoolId',
            failoverAddrPoolId: 'FailoverAddrPoolId',
            failoverAddrPoolMonitorStatus: 'FailoverAddrPoolMonitorStatus',
            failoverAddrPoolName: 'FailoverAddrPoolName',
            failoverAddrPoolStatus: 'FailoverAddrPoolStatus',
            instanceId: 'InstanceId',
            lines: 'Lines',
            requestId: 'RequestId',
            strategyId: 'StrategyId',
            strategyMode: 'StrategyMode',
            strategyName: 'StrategyName',
        };
    }
    static types() {
        return {
            accessMode: 'string',
            accessStatus: 'string',
            defaultAddrPoolMonitorStatus: 'string',
            defaultAddrPoolName: 'string',
            defaultAddrPoolStatus: 'string',
            defultAddrPoolId: 'string',
            failoverAddrPoolId: 'string',
            failoverAddrPoolMonitorStatus: 'string',
            failoverAddrPoolName: 'string',
            failoverAddrPoolStatus: 'string',
            instanceId: 'string',
            lines: DescribeGtmAccessStrategyResponseBodyLines,
            requestId: 'string',
            strategyId: 'string',
            strategyMode: 'string',
            strategyName: 'string',
        };
    }
}
exports.DescribeGtmAccessStrategyResponseBody = DescribeGtmAccessStrategyResponseBody;
class DescribeGtmAccessStrategyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmAccessStrategyResponseBody,
        };
    }
}
exports.DescribeGtmAccessStrategyResponse = DescribeGtmAccessStrategyResponse;
class DescribeGtmAccessStrategyAvailableConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeGtmAccessStrategyAvailableConfigRequest = DescribeGtmAccessStrategyAvailableConfigRequest;
class DescribeGtmAccessStrategyAvailableConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPools: 'AddrPools',
            lines: 'Lines',
            requestId: 'RequestId',
            suggestSetDefaultLine: 'SuggestSetDefaultLine',
        };
    }
    static types() {
        return {
            addrPools: DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPools,
            lines: DescribeGtmAccessStrategyAvailableConfigResponseBodyLines,
            requestId: 'string',
            suggestSetDefaultLine: 'boolean',
        };
    }
}
exports.DescribeGtmAccessStrategyAvailableConfigResponseBody = DescribeGtmAccessStrategyAvailableConfigResponseBody;
class DescribeGtmAccessStrategyAvailableConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmAccessStrategyAvailableConfigResponseBody,
        };
    }
}
exports.DescribeGtmAccessStrategyAvailableConfigResponse = DescribeGtmAccessStrategyAvailableConfigResponse;
class DescribeGtmAvailableAlertGroupRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
        };
    }
    static types() {
        return {
            lang: 'string',
        };
    }
}
exports.DescribeGtmAvailableAlertGroupRequest = DescribeGtmAvailableAlertGroupRequest;
class DescribeGtmAvailableAlertGroupResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            availableAlertGroup: 'AvailableAlertGroup',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            availableAlertGroup: 'string',
            requestId: 'string',
        };
    }
}
exports.DescribeGtmAvailableAlertGroupResponseBody = DescribeGtmAvailableAlertGroupResponseBody;
class DescribeGtmAvailableAlertGroupResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmAvailableAlertGroupResponseBody,
        };
    }
}
exports.DescribeGtmAvailableAlertGroupResponse = DescribeGtmAvailableAlertGroupResponse;
class DescribeGtmInstanceRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
            needDetailAttributes: 'NeedDetailAttributes',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
            needDetailAttributes: 'boolean',
        };
    }
}
exports.DescribeGtmInstanceRequest = DescribeGtmInstanceRequest;
class DescribeGtmInstanceResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessStrategyNum: 'AccessStrategyNum',
            addressPoolNum: 'AddressPoolNum',
            alertGroup: 'AlertGroup',
            cname: 'Cname',
            cnameMode: 'CnameMode',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            expireTime: 'ExpireTime',
            expireTimestamp: 'ExpireTimestamp',
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
            lbaStrategy: 'LbaStrategy',
            requestId: 'RequestId',
            resourceGroupId: 'ResourceGroupId',
            ttl: 'Ttl',
            userDomainName: 'UserDomainName',
            versionCode: 'VersionCode',
        };
    }
    static types() {
        return {
            accessStrategyNum: 'number',
            addressPoolNum: 'number',
            alertGroup: 'string',
            cname: 'string',
            cnameMode: 'string',
            createTime: 'string',
            createTimestamp: 'number',
            expireTime: 'string',
            expireTimestamp: 'number',
            instanceId: 'string',
            instanceName: 'string',
            lbaStrategy: 'string',
            requestId: 'string',
            resourceGroupId: 'string',
            ttl: 'number',
            userDomainName: 'string',
            versionCode: 'string',
        };
    }
}
exports.DescribeGtmInstanceResponseBody = DescribeGtmInstanceResponseBody;
class DescribeGtmInstanceResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmInstanceResponseBody,
        };
    }
}
exports.DescribeGtmInstanceResponse = DescribeGtmInstanceResponse;
class DescribeGtmInstanceAddressPoolRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeGtmInstanceAddressPoolRequest = DescribeGtmInstanceAddressPoolRequest;
class DescribeGtmInstanceAddressPoolResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            addrPoolId: 'AddrPoolId',
            addrs: 'Addrs',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            minAvailableAddrNum: 'MinAvailableAddrNum',
            monitorConfigId: 'MonitorConfigId',
            monitorStatus: 'MonitorStatus',
            name: 'Name',
            requestId: 'RequestId',
            status: 'Status',
            type: 'Type',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            addrPoolId: 'string',
            addrs: DescribeGtmInstanceAddressPoolResponseBodyAddrs,
            createTime: 'string',
            createTimestamp: 'number',
            minAvailableAddrNum: 'number',
            monitorConfigId: 'string',
            monitorStatus: 'string',
            name: 'string',
            requestId: 'string',
            status: 'string',
            type: 'string',
            updateTime: 'string',
            updateTimestamp: 'number',
        };
    }
}
exports.DescribeGtmInstanceAddressPoolResponseBody = DescribeGtmInstanceAddressPoolResponseBody;
class DescribeGtmInstanceAddressPoolResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmInstanceAddressPoolResponseBody,
        };
    }
}
exports.DescribeGtmInstanceAddressPoolResponse = DescribeGtmInstanceAddressPoolResponse;
class DescribeGtmInstanceAddressPoolsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribeGtmInstanceAddressPoolsRequest = DescribeGtmInstanceAddressPoolsRequest;
class DescribeGtmInstanceAddressPoolsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPools: 'AddrPools',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            addrPools: DescribeGtmInstanceAddressPoolsResponseBodyAddrPools,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeGtmInstanceAddressPoolsResponseBody = DescribeGtmInstanceAddressPoolsResponseBody;
class DescribeGtmInstanceAddressPoolsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmInstanceAddressPoolsResponseBody,
        };
    }
}
exports.DescribeGtmInstanceAddressPoolsResponse = DescribeGtmInstanceAddressPoolsResponse;
class DescribeGtmInstanceStatusRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeGtmInstanceStatusRequest = DescribeGtmInstanceStatusRequest;
class DescribeGtmInstanceStatusResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrNotAvailableNum: 'AddrNotAvailableNum',
            addrPoolNotAvailableNum: 'AddrPoolNotAvailableNum',
            requestId: 'RequestId',
            status: 'Status',
            statusReason: 'StatusReason',
            strategyNotAvailableNum: 'StrategyNotAvailableNum',
            switchToFailoverStrategyNum: 'SwitchToFailoverStrategyNum',
        };
    }
    static types() {
        return {
            addrNotAvailableNum: 'number',
            addrPoolNotAvailableNum: 'number',
            requestId: 'string',
            status: 'string',
            statusReason: 'string',
            strategyNotAvailableNum: 'number',
            switchToFailoverStrategyNum: 'number',
        };
    }
}
exports.DescribeGtmInstanceStatusResponseBody = DescribeGtmInstanceStatusResponseBody;
class DescribeGtmInstanceStatusResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmInstanceStatusResponseBody,
        };
    }
}
exports.DescribeGtmInstanceStatusResponse = DescribeGtmInstanceStatusResponse;
class DescribeGtmInstanceSystemCnameRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.DescribeGtmInstanceSystemCnameRequest = DescribeGtmInstanceSystemCnameRequest;
class DescribeGtmInstanceSystemCnameResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            systemCname: 'SystemCname',
        };
    }
    static types() {
        return {
            requestId: 'string',
            systemCname: 'string',
        };
    }
}
exports.DescribeGtmInstanceSystemCnameResponseBody = DescribeGtmInstanceSystemCnameResponseBody;
class DescribeGtmInstanceSystemCnameResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmInstanceSystemCnameResponseBody,
        };
    }
}
exports.DescribeGtmInstanceSystemCnameResponse = DescribeGtmInstanceSystemCnameResponse;
class DescribeGtmInstancesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            keyword: 'Keyword',
            lang: 'Lang',
            needDetailAttributes: 'NeedDetailAttributes',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            resourceGroupId: 'ResourceGroupId',
        };
    }
    static types() {
        return {
            keyword: 'string',
            lang: 'string',
            needDetailAttributes: 'boolean',
            pageNumber: 'number',
            pageSize: 'number',
            resourceGroupId: 'string',
        };
    }
}
exports.DescribeGtmInstancesRequest = DescribeGtmInstancesRequest;
class DescribeGtmInstancesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            gtmInstances: 'GtmInstances',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            gtmInstances: DescribeGtmInstancesResponseBodyGtmInstances,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeGtmInstancesResponseBody = DescribeGtmInstancesResponseBody;
class DescribeGtmInstancesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmInstancesResponseBody,
        };
    }
}
exports.DescribeGtmInstancesResponse = DescribeGtmInstancesResponse;
class DescribeGtmLogsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endTimestamp: 'EndTimestamp',
            instanceId: 'InstanceId',
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startTimestamp: 'StartTimestamp',
        };
    }
    static types() {
        return {
            endTimestamp: 'number',
            instanceId: 'string',
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startTimestamp: 'number',
        };
    }
}
exports.DescribeGtmLogsRequest = DescribeGtmLogsRequest;
class DescribeGtmLogsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            logs: 'Logs',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            logs: DescribeGtmLogsResponseBodyLogs,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeGtmLogsResponseBody = DescribeGtmLogsResponseBody;
class DescribeGtmLogsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmLogsResponseBody,
        };
    }
}
exports.DescribeGtmLogsResponse = DescribeGtmLogsResponse;
class DescribeGtmMonitorAvailableConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
        };
    }
    static types() {
        return {
            lang: 'string',
        };
    }
}
exports.DescribeGtmMonitorAvailableConfigRequest = DescribeGtmMonitorAvailableConfigRequest;
class DescribeGtmMonitorAvailableConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ispCityNodes: 'IspCityNodes',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            ispCityNodes: DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodes,
            requestId: 'string',
        };
    }
}
exports.DescribeGtmMonitorAvailableConfigResponseBody = DescribeGtmMonitorAvailableConfigResponseBody;
class DescribeGtmMonitorAvailableConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmMonitorAvailableConfigResponseBody,
        };
    }
}
exports.DescribeGtmMonitorAvailableConfigResponse = DescribeGtmMonitorAvailableConfigResponse;
class DescribeGtmMonitorConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            monitorConfigId: 'MonitorConfigId',
        };
    }
    static types() {
        return {
            lang: 'string',
            monitorConfigId: 'string',
        };
    }
}
exports.DescribeGtmMonitorConfigRequest = DescribeGtmMonitorConfigRequest;
class DescribeGtmMonitorConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            evaluationCount: 'EvaluationCount',
            interval: 'Interval',
            ispCityNodes: 'IspCityNodes',
            monitorConfigId: 'MonitorConfigId',
            monitorExtendInfo: 'MonitorExtendInfo',
            protocolType: 'ProtocolType',
            requestId: 'RequestId',
            timeout: 'Timeout',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
        };
    }
    static types() {
        return {
            createTime: 'string',
            createTimestamp: 'number',
            evaluationCount: 'number',
            interval: 'number',
            ispCityNodes: DescribeGtmMonitorConfigResponseBodyIspCityNodes,
            monitorConfigId: 'string',
            monitorExtendInfo: 'string',
            protocolType: 'string',
            requestId: 'string',
            timeout: 'number',
            updateTime: 'string',
            updateTimestamp: 'number',
        };
    }
}
exports.DescribeGtmMonitorConfigResponseBody = DescribeGtmMonitorConfigResponseBody;
class DescribeGtmMonitorConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmMonitorConfigResponseBody,
        };
    }
}
exports.DescribeGtmMonitorConfigResponse = DescribeGtmMonitorConfigResponse;
class DescribeGtmRecoveryPlanRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            recoveryPlanId: 'RecoveryPlanId',
        };
    }
    static types() {
        return {
            lang: 'string',
            recoveryPlanId: 'number',
        };
    }
}
exports.DescribeGtmRecoveryPlanRequest = DescribeGtmRecoveryPlanRequest;
class DescribeGtmRecoveryPlanResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            faultAddrPoolNum: 'FaultAddrPoolNum',
            faultAddrPools: 'FaultAddrPools',
            lastExecuteTime: 'LastExecuteTime',
            lastExecuteTimestamp: 'LastExecuteTimestamp',
            lastRollbackTime: 'LastRollbackTime',
            lastRollbackTimestamp: 'LastRollbackTimestamp',
            name: 'Name',
            recoveryPlanId: 'RecoveryPlanId',
            remark: 'Remark',
            requestId: 'RequestId',
            status: 'Status',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
        };
    }
    static types() {
        return {
            createTime: 'string',
            createTimestamp: 'number',
            faultAddrPoolNum: 'number',
            faultAddrPools: DescribeGtmRecoveryPlanResponseBodyFaultAddrPools,
            lastExecuteTime: 'string',
            lastExecuteTimestamp: 'number',
            lastRollbackTime: 'string',
            lastRollbackTimestamp: 'number',
            name: 'string',
            recoveryPlanId: 'number',
            remark: 'string',
            requestId: 'string',
            status: 'string',
            updateTime: 'string',
            updateTimestamp: 'number',
        };
    }
}
exports.DescribeGtmRecoveryPlanResponseBody = DescribeGtmRecoveryPlanResponseBody;
class DescribeGtmRecoveryPlanResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmRecoveryPlanResponseBody,
        };
    }
}
exports.DescribeGtmRecoveryPlanResponse = DescribeGtmRecoveryPlanResponse;
class DescribeGtmRecoveryPlanAvailableConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
        };
    }
    static types() {
        return {
            lang: 'string',
        };
    }
}
exports.DescribeGtmRecoveryPlanAvailableConfigRequest = DescribeGtmRecoveryPlanAvailableConfigRequest;
class DescribeGtmRecoveryPlanAvailableConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instances: 'Instances',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            instances: DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstances,
            requestId: 'string',
        };
    }
}
exports.DescribeGtmRecoveryPlanAvailableConfigResponseBody = DescribeGtmRecoveryPlanAvailableConfigResponseBody;
class DescribeGtmRecoveryPlanAvailableConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmRecoveryPlanAvailableConfigResponseBody,
        };
    }
}
exports.DescribeGtmRecoveryPlanAvailableConfigResponse = DescribeGtmRecoveryPlanAvailableConfigResponse;
class DescribeGtmRecoveryPlansRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribeGtmRecoveryPlansRequest = DescribeGtmRecoveryPlansRequest;
class DescribeGtmRecoveryPlansResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            recoveryPlans: 'RecoveryPlans',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            recoveryPlans: DescribeGtmRecoveryPlansResponseBodyRecoveryPlans,
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeGtmRecoveryPlansResponseBody = DescribeGtmRecoveryPlansResponseBody;
class DescribeGtmRecoveryPlansResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeGtmRecoveryPlansResponseBody,
        };
    }
}
exports.DescribeGtmRecoveryPlansResponse = DescribeGtmRecoveryPlansResponse;
class DescribeInstanceDomainsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribeInstanceDomainsRequest = DescribeInstanceDomainsRequest;
class DescribeInstanceDomainsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceDomains: 'InstanceDomains',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            instanceDomains: { 'type': 'array', 'itemType': DescribeInstanceDomainsResponseBodyInstanceDomains },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeInstanceDomainsResponseBody = DescribeInstanceDomainsResponseBody;
class DescribeInstanceDomainsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeInstanceDomainsResponseBody,
        };
    }
}
exports.DescribeInstanceDomainsResponse = DescribeInstanceDomainsResponse;
class DescribeInternetDnsLogsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            endTimestamp: 'EndTimestamp',
            lang: 'Lang',
            module: 'Module',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            queryCondition: 'QueryCondition',
            startTimestamp: 'StartTimestamp',
        };
    }
    static types() {
        return {
            domainName: 'string',
            endTimestamp: 'number',
            lang: 'string',
            module: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            queryCondition: 'string',
            startTimestamp: 'number',
        };
    }
}
exports.DescribeInternetDnsLogsRequest = DescribeInternetDnsLogsRequest;
class DescribeInternetDnsLogsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            complete: 'Complete',
            curPage: 'CurPage',
            logs: 'Logs',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalPage: 'TotalPage',
            totalSize: 'TotalSize',
        };
    }
    static types() {
        return {
            complete: 'boolean',
            curPage: 'number',
            logs: DescribeInternetDnsLogsResponseBodyLogs,
            pageSize: 'number',
            requestId: 'string',
            totalPage: 'number',
            totalSize: 'number',
        };
    }
}
exports.DescribeInternetDnsLogsResponseBody = DescribeInternetDnsLogsResponseBody;
class DescribeInternetDnsLogsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeInternetDnsLogsResponseBody,
        };
    }
}
exports.DescribeInternetDnsLogsResponse = DescribeInternetDnsLogsResponse;
class DescribeIspFlushCacheInstancesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            direction: 'Direction',
            isp: 'Isp',
            keyword: 'Keyword',
            lang: 'Lang',
            orderBy: 'OrderBy',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            type: 'Type',
        };
    }
    static types() {
        return {
            direction: 'string',
            isp: 'string',
            keyword: 'string',
            lang: 'string',
            orderBy: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            type: 'string',
        };
    }
}
exports.DescribeIspFlushCacheInstancesRequest = DescribeIspFlushCacheInstancesRequest;
class DescribeIspFlushCacheInstancesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ispFlushCacheInstances: 'IspFlushCacheInstances',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            ispFlushCacheInstances: { 'type': 'array', 'itemType': DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstances },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeIspFlushCacheInstancesResponseBody = DescribeIspFlushCacheInstancesResponseBody;
class DescribeIspFlushCacheInstancesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeIspFlushCacheInstancesResponseBody,
        };
    }
}
exports.DescribeIspFlushCacheInstancesResponse = DescribeIspFlushCacheInstancesResponse;
class DescribeIspFlushCacheRemainQuotaRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
        };
    }
    static types() {
        return {
            lang: 'string',
        };
    }
}
exports.DescribeIspFlushCacheRemainQuotaRequest = DescribeIspFlushCacheRemainQuotaRequest;
class DescribeIspFlushCacheRemainQuotaResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            telecomRemainQuota: 'TelecomRemainQuota',
        };
    }
    static types() {
        return {
            requestId: 'string',
            telecomRemainQuota: 'number',
        };
    }
}
exports.DescribeIspFlushCacheRemainQuotaResponseBody = DescribeIspFlushCacheRemainQuotaResponseBody;
class DescribeIspFlushCacheRemainQuotaResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeIspFlushCacheRemainQuotaResponseBody,
        };
    }
}
exports.DescribeIspFlushCacheRemainQuotaResponse = DescribeIspFlushCacheRemainQuotaResponse;
class DescribeIspFlushCacheTaskRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            taskId: 'TaskId',
        };
    }
    static types() {
        return {
            lang: 'string',
            taskId: 'string',
        };
    }
}
exports.DescribeIspFlushCacheTaskRequest = DescribeIspFlushCacheTaskRequest;
class DescribeIspFlushCacheTaskResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            domainName: 'DomainName',
            flushCacheResults: 'FlushCacheResults',
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
            isp: 'Isp',
            requestId: 'RequestId',
            taskId: 'TaskId',
            taskStatus: 'TaskStatus',
        };
    }
    static types() {
        return {
            createTime: 'string',
            createTimestamp: 'number',
            domainName: 'string',
            flushCacheResults: { 'type': 'array', 'itemType': DescribeIspFlushCacheTaskResponseBodyFlushCacheResults },
            instanceId: 'string',
            instanceName: 'string',
            isp: 'string',
            requestId: 'string',
            taskId: 'string',
            taskStatus: 'string',
        };
    }
}
exports.DescribeIspFlushCacheTaskResponseBody = DescribeIspFlushCacheTaskResponseBody;
class DescribeIspFlushCacheTaskResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeIspFlushCacheTaskResponseBody,
        };
    }
}
exports.DescribeIspFlushCacheTaskResponse = DescribeIspFlushCacheTaskResponse;
class DescribeIspFlushCacheTasksRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            direction: 'Direction',
            domainName: 'DomainName',
            instanceId: 'InstanceId',
            isp: 'Isp',
            lang: 'Lang',
            orderBy: 'OrderBy',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            direction: 'string',
            domainName: 'string',
            instanceId: 'string',
            isp: 'string',
            lang: 'string',
            orderBy: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribeIspFlushCacheTasksRequest = DescribeIspFlushCacheTasksRequest;
class DescribeIspFlushCacheTasksResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ispFlushCacheTasks: 'IspFlushCacheTasks',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            ispFlushCacheTasks: { 'type': 'array', 'itemType': DescribeIspFlushCacheTasksResponseBodyIspFlushCacheTasks },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeIspFlushCacheTasksResponseBody = DescribeIspFlushCacheTasksResponseBody;
class DescribeIspFlushCacheTasksResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeIspFlushCacheTasksResponseBody,
        };
    }
}
exports.DescribeIspFlushCacheTasksResponse = DescribeIspFlushCacheTasksResponse;
class DescribePdnsAccountSummaryRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endDate: 'EndDate',
            lang: 'Lang',
            startDate: 'StartDate',
        };
    }
    static types() {
        return {
            endDate: 'string',
            lang: 'string',
            startDate: 'string',
        };
    }
}
exports.DescribePdnsAccountSummaryRequest = DescribePdnsAccountSummaryRequest;
class DescribePdnsAccountSummaryResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            data: 'Data',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            data: DescribePdnsAccountSummaryResponseBodyData,
            requestId: 'string',
        };
    }
}
exports.DescribePdnsAccountSummaryResponseBody = DescribePdnsAccountSummaryResponseBody;
class DescribePdnsAccountSummaryResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsAccountSummaryResponseBody,
        };
    }
}
exports.DescribePdnsAccountSummaryResponse = DescribePdnsAccountSummaryResponse;
class DescribePdnsAppKeyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            appKeyId: 'AppKeyId',
            authCode: 'AuthCode',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            appKeyId: 'string',
            authCode: 'string',
            lang: 'string',
        };
    }
}
exports.DescribePdnsAppKeyRequest = DescribePdnsAppKeyRequest;
class DescribePdnsAppKeyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            appKey: 'AppKey',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            appKey: DescribePdnsAppKeyResponseBodyAppKey,
            requestId: 'string',
        };
    }
}
exports.DescribePdnsAppKeyResponseBody = DescribePdnsAppKeyResponseBody;
class DescribePdnsAppKeyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsAppKeyResponseBody,
        };
    }
}
exports.DescribePdnsAppKeyResponse = DescribePdnsAppKeyResponse;
class DescribePdnsAppKeysRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
        };
    }
    static types() {
        return {
            lang: 'string',
        };
    }
}
exports.DescribePdnsAppKeysRequest = DescribePdnsAppKeysRequest;
class DescribePdnsAppKeysResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            appKeys: 'AppKeys',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            appKeys: { 'type': 'array', 'itemType': DescribePdnsAppKeysResponseBodyAppKeys },
            requestId: 'string',
        };
    }
}
exports.DescribePdnsAppKeysResponseBody = DescribePdnsAppKeysResponseBody;
class DescribePdnsAppKeysResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsAppKeysResponseBody,
        };
    }
}
exports.DescribePdnsAppKeysResponse = DescribePdnsAppKeysResponse;
class DescribePdnsOperateLogsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            actionType: 'ActionType',
            endDate: 'EndDate',
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startDate: 'StartDate',
        };
    }
    static types() {
        return {
            actionType: 'string',
            endDate: 'string',
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startDate: 'string',
        };
    }
}
exports.DescribePdnsOperateLogsRequest = DescribePdnsOperateLogsRequest;
class DescribePdnsOperateLogsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            logs: 'Logs',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            logs: { 'type': 'array', 'itemType': DescribePdnsOperateLogsResponseBodyLogs },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribePdnsOperateLogsResponseBody = DescribePdnsOperateLogsResponseBody;
class DescribePdnsOperateLogsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsOperateLogsResponseBody,
        };
    }
}
exports.DescribePdnsOperateLogsResponse = DescribePdnsOperateLogsResponse;
class DescribePdnsRequestStatisticRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            endDate: 'EndDate',
            lang: 'Lang',
            startDate: 'StartDate',
            subDomain: 'SubDomain',
        };
    }
    static types() {
        return {
            domainName: 'string',
            endDate: 'string',
            lang: 'string',
            startDate: 'string',
            subDomain: 'string',
        };
    }
}
exports.DescribePdnsRequestStatisticRequest = DescribePdnsRequestStatisticRequest;
class DescribePdnsRequestStatisticResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            data: 'Data',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            data: { 'type': 'array', 'itemType': DescribePdnsRequestStatisticResponseBodyData },
            requestId: 'string',
        };
    }
}
exports.DescribePdnsRequestStatisticResponseBody = DescribePdnsRequestStatisticResponseBody;
class DescribePdnsRequestStatisticResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsRequestStatisticResponseBody,
        };
    }
}
exports.DescribePdnsRequestStatisticResponse = DescribePdnsRequestStatisticResponse;
class DescribePdnsRequestStatisticsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            endDate: 'EndDate',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startDate: 'StartDate',
            subDomain: 'SubDomain',
            type: 'Type',
        };
    }
    static types() {
        return {
            domainName: 'string',
            endDate: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startDate: 'string',
            subDomain: 'string',
            type: 'string',
        };
    }
}
exports.DescribePdnsRequestStatisticsRequest = DescribePdnsRequestStatisticsRequest;
class DescribePdnsRequestStatisticsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            data: 'Data',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            data: { 'type': 'array', 'itemType': DescribePdnsRequestStatisticsResponseBodyData },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribePdnsRequestStatisticsResponseBody = DescribePdnsRequestStatisticsResponseBody;
class DescribePdnsRequestStatisticsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsRequestStatisticsResponseBody,
        };
    }
}
exports.DescribePdnsRequestStatisticsResponse = DescribePdnsRequestStatisticsResponse;
class DescribePdnsThreatLogsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endDate: 'EndDate',
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startDate: 'StartDate',
            threatLevel: 'ThreatLevel',
            threatSourceIp: 'ThreatSourceIp',
            threatType: 'ThreatType',
        };
    }
    static types() {
        return {
            endDate: 'string',
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startDate: 'string',
            threatLevel: 'string',
            threatSourceIp: 'string',
            threatType: 'string',
        };
    }
}
exports.DescribePdnsThreatLogsRequest = DescribePdnsThreatLogsRequest;
class DescribePdnsThreatLogsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            logs: 'Logs',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            logs: { 'type': 'array', 'itemType': DescribePdnsThreatLogsResponseBodyLogs },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribePdnsThreatLogsResponseBody = DescribePdnsThreatLogsResponseBody;
class DescribePdnsThreatLogsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsThreatLogsResponseBody,
        };
    }
}
exports.DescribePdnsThreatLogsResponse = DescribePdnsThreatLogsResponse;
class DescribePdnsThreatStatisticRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endDate: 'EndDate',
            lang: 'Lang',
            startDate: 'StartDate',
            threatSourceIp: 'ThreatSourceIp',
        };
    }
    static types() {
        return {
            endDate: 'string',
            lang: 'string',
            startDate: 'string',
            threatSourceIp: 'string',
        };
    }
}
exports.DescribePdnsThreatStatisticRequest = DescribePdnsThreatStatisticRequest;
class DescribePdnsThreatStatisticResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            data: 'Data',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            data: { 'type': 'array', 'itemType': DescribePdnsThreatStatisticResponseBodyData },
            requestId: 'string',
        };
    }
}
exports.DescribePdnsThreatStatisticResponseBody = DescribePdnsThreatStatisticResponseBody;
class DescribePdnsThreatStatisticResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsThreatStatisticResponseBody,
        };
    }
}
exports.DescribePdnsThreatStatisticResponse = DescribePdnsThreatStatisticResponse;
class DescribePdnsThreatStatisticsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            direction: 'Direction',
            domainName: 'DomainName',
            endDate: 'EndDate',
            lang: 'Lang',
            orderBy: 'OrderBy',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startDate: 'StartDate',
            subDomain: 'SubDomain',
            threatLevel: 'ThreatLevel',
            threatSourceIp: 'ThreatSourceIp',
            threatType: 'ThreatType',
            type: 'Type',
        };
    }
    static types() {
        return {
            direction: 'string',
            domainName: 'string',
            endDate: 'string',
            lang: 'string',
            orderBy: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startDate: 'string',
            subDomain: 'string',
            threatLevel: 'string',
            threatSourceIp: 'string',
            threatType: 'string',
            type: 'string',
        };
    }
}
exports.DescribePdnsThreatStatisticsRequest = DescribePdnsThreatStatisticsRequest;
class DescribePdnsThreatStatisticsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            data: 'Data',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            data: { 'type': 'array', 'itemType': DescribePdnsThreatStatisticsResponseBodyData },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribePdnsThreatStatisticsResponseBody = DescribePdnsThreatStatisticsResponseBody;
class DescribePdnsThreatStatisticsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsThreatStatisticsResponseBody,
        };
    }
}
exports.DescribePdnsThreatStatisticsResponse = DescribePdnsThreatStatisticsResponse;
class DescribePdnsUdpIpSegmentsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
        };
    }
    static types() {
        return {
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
        };
    }
}
exports.DescribePdnsUdpIpSegmentsRequest = DescribePdnsUdpIpSegmentsRequest;
class DescribePdnsUdpIpSegmentsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ipSegments: 'IpSegments',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            ipSegments: { 'type': 'array', 'itemType': DescribePdnsUdpIpSegmentsResponseBodyIpSegments },
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribePdnsUdpIpSegmentsResponseBody = DescribePdnsUdpIpSegmentsResponseBody;
class DescribePdnsUdpIpSegmentsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsUdpIpSegmentsResponseBody,
        };
    }
}
exports.DescribePdnsUdpIpSegmentsResponse = DescribePdnsUdpIpSegmentsResponse;
class DescribePdnsUserInfoRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
        };
    }
    static types() {
        return {
            lang: 'string',
        };
    }
}
exports.DescribePdnsUserInfoRequest = DescribePdnsUserInfoRequest;
class DescribePdnsUserInfoResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            userInfo: 'UserInfo',
        };
    }
    static types() {
        return {
            requestId: 'string',
            userInfo: DescribePdnsUserInfoResponseBodyUserInfo,
        };
    }
}
exports.DescribePdnsUserInfoResponseBody = DescribePdnsUserInfoResponseBody;
class DescribePdnsUserInfoResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribePdnsUserInfoResponseBody,
        };
    }
}
exports.DescribePdnsUserInfoResponse = DescribePdnsUserInfoResponse;
class DescribeRecordLogsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            keyWord: 'KeyWord',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            startDate: 'StartDate',
            userClientIp: 'UserClientIp',
            endDate: 'endDate',
        };
    }
    static types() {
        return {
            domainName: 'string',
            keyWord: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            startDate: 'string',
            userClientIp: 'string',
            endDate: 'string',
        };
    }
}
exports.DescribeRecordLogsRequest = DescribeRecordLogsRequest;
class DescribeRecordLogsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            recordLogs: 'RecordLogs',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            recordLogs: DescribeRecordLogsResponseBodyRecordLogs,
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeRecordLogsResponseBody = DescribeRecordLogsResponseBody;
class DescribeRecordLogsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeRecordLogsResponseBody,
        };
    }
}
exports.DescribeRecordLogsResponse = DescribeRecordLogsResponse;
class DescribeRecordResolveStatisticsSummaryRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            direction: 'Direction',
            domainName: 'DomainName',
            domainType: 'DomainType',
            endDate: 'EndDate',
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            searchMode: 'SearchMode',
            startDate: 'StartDate',
            threshold: 'Threshold',
        };
    }
    static types() {
        return {
            direction: 'string',
            domainName: 'string',
            domainType: 'string',
            endDate: 'string',
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            searchMode: 'string',
            startDate: 'string',
            threshold: 'number',
        };
    }
}
exports.DescribeRecordResolveStatisticsSummaryRequest = DescribeRecordResolveStatisticsSummaryRequest;
class DescribeRecordResolveStatisticsSummaryResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            statistics: 'Statistics',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            statistics: { 'type': 'array', 'itemType': DescribeRecordResolveStatisticsSummaryResponseBodyStatistics },
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeRecordResolveStatisticsSummaryResponseBody = DescribeRecordResolveStatisticsSummaryResponseBody;
class DescribeRecordResolveStatisticsSummaryResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeRecordResolveStatisticsSummaryResponseBody,
        };
    }
}
exports.DescribeRecordResolveStatisticsSummaryResponse = DescribeRecordResolveStatisticsSummaryResponse;
class DescribeRecordStatisticsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            domainType: 'DomainType',
            endDate: 'EndDate',
            lang: 'Lang',
            rr: 'Rr',
            startDate: 'StartDate',
        };
    }
    static types() {
        return {
            domainName: 'string',
            domainType: 'string',
            endDate: 'string',
            lang: 'string',
            rr: 'string',
            startDate: 'string',
        };
    }
}
exports.DescribeRecordStatisticsRequest = DescribeRecordStatisticsRequest;
class DescribeRecordStatisticsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            statistics: 'Statistics',
        };
    }
    static types() {
        return {
            requestId: 'string',
            statistics: DescribeRecordStatisticsResponseBodyStatistics,
        };
    }
}
exports.DescribeRecordStatisticsResponseBody = DescribeRecordStatisticsResponseBody;
class DescribeRecordStatisticsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeRecordStatisticsResponseBody,
        };
    }
}
exports.DescribeRecordStatisticsResponse = DescribeRecordStatisticsResponse;
class DescribeRecordStatisticsSummaryRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            domainType: 'DomainType',
            endDate: 'EndDate',
            keyword: 'Keyword',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            searchMode: 'SearchMode',
            startDate: 'StartDate',
            threshold: 'Threshold',
        };
    }
    static types() {
        return {
            domainName: 'string',
            domainType: 'string',
            endDate: 'string',
            keyword: 'string',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            searchMode: 'string',
            startDate: 'string',
            threshold: 'number',
        };
    }
}
exports.DescribeRecordStatisticsSummaryRequest = DescribeRecordStatisticsSummaryRequest;
class DescribeRecordStatisticsSummaryResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            statistics: 'Statistics',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            statistics: DescribeRecordStatisticsSummaryResponseBodyStatistics,
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.DescribeRecordStatisticsSummaryResponseBody = DescribeRecordStatisticsSummaryResponseBody;
class DescribeRecordStatisticsSummaryResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeRecordStatisticsSummaryResponseBody,
        };
    }
}
exports.DescribeRecordStatisticsSummaryResponse = DescribeRecordStatisticsSummaryResponse;
class DescribeSubDomainRecordsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            line: 'Line',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            subDomain: 'SubDomain',
            type: 'Type',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            line: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            subDomain: 'string',
            type: 'string',
            userClientIp: 'string',
        };
    }
}
exports.DescribeSubDomainRecordsRequest = DescribeSubDomainRecordsRequest;
class DescribeSubDomainRecordsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainRecords: 'DomainRecords',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            domainRecords: DescribeSubDomainRecordsResponseBodyDomainRecords,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeSubDomainRecordsResponseBody = DescribeSubDomainRecordsResponseBody;
class DescribeSubDomainRecordsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeSubDomainRecordsResponseBody,
        };
    }
}
exports.DescribeSubDomainRecordsResponse = DescribeSubDomainRecordsResponse;
class DescribeSupportLinesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            userClientIp: 'string',
        };
    }
}
exports.DescribeSupportLinesRequest = DescribeSupportLinesRequest;
class DescribeSupportLinesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recordLines: 'RecordLines',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            recordLines: DescribeSupportLinesResponseBodyRecordLines,
            requestId: 'string',
        };
    }
}
exports.DescribeSupportLinesResponseBody = DescribeSupportLinesResponseBody;
class DescribeSupportLinesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeSupportLinesResponseBody,
        };
    }
}
exports.DescribeSupportLinesResponse = DescribeSupportLinesResponse;
class DescribeTagsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            resourceType: 'ResourceType',
        };
    }
    static types() {
        return {
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            resourceType: 'string',
        };
    }
}
exports.DescribeTagsRequest = DescribeTagsRequest;
class DescribeTagsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            tags: 'Tags',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            tags: { 'type': 'array', 'itemType': DescribeTagsResponseBodyTags },
            totalCount: 'number',
        };
    }
}
exports.DescribeTagsResponseBody = DescribeTagsResponseBody;
class DescribeTagsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeTagsResponseBody,
        };
    }
}
exports.DescribeTagsResponse = DescribeTagsResponse;
class DescribeTransferDomainsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            fromUserId: 'FromUserId',
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            targetUserId: 'TargetUserId',
            transferType: 'TransferType',
        };
    }
    static types() {
        return {
            domainName: 'string',
            fromUserId: 'number',
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            targetUserId: 'number',
            transferType: 'string',
        };
    }
}
exports.DescribeTransferDomainsRequest = DescribeTransferDomainsRequest;
class DescribeTransferDomainsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainTransfers: 'DomainTransfers',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            requestId: 'RequestId',
            totalCount: 'TotalCount',
        };
    }
    static types() {
        return {
            domainTransfers: DescribeTransferDomainsResponseBodyDomainTransfers,
            pageNumber: 'number',
            pageSize: 'number',
            requestId: 'string',
            totalCount: 'number',
        };
    }
}
exports.DescribeTransferDomainsResponseBody = DescribeTransferDomainsResponseBody;
class DescribeTransferDomainsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: DescribeTransferDomainsResponseBody,
        };
    }
}
exports.DescribeTransferDomainsResponse = DescribeTransferDomainsResponse;
class ExecuteGtmRecoveryPlanRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            recoveryPlanId: 'RecoveryPlanId',
        };
    }
    static types() {
        return {
            lang: 'string',
            recoveryPlanId: 'number',
        };
    }
}
exports.ExecuteGtmRecoveryPlanRequest = ExecuteGtmRecoveryPlanRequest;
class ExecuteGtmRecoveryPlanResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.ExecuteGtmRecoveryPlanResponseBody = ExecuteGtmRecoveryPlanResponseBody;
class ExecuteGtmRecoveryPlanResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: ExecuteGtmRecoveryPlanResponseBody,
        };
    }
}
exports.ExecuteGtmRecoveryPlanResponse = ExecuteGtmRecoveryPlanResponse;
class GetMainDomainNameRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            inputString: 'InputString',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            inputString: 'string',
            lang: 'string',
        };
    }
}
exports.GetMainDomainNameRequest = GetMainDomainNameRequest;
class GetMainDomainNameResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainLevel: 'DomainLevel',
            domainName: 'DomainName',
            RR: 'RR',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            domainLevel: 'number',
            domainName: 'string',
            RR: 'string',
            requestId: 'string',
        };
    }
}
exports.GetMainDomainNameResponseBody = GetMainDomainNameResponseBody;
class GetMainDomainNameResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: GetMainDomainNameResponseBody,
        };
    }
}
exports.GetMainDomainNameResponse = GetMainDomainNameResponse;
class GetTxtRecordForVerifyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            type: 'Type',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            type: 'string',
        };
    }
}
exports.GetTxtRecordForVerifyRequest = GetTxtRecordForVerifyRequest;
class GetTxtRecordForVerifyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            RR: 'RR',
            requestId: 'RequestId',
            value: 'Value',
        };
    }
    static types() {
        return {
            domainName: 'string',
            RR: 'string',
            requestId: 'string',
            value: 'string',
        };
    }
}
exports.GetTxtRecordForVerifyResponseBody = GetTxtRecordForVerifyResponseBody;
class GetTxtRecordForVerifyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: GetTxtRecordForVerifyResponseBody,
        };
    }
}
exports.GetTxtRecordForVerifyResponse = GetTxtRecordForVerifyResponse;
class ListTagResourcesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            nextToken: 'NextToken',
            resourceId: 'ResourceId',
            resourceType: 'ResourceType',
            tag: 'Tag',
        };
    }
    static types() {
        return {
            lang: 'string',
            nextToken: 'string',
            resourceId: { 'type': 'array', 'itemType': 'string' },
            resourceType: 'string',
            tag: { 'type': 'array', 'itemType': ListTagResourcesRequestTag },
        };
    }
}
exports.ListTagResourcesRequest = ListTagResourcesRequest;
class ListTagResourcesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            nextToken: 'NextToken',
            requestId: 'RequestId',
            tagResources: 'TagResources',
        };
    }
    static types() {
        return {
            nextToken: 'string',
            requestId: 'string',
            tagResources: { 'type': 'array', 'itemType': ListTagResourcesResponseBodyTagResources },
        };
    }
}
exports.ListTagResourcesResponseBody = ListTagResourcesResponseBody;
class ListTagResourcesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: ListTagResourcesResponseBody,
        };
    }
}
exports.ListTagResourcesResponse = ListTagResourcesResponse;
class ModifyHichinaDomainDNSRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            userClientIp: 'string',
        };
    }
}
exports.ModifyHichinaDomainDNSRequest = ModifyHichinaDomainDNSRequest;
class ModifyHichinaDomainDNSResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            newDnsServers: 'NewDnsServers',
            originalDnsServers: 'OriginalDnsServers',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            newDnsServers: ModifyHichinaDomainDNSResponseBodyNewDnsServers,
            originalDnsServers: ModifyHichinaDomainDNSResponseBodyOriginalDnsServers,
            requestId: 'string',
        };
    }
}
exports.ModifyHichinaDomainDNSResponseBody = ModifyHichinaDomainDNSResponseBody;
class ModifyHichinaDomainDNSResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: ModifyHichinaDomainDNSResponseBody,
        };
    }
}
exports.ModifyHichinaDomainDNSResponse = ModifyHichinaDomainDNSResponse;
class MoveDomainResourceGroupRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            newResourceGroupId: 'NewResourceGroupId',
            resourceId: 'ResourceId',
        };
    }
    static types() {
        return {
            lang: 'string',
            newResourceGroupId: 'string',
            resourceId: 'string',
        };
    }
}
exports.MoveDomainResourceGroupRequest = MoveDomainResourceGroupRequest;
class MoveDomainResourceGroupResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.MoveDomainResourceGroupResponseBody = MoveDomainResourceGroupResponseBody;
class MoveDomainResourceGroupResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: MoveDomainResourceGroupResponseBody,
        };
    }
}
exports.MoveDomainResourceGroupResponse = MoveDomainResourceGroupResponse;
class MoveGtmResourceGroupRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            newResourceGroupId: 'NewResourceGroupId',
            resourceId: 'ResourceId',
        };
    }
    static types() {
        return {
            lang: 'string',
            newResourceGroupId: 'string',
            resourceId: 'string',
        };
    }
}
exports.MoveGtmResourceGroupRequest = MoveGtmResourceGroupRequest;
class MoveGtmResourceGroupResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.MoveGtmResourceGroupResponseBody = MoveGtmResourceGroupResponseBody;
class MoveGtmResourceGroupResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: MoveGtmResourceGroupResponseBody,
        };
    }
}
exports.MoveGtmResourceGroupResponse = MoveGtmResourceGroupResponse;
class OperateBatchDomainRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainRecordInfo: 'DomainRecordInfo',
            lang: 'Lang',
            type: 'Type',
        };
    }
    static types() {
        return {
            domainRecordInfo: { 'type': 'array', 'itemType': OperateBatchDomainRequestDomainRecordInfo },
            lang: 'string',
            type: 'string',
        };
    }
}
exports.OperateBatchDomainRequest = OperateBatchDomainRequest;
class OperateBatchDomainResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            taskId: 'TaskId',
        };
    }
    static types() {
        return {
            requestId: 'string',
            taskId: 'number',
        };
    }
}
exports.OperateBatchDomainResponseBody = OperateBatchDomainResponseBody;
class OperateBatchDomainResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: OperateBatchDomainResponseBody,
        };
    }
}
exports.OperateBatchDomainResponse = OperateBatchDomainResponse;
class PausePdnsServiceRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            serviceType: 'ServiceType',
        };
    }
    static types() {
        return {
            lang: 'string',
            serviceType: 'string',
        };
    }
}
exports.PausePdnsServiceRequest = PausePdnsServiceRequest;
class PausePdnsServiceResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.PausePdnsServiceResponseBody = PausePdnsServiceResponseBody;
class PausePdnsServiceResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: PausePdnsServiceResponseBody,
        };
    }
}
exports.PausePdnsServiceResponse = PausePdnsServiceResponse;
class PreviewGtmRecoveryPlanRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            recoveryPlanId: 'RecoveryPlanId',
        };
    }
    static types() {
        return {
            lang: 'string',
            pageNumber: 'number',
            pageSize: 'number',
            recoveryPlanId: 'number',
        };
    }
}
exports.PreviewGtmRecoveryPlanRequest = PreviewGtmRecoveryPlanRequest;
class PreviewGtmRecoveryPlanResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            pageNumber: 'PageNumber',
            pageSize: 'PageSize',
            previews: 'Previews',
            requestId: 'RequestId',
            totalItems: 'TotalItems',
            totalPages: 'TotalPages',
        };
    }
    static types() {
        return {
            pageNumber: 'number',
            pageSize: 'number',
            previews: PreviewGtmRecoveryPlanResponseBodyPreviews,
            requestId: 'string',
            totalItems: 'number',
            totalPages: 'number',
        };
    }
}
exports.PreviewGtmRecoveryPlanResponseBody = PreviewGtmRecoveryPlanResponseBody;
class PreviewGtmRecoveryPlanResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: PreviewGtmRecoveryPlanResponseBody,
        };
    }
}
exports.PreviewGtmRecoveryPlanResponse = PreviewGtmRecoveryPlanResponse;
class RemovePdnsAppKeyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            appKeyId: 'AppKeyId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            appKeyId: 'string',
            lang: 'string',
        };
    }
}
exports.RemovePdnsAppKeyRequest = RemovePdnsAppKeyRequest;
class RemovePdnsAppKeyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.RemovePdnsAppKeyResponseBody = RemovePdnsAppKeyResponseBody;
class RemovePdnsAppKeyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: RemovePdnsAppKeyResponseBody,
        };
    }
}
exports.RemovePdnsAppKeyResponse = RemovePdnsAppKeyResponse;
class RemovePdnsUdpIpSegmentRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ip: 'Ip',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            ip: 'string',
            lang: 'string',
        };
    }
}
exports.RemovePdnsUdpIpSegmentRequest = RemovePdnsUdpIpSegmentRequest;
class RemovePdnsUdpIpSegmentResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.RemovePdnsUdpIpSegmentResponseBody = RemovePdnsUdpIpSegmentResponseBody;
class RemovePdnsUdpIpSegmentResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: RemovePdnsUdpIpSegmentResponseBody,
        };
    }
}
exports.RemovePdnsUdpIpSegmentResponse = RemovePdnsUdpIpSegmentResponse;
class ResumePdnsServiceRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            serviceType: 'ServiceType',
        };
    }
    static types() {
        return {
            lang: 'string',
            serviceType: 'string',
        };
    }
}
exports.ResumePdnsServiceRequest = ResumePdnsServiceRequest;
class ResumePdnsServiceResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.ResumePdnsServiceResponseBody = ResumePdnsServiceResponseBody;
class ResumePdnsServiceResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: ResumePdnsServiceResponseBody,
        };
    }
}
exports.ResumePdnsServiceResponse = ResumePdnsServiceResponse;
class RetrieveDomainRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
        };
    }
}
exports.RetrieveDomainRequest = RetrieveDomainRequest;
class RetrieveDomainResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.RetrieveDomainResponseBody = RetrieveDomainResponseBody;
class RetrieveDomainResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: RetrieveDomainResponseBody,
        };
    }
}
exports.RetrieveDomainResponse = RetrieveDomainResponse;
class RollbackGtmRecoveryPlanRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            recoveryPlanId: 'RecoveryPlanId',
        };
    }
    static types() {
        return {
            lang: 'string',
            recoveryPlanId: 'number',
        };
    }
}
exports.RollbackGtmRecoveryPlanRequest = RollbackGtmRecoveryPlanRequest;
class RollbackGtmRecoveryPlanResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.RollbackGtmRecoveryPlanResponseBody = RollbackGtmRecoveryPlanResponseBody;
class RollbackGtmRecoveryPlanResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: RollbackGtmRecoveryPlanResponseBody,
        };
    }
}
exports.RollbackGtmRecoveryPlanResponse = RollbackGtmRecoveryPlanResponse;
class SetDNSSLBStatusRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            line: 'Line',
            open: 'Open',
            subDomain: 'SubDomain',
            type: 'Type',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            line: 'string',
            open: 'boolean',
            subDomain: 'string',
            type: 'string',
            userClientIp: 'string',
        };
    }
}
exports.SetDNSSLBStatusRequest = SetDNSSLBStatusRequest;
class SetDNSSLBStatusResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            open: 'Open',
            recordCount: 'RecordCount',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            open: 'boolean',
            recordCount: 'number',
            requestId: 'string',
        };
    }
}
exports.SetDNSSLBStatusResponseBody = SetDNSSLBStatusResponseBody;
class SetDNSSLBStatusResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: SetDNSSLBStatusResponseBody,
        };
    }
}
exports.SetDNSSLBStatusResponse = SetDNSSLBStatusResponse;
class SetDnsGtmAccessModeRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessMode: 'AccessMode',
            lang: 'Lang',
            strategyId: 'StrategyId',
        };
    }
    static types() {
        return {
            accessMode: 'string',
            lang: 'string',
            strategyId: 'string',
        };
    }
}
exports.SetDnsGtmAccessModeRequest = SetDnsGtmAccessModeRequest;
class SetDnsGtmAccessModeResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.SetDnsGtmAccessModeResponseBody = SetDnsGtmAccessModeResponseBody;
class SetDnsGtmAccessModeResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: SetDnsGtmAccessModeResponseBody,
        };
    }
}
exports.SetDnsGtmAccessModeResponse = SetDnsGtmAccessModeResponse;
class SetDnsGtmMonitorStatusRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            monitorConfigId: 'MonitorConfigId',
            status: 'Status',
        };
    }
    static types() {
        return {
            lang: 'string',
            monitorConfigId: 'string',
            status: 'string',
        };
    }
}
exports.SetDnsGtmMonitorStatusRequest = SetDnsGtmMonitorStatusRequest;
class SetDnsGtmMonitorStatusResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.SetDnsGtmMonitorStatusResponseBody = SetDnsGtmMonitorStatusResponseBody;
class SetDnsGtmMonitorStatusResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: SetDnsGtmMonitorStatusResponseBody,
        };
    }
}
exports.SetDnsGtmMonitorStatusResponse = SetDnsGtmMonitorStatusResponse;
class SetDomainDnssecStatusRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            status: 'Status',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            status: 'string',
        };
    }
}
exports.SetDomainDnssecStatusRequest = SetDomainDnssecStatusRequest;
class SetDomainDnssecStatusResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.SetDomainDnssecStatusResponseBody = SetDomainDnssecStatusResponseBody;
class SetDomainDnssecStatusResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: SetDomainDnssecStatusResponseBody,
        };
    }
}
exports.SetDomainDnssecStatusResponse = SetDomainDnssecStatusResponse;
class SetDomainRecordStatusRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            recordId: 'RecordId',
            status: 'Status',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            lang: 'string',
            recordId: 'string',
            status: 'string',
            userClientIp: 'string',
        };
    }
}
exports.SetDomainRecordStatusRequest = SetDomainRecordStatusRequest;
class SetDomainRecordStatusResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recordId: 'RecordId',
            requestId: 'RequestId',
            status: 'Status',
        };
    }
    static types() {
        return {
            recordId: 'string',
            requestId: 'string',
            status: 'string',
        };
    }
}
exports.SetDomainRecordStatusResponseBody = SetDomainRecordStatusResponseBody;
class SetDomainRecordStatusResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: SetDomainRecordStatusResponseBody,
        };
    }
}
exports.SetDomainRecordStatusResponse = SetDomainRecordStatusResponse;
class SetGtmAccessModeRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessMode: 'AccessMode',
            lang: 'Lang',
            strategyId: 'StrategyId',
        };
    }
    static types() {
        return {
            accessMode: 'string',
            lang: 'string',
            strategyId: 'string',
        };
    }
}
exports.SetGtmAccessModeRequest = SetGtmAccessModeRequest;
class SetGtmAccessModeResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.SetGtmAccessModeResponseBody = SetGtmAccessModeResponseBody;
class SetGtmAccessModeResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: SetGtmAccessModeResponseBody,
        };
    }
}
exports.SetGtmAccessModeResponse = SetGtmAccessModeResponse;
class SetGtmMonitorStatusRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            monitorConfigId: 'MonitorConfigId',
            status: 'Status',
        };
    }
    static types() {
        return {
            lang: 'string',
            monitorConfigId: 'string',
            status: 'string',
        };
    }
}
exports.SetGtmMonitorStatusRequest = SetGtmMonitorStatusRequest;
class SetGtmMonitorStatusResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.SetGtmMonitorStatusResponseBody = SetGtmMonitorStatusResponseBody;
class SetGtmMonitorStatusResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: SetGtmMonitorStatusResponseBody,
        };
    }
}
exports.SetGtmMonitorStatusResponse = SetGtmMonitorStatusResponse;
class SubmitIspFlushCacheTaskRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            clientToken: 'ClientToken',
            domainName: 'DomainName',
            isp: 'Isp',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            clientToken: 'string',
            domainName: 'string',
            isp: { 'type': 'array', 'itemType': 'string' },
            lang: 'string',
        };
    }
}
exports.SubmitIspFlushCacheTaskRequest = SubmitIspFlushCacheTaskRequest;
class SubmitIspFlushCacheTaskResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.SubmitIspFlushCacheTaskResponseBody = SubmitIspFlushCacheTaskResponseBody;
class SubmitIspFlushCacheTaskResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: SubmitIspFlushCacheTaskResponseBody,
        };
    }
}
exports.SubmitIspFlushCacheTaskResponse = SubmitIspFlushCacheTaskResponse;
class SwitchDnsGtmInstanceStrategyModeRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            lang: 'Lang',
            strategyMode: 'StrategyMode',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            lang: 'string',
            strategyMode: 'string',
        };
    }
}
exports.SwitchDnsGtmInstanceStrategyModeRequest = SwitchDnsGtmInstanceStrategyModeRequest;
class SwitchDnsGtmInstanceStrategyModeResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.SwitchDnsGtmInstanceStrategyModeResponseBody = SwitchDnsGtmInstanceStrategyModeResponseBody;
class SwitchDnsGtmInstanceStrategyModeResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: SwitchDnsGtmInstanceStrategyModeResponseBody,
        };
    }
}
exports.SwitchDnsGtmInstanceStrategyModeResponse = SwitchDnsGtmInstanceStrategyModeResponse;
class TagResourcesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            resourceId: 'ResourceId',
            resourceType: 'ResourceType',
            tag: 'Tag',
        };
    }
    static types() {
        return {
            lang: 'string',
            resourceId: { 'type': 'array', 'itemType': 'string' },
            resourceType: 'string',
            tag: { 'type': 'array', 'itemType': TagResourcesRequestTag },
        };
    }
}
exports.TagResourcesRequest = TagResourcesRequest;
class TagResourcesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.TagResourcesResponseBody = TagResourcesResponseBody;
class TagResourcesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: TagResourcesResponseBody,
        };
    }
}
exports.TagResourcesResponse = TagResourcesResponse;
class TransferDomainRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainNames: 'DomainNames',
            lang: 'Lang',
            remark: 'Remark',
            targetUserId: 'TargetUserId',
        };
    }
    static types() {
        return {
            domainNames: 'string',
            lang: 'string',
            remark: 'string',
            targetUserId: 'number',
        };
    }
}
exports.TransferDomainRequest = TransferDomainRequest;
class TransferDomainResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            taskId: 'TaskId',
        };
    }
    static types() {
        return {
            requestId: 'string',
            taskId: 'number',
        };
    }
}
exports.TransferDomainResponseBody = TransferDomainResponseBody;
class TransferDomainResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: TransferDomainResponseBody,
        };
    }
}
exports.TransferDomainResponse = TransferDomainResponse;
class UnbindInstanceDomainsRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainNames: 'DomainNames',
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            domainNames: 'string',
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.UnbindInstanceDomainsRequest = UnbindInstanceDomainsRequest;
class UnbindInstanceDomainsResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            failedCount: 'FailedCount',
            requestId: 'RequestId',
            successCount: 'SuccessCount',
        };
    }
    static types() {
        return {
            failedCount: 'number',
            requestId: 'string',
            successCount: 'number',
        };
    }
}
exports.UnbindInstanceDomainsResponseBody = UnbindInstanceDomainsResponseBody;
class UnbindInstanceDomainsResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UnbindInstanceDomainsResponseBody,
        };
    }
}
exports.UnbindInstanceDomainsResponse = UnbindInstanceDomainsResponse;
class UntagResourcesRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            all: 'All',
            lang: 'Lang',
            resourceId: 'ResourceId',
            resourceType: 'ResourceType',
            tagKey: 'TagKey',
        };
    }
    static types() {
        return {
            all: 'boolean',
            lang: 'string',
            resourceId: { 'type': 'array', 'itemType': 'string' },
            resourceType: 'string',
            tagKey: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.UntagResourcesRequest = UntagResourcesRequest;
class UntagResourcesResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UntagResourcesResponseBody = UntagResourcesResponseBody;
class UntagResourcesResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UntagResourcesResponseBody,
        };
    }
}
exports.UntagResourcesResponse = UntagResourcesResponse;
class UpdateAppKeyStateRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            appKeyId: 'AppKeyId',
            lang: 'Lang',
            state: 'State',
        };
    }
    static types() {
        return {
            appKeyId: 'string',
            lang: 'string',
            state: 'string',
        };
    }
}
exports.UpdateAppKeyStateRequest = UpdateAppKeyStateRequest;
class UpdateAppKeyStateResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateAppKeyStateResponseBody = UpdateAppKeyStateResponseBody;
class UpdateAppKeyStateResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateAppKeyStateResponseBody,
        };
    }
}
exports.UpdateAppKeyStateResponse = UpdateAppKeyStateResponse;
class UpdateCustomLineRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ipSegment: 'IpSegment',
            lang: 'Lang',
            lineId: 'LineId',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            ipSegment: { 'type': 'array', 'itemType': UpdateCustomLineRequestIpSegment },
            lang: 'string',
            lineId: 'number',
            lineName: 'string',
        };
    }
}
exports.UpdateCustomLineRequest = UpdateCustomLineRequest;
class UpdateCustomLineResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateCustomLineResponseBody = UpdateCustomLineResponseBody;
class UpdateCustomLineResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateCustomLineResponseBody,
        };
    }
}
exports.UpdateCustomLineResponse = UpdateCustomLineResponse;
class UpdateDNSSLBWeightRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            recordId: 'RecordId',
            userClientIp: 'UserClientIp',
            weight: 'Weight',
        };
    }
    static types() {
        return {
            lang: 'string',
            recordId: 'string',
            userClientIp: 'string',
            weight: 'number',
        };
    }
}
exports.UpdateDNSSLBWeightRequest = UpdateDNSSLBWeightRequest;
class UpdateDNSSLBWeightResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recordId: 'RecordId',
            requestId: 'RequestId',
            weight: 'Weight',
        };
    }
    static types() {
        return {
            recordId: 'string',
            requestId: 'string',
            weight: 'number',
        };
    }
}
exports.UpdateDNSSLBWeightResponseBody = UpdateDNSSLBWeightResponseBody;
class UpdateDNSSLBWeightResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDNSSLBWeightResponseBody,
        };
    }
}
exports.UpdateDNSSLBWeightResponse = UpdateDNSSLBWeightResponse;
class UpdateDnsCacheDomainRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cacheTtlMax: 'CacheTtlMax',
            cacheTtlMin: 'CacheTtlMin',
            domainName: 'DomainName',
            instanceId: 'InstanceId',
            lang: 'Lang',
            sourceDnsServer: 'SourceDnsServer',
            sourceEdns: 'SourceEdns',
            sourceProtocol: 'SourceProtocol',
        };
    }
    static types() {
        return {
            cacheTtlMax: 'number',
            cacheTtlMin: 'number',
            domainName: 'string',
            instanceId: 'string',
            lang: 'string',
            sourceDnsServer: { 'type': 'array', 'itemType': UpdateDnsCacheDomainRequestSourceDnsServer },
            sourceEdns: 'string',
            sourceProtocol: 'string',
        };
    }
}
exports.UpdateDnsCacheDomainRequest = UpdateDnsCacheDomainRequest;
class UpdateDnsCacheDomainResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateDnsCacheDomainResponseBody = UpdateDnsCacheDomainResponseBody;
class UpdateDnsCacheDomainResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDnsCacheDomainResponseBody,
        };
    }
}
exports.UpdateDnsCacheDomainResponse = UpdateDnsCacheDomainResponse;
class UpdateDnsCacheDomainRemarkRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            remark: 'Remark',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            remark: 'string',
        };
    }
}
exports.UpdateDnsCacheDomainRemarkRequest = UpdateDnsCacheDomainRemarkRequest;
class UpdateDnsCacheDomainRemarkResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateDnsCacheDomainRemarkResponseBody = UpdateDnsCacheDomainRemarkResponseBody;
class UpdateDnsCacheDomainRemarkResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDnsCacheDomainRemarkResponseBody,
        };
    }
}
exports.UpdateDnsCacheDomainRemarkResponse = UpdateDnsCacheDomainRemarkResponse;
class UpdateDnsGtmAccessStrategyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessMode: 'AccessMode',
            defaultAddrPool: 'DefaultAddrPool',
            defaultAddrPoolType: 'DefaultAddrPoolType',
            defaultLatencyOptimization: 'DefaultLatencyOptimization',
            defaultLbaStrategy: 'DefaultLbaStrategy',
            defaultMaxReturnAddrNum: 'DefaultMaxReturnAddrNum',
            defaultMinAvailableAddrNum: 'DefaultMinAvailableAddrNum',
            failoverAddrPool: 'FailoverAddrPool',
            failoverAddrPoolType: 'FailoverAddrPoolType',
            failoverLatencyOptimization: 'FailoverLatencyOptimization',
            failoverLbaStrategy: 'FailoverLbaStrategy',
            failoverMaxReturnAddrNum: 'FailoverMaxReturnAddrNum',
            failoverMinAvailableAddrNum: 'FailoverMinAvailableAddrNum',
            lang: 'Lang',
            lines: 'Lines',
            strategyId: 'StrategyId',
            strategyName: 'StrategyName',
        };
    }
    static types() {
        return {
            accessMode: 'string',
            defaultAddrPool: { 'type': 'array', 'itemType': UpdateDnsGtmAccessStrategyRequestDefaultAddrPool },
            defaultAddrPoolType: 'string',
            defaultLatencyOptimization: 'string',
            defaultLbaStrategy: 'string',
            defaultMaxReturnAddrNum: 'number',
            defaultMinAvailableAddrNum: 'number',
            failoverAddrPool: { 'type': 'array', 'itemType': UpdateDnsGtmAccessStrategyRequestFailoverAddrPool },
            failoverAddrPoolType: 'string',
            failoverLatencyOptimization: 'string',
            failoverLbaStrategy: 'string',
            failoverMaxReturnAddrNum: 'number',
            failoverMinAvailableAddrNum: 'number',
            lang: 'string',
            lines: 'string',
            strategyId: 'string',
            strategyName: 'string',
        };
    }
}
exports.UpdateDnsGtmAccessStrategyRequest = UpdateDnsGtmAccessStrategyRequest;
class UpdateDnsGtmAccessStrategyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
            strategyId: 'StrategyId',
        };
    }
    static types() {
        return {
            requestId: 'string',
            strategyId: 'string',
        };
    }
}
exports.UpdateDnsGtmAccessStrategyResponseBody = UpdateDnsGtmAccessStrategyResponseBody;
class UpdateDnsGtmAccessStrategyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDnsGtmAccessStrategyResponseBody,
        };
    }
}
exports.UpdateDnsGtmAccessStrategyResponse = UpdateDnsGtmAccessStrategyResponse;
class UpdateDnsGtmAddressPoolRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
            addrPoolId: 'AddrPoolId',
            lang: 'Lang',
            lbaStrategy: 'LbaStrategy',
            name: 'Name',
        };
    }
    static types() {
        return {
            addr: { 'type': 'array', 'itemType': UpdateDnsGtmAddressPoolRequestAddr },
            addrPoolId: 'string',
            lang: 'string',
            lbaStrategy: 'string',
            name: 'string',
        };
    }
}
exports.UpdateDnsGtmAddressPoolRequest = UpdateDnsGtmAddressPoolRequest;
class UpdateDnsGtmAddressPoolResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateDnsGtmAddressPoolResponseBody = UpdateDnsGtmAddressPoolResponseBody;
class UpdateDnsGtmAddressPoolResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDnsGtmAddressPoolResponseBody,
        };
    }
}
exports.UpdateDnsGtmAddressPoolResponse = UpdateDnsGtmAddressPoolResponse;
class UpdateDnsGtmInstanceGlobalConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            alertConfig: 'AlertConfig',
            alertGroup: 'AlertGroup',
            cnameType: 'CnameType',
            forceUpdate: 'ForceUpdate',
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
            lang: 'Lang',
            publicCnameMode: 'PublicCnameMode',
            publicRr: 'PublicRr',
            publicUserDomainName: 'PublicUserDomainName',
            publicZoneName: 'PublicZoneName',
            ttl: 'Ttl',
        };
    }
    static types() {
        return {
            alertConfig: { 'type': 'array', 'itemType': UpdateDnsGtmInstanceGlobalConfigRequestAlertConfig },
            alertGroup: 'string',
            cnameType: 'string',
            forceUpdate: 'boolean',
            instanceId: 'string',
            instanceName: 'string',
            lang: 'string',
            publicCnameMode: 'string',
            publicRr: 'string',
            publicUserDomainName: 'string',
            publicZoneName: 'string',
            ttl: 'number',
        };
    }
}
exports.UpdateDnsGtmInstanceGlobalConfigRequest = UpdateDnsGtmInstanceGlobalConfigRequest;
class UpdateDnsGtmInstanceGlobalConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateDnsGtmInstanceGlobalConfigResponseBody = UpdateDnsGtmInstanceGlobalConfigResponseBody;
class UpdateDnsGtmInstanceGlobalConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDnsGtmInstanceGlobalConfigResponseBody,
        };
    }
}
exports.UpdateDnsGtmInstanceGlobalConfigResponse = UpdateDnsGtmInstanceGlobalConfigResponse;
class UpdateDnsGtmMonitorRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            evaluationCount: 'EvaluationCount',
            interval: 'Interval',
            ispCityNode: 'IspCityNode',
            lang: 'Lang',
            monitorConfigId: 'MonitorConfigId',
            monitorExtendInfo: 'MonitorExtendInfo',
            protocolType: 'ProtocolType',
            timeout: 'Timeout',
        };
    }
    static types() {
        return {
            evaluationCount: 'number',
            interval: 'number',
            ispCityNode: { 'type': 'array', 'itemType': UpdateDnsGtmMonitorRequestIspCityNode },
            lang: 'string',
            monitorConfigId: 'string',
            monitorExtendInfo: 'string',
            protocolType: 'string',
            timeout: 'number',
        };
    }
}
exports.UpdateDnsGtmMonitorRequest = UpdateDnsGtmMonitorRequest;
class UpdateDnsGtmMonitorResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateDnsGtmMonitorResponseBody = UpdateDnsGtmMonitorResponseBody;
class UpdateDnsGtmMonitorResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDnsGtmMonitorResponseBody,
        };
    }
}
exports.UpdateDnsGtmMonitorResponse = UpdateDnsGtmMonitorResponse;
class UpdateDomainGroupRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupId: 'GroupId',
            groupName: 'GroupName',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            groupId: 'string',
            groupName: 'string',
            lang: 'string',
        };
    }
}
exports.UpdateDomainGroupRequest = UpdateDomainGroupRequest;
class UpdateDomainGroupResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupId: 'GroupId',
            groupName: 'GroupName',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            groupId: 'string',
            groupName: 'string',
            requestId: 'string',
        };
    }
}
exports.UpdateDomainGroupResponseBody = UpdateDomainGroupResponseBody;
class UpdateDomainGroupResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDomainGroupResponseBody,
        };
    }
}
exports.UpdateDomainGroupResponse = UpdateDomainGroupResponse;
class UpdateDomainRecordRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            line: 'Line',
            priority: 'Priority',
            RR: 'RR',
            recordId: 'RecordId',
            TTL: 'TTL',
            type: 'Type',
            userClientIp: 'UserClientIp',
            value: 'Value',
        };
    }
    static types() {
        return {
            lang: 'string',
            line: 'string',
            priority: 'number',
            RR: 'string',
            recordId: 'string',
            TTL: 'number',
            type: 'string',
            userClientIp: 'string',
            value: 'string',
        };
    }
}
exports.UpdateDomainRecordRequest = UpdateDomainRecordRequest;
class UpdateDomainRecordResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recordId: 'RecordId',
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            recordId: 'string',
            requestId: 'string',
        };
    }
}
exports.UpdateDomainRecordResponseBody = UpdateDomainRecordResponseBody;
class UpdateDomainRecordResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDomainRecordResponseBody,
        };
    }
}
exports.UpdateDomainRecordResponse = UpdateDomainRecordResponse;
class UpdateDomainRecordRemarkRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lang: 'Lang',
            recordId: 'RecordId',
            remark: 'Remark',
            userClientIp: 'UserClientIp',
        };
    }
    static types() {
        return {
            lang: 'string',
            recordId: 'string',
            remark: 'string',
            userClientIp: 'string',
        };
    }
}
exports.UpdateDomainRecordRemarkRequest = UpdateDomainRecordRemarkRequest;
class UpdateDomainRecordRemarkResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateDomainRecordRemarkResponseBody = UpdateDomainRecordRemarkResponseBody;
class UpdateDomainRecordRemarkResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDomainRecordRemarkResponseBody,
        };
    }
}
exports.UpdateDomainRecordRemarkResponse = UpdateDomainRecordRemarkResponse;
class UpdateDomainRemarkRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            lang: 'Lang',
            remark: 'Remark',
        };
    }
    static types() {
        return {
            domainName: 'string',
            lang: 'string',
            remark: 'string',
        };
    }
}
exports.UpdateDomainRemarkRequest = UpdateDomainRemarkRequest;
class UpdateDomainRemarkResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateDomainRemarkResponseBody = UpdateDomainRemarkResponseBody;
class UpdateDomainRemarkResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateDomainRemarkResponseBody,
        };
    }
}
exports.UpdateDomainRemarkResponse = UpdateDomainRemarkResponse;
class UpdateGtmAccessStrategyRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessLines: 'AccessLines',
            defaultAddrPoolId: 'DefaultAddrPoolId',
            failoverAddrPoolId: 'FailoverAddrPoolId',
            lang: 'Lang',
            strategyId: 'StrategyId',
            strategyName: 'StrategyName',
        };
    }
    static types() {
        return {
            accessLines: 'string',
            defaultAddrPoolId: 'string',
            failoverAddrPoolId: 'string',
            lang: 'string',
            strategyId: 'string',
            strategyName: 'string',
        };
    }
}
exports.UpdateGtmAccessStrategyRequest = UpdateGtmAccessStrategyRequest;
class UpdateGtmAccessStrategyResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateGtmAccessStrategyResponseBody = UpdateGtmAccessStrategyResponseBody;
class UpdateGtmAccessStrategyResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateGtmAccessStrategyResponseBody,
        };
    }
}
exports.UpdateGtmAccessStrategyResponse = UpdateGtmAccessStrategyResponse;
class UpdateGtmAddressPoolRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
            addrPoolId: 'AddrPoolId',
            lang: 'Lang',
            minAvailableAddrNum: 'MinAvailableAddrNum',
            name: 'Name',
            type: 'Type',
        };
    }
    static types() {
        return {
            addr: { 'type': 'array', 'itemType': UpdateGtmAddressPoolRequestAddr },
            addrPoolId: 'string',
            lang: 'string',
            minAvailableAddrNum: 'number',
            name: 'string',
            type: 'string',
        };
    }
}
exports.UpdateGtmAddressPoolRequest = UpdateGtmAddressPoolRequest;
class UpdateGtmAddressPoolResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateGtmAddressPoolResponseBody = UpdateGtmAddressPoolResponseBody;
class UpdateGtmAddressPoolResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateGtmAddressPoolResponseBody,
        };
    }
}
exports.UpdateGtmAddressPoolResponse = UpdateGtmAddressPoolResponse;
class UpdateGtmInstanceGlobalConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            alertGroup: 'AlertGroup',
            cnameCustomDomainName: 'CnameCustomDomainName',
            cnameMode: 'CnameMode',
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
            lang: 'Lang',
            lbaStrategy: 'LbaStrategy',
            ttl: 'Ttl',
            userDomainName: 'UserDomainName',
        };
    }
    static types() {
        return {
            alertGroup: 'string',
            cnameCustomDomainName: 'string',
            cnameMode: 'string',
            instanceId: 'string',
            instanceName: 'string',
            lang: 'string',
            lbaStrategy: 'string',
            ttl: 'number',
            userDomainName: 'string',
        };
    }
}
exports.UpdateGtmInstanceGlobalConfigRequest = UpdateGtmInstanceGlobalConfigRequest;
class UpdateGtmInstanceGlobalConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateGtmInstanceGlobalConfigResponseBody = UpdateGtmInstanceGlobalConfigResponseBody;
class UpdateGtmInstanceGlobalConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateGtmInstanceGlobalConfigResponseBody,
        };
    }
}
exports.UpdateGtmInstanceGlobalConfigResponse = UpdateGtmInstanceGlobalConfigResponse;
class UpdateGtmMonitorRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            evaluationCount: 'EvaluationCount',
            interval: 'Interval',
            ispCityNode: 'IspCityNode',
            lang: 'Lang',
            monitorConfigId: 'MonitorConfigId',
            monitorExtendInfo: 'MonitorExtendInfo',
            protocolType: 'ProtocolType',
            timeout: 'Timeout',
        };
    }
    static types() {
        return {
            evaluationCount: 'number',
            interval: 'number',
            ispCityNode: { 'type': 'array', 'itemType': UpdateGtmMonitorRequestIspCityNode },
            lang: 'string',
            monitorConfigId: 'string',
            monitorExtendInfo: 'string',
            protocolType: 'string',
            timeout: 'number',
        };
    }
}
exports.UpdateGtmMonitorRequest = UpdateGtmMonitorRequest;
class UpdateGtmMonitorResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateGtmMonitorResponseBody = UpdateGtmMonitorResponseBody;
class UpdateGtmMonitorResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateGtmMonitorResponseBody,
        };
    }
}
exports.UpdateGtmMonitorResponse = UpdateGtmMonitorResponse;
class UpdateGtmRecoveryPlanRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            faultAddrPool: 'FaultAddrPool',
            lang: 'Lang',
            name: 'Name',
            recoveryPlanId: 'RecoveryPlanId',
            remark: 'Remark',
        };
    }
    static types() {
        return {
            faultAddrPool: 'string',
            lang: 'string',
            name: 'string',
            recoveryPlanId: 'number',
            remark: 'string',
        };
    }
}
exports.UpdateGtmRecoveryPlanRequest = UpdateGtmRecoveryPlanRequest;
class UpdateGtmRecoveryPlanResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateGtmRecoveryPlanResponseBody = UpdateGtmRecoveryPlanResponseBody;
class UpdateGtmRecoveryPlanResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateGtmRecoveryPlanResponseBody,
        };
    }
}
exports.UpdateGtmRecoveryPlanResponse = UpdateGtmRecoveryPlanResponse;
class UpdateIspFlushCacheInstanceConfigRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            instanceName: 'string',
            lang: 'string',
        };
    }
}
exports.UpdateIspFlushCacheInstanceConfigRequest = UpdateIspFlushCacheInstanceConfigRequest;
class UpdateIspFlushCacheInstanceConfigResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.UpdateIspFlushCacheInstanceConfigResponseBody = UpdateIspFlushCacheInstanceConfigResponseBody;
class UpdateIspFlushCacheInstanceConfigResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: UpdateIspFlushCacheInstanceConfigResponseBody,
        };
    }
}
exports.UpdateIspFlushCacheInstanceConfigResponse = UpdateIspFlushCacheInstanceConfigResponse;
class ValidateDnsGtmCnameRrCanUseRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cnameMode: 'CnameMode',
            cnameRr: 'CnameRr',
            cnameType: 'CnameType',
            cnameZone: 'CnameZone',
            instanceId: 'InstanceId',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            cnameMode: 'string',
            cnameRr: 'string',
            cnameType: 'string',
            cnameZone: 'string',
            instanceId: 'string',
            lang: 'string',
        };
    }
}
exports.ValidateDnsGtmCnameRrCanUseRequest = ValidateDnsGtmCnameRrCanUseRequest;
class ValidateDnsGtmCnameRrCanUseResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.ValidateDnsGtmCnameRrCanUseResponseBody = ValidateDnsGtmCnameRrCanUseResponseBody;
class ValidateDnsGtmCnameRrCanUseResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: ValidateDnsGtmCnameRrCanUseResponseBody,
        };
    }
}
exports.ValidateDnsGtmCnameRrCanUseResponse = ValidateDnsGtmCnameRrCanUseResponse;
class ValidatePdnsUdpIpSegmentRequest extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ip: 'Ip',
            lang: 'Lang',
        };
    }
    static types() {
        return {
            ip: 'string',
            lang: 'string',
        };
    }
}
exports.ValidatePdnsUdpIpSegmentRequest = ValidatePdnsUdpIpSegmentRequest;
class ValidatePdnsUdpIpSegmentResponseBody extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            requestId: 'RequestId',
        };
    }
    static types() {
        return {
            requestId: 'string',
        };
    }
}
exports.ValidatePdnsUdpIpSegmentResponseBody = ValidatePdnsUdpIpSegmentResponseBody;
class ValidatePdnsUdpIpSegmentResponse extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            headers: 'headers',
            statusCode: 'statusCode',
            body: 'body',
        };
    }
    static types() {
        return {
            headers: { 'type': 'map', 'keyType': 'string', 'valueType': 'string' },
            statusCode: 'number',
            body: ValidatePdnsUdpIpSegmentResponseBody,
        };
    }
}
exports.ValidatePdnsUdpIpSegmentResponse = ValidatePdnsUdpIpSegmentResponse;
class AddCustomLineRequestIpSegment extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endIp: 'EndIp',
            startIp: 'StartIp',
        };
    }
    static types() {
        return {
            endIp: 'string',
            startIp: 'string',
        };
    }
}
exports.AddCustomLineRequestIpSegment = AddCustomLineRequestIpSegment;
class AddDnsCacheDomainRequestSourceDnsServer extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            host: 'Host',
            port: 'Port',
        };
    }
    static types() {
        return {
            host: 'string',
            port: 'string',
        };
    }
}
exports.AddDnsCacheDomainRequestSourceDnsServer = AddDnsCacheDomainRequestSourceDnsServer;
class AddDnsGtmAccessStrategyRequestDefaultAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            id: 'Id',
            lbaWeight: 'LbaWeight',
        };
    }
    static types() {
        return {
            id: 'string',
            lbaWeight: 'number',
        };
    }
}
exports.AddDnsGtmAccessStrategyRequestDefaultAddrPool = AddDnsGtmAccessStrategyRequestDefaultAddrPool;
class AddDnsGtmAccessStrategyRequestFailoverAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            id: 'Id',
            lbaWeight: 'LbaWeight',
        };
    }
    static types() {
        return {
            id: 'string',
            lbaWeight: 'number',
        };
    }
}
exports.AddDnsGtmAccessStrategyRequestFailoverAddrPool = AddDnsGtmAccessStrategyRequestFailoverAddrPool;
class AddDnsGtmAddressPoolRequestAddr extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
            attributeInfo: 'AttributeInfo',
            lbaWeight: 'LbaWeight',
            mode: 'Mode',
            remark: 'Remark',
        };
    }
    static types() {
        return {
            addr: 'string',
            attributeInfo: 'string',
            lbaWeight: 'number',
            mode: 'string',
            remark: 'string',
        };
    }
}
exports.AddDnsGtmAddressPoolRequestAddr = AddDnsGtmAddressPoolRequestAddr;
class AddDnsGtmAddressPoolRequestIspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            ispCode: 'IspCode',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            ispCode: 'string',
        };
    }
}
exports.AddDnsGtmAddressPoolRequestIspCityNode = AddDnsGtmAddressPoolRequestIspCityNode;
class AddDnsGtmMonitorRequestIspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            ispCode: 'IspCode',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            ispCode: 'string',
        };
    }
}
exports.AddDnsGtmMonitorRequestIspCityNode = AddDnsGtmMonitorRequestIspCityNode;
class AddDomainResponseBodyDnsServers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsServer: 'DnsServer',
        };
    }
    static types() {
        return {
            dnsServer: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.AddDomainResponseBodyDnsServers = AddDomainResponseBodyDnsServers;
class AddGtmAddressPoolRequestAddr extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lbaWeight: 'LbaWeight',
            mode: 'Mode',
            value: 'Value',
        };
    }
    static types() {
        return {
            lbaWeight: 'number',
            mode: 'string',
            value: 'string',
        };
    }
}
exports.AddGtmAddressPoolRequestAddr = AddGtmAddressPoolRequestAddr;
class AddGtmAddressPoolRequestIspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            ispCode: 'IspCode',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            ispCode: 'string',
        };
    }
}
exports.AddGtmAddressPoolRequestIspCityNode = AddGtmAddressPoolRequestIspCityNode;
class AddGtmMonitorRequestIspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            ispCode: 'IspCode',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            ispCode: 'string',
        };
    }
}
exports.AddGtmMonitorRequestIspCityNode = AddGtmMonitorRequestIspCityNode;
class DescribeBatchResultDetailResponseBodyBatchResultDetailsBatchResultDetail extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            batchType: 'BatchType',
            domain: 'Domain',
            line: 'Line',
            newRr: 'NewRr',
            newValue: 'NewValue',
            operateDateStr: 'OperateDateStr',
            priority: 'Priority',
            reason: 'Reason',
            recordId: 'RecordId',
            remark: 'Remark',
            rr: 'Rr',
            rrStatus: 'RrStatus',
            status: 'Status',
            ttl: 'Ttl',
            type: 'Type',
            value: 'Value',
        };
    }
    static types() {
        return {
            batchType: 'string',
            domain: 'string',
            line: 'string',
            newRr: 'string',
            newValue: 'string',
            operateDateStr: 'string',
            priority: 'string',
            reason: 'string',
            recordId: 'string',
            remark: 'string',
            rr: 'string',
            rrStatus: 'string',
            status: 'boolean',
            ttl: 'string',
            type: 'string',
            value: 'string',
        };
    }
}
exports.DescribeBatchResultDetailResponseBodyBatchResultDetailsBatchResultDetail = DescribeBatchResultDetailResponseBodyBatchResultDetailsBatchResultDetail;
class DescribeBatchResultDetailResponseBodyBatchResultDetails extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            batchResultDetail: 'BatchResultDetail',
        };
    }
    static types() {
        return {
            batchResultDetail: { 'type': 'array', 'itemType': DescribeBatchResultDetailResponseBodyBatchResultDetailsBatchResultDetail },
        };
    }
}
exports.DescribeBatchResultDetailResponseBodyBatchResultDetails = DescribeBatchResultDetailResponseBodyBatchResultDetails;
class DescribeCustomLineResponseBodyIpSegmentList extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endIp: 'EndIp',
            startIp: 'StartIp',
        };
    }
    static types() {
        return {
            endIp: 'string',
            startIp: 'string',
        };
    }
}
exports.DescribeCustomLineResponseBodyIpSegmentList = DescribeCustomLineResponseBodyIpSegmentList;
class DescribeCustomLinesResponseBodyCustomLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            code: 'Code',
            id: 'Id',
            name: 'Name',
        };
    }
    static types() {
        return {
            code: 'string',
            id: 'number',
            name: 'string',
        };
    }
}
exports.DescribeCustomLinesResponseBodyCustomLines = DescribeCustomLinesResponseBodyCustomLines;
class DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithmsLineAlgorithm extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            line: 'Line',
            open: 'Open',
        };
    }
    static types() {
        return {
            line: 'string',
            open: 'boolean',
        };
    }
}
exports.DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithmsLineAlgorithm = DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithmsLineAlgorithm;
class DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithms extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lineAlgorithm: 'LineAlgorithm',
        };
    }
    static types() {
        return {
            lineAlgorithm: { 'type': 'array', 'itemType': DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithmsLineAlgorithm },
        };
    }
}
exports.DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithms = DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithms;
class DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomain extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lineAlgorithms: 'LineAlgorithms',
            open: 'Open',
            recordCount: 'RecordCount',
            subDomain: 'SubDomain',
            type: 'Type',
        };
    }
    static types() {
        return {
            lineAlgorithms: DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomainLineAlgorithms,
            open: 'boolean',
            recordCount: 'number',
            subDomain: 'string',
            type: 'string',
        };
    }
}
exports.DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomain = DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomain;
class DescribeDNSSLBSubDomainsResponseBodySlbSubDomains extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            slbSubDomain: 'SlbSubDomain',
        };
    }
    static types() {
        return {
            slbSubDomain: { 'type': 'array', 'itemType': DescribeDNSSLBSubDomainsResponseBodySlbSubDomainsSlbSubDomain },
        };
    }
}
exports.DescribeDNSSLBSubDomainsResponseBodySlbSubDomains = DescribeDNSSLBSubDomainsResponseBodySlbSubDomains;
class DescribeDnsCacheDomainsResponseBodyDomainsSourceDnsServers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            host: 'Host',
            port: 'Port',
        };
    }
    static types() {
        return {
            host: 'string',
            port: 'string',
        };
    }
}
exports.DescribeDnsCacheDomainsResponseBodyDomainsSourceDnsServers = DescribeDnsCacheDomainsResponseBodyDomainsSourceDnsServers;
class DescribeDnsCacheDomainsResponseBodyDomains extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cacheTtlMax: 'CacheTtlMax',
            cacheTtlMin: 'CacheTtlMin',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            domainId: 'DomainId',
            domainName: 'DomainName',
            expireTime: 'ExpireTime',
            expireTimestamp: 'ExpireTimestamp',
            instanceId: 'InstanceId',
            remark: 'Remark',
            sourceDnsServers: 'SourceDnsServers',
            sourceEdns: 'SourceEdns',
            sourceProtocol: 'SourceProtocol',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
            versionCode: 'VersionCode',
        };
    }
    static types() {
        return {
            cacheTtlMax: 'number',
            cacheTtlMin: 'number',
            createTime: 'string',
            createTimestamp: 'number',
            domainId: 'string',
            domainName: 'string',
            expireTime: 'string',
            expireTimestamp: 'number',
            instanceId: 'string',
            remark: 'string',
            sourceDnsServers: { 'type': 'array', 'itemType': DescribeDnsCacheDomainsResponseBodyDomainsSourceDnsServers },
            sourceEdns: 'string',
            sourceProtocol: 'string',
            updateTime: 'string',
            updateTimestamp: 'number',
            versionCode: 'string',
        };
    }
}
exports.DescribeDnsCacheDomainsResponseBodyDomains = DescribeDnsCacheDomainsResponseBodyDomains;
class DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPoolsEffectiveAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            id: 'Id',
            lbaWeight: 'LbaWeight',
            name: 'Name',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            id: 'string',
            lbaWeight: 'number',
            name: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPoolsEffectiveAddrPool = DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPoolsEffectiveAddrPool;
class DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            effectiveAddrPool: 'EffectiveAddrPool',
        };
    }
    static types() {
        return {
            effectiveAddrPool: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPoolsEffectiveAddrPool },
        };
    }
}
exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPools = DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPools;
class DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupCode: 'GroupCode',
            groupName: 'GroupName',
            lineCode: 'LineCode',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            groupCode: 'string',
            groupName: 'string',
            lineCode: 'string',
            lineName: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine = DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine;
class DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            line: 'Line',
        };
    }
    static types() {
        return {
            line: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine },
        };
    }
}
exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLines = DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLines;
class DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategy extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            effectiveAddrPoolGroupType: 'EffectiveAddrPoolGroupType',
            effectiveAddrPoolType: 'EffectiveAddrPoolType',
            effectiveAddrPools: 'EffectiveAddrPools',
            effectiveLbaStrategy: 'EffectiveLbaStrategy',
            lines: 'Lines',
            strategyId: 'StrategyId',
            strategyName: 'StrategyName',
        };
    }
    static types() {
        return {
            createTime: 'string',
            createTimestamp: 'number',
            effectiveAddrPoolGroupType: 'string',
            effectiveAddrPoolType: 'string',
            effectiveAddrPools: DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyEffectiveAddrPools,
            effectiveLbaStrategy: 'string',
            lines: DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategyLines,
            strategyId: 'string',
            strategyName: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategy = DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategy;
class DescribeDnsGtmAccessStrategiesResponseBodyStrategies extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            strategy: 'Strategy',
        };
    }
    static types() {
        return {
            strategy: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategiesResponseBodyStrategiesStrategy },
        };
    }
}
exports.DescribeDnsGtmAccessStrategiesResponseBodyStrategies = DescribeDnsGtmAccessStrategiesResponseBodyStrategies;
class DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPoolsDefaultAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            id: 'Id',
            lbaWeight: 'LbaWeight',
            name: 'Name',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            id: 'string',
            lbaWeight: 'number',
            name: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPoolsDefaultAddrPool = DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPoolsDefaultAddrPool;
class DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            defaultAddrPool: 'DefaultAddrPool',
        };
    }
    static types() {
        return {
            defaultAddrPool: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPoolsDefaultAddrPool },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPools = DescribeDnsGtmAccessStrategyResponseBodyDefaultAddrPools;
class DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPoolsFailoverAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            id: 'Id',
            lbaWeight: 'LbaWeight',
            name: 'Name',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            id: 'string',
            lbaWeight: 'number',
            name: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPoolsFailoverAddrPool = DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPoolsFailoverAddrPool;
class DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            failoverAddrPool: 'FailoverAddrPool',
        };
    }
    static types() {
        return {
            failoverAddrPool: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPoolsFailoverAddrPool },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPools = DescribeDnsGtmAccessStrategyResponseBodyFailoverAddrPools;
class DescribeDnsGtmAccessStrategyResponseBodyLinesLine extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupCode: 'GroupCode',
            groupName: 'GroupName',
            lineCode: 'LineCode',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            groupCode: 'string',
            groupName: 'string',
            lineCode: 'string',
            lineName: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyResponseBodyLinesLine = DescribeDnsGtmAccessStrategyResponseBodyLinesLine;
class DescribeDnsGtmAccessStrategyResponseBodyLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            line: 'Line',
        };
    }
    static types() {
        return {
            line: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategyResponseBodyLinesLine },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyResponseBodyLines = DescribeDnsGtmAccessStrategyResponseBodyLines;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPoolsDomainAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            id: 'Id',
            name: 'Name',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            id: 'string',
            name: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPoolsDomainAddrPool = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPoolsDomainAddrPool;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainAddrPool: 'DomainAddrPool',
        };
    }
    static types() {
        return {
            domainAddrPool: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPoolsDomainAddrPool },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPools = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyDomainAddrPools;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPoolsIpv4AddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            id: 'Id',
            name: 'Name',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            id: 'string',
            name: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPoolsIpv4AddrPool = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPoolsIpv4AddrPool;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ipv4AddrPool: 'Ipv4AddrPool',
        };
    }
    static types() {
        return {
            ipv4AddrPool: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPoolsIpv4AddrPool },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPools = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv4AddrPools;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPoolsIpv6AddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            id: 'Id',
            name: 'Name',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            id: 'string',
            name: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPoolsIpv6AddrPool = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPoolsIpv6AddrPool;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ipv6AddrPool: 'Ipv6AddrPool',
        };
    }
    static types() {
        return {
            ipv6AddrPool: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPoolsIpv6AddrPool },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPools = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyIpv6AddrPools;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLinesLine extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            fatherCode: 'FatherCode',
            groupCode: 'GroupCode',
            groupName: 'GroupName',
            lineCode: 'LineCode',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            fatherCode: 'string',
            groupCode: 'string',
            groupName: 'string',
            lineCode: 'string',
            lineName: 'string',
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLinesLine = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLinesLine;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            line: 'Line',
        };
    }
    static types() {
        return {
            line: { 'type': 'array', 'itemType': DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLinesLine },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLines = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodyLines;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedDomainLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            selectedDomainLine: 'SelectedDomainLine',
        };
    }
    static types() {
        return {
            selectedDomainLine: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedDomainLines = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedDomainLines;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv4Lines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            selectedIpv4Line: 'SelectedIpv4Line',
        };
    }
    static types() {
        return {
            selectedIpv4Line: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv4Lines = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv4Lines;
class DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv6Lines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            selectedIpv6Line: 'SelectedIpv6Line',
        };
    }
    static types() {
        return {
            selectedIpv6Line: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv6Lines = DescribeDnsGtmAccessStrategyAvailableConfigResponseBodySelectedIpv6Lines;
class DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddrAttributeInfo extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            fatherCode: 'FatherCode',
            groupCode: 'GroupCode',
            groupName: 'GroupName',
            lineCode: 'LineCode',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            fatherCode: 'string',
            groupCode: 'string',
            groupName: 'string',
            lineCode: 'string',
            lineName: 'string',
        };
    }
}
exports.DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddrAttributeInfo = DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddrAttributeInfo;
class DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddr extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
            attributeInfo: 'AttributeInfo',
        };
    }
    static types() {
        return {
            addr: 'string',
            attributeInfo: DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddrAttributeInfo,
        };
    }
}
exports.DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddr = DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddr;
class DescribeDnsGtmAddrAttributeInfoResponseBodyAddr extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
        };
    }
    static types() {
        return {
            addr: { 'type': 'array', 'itemType': DescribeDnsGtmAddrAttributeInfoResponseBodyAddrAddr },
        };
    }
}
exports.DescribeDnsGtmAddrAttributeInfoResponseBodyAddr = DescribeDnsGtmAddrAttributeInfoResponseBodyAddr;
class DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfosAttributeInfo extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            fatherCode: 'FatherCode',
            groupCode: 'GroupCode',
            groupName: 'GroupName',
            lineCode: 'LineCode',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            fatherCode: 'string',
            groupCode: 'string',
            groupName: 'string',
            lineCode: 'string',
            lineName: 'string',
        };
    }
}
exports.DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfosAttributeInfo = DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfosAttributeInfo;
class DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfos extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            attributeInfo: 'AttributeInfo',
        };
    }
    static types() {
        return {
            attributeInfo: { 'type': 'array', 'itemType': DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfosAttributeInfo },
        };
    }
}
exports.DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfos = DescribeDnsGtmAddressPoolAvailableConfigResponseBodyAttributeInfos;
class DescribeDnsGtmInstanceResponseBodyConfigAlertConfigAlertConfig extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dingtalkNotice: 'DingtalkNotice',
            emailNotice: 'EmailNotice',
            noticeType: 'NoticeType',
            smsNotice: 'SmsNotice',
        };
    }
    static types() {
        return {
            dingtalkNotice: 'boolean',
            emailNotice: 'boolean',
            noticeType: 'string',
            smsNotice: 'boolean',
        };
    }
}
exports.DescribeDnsGtmInstanceResponseBodyConfigAlertConfigAlertConfig = DescribeDnsGtmInstanceResponseBodyConfigAlertConfigAlertConfig;
class DescribeDnsGtmInstanceResponseBodyConfigAlertConfig extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            alertConfig: 'AlertConfig',
        };
    }
    static types() {
        return {
            alertConfig: { 'type': 'array', 'itemType': DescribeDnsGtmInstanceResponseBodyConfigAlertConfigAlertConfig },
        };
    }
}
exports.DescribeDnsGtmInstanceResponseBodyConfigAlertConfig = DescribeDnsGtmInstanceResponseBodyConfigAlertConfig;
class DescribeDnsGtmInstanceResponseBodyConfig extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            alertConfig: 'AlertConfig',
            alertGroup: 'AlertGroup',
            cnameType: 'CnameType',
            instanceName: 'InstanceName',
            pubicZoneName: 'PubicZoneName',
            publicCnameMode: 'PublicCnameMode',
            publicRr: 'PublicRr',
            publicUserDomainName: 'PublicUserDomainName',
            strategyMode: 'StrategyMode',
            ttl: 'Ttl',
        };
    }
    static types() {
        return {
            alertConfig: DescribeDnsGtmInstanceResponseBodyConfigAlertConfig,
            alertGroup: 'string',
            cnameType: 'string',
            instanceName: 'string',
            pubicZoneName: 'string',
            publicCnameMode: 'string',
            publicRr: 'string',
            publicUserDomainName: 'string',
            strategyMode: 'string',
            ttl: 'number',
        };
    }
}
exports.DescribeDnsGtmInstanceResponseBodyConfig = DescribeDnsGtmInstanceResponseBodyConfig;
class DescribeDnsGtmInstanceResponseBodyUsedQuota extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dingtalkUsedCount: 'DingtalkUsedCount',
            emailUsedCount: 'EmailUsedCount',
            smsUsedCount: 'SmsUsedCount',
            taskUsedCount: 'TaskUsedCount',
        };
    }
    static types() {
        return {
            dingtalkUsedCount: 'number',
            emailUsedCount: 'number',
            smsUsedCount: 'number',
            taskUsedCount: 'number',
        };
    }
}
exports.DescribeDnsGtmInstanceResponseBodyUsedQuota = DescribeDnsGtmInstanceResponseBodyUsedQuota;
class DescribeDnsGtmInstanceAddressPoolResponseBodyAddrsAddr extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
            alertStatus: 'AlertStatus',
            attributeInfo: 'AttributeInfo',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            lbaWeight: 'LbaWeight',
            mode: 'Mode',
            remark: 'Remark',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
        };
    }
    static types() {
        return {
            addr: 'string',
            alertStatus: 'string',
            attributeInfo: 'string',
            createTime: 'string',
            createTimestamp: 'number',
            lbaWeight: 'number',
            mode: 'string',
            remark: 'string',
            updateTime: 'string',
            updateTimestamp: 'number',
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolResponseBodyAddrsAddr = DescribeDnsGtmInstanceAddressPoolResponseBodyAddrsAddr;
class DescribeDnsGtmInstanceAddressPoolResponseBodyAddrs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
        };
    }
    static types() {
        return {
            addr: { 'type': 'array', 'itemType': DescribeDnsGtmInstanceAddressPoolResponseBodyAddrsAddr },
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolResponseBodyAddrs = DescribeDnsGtmInstanceAddressPoolResponseBodyAddrs;
class DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            addrPoolId: 'AddrPoolId',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            lbaStrategy: 'LbaStrategy',
            monitorConfigId: 'MonitorConfigId',
            monitorStatus: 'MonitorStatus',
            name: 'Name',
            type: 'Type',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            addrPoolId: 'string',
            createTime: 'string',
            createTimestamp: 'number',
            lbaStrategy: 'string',
            monitorConfigId: 'string',
            monitorStatus: 'string',
            name: 'string',
            type: 'string',
            updateTime: 'string',
            updateTimestamp: 'number',
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool = DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool;
class DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPool: 'AddrPool',
        };
    }
    static types() {
        return {
            addrPool: { 'type': 'array', 'itemType': DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool },
        };
    }
}
exports.DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPools = DescribeDnsGtmInstanceAddressPoolsResponseBodyAddrPools;
class DescribeDnsGtmInstancesResponseBodyGtmInstancesConfigAlertConfig extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dingtalkNotice: 'DingtalkNotice',
            emailNotice: 'EmailNotice',
            noticeType: 'NoticeType',
            smsNotice: 'SmsNotice',
        };
    }
    static types() {
        return {
            dingtalkNotice: 'string',
            emailNotice: 'string',
            noticeType: 'string',
            smsNotice: 'string',
        };
    }
}
exports.DescribeDnsGtmInstancesResponseBodyGtmInstancesConfigAlertConfig = DescribeDnsGtmInstancesResponseBodyGtmInstancesConfigAlertConfig;
class DescribeDnsGtmInstancesResponseBodyGtmInstancesConfig extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            alertConfig: 'AlertConfig',
            alertGroup: 'AlertGroup',
            cnameType: 'CnameType',
            instanceName: 'InstanceName',
            publicCnameMode: 'PublicCnameMode',
            publicRr: 'PublicRr',
            publicUserDomainName: 'PublicUserDomainName',
            publicZoneName: 'PublicZoneName',
            strategyMode: 'StrategyMode',
            ttl: 'Ttl',
        };
    }
    static types() {
        return {
            alertConfig: { 'type': 'array', 'itemType': DescribeDnsGtmInstancesResponseBodyGtmInstancesConfigAlertConfig },
            alertGroup: 'string',
            cnameType: 'string',
            instanceName: 'string',
            publicCnameMode: 'string',
            publicRr: 'string',
            publicUserDomainName: 'string',
            publicZoneName: 'string',
            strategyMode: 'string',
            ttl: 'number',
        };
    }
}
exports.DescribeDnsGtmInstancesResponseBodyGtmInstancesConfig = DescribeDnsGtmInstancesResponseBodyGtmInstancesConfig;
class DescribeDnsGtmInstancesResponseBodyGtmInstancesUsedQuota extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dingtalkUsedCount: 'DingtalkUsedCount',
            emailUsedCount: 'EmailUsedCount',
            smsUsedCount: 'SmsUsedCount',
            taskUsedCount: 'TaskUsedCount',
        };
    }
    static types() {
        return {
            dingtalkUsedCount: 'number',
            emailUsedCount: 'number',
            smsUsedCount: 'number',
            taskUsedCount: 'number',
        };
    }
}
exports.DescribeDnsGtmInstancesResponseBodyGtmInstancesUsedQuota = DescribeDnsGtmInstancesResponseBodyGtmInstancesUsedQuota;
class DescribeDnsGtmInstancesResponseBodyGtmInstances extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            config: 'Config',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            expireTime: 'ExpireTime',
            expireTimestamp: 'ExpireTimestamp',
            instanceId: 'InstanceId',
            paymentType: 'PaymentType',
            resourceGroupId: 'ResourceGroupId',
            smsQuota: 'SmsQuota',
            taskQuota: 'TaskQuota',
            usedQuota: 'UsedQuota',
            versionCode: 'VersionCode',
        };
    }
    static types() {
        return {
            config: DescribeDnsGtmInstancesResponseBodyGtmInstancesConfig,
            createTime: 'string',
            createTimestamp: 'number',
            expireTime: 'string',
            expireTimestamp: 'number',
            instanceId: 'string',
            paymentType: 'string',
            resourceGroupId: 'string',
            smsQuota: 'number',
            taskQuota: 'number',
            usedQuota: DescribeDnsGtmInstancesResponseBodyGtmInstancesUsedQuota,
            versionCode: 'string',
        };
    }
}
exports.DescribeDnsGtmInstancesResponseBodyGtmInstances = DescribeDnsGtmInstancesResponseBodyGtmInstances;
class DescribeDnsGtmLogsResponseBodyLogsLog extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            content: 'Content',
            entityId: 'EntityId',
            entityName: 'EntityName',
            entityType: 'EntityType',
            id: 'Id',
            operAction: 'OperAction',
            operTime: 'OperTime',
            operTimestamp: 'OperTimestamp',
        };
    }
    static types() {
        return {
            content: 'string',
            entityId: 'string',
            entityName: 'string',
            entityType: 'string',
            id: 'number',
            operAction: 'string',
            operTime: 'string',
            operTimestamp: 'number',
        };
    }
}
exports.DescribeDnsGtmLogsResponseBodyLogsLog = DescribeDnsGtmLogsResponseBodyLogsLog;
class DescribeDnsGtmLogsResponseBodyLogs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            log: 'Log',
        };
    }
    static types() {
        return {
            log: { 'type': 'array', 'itemType': DescribeDnsGtmLogsResponseBodyLogsLog },
        };
    }
}
exports.DescribeDnsGtmLogsResponseBodyLogs = DescribeDnsGtmLogsResponseBodyLogs;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNodeIps extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ip: 'Ip',
        };
    }
    static types() {
        return {
            ip: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNodeIps = DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNodeIps;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            cityName: 'CityName',
            defaultSelected: 'DefaultSelected',
            groupName: 'GroupName',
            groupType: 'GroupType',
            ips: 'Ips',
            ispCode: 'IspCode',
            ispName: 'IspName',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            cityName: 'string',
            defaultSelected: 'boolean',
            groupName: 'string',
            groupType: 'string',
            ips: DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNodeIps,
            ispCode: 'string',
            ispName: 'string',
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNode = DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNode;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodes extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainIpv4IspCityNode: 'DomainIpv4IspCityNode',
        };
    }
    static types() {
        return {
            domainIpv4IspCityNode: { 'type': 'array', 'itemType': DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodesDomainIpv4IspCityNode },
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodes = DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv4IspCityNodes;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNodeIps extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ip: 'ip',
        };
    }
    static types() {
        return {
            ip: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNodeIps = DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNodeIps;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            cityName: 'CityName',
            defaultSelected: 'DefaultSelected',
            groupName: 'GroupName',
            groupType: 'GroupType',
            ips: 'Ips',
            ispCode: 'IspCode',
            ispName: 'IspName',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            cityName: 'string',
            defaultSelected: 'boolean',
            groupName: 'string',
            groupType: 'string',
            ips: DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNodeIps,
            ispCode: 'string',
            ispName: 'string',
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNode = DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNode;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodes extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainIpv6IspCityNode: 'DomainIpv6IspCityNode',
        };
    }
    static types() {
        return {
            domainIpv6IspCityNode: { 'type': 'array', 'itemType': DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodesDomainIpv6IspCityNode },
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodes = DescribeDnsGtmMonitorAvailableConfigResponseBodyDomainIpv6IspCityNodes;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNodeIps extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ip: 'Ip',
        };
    }
    static types() {
        return {
            ip: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNodeIps = DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNodeIps;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            cityName: 'CityName',
            defaultSelected: 'DefaultSelected',
            groupName: 'GroupName',
            groupType: 'GroupType',
            ips: 'Ips',
            ispCode: 'IspCode',
            ispName: 'IspName',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            cityName: 'string',
            defaultSelected: 'boolean',
            groupName: 'string',
            groupType: 'string',
            ips: DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNodeIps,
            ispCode: 'string',
            ispName: 'string',
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNode = DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNode;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodes extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ipv4IspCityNode: 'Ipv4IspCityNode',
        };
    }
    static types() {
        return {
            ipv4IspCityNode: { 'type': 'array', 'itemType': DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodesIpv4IspCityNode },
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodes = DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv4IspCityNodes;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNodeIps extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ip: 'Ip',
        };
    }
    static types() {
        return {
            ip: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNodeIps = DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNodeIps;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            cityName: 'CityName',
            defaultSelected: 'DefaultSelected',
            groupName: 'GroupName',
            groupType: 'GroupType',
            ips: 'Ips',
            ispCode: 'IspCode',
            ispName: 'IspName',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            cityName: 'string',
            defaultSelected: 'boolean',
            groupName: 'string',
            groupType: 'string',
            ips: DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNodeIps,
            ispCode: 'string',
            ispName: 'string',
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNode = DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNode;
class DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodes extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ipv6IspCityNode: 'Ipv6IspCityNode',
        };
    }
    static types() {
        return {
            ipv6IspCityNode: { 'type': 'array', 'itemType': DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodesIpv6IspCityNode },
        };
    }
}
exports.DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodes = DescribeDnsGtmMonitorAvailableConfigResponseBodyIpv6IspCityNodes;
class DescribeDnsGtmMonitorConfigResponseBodyIspCityNodesIspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            cityName: 'CityName',
            countryCode: 'CountryCode',
            countryName: 'CountryName',
            ispCode: 'IspCode',
            ispName: 'IspName',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            cityName: 'string',
            countryCode: 'string',
            countryName: 'string',
            ispCode: 'string',
            ispName: 'string',
        };
    }
}
exports.DescribeDnsGtmMonitorConfigResponseBodyIspCityNodesIspCityNode = DescribeDnsGtmMonitorConfigResponseBodyIspCityNodesIspCityNode;
class DescribeDnsGtmMonitorConfigResponseBodyIspCityNodes extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ispCityNode: 'IspCityNode',
        };
    }
    static types() {
        return {
            ispCityNode: { 'type': 'array', 'itemType': DescribeDnsGtmMonitorConfigResponseBodyIspCityNodesIspCityNode },
        };
    }
}
exports.DescribeDnsGtmMonitorConfigResponseBodyIspCityNodes = DescribeDnsGtmMonitorConfigResponseBodyIspCityNodes;
class DescribeDnsProductInstanceResponseBodyDnsServers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsServer: 'DnsServer',
        };
    }
    static types() {
        return {
            dnsServer: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDnsProductInstanceResponseBodyDnsServers = DescribeDnsProductInstanceResponseBodyDnsServers;
class DescribeDnsProductInstancesResponseBodyDnsProductsDnsProduct extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            autoRenewal: 'AutoRenewal',
            bindCount: 'BindCount',
            bindDomainCount: 'BindDomainCount',
            bindDomainUsedCount: 'BindDomainUsedCount',
            bindUsedCount: 'BindUsedCount',
            DDosDefendFlow: 'DDosDefendFlow',
            DDosDefendQuery: 'DDosDefendQuery',
            dnsSLBCount: 'DnsSLBCount',
            dnsSecurity: 'DnsSecurity',
            domain: 'Domain',
            endTime: 'EndTime',
            endTimestamp: 'EndTimestamp',
            gslb: 'Gslb',
            ISPLines: 'ISPLines',
            ISPRegionLines: 'ISPRegionLines',
            inBlackHole: 'InBlackHole',
            inClean: 'InClean',
            instanceId: 'InstanceId',
            monitorFrequency: 'MonitorFrequency',
            monitorNodeCount: 'MonitorNodeCount',
            monitorTaskCount: 'MonitorTaskCount',
            overseaDDosDefendFlow: 'OverseaDDosDefendFlow',
            overseaLine: 'OverseaLine',
            paymentType: 'PaymentType',
            regionLines: 'RegionLines',
            searchEngineLines: 'SearchEngineLines',
            startTime: 'StartTime',
            startTimestamp: 'StartTimestamp',
            subDomainLevel: 'SubDomainLevel',
            TTLMinValue: 'TTLMinValue',
            URLForwardCount: 'URLForwardCount',
            versionCode: 'VersionCode',
            versionName: 'VersionName',
        };
    }
    static types() {
        return {
            autoRenewal: 'boolean',
            bindCount: 'number',
            bindDomainCount: 'number',
            bindDomainUsedCount: 'number',
            bindUsedCount: 'number',
            DDosDefendFlow: 'number',
            DDosDefendQuery: 'number',
            dnsSLBCount: 'number',
            dnsSecurity: 'string',
            domain: 'string',
            endTime: 'string',
            endTimestamp: 'number',
            gslb: 'boolean',
            ISPLines: 'string',
            ISPRegionLines: 'string',
            inBlackHole: 'boolean',
            inClean: 'boolean',
            instanceId: 'string',
            monitorFrequency: 'number',
            monitorNodeCount: 'number',
            monitorTaskCount: 'number',
            overseaDDosDefendFlow: 'number',
            overseaLine: 'string',
            paymentType: 'string',
            regionLines: 'boolean',
            searchEngineLines: 'string',
            startTime: 'string',
            startTimestamp: 'number',
            subDomainLevel: 'number',
            TTLMinValue: 'number',
            URLForwardCount: 'number',
            versionCode: 'string',
            versionName: 'string',
        };
    }
}
exports.DescribeDnsProductInstancesResponseBodyDnsProductsDnsProduct = DescribeDnsProductInstancesResponseBodyDnsProductsDnsProduct;
class DescribeDnsProductInstancesResponseBodyDnsProducts extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsProduct: 'DnsProduct',
        };
    }
    static types() {
        return {
            dnsProduct: { 'type': 'array', 'itemType': DescribeDnsProductInstancesResponseBodyDnsProductsDnsProduct },
        };
    }
}
exports.DescribeDnsProductInstancesResponseBodyDnsProducts = DescribeDnsProductInstancesResponseBodyDnsProducts;
class DescribeDohAccountStatisticsResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            timestamp: 'Timestamp',
            totalCount: 'TotalCount',
            v4HttpCount: 'V4HttpCount',
            v4HttpsCount: 'V4HttpsCount',
            v6HttpCount: 'V6HttpCount',
            v6HttpsCount: 'V6HttpsCount',
        };
    }
    static types() {
        return {
            timestamp: 'number',
            totalCount: 'number',
            v4HttpCount: 'number',
            v4HttpsCount: 'number',
            v6HttpCount: 'number',
            v6HttpsCount: 'number',
        };
    }
}
exports.DescribeDohAccountStatisticsResponseBodyStatistics = DescribeDohAccountStatisticsResponseBodyStatistics;
class DescribeDohDomainStatisticsResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            timestamp: 'Timestamp',
            totalCount: 'TotalCount',
            v4HttpCount: 'V4HttpCount',
            v4HttpsCount: 'V4HttpsCount',
            v6HttpCount: 'V6HttpCount',
            v6HttpsCount: 'V6HttpsCount',
        };
    }
    static types() {
        return {
            timestamp: 'number',
            totalCount: 'number',
            v4HttpCount: 'number',
            v4HttpsCount: 'number',
            v6HttpCount: 'number',
            v6HttpsCount: 'number',
        };
    }
}
exports.DescribeDohDomainStatisticsResponseBodyStatistics = DescribeDohDomainStatisticsResponseBodyStatistics;
class DescribeDohDomainStatisticsSummaryResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            httpCount: 'HttpCount',
            httpsCount: 'HttpsCount',
            ipCount: 'IpCount',
            totalCount: 'TotalCount',
            v4HttpCount: 'V4HttpCount',
            v4HttpsCount: 'V4HttpsCount',
            v6HttpCount: 'V6HttpCount',
            v6HttpsCount: 'V6HttpsCount',
        };
    }
    static types() {
        return {
            domainName: 'string',
            httpCount: 'number',
            httpsCount: 'number',
            ipCount: 'number',
            totalCount: 'number',
            v4HttpCount: 'number',
            v4HttpsCount: 'number',
            v6HttpCount: 'number',
            v6HttpsCount: 'number',
        };
    }
}
exports.DescribeDohDomainStatisticsSummaryResponseBodyStatistics = DescribeDohDomainStatisticsSummaryResponseBodyStatistics;
class DescribeDohSubDomainStatisticsResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            timestamp: 'Timestamp',
            totalCount: 'TotalCount',
            v4HttpCount: 'V4HttpCount',
            v4HttpsCount: 'V4HttpsCount',
            v6HttpCount: 'V6HttpCount',
            v6HttpsCount: 'V6HttpsCount',
        };
    }
    static types() {
        return {
            timestamp: 'number',
            totalCount: 'number',
            v4HttpCount: 'number',
            v4HttpsCount: 'number',
            v6HttpCount: 'number',
            v6HttpsCount: 'number',
        };
    }
}
exports.DescribeDohSubDomainStatisticsResponseBodyStatistics = DescribeDohSubDomainStatisticsResponseBodyStatistics;
class DescribeDohSubDomainStatisticsSummaryResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            httpCount: 'HttpCount',
            httpsCount: 'HttpsCount',
            ipCount: 'IpCount',
            subDomain: 'SubDomain',
            totalCount: 'TotalCount',
            v4HttpCount: 'V4HttpCount',
            v4HttpsCount: 'V4HttpsCount',
            v6HttpCount: 'V6HttpCount',
            v6HttpsCount: 'V6HttpsCount',
        };
    }
    static types() {
        return {
            httpCount: 'number',
            httpsCount: 'number',
            ipCount: 'number',
            subDomain: 'string',
            totalCount: 'number',
            v4HttpCount: 'number',
            v4HttpsCount: 'number',
            v6HttpCount: 'number',
            v6HttpsCount: 'number',
        };
    }
}
exports.DescribeDohSubDomainStatisticsSummaryResponseBodyStatistics = DescribeDohSubDomainStatisticsSummaryResponseBodyStatistics;
class DescribeDomainGroupsResponseBodyDomainGroupsDomainGroup extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainCount: 'DomainCount',
            groupId: 'GroupId',
            groupName: 'GroupName',
        };
    }
    static types() {
        return {
            domainCount: 'number',
            groupId: 'string',
            groupName: 'string',
        };
    }
}
exports.DescribeDomainGroupsResponseBodyDomainGroupsDomainGroup = DescribeDomainGroupsResponseBodyDomainGroupsDomainGroup;
class DescribeDomainGroupsResponseBodyDomainGroups extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainGroup: 'DomainGroup',
        };
    }
    static types() {
        return {
            domainGroup: { 'type': 'array', 'itemType': DescribeDomainGroupsResponseBodyDomainGroupsDomainGroup },
        };
    }
}
exports.DescribeDomainGroupsResponseBodyDomainGroups = DescribeDomainGroupsResponseBodyDomainGroups;
class DescribeDomainInfoResponseBodyAvailableTtls extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            availableTtl: 'AvailableTtl',
        };
    }
    static types() {
        return {
            availableTtl: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDomainInfoResponseBodyAvailableTtls = DescribeDomainInfoResponseBodyAvailableTtls;
class DescribeDomainInfoResponseBodyDnsServers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsServer: 'DnsServer',
        };
    }
    static types() {
        return {
            dnsServer: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDomainInfoResponseBodyDnsServers = DescribeDomainInfoResponseBodyDnsServers;
class DescribeDomainInfoResponseBodyRecordLinesRecordLine extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            fatherCode: 'FatherCode',
            lineCode: 'LineCode',
            lineDisplayName: 'LineDisplayName',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            fatherCode: 'string',
            lineCode: 'string',
            lineDisplayName: 'string',
            lineName: 'string',
        };
    }
}
exports.DescribeDomainInfoResponseBodyRecordLinesRecordLine = DescribeDomainInfoResponseBodyRecordLinesRecordLine;
class DescribeDomainInfoResponseBodyRecordLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recordLine: 'RecordLine',
        };
    }
    static types() {
        return {
            recordLine: { 'type': 'array', 'itemType': DescribeDomainInfoResponseBodyRecordLinesRecordLine },
        };
    }
}
exports.DescribeDomainInfoResponseBodyRecordLines = DescribeDomainInfoResponseBodyRecordLines;
class DescribeDomainLogsResponseBodyDomainLogsDomainLog extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            action: 'Action',
            actionTime: 'ActionTime',
            actionTimestamp: 'ActionTimestamp',
            clientIp: 'ClientIp',
            domainName: 'DomainName',
            message: 'Message',
            zoneId: 'ZoneId',
        };
    }
    static types() {
        return {
            action: 'string',
            actionTime: 'string',
            actionTimestamp: 'number',
            clientIp: 'string',
            domainName: 'string',
            message: 'string',
            zoneId: 'string',
        };
    }
}
exports.DescribeDomainLogsResponseBodyDomainLogsDomainLog = DescribeDomainLogsResponseBodyDomainLogsDomainLog;
class DescribeDomainLogsResponseBodyDomainLogs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainLog: 'DomainLog',
        };
    }
    static types() {
        return {
            domainLog: { 'type': 'array', 'itemType': DescribeDomainLogsResponseBodyDomainLogsDomainLog },
        };
    }
}
exports.DescribeDomainLogsResponseBodyDomainLogs = DescribeDomainLogsResponseBodyDomainLogs;
class DescribeDomainNsResponseBodyDnsServers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsServer: 'DnsServer',
        };
    }
    static types() {
        return {
            dnsServer: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDomainNsResponseBodyDnsServers = DescribeDomainNsResponseBodyDnsServers;
class DescribeDomainNsResponseBodyExpectDnsServers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            expectDnsServer: 'ExpectDnsServer',
        };
    }
    static types() {
        return {
            expectDnsServer: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDomainNsResponseBodyExpectDnsServers = DescribeDomainNsResponseBodyExpectDnsServers;
class DescribeDomainRecordsResponseBodyDomainRecordsRecord extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTimestamp: 'CreateTimestamp',
            domainName: 'DomainName',
            line: 'Line',
            locked: 'Locked',
            priority: 'Priority',
            RR: 'RR',
            recordId: 'RecordId',
            remark: 'Remark',
            status: 'Status',
            TTL: 'TTL',
            type: 'Type',
            updateTimestamp: 'UpdateTimestamp',
            value: 'Value',
            weight: 'Weight',
        };
    }
    static types() {
        return {
            createTimestamp: 'number',
            domainName: 'string',
            line: 'string',
            locked: 'boolean',
            priority: 'number',
            RR: 'string',
            recordId: 'string',
            remark: 'string',
            status: 'string',
            TTL: 'number',
            type: 'string',
            updateTimestamp: 'number',
            value: 'string',
            weight: 'number',
        };
    }
}
exports.DescribeDomainRecordsResponseBodyDomainRecordsRecord = DescribeDomainRecordsResponseBodyDomainRecordsRecord;
class DescribeDomainRecordsResponseBodyDomainRecords extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            record: 'Record',
        };
    }
    static types() {
        return {
            record: { 'type': 'array', 'itemType': DescribeDomainRecordsResponseBodyDomainRecordsRecord },
        };
    }
}
exports.DescribeDomainRecordsResponseBodyDomainRecords = DescribeDomainRecordsResponseBodyDomainRecords;
class DescribeDomainResolveStatisticsSummaryResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            count: 'Count',
            domainName: 'DomainName',
            domainType: 'DomainType',
        };
    }
    static types() {
        return {
            count: 'string',
            domainName: 'string',
            domainType: 'string',
        };
    }
}
exports.DescribeDomainResolveStatisticsSummaryResponseBodyStatistics = DescribeDomainResolveStatisticsSummaryResponseBodyStatistics;
class DescribeDomainStatisticsResponseBodyStatisticsStatistic extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            count: 'Count',
            domainName: 'DomainName',
            timestamp: 'Timestamp',
        };
    }
    static types() {
        return {
            count: 'number',
            domainName: 'string',
            timestamp: 'number',
        };
    }
}
exports.DescribeDomainStatisticsResponseBodyStatisticsStatistic = DescribeDomainStatisticsResponseBodyStatisticsStatistic;
class DescribeDomainStatisticsResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            statistic: 'Statistic',
        };
    }
    static types() {
        return {
            statistic: { 'type': 'array', 'itemType': DescribeDomainStatisticsResponseBodyStatisticsStatistic },
        };
    }
}
exports.DescribeDomainStatisticsResponseBodyStatistics = DescribeDomainStatisticsResponseBodyStatistics;
class DescribeDomainStatisticsSummaryResponseBodyStatisticsStatistic extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            count: 'Count',
            domainName: 'DomainName',
            domainType: 'DomainType',
            resolveAnalysisStatus: 'resolveAnalysisStatus',
        };
    }
    static types() {
        return {
            count: 'number',
            domainName: 'string',
            domainType: 'string',
            resolveAnalysisStatus: 'string',
        };
    }
}
exports.DescribeDomainStatisticsSummaryResponseBodyStatisticsStatistic = DescribeDomainStatisticsSummaryResponseBodyStatisticsStatistic;
class DescribeDomainStatisticsSummaryResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            statistic: 'Statistic',
        };
    }
    static types() {
        return {
            statistic: { 'type': 'array', 'itemType': DescribeDomainStatisticsSummaryResponseBodyStatisticsStatistic },
        };
    }
}
exports.DescribeDomainStatisticsSummaryResponseBodyStatistics = DescribeDomainStatisticsSummaryResponseBodyStatistics;
class DescribeDomainsResponseBodyDomainsDomainDnsServers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsServer: 'DnsServer',
        };
    }
    static types() {
        return {
            dnsServer: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeDomainsResponseBodyDomainsDomainDnsServers = DescribeDomainsResponseBodyDomainsDomainDnsServers;
class DescribeDomainsResponseBodyDomainsDomainTagsTag extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            key: 'Key',
            value: 'Value',
        };
    }
    static types() {
        return {
            key: 'string',
            value: 'string',
        };
    }
}
exports.DescribeDomainsResponseBodyDomainsDomainTagsTag = DescribeDomainsResponseBodyDomainsDomainTagsTag;
class DescribeDomainsResponseBodyDomainsDomainTags extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            tag: 'Tag',
        };
    }
    static types() {
        return {
            tag: { 'type': 'array', 'itemType': DescribeDomainsResponseBodyDomainsDomainTagsTag },
        };
    }
}
exports.DescribeDomainsResponseBodyDomainsDomainTags = DescribeDomainsResponseBodyDomainsDomainTags;
class DescribeDomainsResponseBodyDomainsDomain extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            aliDomain: 'AliDomain',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            dnsServers: 'DnsServers',
            domainId: 'DomainId',
            domainLoggingSwitchStatus: 'DomainLoggingSwitchStatus',
            domainName: 'DomainName',
            groupId: 'GroupId',
            groupName: 'GroupName',
            instanceEndTime: 'InstanceEndTime',
            instanceExpired: 'InstanceExpired',
            instanceId: 'InstanceId',
            punyCode: 'PunyCode',
            recordCount: 'RecordCount',
            registrantEmail: 'RegistrantEmail',
            remark: 'Remark',
            resourceGroupId: 'ResourceGroupId',
            starmark: 'Starmark',
            tags: 'Tags',
            versionCode: 'VersionCode',
            versionName: 'VersionName',
        };
    }
    static types() {
        return {
            aliDomain: 'boolean',
            createTime: 'string',
            createTimestamp: 'number',
            dnsServers: DescribeDomainsResponseBodyDomainsDomainDnsServers,
            domainId: 'string',
            domainLoggingSwitchStatus: 'string',
            domainName: 'string',
            groupId: 'string',
            groupName: 'string',
            instanceEndTime: 'string',
            instanceExpired: 'boolean',
            instanceId: 'string',
            punyCode: 'string',
            recordCount: 'number',
            registrantEmail: 'string',
            remark: 'string',
            resourceGroupId: 'string',
            starmark: 'boolean',
            tags: DescribeDomainsResponseBodyDomainsDomainTags,
            versionCode: 'string',
            versionName: 'string',
        };
    }
}
exports.DescribeDomainsResponseBodyDomainsDomain = DescribeDomainsResponseBodyDomainsDomain;
class DescribeDomainsResponseBodyDomains extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domain: 'Domain',
        };
    }
    static types() {
        return {
            domain: { 'type': 'array', 'itemType': DescribeDomainsResponseBodyDomainsDomain },
        };
    }
}
exports.DescribeDomainsResponseBodyDomains = DescribeDomainsResponseBodyDomains;
class DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupCode: 'GroupCode',
            groupName: 'GroupName',
            lineCode: 'LineCode',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            groupCode: 'string',
            groupName: 'string',
            lineCode: 'string',
            lineName: 'string',
        };
    }
}
exports.DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine = DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine;
class DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            line: 'Line',
        };
    }
    static types() {
        return {
            line: { 'type': 'array', 'itemType': DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLinesLine },
        };
    }
}
exports.DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLines = DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLines;
class DescribeGtmAccessStrategiesResponseBodyStrategiesStrategy extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessMode: 'AccessMode',
            accessStatus: 'AccessStatus',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            defaultAddrPoolId: 'DefaultAddrPoolId',
            defaultAddrPoolMonitorStatus: 'DefaultAddrPoolMonitorStatus',
            defaultAddrPoolName: 'DefaultAddrPoolName',
            defaultAddrPoolStatus: 'DefaultAddrPoolStatus',
            failoverAddrPoolId: 'FailoverAddrPoolId',
            failoverAddrPoolMonitorStatus: 'FailoverAddrPoolMonitorStatus',
            failoverAddrPoolName: 'FailoverAddrPoolName',
            failoverAddrPoolStatus: 'FailoverAddrPoolStatus',
            instanceId: 'InstanceId',
            lines: 'Lines',
            strategyId: 'StrategyId',
            strategyMode: 'StrategyMode',
            strategyName: 'StrategyName',
        };
    }
    static types() {
        return {
            accessMode: 'string',
            accessStatus: 'string',
            createTime: 'string',
            createTimestamp: 'number',
            defaultAddrPoolId: 'string',
            defaultAddrPoolMonitorStatus: 'string',
            defaultAddrPoolName: 'string',
            defaultAddrPoolStatus: 'string',
            failoverAddrPoolId: 'string',
            failoverAddrPoolMonitorStatus: 'string',
            failoverAddrPoolName: 'string',
            failoverAddrPoolStatus: 'string',
            instanceId: 'string',
            lines: DescribeGtmAccessStrategiesResponseBodyStrategiesStrategyLines,
            strategyId: 'string',
            strategyMode: 'string',
            strategyName: 'string',
        };
    }
}
exports.DescribeGtmAccessStrategiesResponseBodyStrategiesStrategy = DescribeGtmAccessStrategiesResponseBodyStrategiesStrategy;
class DescribeGtmAccessStrategiesResponseBodyStrategies extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            strategy: 'Strategy',
        };
    }
    static types() {
        return {
            strategy: { 'type': 'array', 'itemType': DescribeGtmAccessStrategiesResponseBodyStrategiesStrategy },
        };
    }
}
exports.DescribeGtmAccessStrategiesResponseBodyStrategies = DescribeGtmAccessStrategiesResponseBodyStrategies;
class DescribeGtmAccessStrategyResponseBodyLinesLine extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            groupCode: 'GroupCode',
            groupName: 'GroupName',
            lineCode: 'LineCode',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            groupCode: 'string',
            groupName: 'string',
            lineCode: 'string',
            lineName: 'string',
        };
    }
}
exports.DescribeGtmAccessStrategyResponseBodyLinesLine = DescribeGtmAccessStrategyResponseBodyLinesLine;
class DescribeGtmAccessStrategyResponseBodyLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            line: 'Line',
        };
    }
    static types() {
        return {
            line: { 'type': 'array', 'itemType': DescribeGtmAccessStrategyResponseBodyLinesLine },
        };
    }
}
exports.DescribeGtmAccessStrategyResponseBodyLines = DescribeGtmAccessStrategyResponseBodyLines;
class DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPoolsAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            addrPoolName: 'AddrPoolName',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            addrPoolName: 'string',
        };
    }
}
exports.DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPoolsAddrPool = DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPoolsAddrPool;
class DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPool: 'AddrPool',
        };
    }
    static types() {
        return {
            addrPool: { 'type': 'array', 'itemType': DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPoolsAddrPool },
        };
    }
}
exports.DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPools = DescribeGtmAccessStrategyAvailableConfigResponseBodyAddrPools;
class DescribeGtmAccessStrategyAvailableConfigResponseBodyLinesLine extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            fatherCode: 'FatherCode',
            groupCode: 'GroupCode',
            groupName: 'GroupName',
            lineCode: 'LineCode',
            lineName: 'LineName',
            status: 'Status',
        };
    }
    static types() {
        return {
            fatherCode: 'string',
            groupCode: 'string',
            groupName: 'string',
            lineCode: 'string',
            lineName: 'string',
            status: 'string',
        };
    }
}
exports.DescribeGtmAccessStrategyAvailableConfigResponseBodyLinesLine = DescribeGtmAccessStrategyAvailableConfigResponseBodyLinesLine;
class DescribeGtmAccessStrategyAvailableConfigResponseBodyLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            line: 'Line',
        };
    }
    static types() {
        return {
            line: { 'type': 'array', 'itemType': DescribeGtmAccessStrategyAvailableConfigResponseBodyLinesLine },
        };
    }
}
exports.DescribeGtmAccessStrategyAvailableConfigResponseBodyLines = DescribeGtmAccessStrategyAvailableConfigResponseBodyLines;
class DescribeGtmInstanceAddressPoolResponseBodyAddrsAddr extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrId: 'AddrId',
            alertStatus: 'AlertStatus',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            lbaWeight: 'LbaWeight',
            mode: 'Mode',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
            value: 'Value',
        };
    }
    static types() {
        return {
            addrId: 'number',
            alertStatus: 'string',
            createTime: 'string',
            createTimestamp: 'number',
            lbaWeight: 'number',
            mode: 'string',
            updateTime: 'string',
            updateTimestamp: 'number',
            value: 'string',
        };
    }
}
exports.DescribeGtmInstanceAddressPoolResponseBodyAddrsAddr = DescribeGtmInstanceAddressPoolResponseBodyAddrsAddr;
class DescribeGtmInstanceAddressPoolResponseBodyAddrs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
        };
    }
    static types() {
        return {
            addr: { 'type': 'array', 'itemType': DescribeGtmInstanceAddressPoolResponseBodyAddrsAddr },
        };
    }
}
exports.DescribeGtmInstanceAddressPoolResponseBodyAddrs = DescribeGtmInstanceAddressPoolResponseBodyAddrs;
class DescribeGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrCount: 'AddrCount',
            addrPoolId: 'AddrPoolId',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            minAvailableAddrNum: 'MinAvailableAddrNum',
            monitorConfigId: 'MonitorConfigId',
            monitorStatus: 'MonitorStatus',
            name: 'Name',
            status: 'Status',
            type: 'Type',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
        };
    }
    static types() {
        return {
            addrCount: 'number',
            addrPoolId: 'string',
            createTime: 'string',
            createTimestamp: 'number',
            minAvailableAddrNum: 'number',
            monitorConfigId: 'string',
            monitorStatus: 'string',
            name: 'string',
            status: 'string',
            type: 'string',
            updateTime: 'string',
            updateTimestamp: 'number',
        };
    }
}
exports.DescribeGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool = DescribeGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool;
class DescribeGtmInstanceAddressPoolsResponseBodyAddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPool: 'AddrPool',
        };
    }
    static types() {
        return {
            addrPool: { 'type': 'array', 'itemType': DescribeGtmInstanceAddressPoolsResponseBodyAddrPoolsAddrPool },
        };
    }
}
exports.DescribeGtmInstanceAddressPoolsResponseBodyAddrPools = DescribeGtmInstanceAddressPoolsResponseBodyAddrPools;
class DescribeGtmInstancesResponseBodyGtmInstancesGtmInstance extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            accessStrategyNum: 'AccessStrategyNum',
            addressPoolNum: 'AddressPoolNum',
            alertGroup: 'AlertGroup',
            cname: 'Cname',
            cnameMode: 'CnameMode',
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            expireTime: 'ExpireTime',
            expireTimestamp: 'ExpireTimestamp',
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
            lbaStrategy: 'LbaStrategy',
            resourceGroupId: 'ResourceGroupId',
            ttl: 'Ttl',
            userDomainName: 'UserDomainName',
            versionCode: 'VersionCode',
        };
    }
    static types() {
        return {
            accessStrategyNum: 'number',
            addressPoolNum: 'number',
            alertGroup: 'string',
            cname: 'string',
            cnameMode: 'string',
            createTime: 'string',
            createTimestamp: 'number',
            expireTime: 'string',
            expireTimestamp: 'number',
            instanceId: 'string',
            instanceName: 'string',
            lbaStrategy: 'string',
            resourceGroupId: 'string',
            ttl: 'number',
            userDomainName: 'string',
            versionCode: 'string',
        };
    }
}
exports.DescribeGtmInstancesResponseBodyGtmInstancesGtmInstance = DescribeGtmInstancesResponseBodyGtmInstancesGtmInstance;
class DescribeGtmInstancesResponseBodyGtmInstances extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            gtmInstance: 'GtmInstance',
        };
    }
    static types() {
        return {
            gtmInstance: { 'type': 'array', 'itemType': DescribeGtmInstancesResponseBodyGtmInstancesGtmInstance },
        };
    }
}
exports.DescribeGtmInstancesResponseBodyGtmInstances = DescribeGtmInstancesResponseBodyGtmInstances;
class DescribeGtmLogsResponseBodyLogsLog extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            content: 'Content',
            entityId: 'EntityId',
            entityName: 'EntityName',
            entityType: 'EntityType',
            id: 'Id',
            operAction: 'OperAction',
            operIp: 'OperIp',
            operTime: 'OperTime',
            operTimestamp: 'OperTimestamp',
        };
    }
    static types() {
        return {
            content: 'string',
            entityId: 'string',
            entityName: 'string',
            entityType: 'string',
            id: 'number',
            operAction: 'string',
            operIp: 'string',
            operTime: 'string',
            operTimestamp: 'number',
        };
    }
}
exports.DescribeGtmLogsResponseBodyLogsLog = DescribeGtmLogsResponseBodyLogsLog;
class DescribeGtmLogsResponseBodyLogs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            log: 'Log',
        };
    }
    static types() {
        return {
            log: { 'type': 'array', 'itemType': DescribeGtmLogsResponseBodyLogsLog },
        };
    }
}
exports.DescribeGtmLogsResponseBodyLogs = DescribeGtmLogsResponseBodyLogs;
class DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodesIspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            cityName: 'CityName',
            defaultSelected: 'DefaultSelected',
            groupName: 'GroupName',
            groupType: 'GroupType',
            ispCode: 'IspCode',
            ispName: 'IspName',
            mainland: 'Mainland',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            cityName: 'string',
            defaultSelected: 'boolean',
            groupName: 'string',
            groupType: 'string',
            ispCode: 'string',
            ispName: 'string',
            mainland: 'boolean',
        };
    }
}
exports.DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodesIspCityNode = DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodesIspCityNode;
class DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodes extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ispCityNode: 'IspCityNode',
        };
    }
    static types() {
        return {
            ispCityNode: { 'type': 'array', 'itemType': DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodesIspCityNode },
        };
    }
}
exports.DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodes = DescribeGtmMonitorAvailableConfigResponseBodyIspCityNodes;
class DescribeGtmMonitorConfigResponseBodyIspCityNodesIspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            cityName: 'CityName',
            countryCode: 'CountryCode',
            countryName: 'CountryName',
            ispCode: 'IspCode',
            ispName: 'IspName',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            cityName: 'string',
            countryCode: 'string',
            countryName: 'string',
            ispCode: 'string',
            ispName: 'string',
        };
    }
}
exports.DescribeGtmMonitorConfigResponseBodyIspCityNodesIspCityNode = DescribeGtmMonitorConfigResponseBodyIspCityNodesIspCityNode;
class DescribeGtmMonitorConfigResponseBodyIspCityNodes extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            ispCityNode: 'IspCityNode',
        };
    }
    static types() {
        return {
            ispCityNode: { 'type': 'array', 'itemType': DescribeGtmMonitorConfigResponseBodyIspCityNodesIspCityNode },
        };
    }
}
exports.DescribeGtmMonitorConfigResponseBodyIspCityNodes = DescribeGtmMonitorConfigResponseBodyIspCityNodes;
class DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrsAddr extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            id: 'Id',
            mode: 'Mode',
            value: 'Value',
        };
    }
    static types() {
        return {
            id: 'number',
            mode: 'string',
            value: 'string',
        };
    }
}
exports.DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrsAddr = DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrsAddr;
class DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
        };
    }
    static types() {
        return {
            addr: { 'type': 'array', 'itemType': DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrsAddr },
        };
    }
}
exports.DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrs = DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrs;
class DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            addrPoolName: 'AddrPoolName',
            addrs: 'Addrs',
            instanceId: 'InstanceId',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            addrPoolName: 'string',
            addrs: DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPoolAddrs,
            instanceId: 'string',
        };
    }
}
exports.DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPool = DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPool;
class DescribeGtmRecoveryPlanResponseBodyFaultAddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            faultAddrPool: 'FaultAddrPool',
        };
    }
    static types() {
        return {
            faultAddrPool: { 'type': 'array', 'itemType': DescribeGtmRecoveryPlanResponseBodyFaultAddrPoolsFaultAddrPool },
        };
    }
}
exports.DescribeGtmRecoveryPlanResponseBodyFaultAddrPools = DescribeGtmRecoveryPlanResponseBodyFaultAddrPools;
class DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPoolsAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPoolId: 'AddrPoolId',
            name: 'Name',
        };
    }
    static types() {
        return {
            addrPoolId: 'string',
            name: 'string',
        };
    }
}
exports.DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPoolsAddrPool = DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPoolsAddrPool;
class DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPools extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPool: 'AddrPool',
        };
    }
    static types() {
        return {
            addrPool: { 'type': 'array', 'itemType': DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPoolsAddrPool },
        };
    }
}
exports.DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPools = DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPools;
class DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstance extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addrPools: 'AddrPools',
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
        };
    }
    static types() {
        return {
            addrPools: DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstanceAddrPools,
            instanceId: 'string',
            instanceName: 'string',
        };
    }
}
exports.DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstance = DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstance;
class DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstances extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instance: 'Instance',
        };
    }
    static types() {
        return {
            instance: { 'type': 'array', 'itemType': DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstancesInstance },
        };
    }
}
exports.DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstances = DescribeGtmRecoveryPlanAvailableConfigResponseBodyInstances;
class DescribeGtmRecoveryPlansResponseBodyRecoveryPlansRecoveryPlan extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            faultAddrPoolNum: 'FaultAddrPoolNum',
            lastExecuteTime: 'LastExecuteTime',
            lastExecuteTimestamp: 'LastExecuteTimestamp',
            lastRollbackTime: 'LastRollbackTime',
            lastRollbackTimestamp: 'LastRollbackTimestamp',
            name: 'Name',
            recoveryPlanId: 'RecoveryPlanId',
            remark: 'Remark',
            status: 'Status',
            updateTime: 'UpdateTime',
            updateTimestamp: 'UpdateTimestamp',
        };
    }
    static types() {
        return {
            createTime: 'string',
            createTimestamp: 'number',
            faultAddrPoolNum: 'number',
            lastExecuteTime: 'string',
            lastExecuteTimestamp: 'number',
            lastRollbackTime: 'string',
            lastRollbackTimestamp: 'number',
            name: 'string',
            recoveryPlanId: 'number',
            remark: 'string',
            status: 'string',
            updateTime: 'string',
            updateTimestamp: 'number',
        };
    }
}
exports.DescribeGtmRecoveryPlansResponseBodyRecoveryPlansRecoveryPlan = DescribeGtmRecoveryPlansResponseBodyRecoveryPlansRecoveryPlan;
class DescribeGtmRecoveryPlansResponseBodyRecoveryPlans extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recoveryPlan: 'RecoveryPlan',
        };
    }
    static types() {
        return {
            recoveryPlan: { 'type': 'array', 'itemType': DescribeGtmRecoveryPlansResponseBodyRecoveryPlansRecoveryPlan },
        };
    }
}
exports.DescribeGtmRecoveryPlansResponseBodyRecoveryPlans = DescribeGtmRecoveryPlansResponseBodyRecoveryPlans;
class DescribeInstanceDomainsResponseBodyInstanceDomains extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            domainName: 'DomainName',
        };
    }
    static types() {
        return {
            createTime: 'string',
            createTimestamp: 'number',
            domainName: 'string',
        };
    }
}
exports.DescribeInstanceDomainsResponseBodyInstanceDomains = DescribeInstanceDomainsResponseBodyInstanceDomains;
class DescribeInternetDnsLogsResponseBodyLogsLogValue extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            value: 'Value',
        };
    }
    static types() {
        return {
            value: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeInternetDnsLogsResponseBodyLogsLogValue = DescribeInternetDnsLogsResponseBodyLogsLogValue;
class DescribeInternetDnsLogsResponseBodyLogsLog extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsMsgId: 'DnsMsgId',
            logTime: 'LogTime',
            queryName: 'QueryName',
            queryType: 'QueryType',
            rt: 'Rt',
            serverIp: 'ServerIp',
            sourceIp: 'SourceIp',
            status: 'Status',
            subnetIp: 'SubnetIp',
            value: 'Value',
        };
    }
    static types() {
        return {
            dnsMsgId: 'string',
            logTime: 'number',
            queryName: 'string',
            queryType: 'string',
            rt: 'number',
            serverIp: 'string',
            sourceIp: 'string',
            status: 'string',
            subnetIp: 'string',
            value: DescribeInternetDnsLogsResponseBodyLogsLogValue,
        };
    }
}
exports.DescribeInternetDnsLogsResponseBodyLogsLog = DescribeInternetDnsLogsResponseBodyLogsLog;
class DescribeInternetDnsLogsResponseBodyLogs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            log: 'Log',
        };
    }
    static types() {
        return {
            log: { 'type': 'array', 'itemType': DescribeInternetDnsLogsResponseBodyLogsLog },
        };
    }
}
exports.DescribeInternetDnsLogsResponseBodyLogs = DescribeInternetDnsLogsResponseBodyLogs;
class DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstancesQuotaInfo extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceQuota: 'InstanceQuota',
            instanceQuotaUsed: 'InstanceQuotaUsed',
        };
    }
    static types() {
        return {
            instanceQuota: 'number',
            instanceQuotaUsed: 'number',
        };
    }
}
exports.DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstancesQuotaInfo = DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstancesQuotaInfo;
class DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstances extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            expireTime: 'ExpireTime',
            expireTimestamp: 'ExpireTimestamp',
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
            isp: 'Isp',
            quotaInfo: 'QuotaInfo',
            status: 'Status',
            versionCode: 'VersionCode',
        };
    }
    static types() {
        return {
            expireTime: 'string',
            expireTimestamp: 'number',
            instanceId: 'string',
            instanceName: 'string',
            isp: 'string',
            quotaInfo: DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstancesQuotaInfo,
            status: 'string',
            versionCode: 'string',
        };
    }
}
exports.DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstances = DescribeIspFlushCacheInstancesResponseBodyIspFlushCacheInstances;
class DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodesAnswers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            name: 'Name',
            record: 'Record',
            ttl: 'Ttl',
            type: 'Type',
        };
    }
    static types() {
        return {
            name: 'string',
            record: 'string',
            ttl: 'number',
            type: 'string',
        };
    }
}
exports.DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodesAnswers = DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodesAnswers;
class DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodes extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            answers: 'Answers',
            nodeIp: 'NodeIp',
            spName: 'SpName',
            status: 'Status',
        };
    }
    static types() {
        return {
            answers: { 'type': 'array', 'itemType': DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodesAnswers },
            nodeIp: 'string',
            spName: 'string',
            status: 'string',
        };
    }
}
exports.DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodes = DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodes;
class DescribeIspFlushCacheTaskResponseBodyFlushCacheResults extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsNodes: 'DnsNodes',
            province: 'Province',
        };
    }
    static types() {
        return {
            dnsNodes: { 'type': 'array', 'itemType': DescribeIspFlushCacheTaskResponseBodyFlushCacheResultsDnsNodes },
            province: 'string',
        };
    }
}
exports.DescribeIspFlushCacheTaskResponseBodyFlushCacheResults = DescribeIspFlushCacheTaskResponseBodyFlushCacheResults;
class DescribeIspFlushCacheTasksResponseBodyIspFlushCacheTasks extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            domainName: 'DomainName',
            instanceId: 'InstanceId',
            instanceName: 'InstanceName',
            isp: 'Isp',
            taskId: 'TaskId',
            taskStatus: 'TaskStatus',
        };
    }
    static types() {
        return {
            createTime: 'string',
            createTimestamp: 'number',
            domainName: 'string',
            instanceId: 'string',
            instanceName: 'string',
            isp: 'string',
            taskId: 'string',
            taskStatus: 'string',
        };
    }
}
exports.DescribeIspFlushCacheTasksResponseBodyIspFlushCacheTasks = DescribeIspFlushCacheTasksResponseBodyIspFlushCacheTasks;
class DescribePdnsAccountSummaryResponseBodyData extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainCount: 'DomainCount',
            httpCount: 'HttpCount',
            httpsCount: 'HttpsCount',
            subDomainCount: 'SubDomainCount',
            threatCount: 'ThreatCount',
            totalCount: 'TotalCount',
            userId: 'UserId',
        };
    }
    static types() {
        return {
            domainCount: 'number',
            httpCount: 'number',
            httpsCount: 'number',
            subDomainCount: 'number',
            threatCount: 'number',
            totalCount: 'number',
            userId: 'number',
        };
    }
}
exports.DescribePdnsAccountSummaryResponseBodyData = DescribePdnsAccountSummaryResponseBodyData;
class DescribePdnsAppKeyResponseBodyAppKey extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            appKeyId: 'AppKeyId',
            appKeySecret: 'AppKeySecret',
            createDate: 'CreateDate',
            createTimestamp: 'CreateTimestamp',
            state: 'State',
        };
    }
    static types() {
        return {
            appKeyId: 'string',
            appKeySecret: 'string',
            createDate: 'string',
            createTimestamp: 'number',
            state: 'string',
        };
    }
}
exports.DescribePdnsAppKeyResponseBodyAppKey = DescribePdnsAppKeyResponseBodyAppKey;
class DescribePdnsAppKeysResponseBodyAppKeys extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            appKeyId: 'AppKeyId',
            createDate: 'CreateDate',
            createTimestamp: 'CreateTimestamp',
            state: 'State',
        };
    }
    static types() {
        return {
            appKeyId: 'string',
            createDate: 'string',
            createTimestamp: 'number',
            state: 'string',
        };
    }
}
exports.DescribePdnsAppKeysResponseBodyAppKeys = DescribePdnsAppKeysResponseBodyAppKeys;
class DescribePdnsOperateLogsResponseBodyLogs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            action: 'Action',
            operateTime: 'OperateTime',
            type: 'Type',
            content: 'content',
        };
    }
    static types() {
        return {
            action: 'string',
            operateTime: 'string',
            type: 'string',
            content: 'string',
        };
    }
}
exports.DescribePdnsOperateLogsResponseBodyLogs = DescribePdnsOperateLogsResponseBodyLogs;
class DescribePdnsRequestStatisticResponseBodyData extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dohTotalCount: 'DohTotalCount',
            httpCount: 'HttpCount',
            httpsCount: 'HttpsCount',
            ipCount: 'IpCount',
            timestamp: 'Timestamp',
            totalCount: 'TotalCount',
            udpTotalCount: 'UdpTotalCount',
            v4Count: 'V4Count',
            v4HttpCount: 'V4HttpCount',
            v4HttpsCount: 'V4HttpsCount',
            v6Count: 'V6Count',
            v6HttpCount: 'V6HttpCount',
            v6HttpsCount: 'V6HttpsCount',
        };
    }
    static types() {
        return {
            dohTotalCount: 'number',
            httpCount: 'number',
            httpsCount: 'number',
            ipCount: 'number',
            timestamp: 'number',
            totalCount: 'number',
            udpTotalCount: 'number',
            v4Count: 'number',
            v4HttpCount: 'number',
            v4HttpsCount: 'number',
            v6Count: 'number',
            v6HttpCount: 'number',
            v6HttpsCount: 'number',
        };
    }
}
exports.DescribePdnsRequestStatisticResponseBodyData = DescribePdnsRequestStatisticResponseBodyData;
class DescribePdnsRequestStatisticsResponseBodyDataThreatInfo extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            threatLevel: 'ThreatLevel',
            threatType: 'ThreatType',
        };
    }
    static types() {
        return {
            threatLevel: 'string',
            threatType: 'string',
        };
    }
}
exports.DescribePdnsRequestStatisticsResponseBodyDataThreatInfo = DescribePdnsRequestStatisticsResponseBodyDataThreatInfo;
class DescribePdnsRequestStatisticsResponseBodyData extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dohTotalCount: 'DohTotalCount',
            domainName: 'DomainName',
            httpCount: 'HttpCount',
            httpsCount: 'HttpsCount',
            ipCount: 'IpCount',
            maxThreatLevel: 'MaxThreatLevel',
            subDomain: 'SubDomain',
            threatCount: 'ThreatCount',
            threatInfo: 'ThreatInfo',
            totalCount: 'TotalCount',
            udpTotalCount: 'UdpTotalCount',
            v4Count: 'V4Count',
            v4HttpCount: 'V4HttpCount',
            v4HttpsCount: 'V4HttpsCount',
            v6Count: 'V6Count',
            v6HttpCount: 'V6HttpCount',
            v6HttpsCount: 'V6HttpsCount',
        };
    }
    static types() {
        return {
            dohTotalCount: 'number',
            domainName: 'string',
            httpCount: 'number',
            httpsCount: 'number',
            ipCount: 'number',
            maxThreatLevel: 'string',
            subDomain: 'string',
            threatCount: 'number',
            threatInfo: { 'type': 'array', 'itemType': DescribePdnsRequestStatisticsResponseBodyDataThreatInfo },
            totalCount: 'number',
            udpTotalCount: 'number',
            v4Count: 'number',
            v4HttpCount: 'number',
            v4HttpsCount: 'number',
            v6Count: 'number',
            v6HttpCount: 'number',
            v6HttpsCount: 'number',
        };
    }
}
exports.DescribePdnsRequestStatisticsResponseBodyData = DescribePdnsRequestStatisticsResponseBodyData;
class DescribePdnsThreatLogsResponseBodyLogs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            sourceIp: 'SourceIp',
            subDomain: 'SubDomain',
            threatLevel: 'ThreatLevel',
            threatTime: 'ThreatTime',
            threatType: 'ThreatType',
        };
    }
    static types() {
        return {
            sourceIp: 'string',
            subDomain: 'string',
            threatLevel: 'string',
            threatTime: 'string',
            threatType: 'string',
        };
    }
}
exports.DescribePdnsThreatLogsResponseBodyLogs = DescribePdnsThreatLogsResponseBodyLogs;
class DescribePdnsThreatStatisticResponseBodyData extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dohTotalCount: 'DohTotalCount',
            threatLevel: 'ThreatLevel',
            threatType: 'ThreatType',
            timestamp: 'Timestamp',
            totalCount: 'TotalCount',
            udpTotalCount: 'UdpTotalCount',
        };
    }
    static types() {
        return {
            dohTotalCount: 'number',
            threatLevel: 'string',
            threatType: 'string',
            timestamp: 'number',
            totalCount: 'number',
            udpTotalCount: 'number',
        };
    }
}
exports.DescribePdnsThreatStatisticResponseBodyData = DescribePdnsThreatStatisticResponseBodyData;
class DescribePdnsThreatStatisticsResponseBodyData extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dohTotalCount: 'DohTotalCount',
            domainCount: 'DomainCount',
            domainName: 'DomainName',
            latestThreatTime: 'LatestThreatTime',
            maxThreatLevel: 'MaxThreatLevel',
            sourceIp: 'SourceIp',
            subDomain: 'SubDomain',
            threatLevel: 'ThreatLevel',
            threatType: 'ThreatType',
            totalCount: 'TotalCount',
            udpTotalCount: 'UdpTotalCount',
        };
    }
    static types() {
        return {
            dohTotalCount: 'number',
            domainCount: 'number',
            domainName: 'string',
            latestThreatTime: 'number',
            maxThreatLevel: 'string',
            sourceIp: 'string',
            subDomain: 'string',
            threatLevel: 'string',
            threatType: 'string',
            totalCount: 'number',
            udpTotalCount: 'number',
        };
    }
}
exports.DescribePdnsThreatStatisticsResponseBodyData = DescribePdnsThreatStatisticsResponseBodyData;
class DescribePdnsUdpIpSegmentsResponseBodyIpSegments extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createDate: 'CreateDate',
            ip: 'Ip',
            mask: 'Mask',
            name: 'Name',
            state: 'State',
            updateDate: 'UpdateDate',
        };
    }
    static types() {
        return {
            createDate: 'string',
            ip: 'string',
            mask: 'number',
            name: 'string',
            state: 'string',
            updateDate: 'string',
        };
    }
}
exports.DescribePdnsUdpIpSegmentsResponseBodyIpSegments = DescribePdnsUdpIpSegmentsResponseBodyIpSegments;
class DescribePdnsUserInfoResponseBodyUserInfo extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            availableService: 'AvailableService',
            pdnsId: 'PdnsId',
            serviceType: 'ServiceType',
            state: 'State',
            stoppedService: 'StoppedService',
        };
    }
    static types() {
        return {
            availableService: 'string',
            pdnsId: 'number',
            serviceType: 'string',
            state: 'string',
            stoppedService: 'string',
        };
    }
}
exports.DescribePdnsUserInfoResponseBodyUserInfo = DescribePdnsUserInfoResponseBodyUserInfo;
class DescribeRecordLogsResponseBodyRecordLogsRecordLog extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            action: 'Action',
            actionTime: 'ActionTime',
            actionTimestamp: 'ActionTimestamp',
            clientIp: 'ClientIp',
            message: 'Message',
        };
    }
    static types() {
        return {
            action: 'string',
            actionTime: 'string',
            actionTimestamp: 'number',
            clientIp: 'string',
            message: 'string',
        };
    }
}
exports.DescribeRecordLogsResponseBodyRecordLogsRecordLog = DescribeRecordLogsResponseBodyRecordLogsRecordLog;
class DescribeRecordLogsResponseBodyRecordLogs extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recordLog: 'RecordLog',
        };
    }
    static types() {
        return {
            recordLog: { 'type': 'array', 'itemType': DescribeRecordLogsResponseBodyRecordLogsRecordLog },
        };
    }
}
exports.DescribeRecordLogsResponseBodyRecordLogs = DescribeRecordLogsResponseBodyRecordLogs;
class DescribeRecordResolveStatisticsSummaryResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            count: 'Count',
            domainName: 'DomainName',
            domainType: 'DomainType',
            subDomain: 'SubDomain',
        };
    }
    static types() {
        return {
            count: 'string',
            domainName: 'string',
            domainType: 'string',
            subDomain: 'string',
        };
    }
}
exports.DescribeRecordResolveStatisticsSummaryResponseBodyStatistics = DescribeRecordResolveStatisticsSummaryResponseBodyStatistics;
class DescribeRecordStatisticsResponseBodyStatisticsStatistic extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            count: 'Count',
            timestamp: 'Timestamp',
        };
    }
    static types() {
        return {
            count: 'number',
            timestamp: 'number',
        };
    }
}
exports.DescribeRecordStatisticsResponseBodyStatisticsStatistic = DescribeRecordStatisticsResponseBodyStatisticsStatistic;
class DescribeRecordStatisticsResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            statistic: 'Statistic',
        };
    }
    static types() {
        return {
            statistic: { 'type': 'array', 'itemType': DescribeRecordStatisticsResponseBodyStatisticsStatistic },
        };
    }
}
exports.DescribeRecordStatisticsResponseBodyStatistics = DescribeRecordStatisticsResponseBodyStatistics;
class DescribeRecordStatisticsSummaryResponseBodyStatisticsStatistic extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            count: 'Count',
            subDomain: 'SubDomain',
        };
    }
    static types() {
        return {
            count: 'number',
            subDomain: 'string',
        };
    }
}
exports.DescribeRecordStatisticsSummaryResponseBodyStatisticsStatistic = DescribeRecordStatisticsSummaryResponseBodyStatisticsStatistic;
class DescribeRecordStatisticsSummaryResponseBodyStatistics extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            statistic: 'Statistic',
        };
    }
    static types() {
        return {
            statistic: { 'type': 'array', 'itemType': DescribeRecordStatisticsSummaryResponseBodyStatisticsStatistic },
        };
    }
}
exports.DescribeRecordStatisticsSummaryResponseBodyStatistics = DescribeRecordStatisticsSummaryResponseBodyStatistics;
class DescribeSubDomainRecordsResponseBodyDomainRecordsRecord extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainName: 'DomainName',
            line: 'Line',
            locked: 'Locked',
            priority: 'Priority',
            RR: 'RR',
            recordId: 'RecordId',
            remark: 'Remark',
            status: 'Status',
            TTL: 'TTL',
            type: 'Type',
            value: 'Value',
            weight: 'Weight',
        };
    }
    static types() {
        return {
            domainName: 'string',
            line: 'string',
            locked: 'boolean',
            priority: 'number',
            RR: 'string',
            recordId: 'string',
            remark: 'string',
            status: 'string',
            TTL: 'number',
            type: 'string',
            value: 'string',
            weight: 'number',
        };
    }
}
exports.DescribeSubDomainRecordsResponseBodyDomainRecordsRecord = DescribeSubDomainRecordsResponseBodyDomainRecordsRecord;
class DescribeSubDomainRecordsResponseBodyDomainRecords extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            record: 'Record',
        };
    }
    static types() {
        return {
            record: { 'type': 'array', 'itemType': DescribeSubDomainRecordsResponseBodyDomainRecordsRecord },
        };
    }
}
exports.DescribeSubDomainRecordsResponseBodyDomainRecords = DescribeSubDomainRecordsResponseBodyDomainRecords;
class DescribeSupportLinesResponseBodyRecordLinesRecordLine extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            fatherCode: 'FatherCode',
            lineCode: 'LineCode',
            lineDisplayName: 'LineDisplayName',
            lineName: 'LineName',
        };
    }
    static types() {
        return {
            fatherCode: 'string',
            lineCode: 'string',
            lineDisplayName: 'string',
            lineName: 'string',
        };
    }
}
exports.DescribeSupportLinesResponseBodyRecordLinesRecordLine = DescribeSupportLinesResponseBodyRecordLinesRecordLine;
class DescribeSupportLinesResponseBodyRecordLines extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            recordLine: 'RecordLine',
        };
    }
    static types() {
        return {
            recordLine: { 'type': 'array', 'itemType': DescribeSupportLinesResponseBodyRecordLinesRecordLine },
        };
    }
}
exports.DescribeSupportLinesResponseBodyRecordLines = DescribeSupportLinesResponseBodyRecordLines;
class DescribeTagsResponseBodyTags extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            key: 'Key',
            values: 'Values',
        };
    }
    static types() {
        return {
            key: 'string',
            values: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.DescribeTagsResponseBodyTags = DescribeTagsResponseBodyTags;
class DescribeTransferDomainsResponseBodyDomainTransfersDomainTransfer extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            createTime: 'CreateTime',
            createTimestamp: 'CreateTimestamp',
            domainName: 'DomainName',
            fromUserId: 'FromUserId',
            id: 'Id',
            targetUserId: 'TargetUserId',
        };
    }
    static types() {
        return {
            createTime: 'string',
            createTimestamp: 'number',
            domainName: 'string',
            fromUserId: 'number',
            id: 'number',
            targetUserId: 'number',
        };
    }
}
exports.DescribeTransferDomainsResponseBodyDomainTransfersDomainTransfer = DescribeTransferDomainsResponseBodyDomainTransfersDomainTransfer;
class DescribeTransferDomainsResponseBodyDomainTransfers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domainTransfer: 'DomainTransfer',
        };
    }
    static types() {
        return {
            domainTransfer: { 'type': 'array', 'itemType': DescribeTransferDomainsResponseBodyDomainTransfersDomainTransfer },
        };
    }
}
exports.DescribeTransferDomainsResponseBodyDomainTransfers = DescribeTransferDomainsResponseBodyDomainTransfers;
class ListTagResourcesRequestTag extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            key: 'Key',
            value: 'Value',
        };
    }
    static types() {
        return {
            key: 'string',
            value: 'string',
        };
    }
}
exports.ListTagResourcesRequestTag = ListTagResourcesRequestTag;
class ListTagResourcesResponseBodyTagResources extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            resourceId: 'ResourceId',
            resourceType: 'ResourceType',
            tagKey: 'TagKey',
            tagValue: 'TagValue',
        };
    }
    static types() {
        return {
            resourceId: 'string',
            resourceType: 'string',
            tagKey: 'string',
            tagValue: 'string',
        };
    }
}
exports.ListTagResourcesResponseBodyTagResources = ListTagResourcesResponseBodyTagResources;
class ModifyHichinaDomainDNSResponseBodyNewDnsServers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsServer: 'DnsServer',
        };
    }
    static types() {
        return {
            dnsServer: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.ModifyHichinaDomainDNSResponseBodyNewDnsServers = ModifyHichinaDomainDNSResponseBodyNewDnsServers;
class ModifyHichinaDomainDNSResponseBodyOriginalDnsServers extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dnsServer: 'DnsServer',
        };
    }
    static types() {
        return {
            dnsServer: { 'type': 'array', 'itemType': 'string' },
        };
    }
}
exports.ModifyHichinaDomainDNSResponseBodyOriginalDnsServers = ModifyHichinaDomainDNSResponseBodyOriginalDnsServers;
class OperateBatchDomainRequestDomainRecordInfo extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            domain: 'Domain',
            line: 'Line',
            newRr: 'NewRr',
            newType: 'NewType',
            newValue: 'NewValue',
            priority: 'Priority',
            rr: 'Rr',
            ttl: 'Ttl',
            type: 'Type',
            value: 'Value',
        };
    }
    static types() {
        return {
            domain: 'string',
            line: 'string',
            newRr: 'string',
            newType: 'string',
            newValue: 'string',
            priority: 'number',
            rr: 'string',
            ttl: 'number',
            type: 'string',
            value: 'string',
        };
    }
}
exports.OperateBatchDomainRequestDomainRecordInfo = OperateBatchDomainRequestDomainRecordInfo;
class PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfosSwitchInfo extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            content: 'Content',
            strategyName: 'StrategyName',
        };
    }
    static types() {
        return {
            content: 'string',
            strategyName: 'string',
        };
    }
}
exports.PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfosSwitchInfo = PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfosSwitchInfo;
class PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfos extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            switchInfo: 'SwitchInfo',
        };
    }
    static types() {
        return {
            switchInfo: { 'type': 'array', 'itemType': PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfosSwitchInfo },
        };
    }
}
exports.PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfos = PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfos;
class PreviewGtmRecoveryPlanResponseBodyPreviewsPreview extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            instanceId: 'InstanceId',
            name: 'Name',
            switchInfos: 'SwitchInfos',
            userDomainName: 'UserDomainName',
        };
    }
    static types() {
        return {
            instanceId: 'string',
            name: 'string',
            switchInfos: PreviewGtmRecoveryPlanResponseBodyPreviewsPreviewSwitchInfos,
            userDomainName: 'string',
        };
    }
}
exports.PreviewGtmRecoveryPlanResponseBodyPreviewsPreview = PreviewGtmRecoveryPlanResponseBodyPreviewsPreview;
class PreviewGtmRecoveryPlanResponseBodyPreviews extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            preview: 'Preview',
        };
    }
    static types() {
        return {
            preview: { 'type': 'array', 'itemType': PreviewGtmRecoveryPlanResponseBodyPreviewsPreview },
        };
    }
}
exports.PreviewGtmRecoveryPlanResponseBodyPreviews = PreviewGtmRecoveryPlanResponseBodyPreviews;
class TagResourcesRequestTag extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            key: 'Key',
            value: 'Value',
        };
    }
    static types() {
        return {
            key: 'string',
            value: 'string',
        };
    }
}
exports.TagResourcesRequestTag = TagResourcesRequestTag;
class UpdateCustomLineRequestIpSegment extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            endIp: 'EndIp',
            startIp: 'StartIp',
        };
    }
    static types() {
        return {
            endIp: 'string',
            startIp: 'string',
        };
    }
}
exports.UpdateCustomLineRequestIpSegment = UpdateCustomLineRequestIpSegment;
class UpdateDnsCacheDomainRequestSourceDnsServer extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            host: 'Host',
            port: 'Port',
        };
    }
    static types() {
        return {
            host: 'string',
            port: 'string',
        };
    }
}
exports.UpdateDnsCacheDomainRequestSourceDnsServer = UpdateDnsCacheDomainRequestSourceDnsServer;
class UpdateDnsGtmAccessStrategyRequestDefaultAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            id: 'Id',
            lbaWeight: 'LbaWeight',
        };
    }
    static types() {
        return {
            id: 'string',
            lbaWeight: 'number',
        };
    }
}
exports.UpdateDnsGtmAccessStrategyRequestDefaultAddrPool = UpdateDnsGtmAccessStrategyRequestDefaultAddrPool;
class UpdateDnsGtmAccessStrategyRequestFailoverAddrPool extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            id: 'Id',
            lbaWeight: 'LbaWeight',
        };
    }
    static types() {
        return {
            id: 'string',
            lbaWeight: 'number',
        };
    }
}
exports.UpdateDnsGtmAccessStrategyRequestFailoverAddrPool = UpdateDnsGtmAccessStrategyRequestFailoverAddrPool;
class UpdateDnsGtmAddressPoolRequestAddr extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            addr: 'Addr',
            attributeInfo: 'AttributeInfo',
            lbaWeight: 'LbaWeight',
            mode: 'Mode',
            remark: 'Remark',
        };
    }
    static types() {
        return {
            addr: 'string',
            attributeInfo: 'string',
            lbaWeight: 'number',
            mode: 'string',
            remark: 'string',
        };
    }
}
exports.UpdateDnsGtmAddressPoolRequestAddr = UpdateDnsGtmAddressPoolRequestAddr;
class UpdateDnsGtmInstanceGlobalConfigRequestAlertConfig extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            dingtalkNotice: 'DingtalkNotice',
            emailNotice: 'EmailNotice',
            noticeType: 'NoticeType',
            smsNotice: 'SmsNotice',
        };
    }
    static types() {
        return {
            dingtalkNotice: 'boolean',
            emailNotice: 'boolean',
            noticeType: 'string',
            smsNotice: 'boolean',
        };
    }
}
exports.UpdateDnsGtmInstanceGlobalConfigRequestAlertConfig = UpdateDnsGtmInstanceGlobalConfigRequestAlertConfig;
class UpdateDnsGtmMonitorRequestIspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            ispCode: 'IspCode',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            ispCode: 'string',
        };
    }
}
exports.UpdateDnsGtmMonitorRequestIspCityNode = UpdateDnsGtmMonitorRequestIspCityNode;
class UpdateGtmAddressPoolRequestAddr extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            lbaWeight: 'LbaWeight',
            mode: 'Mode',
            value: 'Value',
        };
    }
    static types() {
        return {
            lbaWeight: 'number',
            mode: 'string',
            value: 'string',
        };
    }
}
exports.UpdateGtmAddressPoolRequestAddr = UpdateGtmAddressPoolRequestAddr;
class UpdateGtmMonitorRequestIspCityNode extends $tea.Model {
    constructor(map) {
        super(map);
    }
    static names() {
        return {
            cityCode: 'CityCode',
            ispCode: 'IspCode',
        };
    }
    static types() {
        return {
            cityCode: 'string',
            ispCode: 'string',
        };
    }
}
exports.UpdateGtmMonitorRequestIspCityNode = UpdateGtmMonitorRequestIspCityNode;
class Client extends openapi_client_1.default {
    constructor(config) {
        super(config);
        this._endpointRule = "central";
        this.checkConfig(config);
        this._endpoint = this.getEndpoint("alidns", this._regionId, this._endpointRule, this._network, this._suffix, this._endpointMap, this._endpoint);
    }
    getEndpoint(productId, regionId, endpointRule, network, suffix, endpointMap, endpoint) {
        if (!tea_util_1.default.empty(endpoint)) {
            return endpoint;
        }
        if (!tea_util_1.default.isUnset(endpointMap) && !tea_util_1.default.empty(endpointMap[regionId])) {
            return endpointMap[regionId];
        }
        return endpoint_util_1.default.getEndpointRules(productId, regionId, endpointRule, network, suffix);
    }
    /**
      * In each CIDR block, the end IP address must be greater than or equal to the start IP address.\\
      * The CIDR blocks that are specified for all custom lines of a domain name cannot be overlapped.
      *
      * @param request AddCustomLineRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return AddCustomLineResponse
     */
    async addCustomLineWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.ipSegment)) {
            query["IpSegment"] = request.ipSegment;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.lineName)) {
            query["LineName"] = request.lineName;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddCustomLine",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddCustomLineResponse({}));
    }
    /**
      * In each CIDR block, the end IP address must be greater than or equal to the start IP address.\\
      * The CIDR blocks that are specified for all custom lines of a domain name cannot be overlapped.
      *
      * @param request AddCustomLineRequest
      * @return AddCustomLineResponse
     */
    async addCustomLine(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addCustomLineWithOptions(request, runtime);
    }
    async addDnsCacheDomainWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.cacheTtlMax)) {
            query["CacheTtlMax"] = request.cacheTtlMax;
        }
        if (!tea_util_1.default.isUnset(request.cacheTtlMin)) {
            query["CacheTtlMin"] = request.cacheTtlMin;
        }
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.remark)) {
            query["Remark"] = request.remark;
        }
        if (!tea_util_1.default.isUnset(request.sourceDnsServer)) {
            query["SourceDnsServer"] = request.sourceDnsServer;
        }
        if (!tea_util_1.default.isUnset(request.sourceEdns)) {
            query["SourceEdns"] = request.sourceEdns;
        }
        if (!tea_util_1.default.isUnset(request.sourceProtocol)) {
            query["SourceProtocol"] = request.sourceProtocol;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddDnsCacheDomain",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddDnsCacheDomainResponse({}));
    }
    async addDnsCacheDomain(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addDnsCacheDomainWithOptions(request, runtime);
    }
    async addDnsGtmAccessStrategyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.defaultAddrPool)) {
            query["DefaultAddrPool"] = request.defaultAddrPool;
        }
        if (!tea_util_1.default.isUnset(request.defaultAddrPoolType)) {
            query["DefaultAddrPoolType"] = request.defaultAddrPoolType;
        }
        if (!tea_util_1.default.isUnset(request.defaultLatencyOptimization)) {
            query["DefaultLatencyOptimization"] = request.defaultLatencyOptimization;
        }
        if (!tea_util_1.default.isUnset(request.defaultLbaStrategy)) {
            query["DefaultLbaStrategy"] = request.defaultLbaStrategy;
        }
        if (!tea_util_1.default.isUnset(request.defaultMaxReturnAddrNum)) {
            query["DefaultMaxReturnAddrNum"] = request.defaultMaxReturnAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.defaultMinAvailableAddrNum)) {
            query["DefaultMinAvailableAddrNum"] = request.defaultMinAvailableAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.failoverAddrPool)) {
            query["FailoverAddrPool"] = request.failoverAddrPool;
        }
        if (!tea_util_1.default.isUnset(request.failoverAddrPoolType)) {
            query["FailoverAddrPoolType"] = request.failoverAddrPoolType;
        }
        if (!tea_util_1.default.isUnset(request.failoverLatencyOptimization)) {
            query["FailoverLatencyOptimization"] = request.failoverLatencyOptimization;
        }
        if (!tea_util_1.default.isUnset(request.failoverLbaStrategy)) {
            query["FailoverLbaStrategy"] = request.failoverLbaStrategy;
        }
        if (!tea_util_1.default.isUnset(request.failoverMaxReturnAddrNum)) {
            query["FailoverMaxReturnAddrNum"] = request.failoverMaxReturnAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.failoverMinAvailableAddrNum)) {
            query["FailoverMinAvailableAddrNum"] = request.failoverMinAvailableAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.lines)) {
            query["Lines"] = request.lines;
        }
        if (!tea_util_1.default.isUnset(request.strategyMode)) {
            query["StrategyMode"] = request.strategyMode;
        }
        if (!tea_util_1.default.isUnset(request.strategyName)) {
            query["StrategyName"] = request.strategyName;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddDnsGtmAccessStrategy",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddDnsGtmAccessStrategyResponse({}));
    }
    async addDnsGtmAccessStrategy(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addDnsGtmAccessStrategyWithOptions(request, runtime);
    }
    async addDnsGtmAddressPoolWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addr)) {
            query["Addr"] = request.addr;
        }
        if (!tea_util_1.default.isUnset(request.evaluationCount)) {
            query["EvaluationCount"] = request.evaluationCount;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.interval)) {
            query["Interval"] = request.interval;
        }
        if (!tea_util_1.default.isUnset(request.ispCityNode)) {
            query["IspCityNode"] = request.ispCityNode;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.lbaStrategy)) {
            query["LbaStrategy"] = request.lbaStrategy;
        }
        if (!tea_util_1.default.isUnset(request.monitorExtendInfo)) {
            query["MonitorExtendInfo"] = request.monitorExtendInfo;
        }
        if (!tea_util_1.default.isUnset(request.monitorStatus)) {
            query["MonitorStatus"] = request.monitorStatus;
        }
        if (!tea_util_1.default.isUnset(request.name)) {
            query["Name"] = request.name;
        }
        if (!tea_util_1.default.isUnset(request.protocolType)) {
            query["ProtocolType"] = request.protocolType;
        }
        if (!tea_util_1.default.isUnset(request.timeout)) {
            query["Timeout"] = request.timeout;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddDnsGtmAddressPool",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddDnsGtmAddressPoolResponse({}));
    }
    async addDnsGtmAddressPool(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addDnsGtmAddressPoolWithOptions(request, runtime);
    }
    /**
      * ***
      *
      * @param request AddDnsGtmMonitorRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return AddDnsGtmMonitorResponse
     */
    async addDnsGtmMonitorWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addrPoolId)) {
            query["AddrPoolId"] = request.addrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.evaluationCount)) {
            query["EvaluationCount"] = request.evaluationCount;
        }
        if (!tea_util_1.default.isUnset(request.interval)) {
            query["Interval"] = request.interval;
        }
        if (!tea_util_1.default.isUnset(request.ispCityNode)) {
            query["IspCityNode"] = request.ispCityNode;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.monitorExtendInfo)) {
            query["MonitorExtendInfo"] = request.monitorExtendInfo;
        }
        if (!tea_util_1.default.isUnset(request.protocolType)) {
            query["ProtocolType"] = request.protocolType;
        }
        if (!tea_util_1.default.isUnset(request.timeout)) {
            query["Timeout"] = request.timeout;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddDnsGtmMonitor",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddDnsGtmMonitorResponse({}));
    }
    /**
      * ***
      *
      * @param request AddDnsGtmMonitorRequest
      * @return AddDnsGtmMonitorResponse
     */
    async addDnsGtmMonitor(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addDnsGtmMonitorWithOptions(request, runtime);
    }
    /**
      * For more information about how to check whether a domain name is valid, see
      * [Domain name validity](https://www.alibabacloud.com/help/zh/doc-detail/67788.htm).
      *
      * @param request AddDomainRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return AddDomainResponse
     */
    async addDomainWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.groupId)) {
            query["GroupId"] = request.groupId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.resourceGroupId)) {
            query["ResourceGroupId"] = request.resourceGroupId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddDomain",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddDomainResponse({}));
    }
    /**
      * For more information about how to check whether a domain name is valid, see
      * [Domain name validity](https://www.alibabacloud.com/help/zh/doc-detail/67788.htm).
      *
      * @param request AddDomainRequest
      * @return AddDomainResponse
     */
    async addDomain(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addDomainWithOptions(request, runtime);
    }
    async addDomainBackupWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.periodType)) {
            query["PeriodType"] = request.periodType;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddDomainBackup",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddDomainBackupResponse({}));
    }
    async addDomainBackup(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addDomainBackupWithOptions(request, runtime);
    }
    async addDomainGroupWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.groupName)) {
            query["GroupName"] = request.groupName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddDomainGroup",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddDomainGroupResponse({}));
    }
    async addDomainGroup(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addDomainGroupWithOptions(request, runtime);
    }
    async addDomainRecordWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.line)) {
            query["Line"] = request.line;
        }
        if (!tea_util_1.default.isUnset(request.priority)) {
            query["Priority"] = request.priority;
        }
        if (!tea_util_1.default.isUnset(request.RR)) {
            query["RR"] = request.RR;
        }
        if (!tea_util_1.default.isUnset(request.TTL)) {
            query["TTL"] = request.TTL;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        if (!tea_util_1.default.isUnset(request.value)) {
            query["Value"] = request.value;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddDomainRecord",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddDomainRecordResponse({}));
    }
    async addDomainRecord(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addDomainRecordWithOptions(request, runtime);
    }
    async addGtmAccessStrategyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.accessLines)) {
            query["AccessLines"] = request.accessLines;
        }
        if (!tea_util_1.default.isUnset(request.defaultAddrPoolId)) {
            query["DefaultAddrPoolId"] = request.defaultAddrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.failoverAddrPoolId)) {
            query["FailoverAddrPoolId"] = request.failoverAddrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyName)) {
            query["StrategyName"] = request.strategyName;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddGtmAccessStrategy",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddGtmAccessStrategyResponse({}));
    }
    async addGtmAccessStrategy(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addGtmAccessStrategyWithOptions(request, runtime);
    }
    async addGtmAddressPoolWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addr)) {
            query["Addr"] = request.addr;
        }
        if (!tea_util_1.default.isUnset(request.evaluationCount)) {
            query["EvaluationCount"] = request.evaluationCount;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.interval)) {
            query["Interval"] = request.interval;
        }
        if (!tea_util_1.default.isUnset(request.ispCityNode)) {
            query["IspCityNode"] = request.ispCityNode;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.minAvailableAddrNum)) {
            query["MinAvailableAddrNum"] = request.minAvailableAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.monitorExtendInfo)) {
            query["MonitorExtendInfo"] = request.monitorExtendInfo;
        }
        if (!tea_util_1.default.isUnset(request.monitorStatus)) {
            query["MonitorStatus"] = request.monitorStatus;
        }
        if (!tea_util_1.default.isUnset(request.name)) {
            query["Name"] = request.name;
        }
        if (!tea_util_1.default.isUnset(request.protocolType)) {
            query["ProtocolType"] = request.protocolType;
        }
        if (!tea_util_1.default.isUnset(request.timeout)) {
            query["Timeout"] = request.timeout;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddGtmAddressPool",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddGtmAddressPoolResponse({}));
    }
    async addGtmAddressPool(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addGtmAddressPoolWithOptions(request, runtime);
    }
    async addGtmMonitorWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addrPoolId)) {
            query["AddrPoolId"] = request.addrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.evaluationCount)) {
            query["EvaluationCount"] = request.evaluationCount;
        }
        if (!tea_util_1.default.isUnset(request.interval)) {
            query["Interval"] = request.interval;
        }
        if (!tea_util_1.default.isUnset(request.ispCityNode)) {
            query["IspCityNode"] = request.ispCityNode;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.monitorExtendInfo)) {
            query["MonitorExtendInfo"] = request.monitorExtendInfo;
        }
        if (!tea_util_1.default.isUnset(request.protocolType)) {
            query["ProtocolType"] = request.protocolType;
        }
        if (!tea_util_1.default.isUnset(request.timeout)) {
            query["Timeout"] = request.timeout;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddGtmMonitor",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddGtmMonitorResponse({}));
    }
    async addGtmMonitor(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addGtmMonitorWithOptions(request, runtime);
    }
    async addGtmRecoveryPlanWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.faultAddrPool)) {
            query["FaultAddrPool"] = request.faultAddrPool;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.name)) {
            query["Name"] = request.name;
        }
        if (!tea_util_1.default.isUnset(request.remark)) {
            query["Remark"] = request.remark;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "AddGtmRecoveryPlan",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new AddGtmRecoveryPlanResponse({}));
    }
    async addGtmRecoveryPlan(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.addGtmRecoveryPlanWithOptions(request, runtime);
    }
    /**
      * A paid Alibaba Cloud DNS instance whose ID starts with dns is an instance of the new version. You can call this API operation to bind multiple domain names to the instance. If the upper limit is exceeded, an error message is returned.\\
      * A paid Alibaba Cloud DNS instance whose ID does not start with dns is an instance of the old version. You can call this API operation to bind only one domain name to the instance. However, if the instance is already bound to a domain name, you must unbind the original domain name from the instance and bind the desired domain name to the instance.
      *
      * @param request BindInstanceDomainsRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return BindInstanceDomainsResponse
     */
    async bindInstanceDomainsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainNames)) {
            query["DomainNames"] = request.domainNames;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "BindInstanceDomains",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new BindInstanceDomainsResponse({}));
    }
    /**
      * A paid Alibaba Cloud DNS instance whose ID starts with dns is an instance of the new version. You can call this API operation to bind multiple domain names to the instance. If the upper limit is exceeded, an error message is returned.\\
      * A paid Alibaba Cloud DNS instance whose ID does not start with dns is an instance of the old version. You can call this API operation to bind only one domain name to the instance. However, if the instance is already bound to a domain name, you must unbind the original domain name from the instance and bind the desired domain name to the instance.
      *
      * @param request BindInstanceDomainsRequest
      * @return BindInstanceDomainsResponse
     */
    async bindInstanceDomains(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.bindInstanceDomainsWithOptions(request, runtime);
    }
    /**
      * You can specify GroupId to move a domain name to a specific domain name group. You can move the domain name to the group that contains all domain names or the default group.
      *
      * @param request ChangeDomainGroupRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return ChangeDomainGroupResponse
     */
    async changeDomainGroupWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.groupId)) {
            query["GroupId"] = request.groupId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "ChangeDomainGroup",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new ChangeDomainGroupResponse({}));
    }
    /**
      * You can specify GroupId to move a domain name to a specific domain name group. You can move the domain name to the group that contains all domain names or the default group.
      *
      * @param request ChangeDomainGroupRequest
      * @return ChangeDomainGroupResponse
     */
    async changeDomainGroup(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.changeDomainGroupWithOptions(request, runtime);
    }
    /**
      * >  You can call this operation to change the domain name for an Alibaba Cloud DNS instance to which a domain name is bound. You can also call this operation to bind a domain name to an Alibaba Cloud DNS instance to which no domain name is bound. If you need to unbind a domain name from an Alibaba Cloud DNS instance, you can call this operation. In this case, the NewDomain parameter must not be specified.
      *
      * @param request ChangeDomainOfDnsProductRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return ChangeDomainOfDnsProductResponse
     */
    async changeDomainOfDnsProductWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.force)) {
            query["Force"] = request.force;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.newDomain)) {
            query["NewDomain"] = request.newDomain;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "ChangeDomainOfDnsProduct",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new ChangeDomainOfDnsProductResponse({}));
    }
    /**
      * >  You can call this operation to change the domain name for an Alibaba Cloud DNS instance to which a domain name is bound. You can also call this operation to bind a domain name to an Alibaba Cloud DNS instance to which no domain name is bound. If you need to unbind a domain name from an Alibaba Cloud DNS instance, you can call this operation. In this case, the NewDomain parameter must not be specified.
      *
      * @param request ChangeDomainOfDnsProductRequest
      * @return ChangeDomainOfDnsProductResponse
     */
    async changeDomainOfDnsProduct(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.changeDomainOfDnsProductWithOptions(request, runtime);
    }
    async copyGtmConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.copyType)) {
            query["CopyType"] = request.copyType;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.sourceId)) {
            query["SourceId"] = request.sourceId;
        }
        if (!tea_util_1.default.isUnset(request.targetId)) {
            query["TargetId"] = request.targetId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "CopyGtmConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new CopyGtmConfigResponse({}));
    }
    async copyGtmConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.copyGtmConfigWithOptions(request, runtime);
    }
    async createPdnsAppKeyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "CreatePdnsAppKey",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new CreatePdnsAppKeyResponse({}));
    }
    async createPdnsAppKey(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.createPdnsAppKeyWithOptions(request, runtime);
    }
    async createPdnsUdpIpSegmentWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.ip)) {
            query["Ip"] = request.ip;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.name)) {
            query["Name"] = request.name;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "CreatePdnsUdpIpSegment",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new CreatePdnsUdpIpSegmentResponse({}));
    }
    async createPdnsUdpIpSegment(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.createPdnsUdpIpSegmentWithOptions(request, runtime);
    }
    async deleteCustomLinesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.lineIds)) {
            query["LineIds"] = request.lineIds;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteCustomLines",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteCustomLinesResponse({}));
    }
    async deleteCustomLines(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteCustomLinesWithOptions(request, runtime);
    }
    async deleteDnsCacheDomainWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteDnsCacheDomain",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteDnsCacheDomainResponse({}));
    }
    async deleteDnsCacheDomain(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteDnsCacheDomainWithOptions(request, runtime);
    }
    async deleteDnsGtmAccessStrategyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyId)) {
            query["StrategyId"] = request.strategyId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteDnsGtmAccessStrategy",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteDnsGtmAccessStrategyResponse({}));
    }
    async deleteDnsGtmAccessStrategy(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteDnsGtmAccessStrategyWithOptions(request, runtime);
    }
    async deleteDnsGtmAddressPoolWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addrPoolId)) {
            query["AddrPoolId"] = request.addrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteDnsGtmAddressPool",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteDnsGtmAddressPoolResponse({}));
    }
    async deleteDnsGtmAddressPool(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteDnsGtmAddressPoolWithOptions(request, runtime);
    }
    async deleteDomainWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteDomain",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteDomainResponse({}));
    }
    async deleteDomain(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteDomainWithOptions(request, runtime);
    }
    /**
      * >  The default group cannot be deleted.
      *
      * @param request DeleteDomainGroupRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DeleteDomainGroupResponse
     */
    async deleteDomainGroupWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.groupId)) {
            query["GroupId"] = request.groupId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteDomainGroup",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteDomainGroupResponse({}));
    }
    /**
      * >  The default group cannot be deleted.
      *
      * @param request DeleteDomainGroupRequest
      * @return DeleteDomainGroupResponse
     */
    async deleteDomainGroup(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteDomainGroupWithOptions(request, runtime);
    }
    async deleteDomainRecordWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.recordId)) {
            query["RecordId"] = request.recordId;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteDomainRecord",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteDomainRecordResponse({}));
    }
    async deleteDomainRecord(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteDomainRecordWithOptions(request, runtime);
    }
    async deleteGtmAccessStrategyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyId)) {
            query["StrategyId"] = request.strategyId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteGtmAccessStrategy",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteGtmAccessStrategyResponse({}));
    }
    async deleteGtmAccessStrategy(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteGtmAccessStrategyWithOptions(request, runtime);
    }
    async deleteGtmAddressPoolWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addrPoolId)) {
            query["AddrPoolId"] = request.addrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteGtmAddressPool",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteGtmAddressPoolResponse({}));
    }
    async deleteGtmAddressPool(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteGtmAddressPoolWithOptions(request, runtime);
    }
    async deleteGtmRecoveryPlanWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.recoveryPlanId)) {
            query["RecoveryPlanId"] = request.recoveryPlanId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteGtmRecoveryPlan",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteGtmRecoveryPlanResponse({}));
    }
    async deleteGtmRecoveryPlan(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteGtmRecoveryPlanWithOptions(request, runtime);
    }
    /**
      * If the DNS records to be deleted contain locked DNS records, locked DNS records will not be deleted.
      *
      * @param request DeleteSubDomainRecordsRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DeleteSubDomainRecordsResponse
     */
    async deleteSubDomainRecordsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.RR)) {
            query["RR"] = request.RR;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DeleteSubDomainRecords",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DeleteSubDomainRecordsResponse({}));
    }
    /**
      * If the DNS records to be deleted contain locked DNS records, locked DNS records will not be deleted.
      *
      * @param request DeleteSubDomainRecordsRequest
      * @return DeleteSubDomainRecordsResponse
     */
    async deleteSubDomainRecords(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.deleteSubDomainRecordsWithOptions(request, runtime);
    }
    async describeBatchResultCountWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.batchType)) {
            query["BatchType"] = request.batchType;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.taskId)) {
            query["TaskId"] = request.taskId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeBatchResultCount",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeBatchResultCountResponse({}));
    }
    async describeBatchResultCount(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeBatchResultCountWithOptions(request, runtime);
    }
    /**
      * Before you call this operation, make sure that the batch operation task is complete.
      *
      * @param request DescribeBatchResultDetailRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DescribeBatchResultDetailResponse
     */
    async describeBatchResultDetailWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.batchType)) {
            query["BatchType"] = request.batchType;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.status)) {
            query["Status"] = request.status;
        }
        if (!tea_util_1.default.isUnset(request.taskId)) {
            query["TaskId"] = request.taskId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeBatchResultDetail",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeBatchResultDetailResponse({}));
    }
    /**
      * Before you call this operation, make sure that the batch operation task is complete.
      *
      * @param request DescribeBatchResultDetailRequest
      * @return DescribeBatchResultDetailResponse
     */
    async describeBatchResultDetail(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeBatchResultDetailWithOptions(request, runtime);
    }
    async describeCustomLineWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.lineId)) {
            query["LineId"] = request.lineId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeCustomLine",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeCustomLineResponse({}));
    }
    async describeCustomLine(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeCustomLineWithOptions(request, runtime);
    }
    async describeCustomLinesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeCustomLines",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeCustomLinesResponse({}));
    }
    async describeCustomLines(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeCustomLinesWithOptions(request, runtime);
    }
    async describeDNSSLBSubDomainsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.rr)) {
            query["Rr"] = request.rr;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDNSSLBSubDomains",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDNSSLBSubDomainsResponse({}));
    }
    async describeDNSSLBSubDomains(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDNSSLBSubDomainsWithOptions(request, runtime);
    }
    async describeDnsCacheDomainsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsCacheDomains",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsCacheDomainsResponse({}));
    }
    async describeDnsCacheDomains(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsCacheDomainsWithOptions(request, runtime);
    }
    async describeDnsGtmAccessStrategiesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.strategyMode)) {
            query["StrategyMode"] = request.strategyMode;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmAccessStrategies",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmAccessStrategiesResponse({}));
    }
    async describeDnsGtmAccessStrategies(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmAccessStrategiesWithOptions(request, runtime);
    }
    async describeDnsGtmAccessStrategyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyId)) {
            query["StrategyId"] = request.strategyId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmAccessStrategy",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmAccessStrategyResponse({}));
    }
    async describeDnsGtmAccessStrategy(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmAccessStrategyWithOptions(request, runtime);
    }
    async describeDnsGtmAccessStrategyAvailableConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyMode)) {
            query["StrategyMode"] = request.strategyMode;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmAccessStrategyAvailableConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmAccessStrategyAvailableConfigResponse({}));
    }
    async describeDnsGtmAccessStrategyAvailableConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmAccessStrategyAvailableConfigWithOptions(request, runtime);
    }
    async describeDnsGtmAddrAttributeInfoWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addrs)) {
            query["Addrs"] = request.addrs;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmAddrAttributeInfo",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmAddrAttributeInfoResponse({}));
    }
    async describeDnsGtmAddrAttributeInfo(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmAddrAttributeInfoWithOptions(request, runtime);
    }
    async describeDnsGtmAddressPoolAvailableConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmAddressPoolAvailableConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmAddressPoolAvailableConfigResponse({}));
    }
    async describeDnsGtmAddressPoolAvailableConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmAddressPoolAvailableConfigWithOptions(request, runtime);
    }
    async describeDnsGtmAvailableAlertGroupWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmAvailableAlertGroup",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmAvailableAlertGroupResponse({}));
    }
    async describeDnsGtmAvailableAlertGroup(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmAvailableAlertGroupWithOptions(request, runtime);
    }
    async describeDnsGtmInstanceWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmInstance",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmInstanceResponse({}));
    }
    async describeDnsGtmInstance(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmInstanceWithOptions(request, runtime);
    }
    async describeDnsGtmInstanceAddressPoolWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addrPoolId)) {
            query["AddrPoolId"] = request.addrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmInstanceAddressPool",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmInstanceAddressPoolResponse({}));
    }
    async describeDnsGtmInstanceAddressPool(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmInstanceAddressPoolWithOptions(request, runtime);
    }
    async describeDnsGtmInstanceAddressPoolsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmInstanceAddressPools",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmInstanceAddressPoolsResponse({}));
    }
    async describeDnsGtmInstanceAddressPools(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmInstanceAddressPoolsWithOptions(request, runtime);
    }
    async describeDnsGtmInstanceStatusWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmInstanceStatus",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmInstanceStatusResponse({}));
    }
    async describeDnsGtmInstanceStatus(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmInstanceStatusWithOptions(request, runtime);
    }
    async describeDnsGtmInstanceSystemCnameWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmInstanceSystemCname",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmInstanceSystemCnameResponse({}));
    }
    async describeDnsGtmInstanceSystemCname(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmInstanceSystemCnameWithOptions(request, runtime);
    }
    async describeDnsGtmInstancesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.resourceGroupId)) {
            query["ResourceGroupId"] = request.resourceGroupId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmInstances",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmInstancesResponse({}));
    }
    async describeDnsGtmInstances(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmInstancesWithOptions(request, runtime);
    }
    async describeDnsGtmLogsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.endTimestamp)) {
            query["EndTimestamp"] = request.endTimestamp;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startTimestamp)) {
            query["StartTimestamp"] = request.startTimestamp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmLogs",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmLogsResponse({}));
    }
    async describeDnsGtmLogs(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmLogsWithOptions(request, runtime);
    }
    async describeDnsGtmMonitorAvailableConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmMonitorAvailableConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmMonitorAvailableConfigResponse({}));
    }
    async describeDnsGtmMonitorAvailableConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmMonitorAvailableConfigWithOptions(request, runtime);
    }
    async describeDnsGtmMonitorConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.monitorConfigId)) {
            query["MonitorConfigId"] = request.monitorConfigId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsGtmMonitorConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsGtmMonitorConfigResponse({}));
    }
    async describeDnsGtmMonitorConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsGtmMonitorConfigWithOptions(request, runtime);
    }
    async describeDnsProductInstanceWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsProductInstance",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsProductInstanceResponse({}));
    }
    async describeDnsProductInstance(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsProductInstanceWithOptions(request, runtime);
    }
    /**
      * >  If the response parameters of an Alibaba Cloud DNS instance do not contain domain names, no domain names are bound to the instance.
      *
      * @param request DescribeDnsProductInstancesRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DescribeDnsProductInstancesResponse
     */
    async describeDnsProductInstancesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.direction)) {
            query["Direction"] = request.direction;
        }
        if (!tea_util_1.default.isUnset(request.domainType)) {
            query["DomainType"] = request.domainType;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.orderBy)) {
            query["OrderBy"] = request.orderBy;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        if (!tea_util_1.default.isUnset(request.versionCode)) {
            query["VersionCode"] = request.versionCode;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDnsProductInstances",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDnsProductInstancesResponse({}));
    }
    /**
      * >  If the response parameters of an Alibaba Cloud DNS instance do not contain domain names, no domain names are bound to the instance.
      *
      * @param request DescribeDnsProductInstancesRequest
      * @return DescribeDnsProductInstancesResponse
     */
    async describeDnsProductInstances(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDnsProductInstancesWithOptions(request, runtime);
    }
    async describeDohAccountStatisticsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDohAccountStatistics",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDohAccountStatisticsResponse({}));
    }
    async describeDohAccountStatistics(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDohAccountStatisticsWithOptions(request, runtime);
    }
    async describeDohDomainStatisticsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDohDomainStatistics",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDohDomainStatisticsResponse({}));
    }
    async describeDohDomainStatistics(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDohDomainStatisticsWithOptions(request, runtime);
    }
    async describeDohDomainStatisticsSummaryWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDohDomainStatisticsSummary",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDohDomainStatisticsSummaryResponse({}));
    }
    async describeDohDomainStatisticsSummary(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDohDomainStatisticsSummaryWithOptions(request, runtime);
    }
    async describeDohSubDomainStatisticsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.subDomain)) {
            query["SubDomain"] = request.subDomain;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDohSubDomainStatistics",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDohSubDomainStatisticsResponse({}));
    }
    async describeDohSubDomainStatistics(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDohSubDomainStatisticsWithOptions(request, runtime);
    }
    async describeDohSubDomainStatisticsSummaryWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.subDomain)) {
            query["SubDomain"] = request.subDomain;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDohSubDomainStatisticsSummary",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDohSubDomainStatisticsSummaryResponse({}));
    }
    async describeDohSubDomainStatisticsSummary(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDohSubDomainStatisticsSummaryWithOptions(request, runtime);
    }
    async describeDohUserInfoWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDohUserInfo",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDohUserInfoResponse({}));
    }
    async describeDohUserInfo(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDohUserInfoWithOptions(request, runtime);
    }
    async describeDomainDnssecInfoWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainDnssecInfo",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainDnssecInfoResponse({}));
    }
    async describeDomainDnssecInfo(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainDnssecInfoWithOptions(request, runtime);
    }
    async describeDomainGroupsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.keyWord)) {
            query["KeyWord"] = request.keyWord;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainGroups",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainGroupsResponse({}));
    }
    async describeDomainGroups(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainGroupsWithOptions(request, runtime);
    }
    /**
      * In this example, the domain name is bound to an instance of Alibaba Cloud DNS Enterprise Ultimate Edition. For more information about valid Domain Name System (DNS) request lines, see the return values of the RecordLines parameter.
      *
      * @param request DescribeDomainInfoRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DescribeDomainInfoResponse
     */
    async describeDomainInfoWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.needDetailAttributes)) {
            query["NeedDetailAttributes"] = request.needDetailAttributes;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainInfo",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainInfoResponse({}));
    }
    /**
      * In this example, the domain name is bound to an instance of Alibaba Cloud DNS Enterprise Ultimate Edition. For more information about valid Domain Name System (DNS) request lines, see the return values of the RecordLines parameter.
      *
      * @param request DescribeDomainInfoRequest
      * @return DescribeDomainInfoResponse
     */
    async describeDomainInfo(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainInfoWithOptions(request, runtime);
    }
    async describeDomainLogsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.groupId)) {
            query["GroupId"] = request.groupId;
        }
        if (!tea_util_1.default.isUnset(request.keyWord)) {
            query["KeyWord"] = request.keyWord;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["endDate"] = request.endDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainLogs",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainLogsResponse({}));
    }
    async describeDomainLogs(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainLogsWithOptions(request, runtime);
    }
    /**
      * >  You can call this operation to query the authoritative servers of a domain name registry to obtain the name servers for a domain name. If the domain name is in an invalid state, such as serverHold or clientHold, an error may be returned.
      *
      * @param request DescribeDomainNsRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DescribeDomainNsResponse
     */
    async describeDomainNsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainNs",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainNsResponse({}));
    }
    /**
      * >  You can call this operation to query the authoritative servers of a domain name registry to obtain the name servers for a domain name. If the domain name is in an invalid state, such as serverHold or clientHold, an error may be returned.
      *
      * @param request DescribeDomainNsRequest
      * @return DescribeDomainNsResponse
     */
    async describeDomainNs(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainNsWithOptions(request, runtime);
    }
    /**
      * ## Debugging
      * [OpenAPI Explorer automatically calculates the signature value. For your convenience, we recommend that you call this operation in OpenAPI Explorer. OpenAPI Explorer dynamically generates the sample code of the operation for different SDKs.](https://api.aliyun.com/#product=Alidns\\&api=DescribeDomainRecordInfo\\&type=RPC\\&version=2015-01-09)
      *
      * @param request DescribeDomainRecordInfoRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DescribeDomainRecordInfoResponse
     */
    async describeDomainRecordInfoWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.recordId)) {
            query["RecordId"] = request.recordId;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainRecordInfo",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainRecordInfoResponse({}));
    }
    /**
      * ## Debugging
      * [OpenAPI Explorer automatically calculates the signature value. For your convenience, we recommend that you call this operation in OpenAPI Explorer. OpenAPI Explorer dynamically generates the sample code of the operation for different SDKs.](https://api.aliyun.com/#product=Alidns\\&api=DescribeDomainRecordInfo\\&type=RPC\\&version=2015-01-09)
      *
      * @param request DescribeDomainRecordInfoRequest
      * @return DescribeDomainRecordInfoResponse
     */
    async describeDomainRecordInfo(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainRecordInfoWithOptions(request, runtime);
    }
    /**
      * *   You can specify DomainName, PageNumber, and PageSize to query the DNS records of the specified domain names.
      * *   You can also specify RRKeyWord, TypeKeyWord, or ValueKeyWord to query the DNS records that contain the specified keyword.
      * *   By default, the DNS records are sorted in reverse chronological order based on the time when they were added.
      * *   You can specify GroupId to query the DNS records of the specified domain names based on the group ID. You can query the DNS records of all domain names and the domain names in the default group.
      *
      * @param request DescribeDomainRecordsRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DescribeDomainRecordsResponse
     */
    async describeDomainRecordsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.direction)) {
            query["Direction"] = request.direction;
        }
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.groupId)) {
            query["GroupId"] = request.groupId;
        }
        if (!tea_util_1.default.isUnset(request.keyWord)) {
            query["KeyWord"] = request.keyWord;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.line)) {
            query["Line"] = request.line;
        }
        if (!tea_util_1.default.isUnset(request.orderBy)) {
            query["OrderBy"] = request.orderBy;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.RRKeyWord)) {
            query["RRKeyWord"] = request.RRKeyWord;
        }
        if (!tea_util_1.default.isUnset(request.searchMode)) {
            query["SearchMode"] = request.searchMode;
        }
        if (!tea_util_1.default.isUnset(request.status)) {
            query["Status"] = request.status;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        if (!tea_util_1.default.isUnset(request.typeKeyWord)) {
            query["TypeKeyWord"] = request.typeKeyWord;
        }
        if (!tea_util_1.default.isUnset(request.valueKeyWord)) {
            query["ValueKeyWord"] = request.valueKeyWord;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainRecords",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainRecordsResponse({}));
    }
    /**
      * *   You can specify DomainName, PageNumber, and PageSize to query the DNS records of the specified domain names.
      * *   You can also specify RRKeyWord, TypeKeyWord, or ValueKeyWord to query the DNS records that contain the specified keyword.
      * *   By default, the DNS records are sorted in reverse chronological order based on the time when they were added.
      * *   You can specify GroupId to query the DNS records of the specified domain names based on the group ID. You can query the DNS records of all domain names and the domain names in the default group.
      *
      * @param request DescribeDomainRecordsRequest
      * @return DescribeDomainRecordsResponse
     */
    async describeDomainRecords(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainRecordsWithOptions(request, runtime);
    }
    async describeDomainResolveStatisticsSummaryWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.direction)) {
            query["Direction"] = request.direction;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.searchMode)) {
            query["SearchMode"] = request.searchMode;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.threshold)) {
            query["Threshold"] = request.threshold;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainResolveStatisticsSummary",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainResolveStatisticsSummaryResponse({}));
    }
    async describeDomainResolveStatisticsSummary(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainResolveStatisticsSummaryWithOptions(request, runtime);
    }
    /**
      * Real-time data is collected per hour.
      *
      * @param request DescribeDomainStatisticsRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DescribeDomainStatisticsResponse
     */
    async describeDomainStatisticsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.domainType)) {
            query["DomainType"] = request.domainType;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainStatistics",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainStatisticsResponse({}));
    }
    /**
      * Real-time data is collected per hour.
      *
      * @param request DescribeDomainStatisticsRequest
      * @return DescribeDomainStatisticsResponse
     */
    async describeDomainStatistics(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainStatisticsWithOptions(request, runtime);
    }
    async describeDomainStatisticsSummaryWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.searchMode)) {
            query["SearchMode"] = request.searchMode;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.threshold)) {
            query["Threshold"] = request.threshold;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomainStatisticsSummary",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainStatisticsSummaryResponse({}));
    }
    async describeDomainStatisticsSummary(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainStatisticsSummaryWithOptions(request, runtime);
    }
    /**
      * *   You can specify the PageNumber and PageSize parameters to query domain names.
      * *   You can specify the KeyWord parameter to query domain names that contain the specified keyword.
      * *   By default, the domain names in a list are sorted in descending order of the time they were added.
      * *   You can specify the GroupId parameter. If you do not specify this parameter, all domain names are queried by default.
      *
      * @param request DescribeDomainsRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DescribeDomainsResponse
     */
    async describeDomainsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.groupId)) {
            query["GroupId"] = request.groupId;
        }
        if (!tea_util_1.default.isUnset(request.keyWord)) {
            query["KeyWord"] = request.keyWord;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.resourceGroupId)) {
            query["ResourceGroupId"] = request.resourceGroupId;
        }
        if (!tea_util_1.default.isUnset(request.searchMode)) {
            query["SearchMode"] = request.searchMode;
        }
        if (!tea_util_1.default.isUnset(request.starmark)) {
            query["Starmark"] = request.starmark;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeDomains",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeDomainsResponse({}));
    }
    /**
      * *   You can specify the PageNumber and PageSize parameters to query domain names.
      * *   You can specify the KeyWord parameter to query domain names that contain the specified keyword.
      * *   By default, the domain names in a list are sorted in descending order of the time they were added.
      * *   You can specify the GroupId parameter. If you do not specify this parameter, all domain names are queried by default.
      *
      * @param request DescribeDomainsRequest
      * @return DescribeDomainsResponse
     */
    async describeDomains(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeDomainsWithOptions(request, runtime);
    }
    async describeGtmAccessStrategiesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmAccessStrategies",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmAccessStrategiesResponse({}));
    }
    async describeGtmAccessStrategies(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmAccessStrategiesWithOptions(request, runtime);
    }
    async describeGtmAccessStrategyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyId)) {
            query["StrategyId"] = request.strategyId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmAccessStrategy",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmAccessStrategyResponse({}));
    }
    async describeGtmAccessStrategy(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmAccessStrategyWithOptions(request, runtime);
    }
    async describeGtmAccessStrategyAvailableConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmAccessStrategyAvailableConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmAccessStrategyAvailableConfigResponse({}));
    }
    async describeGtmAccessStrategyAvailableConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmAccessStrategyAvailableConfigWithOptions(request, runtime);
    }
    async describeGtmAvailableAlertGroupWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmAvailableAlertGroup",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmAvailableAlertGroupResponse({}));
    }
    async describeGtmAvailableAlertGroup(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmAvailableAlertGroupWithOptions(request, runtime);
    }
    async describeGtmInstanceWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.needDetailAttributes)) {
            query["NeedDetailAttributes"] = request.needDetailAttributes;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmInstance",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmInstanceResponse({}));
    }
    async describeGtmInstance(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmInstanceWithOptions(request, runtime);
    }
    async describeGtmInstanceAddressPoolWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addrPoolId)) {
            query["AddrPoolId"] = request.addrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmInstanceAddressPool",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmInstanceAddressPoolResponse({}));
    }
    async describeGtmInstanceAddressPool(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmInstanceAddressPoolWithOptions(request, runtime);
    }
    async describeGtmInstanceAddressPoolsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmInstanceAddressPools",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmInstanceAddressPoolsResponse({}));
    }
    async describeGtmInstanceAddressPools(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmInstanceAddressPoolsWithOptions(request, runtime);
    }
    async describeGtmInstanceStatusWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmInstanceStatus",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmInstanceStatusResponse({}));
    }
    async describeGtmInstanceStatus(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmInstanceStatusWithOptions(request, runtime);
    }
    async describeGtmInstanceSystemCnameWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmInstanceSystemCname",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmInstanceSystemCnameResponse({}));
    }
    async describeGtmInstanceSystemCname(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmInstanceSystemCnameWithOptions(request, runtime);
    }
    async describeGtmInstancesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.needDetailAttributes)) {
            query["NeedDetailAttributes"] = request.needDetailAttributes;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.resourceGroupId)) {
            query["ResourceGroupId"] = request.resourceGroupId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmInstances",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmInstancesResponse({}));
    }
    async describeGtmInstances(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmInstancesWithOptions(request, runtime);
    }
    async describeGtmLogsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.endTimestamp)) {
            query["EndTimestamp"] = request.endTimestamp;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startTimestamp)) {
            query["StartTimestamp"] = request.startTimestamp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmLogs",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmLogsResponse({}));
    }
    async describeGtmLogs(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmLogsWithOptions(request, runtime);
    }
    async describeGtmMonitorAvailableConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmMonitorAvailableConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmMonitorAvailableConfigResponse({}));
    }
    async describeGtmMonitorAvailableConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmMonitorAvailableConfigWithOptions(request, runtime);
    }
    async describeGtmMonitorConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.monitorConfigId)) {
            query["MonitorConfigId"] = request.monitorConfigId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmMonitorConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmMonitorConfigResponse({}));
    }
    async describeGtmMonitorConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmMonitorConfigWithOptions(request, runtime);
    }
    async describeGtmRecoveryPlanWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.recoveryPlanId)) {
            query["RecoveryPlanId"] = request.recoveryPlanId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmRecoveryPlan",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmRecoveryPlanResponse({}));
    }
    async describeGtmRecoveryPlan(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmRecoveryPlanWithOptions(request, runtime);
    }
    async describeGtmRecoveryPlanAvailableConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmRecoveryPlanAvailableConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmRecoveryPlanAvailableConfigResponse({}));
    }
    async describeGtmRecoveryPlanAvailableConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmRecoveryPlanAvailableConfigWithOptions(request, runtime);
    }
    async describeGtmRecoveryPlansWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeGtmRecoveryPlans",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeGtmRecoveryPlansResponse({}));
    }
    async describeGtmRecoveryPlans(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeGtmRecoveryPlansWithOptions(request, runtime);
    }
    async describeInstanceDomainsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeInstanceDomains",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeInstanceDomainsResponse({}));
    }
    async describeInstanceDomains(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeInstanceDomainsWithOptions(request, runtime);
    }
    async describeInternetDnsLogsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.endTimestamp)) {
            query["EndTimestamp"] = request.endTimestamp;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.module)) {
            query["Module"] = request.module;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.queryCondition)) {
            query["QueryCondition"] = request.queryCondition;
        }
        if (!tea_util_1.default.isUnset(request.startTimestamp)) {
            query["StartTimestamp"] = request.startTimestamp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeInternetDnsLogs",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeInternetDnsLogsResponse({}));
    }
    async describeInternetDnsLogs(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeInternetDnsLogsWithOptions(request, runtime);
    }
    async describeIspFlushCacheInstancesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.direction)) {
            query["Direction"] = request.direction;
        }
        if (!tea_util_1.default.isUnset(request.isp)) {
            query["Isp"] = request.isp;
        }
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.orderBy)) {
            query["OrderBy"] = request.orderBy;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeIspFlushCacheInstances",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeIspFlushCacheInstancesResponse({}));
    }
    async describeIspFlushCacheInstances(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeIspFlushCacheInstancesWithOptions(request, runtime);
    }
    async describeIspFlushCacheRemainQuotaWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeIspFlushCacheRemainQuota",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeIspFlushCacheRemainQuotaResponse({}));
    }
    async describeIspFlushCacheRemainQuota(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeIspFlushCacheRemainQuotaWithOptions(request, runtime);
    }
    async describeIspFlushCacheTaskWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.taskId)) {
            query["TaskId"] = request.taskId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeIspFlushCacheTask",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeIspFlushCacheTaskResponse({}));
    }
    async describeIspFlushCacheTask(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeIspFlushCacheTaskWithOptions(request, runtime);
    }
    async describeIspFlushCacheTasksWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.direction)) {
            query["Direction"] = request.direction;
        }
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.isp)) {
            query["Isp"] = request.isp;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.orderBy)) {
            query["OrderBy"] = request.orderBy;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeIspFlushCacheTasks",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeIspFlushCacheTasksResponse({}));
    }
    async describeIspFlushCacheTasks(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeIspFlushCacheTasksWithOptions(request, runtime);
    }
    async describePdnsAccountSummaryWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsAccountSummary",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsAccountSummaryResponse({}));
    }
    async describePdnsAccountSummary(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsAccountSummaryWithOptions(request, runtime);
    }
    async describePdnsAppKeyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.appKeyId)) {
            query["AppKeyId"] = request.appKeyId;
        }
        if (!tea_util_1.default.isUnset(request.authCode)) {
            query["AuthCode"] = request.authCode;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsAppKey",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsAppKeyResponse({}));
    }
    async describePdnsAppKey(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsAppKeyWithOptions(request, runtime);
    }
    async describePdnsAppKeysWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsAppKeys",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsAppKeysResponse({}));
    }
    async describePdnsAppKeys(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsAppKeysWithOptions(request, runtime);
    }
    async describePdnsOperateLogsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.actionType)) {
            query["ActionType"] = request.actionType;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsOperateLogs",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsOperateLogsResponse({}));
    }
    async describePdnsOperateLogs(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsOperateLogsWithOptions(request, runtime);
    }
    async describePdnsRequestStatisticWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.subDomain)) {
            query["SubDomain"] = request.subDomain;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsRequestStatistic",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsRequestStatisticResponse({}));
    }
    async describePdnsRequestStatistic(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsRequestStatisticWithOptions(request, runtime);
    }
    async describePdnsRequestStatisticsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.subDomain)) {
            query["SubDomain"] = request.subDomain;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsRequestStatistics",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsRequestStatisticsResponse({}));
    }
    async describePdnsRequestStatistics(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsRequestStatisticsWithOptions(request, runtime);
    }
    async describePdnsThreatLogsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.threatLevel)) {
            query["ThreatLevel"] = request.threatLevel;
        }
        if (!tea_util_1.default.isUnset(request.threatSourceIp)) {
            query["ThreatSourceIp"] = request.threatSourceIp;
        }
        if (!tea_util_1.default.isUnset(request.threatType)) {
            query["ThreatType"] = request.threatType;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsThreatLogs",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsThreatLogsResponse({}));
    }
    async describePdnsThreatLogs(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsThreatLogsWithOptions(request, runtime);
    }
    async describePdnsThreatStatisticWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.threatSourceIp)) {
            query["ThreatSourceIp"] = request.threatSourceIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsThreatStatistic",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsThreatStatisticResponse({}));
    }
    async describePdnsThreatStatistic(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsThreatStatisticWithOptions(request, runtime);
    }
    async describePdnsThreatStatisticsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.direction)) {
            query["Direction"] = request.direction;
        }
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.orderBy)) {
            query["OrderBy"] = request.orderBy;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.subDomain)) {
            query["SubDomain"] = request.subDomain;
        }
        if (!tea_util_1.default.isUnset(request.threatLevel)) {
            query["ThreatLevel"] = request.threatLevel;
        }
        if (!tea_util_1.default.isUnset(request.threatSourceIp)) {
            query["ThreatSourceIp"] = request.threatSourceIp;
        }
        if (!tea_util_1.default.isUnset(request.threatType)) {
            query["ThreatType"] = request.threatType;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsThreatStatistics",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsThreatStatisticsResponse({}));
    }
    async describePdnsThreatStatistics(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsThreatStatisticsWithOptions(request, runtime);
    }
    async describePdnsUdpIpSegmentsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsUdpIpSegments",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsUdpIpSegmentsResponse({}));
    }
    async describePdnsUdpIpSegments(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsUdpIpSegmentsWithOptions(request, runtime);
    }
    async describePdnsUserInfoWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribePdnsUserInfo",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribePdnsUserInfoResponse({}));
    }
    async describePdnsUserInfo(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describePdnsUserInfoWithOptions(request, runtime);
    }
    async describeRecordLogsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.keyWord)) {
            query["KeyWord"] = request.keyWord;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["endDate"] = request.endDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeRecordLogs",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeRecordLogsResponse({}));
    }
    async describeRecordLogs(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeRecordLogsWithOptions(request, runtime);
    }
    async describeRecordResolveStatisticsSummaryWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.direction)) {
            query["Direction"] = request.direction;
        }
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.domainType)) {
            query["DomainType"] = request.domainType;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.searchMode)) {
            query["SearchMode"] = request.searchMode;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.threshold)) {
            query["Threshold"] = request.threshold;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeRecordResolveStatisticsSummary",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeRecordResolveStatisticsSummaryResponse({}));
    }
    async describeRecordResolveStatisticsSummary(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeRecordResolveStatisticsSummaryWithOptions(request, runtime);
    }
    /**
      * Real-time data is collected per hour.
      *
      * @param request DescribeRecordStatisticsRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return DescribeRecordStatisticsResponse
     */
    async describeRecordStatisticsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.domainType)) {
            query["DomainType"] = request.domainType;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.rr)) {
            query["Rr"] = request.rr;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeRecordStatistics",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeRecordStatisticsResponse({}));
    }
    /**
      * Real-time data is collected per hour.
      *
      * @param request DescribeRecordStatisticsRequest
      * @return DescribeRecordStatisticsResponse
     */
    async describeRecordStatistics(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeRecordStatisticsWithOptions(request, runtime);
    }
    async describeRecordStatisticsSummaryWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.domainType)) {
            query["DomainType"] = request.domainType;
        }
        if (!tea_util_1.default.isUnset(request.endDate)) {
            query["EndDate"] = request.endDate;
        }
        if (!tea_util_1.default.isUnset(request.keyword)) {
            query["Keyword"] = request.keyword;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.searchMode)) {
            query["SearchMode"] = request.searchMode;
        }
        if (!tea_util_1.default.isUnset(request.startDate)) {
            query["StartDate"] = request.startDate;
        }
        if (!tea_util_1.default.isUnset(request.threshold)) {
            query["Threshold"] = request.threshold;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeRecordStatisticsSummary",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeRecordStatisticsSummaryResponse({}));
    }
    async describeRecordStatisticsSummary(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeRecordStatisticsSummaryWithOptions(request, runtime);
    }
    async describeSubDomainRecordsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.line)) {
            query["Line"] = request.line;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.subDomain)) {
            query["SubDomain"] = request.subDomain;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeSubDomainRecords",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeSubDomainRecordsResponse({}));
    }
    async describeSubDomainRecords(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeSubDomainRecordsWithOptions(request, runtime);
    }
    async describeSupportLinesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeSupportLines",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeSupportLinesResponse({}));
    }
    async describeSupportLines(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeSupportLinesWithOptions(request, runtime);
    }
    async describeTagsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.resourceType)) {
            query["ResourceType"] = request.resourceType;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeTags",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeTagsResponse({}));
    }
    async describeTags(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeTagsWithOptions(request, runtime);
    }
    async describeTransferDomainsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.fromUserId)) {
            query["FromUserId"] = request.fromUserId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.targetUserId)) {
            query["TargetUserId"] = request.targetUserId;
        }
        if (!tea_util_1.default.isUnset(request.transferType)) {
            query["TransferType"] = request.transferType;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "DescribeTransferDomains",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new DescribeTransferDomainsResponse({}));
    }
    async describeTransferDomains(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.describeTransferDomainsWithOptions(request, runtime);
    }
    async executeGtmRecoveryPlanWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.recoveryPlanId)) {
            query["RecoveryPlanId"] = request.recoveryPlanId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "ExecuteGtmRecoveryPlan",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new ExecuteGtmRecoveryPlanResponse({}));
    }
    async executeGtmRecoveryPlan(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.executeGtmRecoveryPlanWithOptions(request, runtime);
    }
    /**
      * For more information about the difference between primary domain names and subdomain names, see
      * [Subdomain levels](https://www.alibabacloud.com/help/zh/faq-detail/39803.htm). For example, if you enter `www.abc.com`, abc.com is obtained.
      *
      * @param request GetMainDomainNameRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return GetMainDomainNameResponse
     */
    async getMainDomainNameWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.inputString)) {
            query["InputString"] = request.inputString;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "GetMainDomainName",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new GetMainDomainNameResponse({}));
    }
    /**
      * For more information about the difference between primary domain names and subdomain names, see
      * [Subdomain levels](https://www.alibabacloud.com/help/zh/faq-detail/39803.htm). For example, if you enter `www.abc.com`, abc.com is obtained.
      *
      * @param request GetMainDomainNameRequest
      * @return GetMainDomainNameResponse
     */
    async getMainDomainName(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.getMainDomainNameWithOptions(request, runtime);
    }
    async getTxtRecordForVerifyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "GetTxtRecordForVerify",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new GetTxtRecordForVerifyResponse({}));
    }
    async getTxtRecordForVerify(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.getTxtRecordForVerifyWithOptions(request, runtime);
    }
    /**
      * *   Set ResourceId.N or Tag.N that consists of Tag.N.Key and Tag.N.Value in the request to specify the object to be queried.
      * *   Tag.N is a resource tag that consists of a key-value pair. If you set only Tag.N.Key, all tag values that are assigned to the specified key are returned. If you set only Tag.N.Value, an error message is returned.
      * *   If you set both Tag.N and ResourceId.N to filter tags, ResourceId.N must match all specified key-value pairs.
      * *   If you specify multiple key-value pairs, resources that contain these key-value pairs are returned.
      *
      * @param request ListTagResourcesRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return ListTagResourcesResponse
     */
    async listTagResourcesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.nextToken)) {
            query["NextToken"] = request.nextToken;
        }
        if (!tea_util_1.default.isUnset(request.resourceId)) {
            query["ResourceId"] = request.resourceId;
        }
        if (!tea_util_1.default.isUnset(request.resourceType)) {
            query["ResourceType"] = request.resourceType;
        }
        if (!tea_util_1.default.isUnset(request.tag)) {
            query["Tag"] = request.tag;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "ListTagResources",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new ListTagResourcesResponse({}));
    }
    /**
      * *   Set ResourceId.N or Tag.N that consists of Tag.N.Key and Tag.N.Value in the request to specify the object to be queried.
      * *   Tag.N is a resource tag that consists of a key-value pair. If you set only Tag.N.Key, all tag values that are assigned to the specified key are returned. If you set only Tag.N.Value, an error message is returned.
      * *   If you set both Tag.N and ResourceId.N to filter tags, ResourceId.N must match all specified key-value pairs.
      * *   If you specify multiple key-value pairs, resources that contain these key-value pairs are returned.
      *
      * @param request ListTagResourcesRequest
      * @return ListTagResourcesResponse
     */
    async listTagResources(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.listTagResourcesWithOptions(request, runtime);
    }
    /**
      * If the operation succeeds, the name of the DNS server changes to that of an Alibaba Cloud DNS server (ending with hichina.com).
      * >  Before you call this operation, make sure that your domain name has been registered with Alibaba Cloud and the DNS server in use is not an Alibaba Cloud DNS server.
      *
      * @param request ModifyHichinaDomainDNSRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return ModifyHichinaDomainDNSResponse
     */
    async modifyHichinaDomainDNSWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "ModifyHichinaDomainDNS",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new ModifyHichinaDomainDNSResponse({}));
    }
    /**
      * If the operation succeeds, the name of the DNS server changes to that of an Alibaba Cloud DNS server (ending with hichina.com).
      * >  Before you call this operation, make sure that your domain name has been registered with Alibaba Cloud and the DNS server in use is not an Alibaba Cloud DNS server.
      *
      * @param request ModifyHichinaDomainDNSRequest
      * @return ModifyHichinaDomainDNSResponse
     */
    async modifyHichinaDomainDNS(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.modifyHichinaDomainDNSWithOptions(request, runtime);
    }
    async moveDomainResourceGroupWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.newResourceGroupId)) {
            query["NewResourceGroupId"] = request.newResourceGroupId;
        }
        if (!tea_util_1.default.isUnset(request.resourceId)) {
            query["ResourceId"] = request.resourceId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "MoveDomainResourceGroup",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new MoveDomainResourceGroupResponse({}));
    }
    async moveDomainResourceGroup(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.moveDomainResourceGroupWithOptions(request, runtime);
    }
    async moveGtmResourceGroupWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.newResourceGroupId)) {
            query["NewResourceGroupId"] = request.newResourceGroupId;
        }
        if (!tea_util_1.default.isUnset(request.resourceId)) {
            query["ResourceId"] = request.resourceId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "MoveGtmResourceGroup",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new MoveGtmResourceGroupResponse({}));
    }
    async moveGtmResourceGroup(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.moveGtmResourceGroupWithOptions(request, runtime);
    }
    /**
      * Scenario: You need to execute a large number of tasks related to DNS resolution and you do not have high requirements for efficiency.
      *
      * @param request OperateBatchDomainRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return OperateBatchDomainResponse
     */
    async operateBatchDomainWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainRecordInfo)) {
            query["DomainRecordInfo"] = request.domainRecordInfo;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "OperateBatchDomain",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new OperateBatchDomainResponse({}));
    }
    /**
      * Scenario: You need to execute a large number of tasks related to DNS resolution and you do not have high requirements for efficiency.
      *
      * @param request OperateBatchDomainRequest
      * @return OperateBatchDomainResponse
     */
    async operateBatchDomain(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.operateBatchDomainWithOptions(request, runtime);
    }
    async pausePdnsServiceWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.serviceType)) {
            query["ServiceType"] = request.serviceType;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "PausePdnsService",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new PausePdnsServiceResponse({}));
    }
    async pausePdnsService(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.pausePdnsServiceWithOptions(request, runtime);
    }
    async previewGtmRecoveryPlanWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.pageNumber)) {
            query["PageNumber"] = request.pageNumber;
        }
        if (!tea_util_1.default.isUnset(request.pageSize)) {
            query["PageSize"] = request.pageSize;
        }
        if (!tea_util_1.default.isUnset(request.recoveryPlanId)) {
            query["RecoveryPlanId"] = request.recoveryPlanId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "PreviewGtmRecoveryPlan",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new PreviewGtmRecoveryPlanResponse({}));
    }
    async previewGtmRecoveryPlan(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.previewGtmRecoveryPlanWithOptions(request, runtime);
    }
    async removePdnsAppKeyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.appKeyId)) {
            query["AppKeyId"] = request.appKeyId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "RemovePdnsAppKey",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new RemovePdnsAppKeyResponse({}));
    }
    async removePdnsAppKey(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.removePdnsAppKeyWithOptions(request, runtime);
    }
    async removePdnsUdpIpSegmentWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.ip)) {
            query["Ip"] = request.ip;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "RemovePdnsUdpIpSegment",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new RemovePdnsUdpIpSegmentResponse({}));
    }
    async removePdnsUdpIpSegment(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.removePdnsUdpIpSegmentWithOptions(request, runtime);
    }
    async resumePdnsServiceWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.serviceType)) {
            query["ServiceType"] = request.serviceType;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "ResumePdnsService",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new ResumePdnsServiceResponse({}));
    }
    async resumePdnsService(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.resumePdnsServiceWithOptions(request, runtime);
    }
    /**
      * To retrieve a domain name, you must verify a text (TXT) record. Therefore, before you call this API operation to retrieve a domain name, call the [GetTxtRecordForVerify](https://www.alibabacloud.com/help/zh/alibaba-cloud-dns/latest/generating-a-txt-record) operation to generate a TXT record.
      *
      * @param request RetrieveDomainRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return RetrieveDomainResponse
     */
    async retrieveDomainWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "RetrieveDomain",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new RetrieveDomainResponse({}));
    }
    /**
      * To retrieve a domain name, you must verify a text (TXT) record. Therefore, before you call this API operation to retrieve a domain name, call the [GetTxtRecordForVerify](https://www.alibabacloud.com/help/zh/alibaba-cloud-dns/latest/generating-a-txt-record) operation to generate a TXT record.
      *
      * @param request RetrieveDomainRequest
      * @return RetrieveDomainResponse
     */
    async retrieveDomain(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.retrieveDomainWithOptions(request, runtime);
    }
    async rollbackGtmRecoveryPlanWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.recoveryPlanId)) {
            query["RecoveryPlanId"] = request.recoveryPlanId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "RollbackGtmRecoveryPlan",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new RollbackGtmRecoveryPlanResponse({}));
    }
    async rollbackGtmRecoveryPlan(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.rollbackGtmRecoveryPlanWithOptions(request, runtime);
    }
    async setDNSSLBStatusWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.line)) {
            query["Line"] = request.line;
        }
        if (!tea_util_1.default.isUnset(request.open)) {
            query["Open"] = request.open;
        }
        if (!tea_util_1.default.isUnset(request.subDomain)) {
            query["SubDomain"] = request.subDomain;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "SetDNSSLBStatus",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new SetDNSSLBStatusResponse({}));
    }
    async setDNSSLBStatus(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.setDNSSLBStatusWithOptions(request, runtime);
    }
    /**
      * ****
      *
      * @param request SetDnsGtmAccessModeRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return SetDnsGtmAccessModeResponse
     */
    async setDnsGtmAccessModeWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.accessMode)) {
            query["AccessMode"] = request.accessMode;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyId)) {
            query["StrategyId"] = request.strategyId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "SetDnsGtmAccessMode",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new SetDnsGtmAccessModeResponse({}));
    }
    /**
      * ****
      *
      * @param request SetDnsGtmAccessModeRequest
      * @return SetDnsGtmAccessModeResponse
     */
    async setDnsGtmAccessMode(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.setDnsGtmAccessModeWithOptions(request, runtime);
    }
    async setDnsGtmMonitorStatusWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.monitorConfigId)) {
            query["MonitorConfigId"] = request.monitorConfigId;
        }
        if (!tea_util_1.default.isUnset(request.status)) {
            query["Status"] = request.status;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "SetDnsGtmMonitorStatus",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new SetDnsGtmMonitorStatusResponse({}));
    }
    async setDnsGtmMonitorStatus(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.setDnsGtmMonitorStatusWithOptions(request, runtime);
    }
    async setDomainDnssecStatusWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.status)) {
            query["Status"] = request.status;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "SetDomainDnssecStatus",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new SetDomainDnssecStatusResponse({}));
    }
    async setDomainDnssecStatus(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.setDomainDnssecStatusWithOptions(request, runtime);
    }
    async setDomainRecordStatusWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.recordId)) {
            query["RecordId"] = request.recordId;
        }
        if (!tea_util_1.default.isUnset(request.status)) {
            query["Status"] = request.status;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "SetDomainRecordStatus",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new SetDomainRecordStatusResponse({}));
    }
    async setDomainRecordStatus(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.setDomainRecordStatusWithOptions(request, runtime);
    }
    async setGtmAccessModeWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.accessMode)) {
            query["AccessMode"] = request.accessMode;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyId)) {
            query["StrategyId"] = request.strategyId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "SetGtmAccessMode",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new SetGtmAccessModeResponse({}));
    }
    async setGtmAccessMode(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.setGtmAccessModeWithOptions(request, runtime);
    }
    async setGtmMonitorStatusWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.monitorConfigId)) {
            query["MonitorConfigId"] = request.monitorConfigId;
        }
        if (!tea_util_1.default.isUnset(request.status)) {
            query["Status"] = request.status;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "SetGtmMonitorStatus",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new SetGtmMonitorStatusResponse({}));
    }
    async setGtmMonitorStatus(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.setGtmMonitorStatusWithOptions(request, runtime);
    }
    async submitIspFlushCacheTaskWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.clientToken)) {
            query["ClientToken"] = request.clientToken;
        }
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.isp)) {
            query["Isp"] = request.isp;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "SubmitIspFlushCacheTask",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new SubmitIspFlushCacheTaskResponse({}));
    }
    async submitIspFlushCacheTask(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.submitIspFlushCacheTaskWithOptions(request, runtime);
    }
    async switchDnsGtmInstanceStrategyModeWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyMode)) {
            query["StrategyMode"] = request.strategyMode;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "SwitchDnsGtmInstanceStrategyMode",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new SwitchDnsGtmInstanceStrategyModeResponse({}));
    }
    async switchDnsGtmInstanceStrategyMode(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.switchDnsGtmInstanceStrategyModeWithOptions(request, runtime);
    }
    async tagResourcesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.resourceId)) {
            query["ResourceId"] = request.resourceId;
        }
        if (!tea_util_1.default.isUnset(request.resourceType)) {
            query["ResourceType"] = request.resourceType;
        }
        if (!tea_util_1.default.isUnset(request.tag)) {
            query["Tag"] = request.tag;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "TagResources",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new TagResourcesResponse({}));
    }
    async tagResources(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.tagResourcesWithOptions(request, runtime);
    }
    async transferDomainWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainNames)) {
            query["DomainNames"] = request.domainNames;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.remark)) {
            query["Remark"] = request.remark;
        }
        if (!tea_util_1.default.isUnset(request.targetUserId)) {
            query["TargetUserId"] = request.targetUserId;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "TransferDomain",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new TransferDomainResponse({}));
    }
    async transferDomain(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.transferDomainWithOptions(request, runtime);
    }
    /**
      * A paid Alibaba Cloud DNS instance whose ID starts with dns is an instance of the new version. You can call an API operation to bind multiple domain names to the instance. If the upper limit is exceeded, an error message is returned.\\
      * A paid Alibaba Cloud DNS instance whose ID does not start with dns is an instance of the old version. You can call an API operation to bind only one domain name to the instance. However, if the instance that you want to bind to the desired domain name is already bound to a domain name, you can call this operation to unbind the original domain name from the instance and then bind the desired domain name to the instance.
      *
      * @param request UnbindInstanceDomainsRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return UnbindInstanceDomainsResponse
     */
    async unbindInstanceDomainsWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainNames)) {
            query["DomainNames"] = request.domainNames;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UnbindInstanceDomains",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UnbindInstanceDomainsResponse({}));
    }
    /**
      * A paid Alibaba Cloud DNS instance whose ID starts with dns is an instance of the new version. You can call an API operation to bind multiple domain names to the instance. If the upper limit is exceeded, an error message is returned.\\
      * A paid Alibaba Cloud DNS instance whose ID does not start with dns is an instance of the old version. You can call an API operation to bind only one domain name to the instance. However, if the instance that you want to bind to the desired domain name is already bound to a domain name, you can call this operation to unbind the original domain name from the instance and then bind the desired domain name to the instance.
      *
      * @param request UnbindInstanceDomainsRequest
      * @return UnbindInstanceDomainsResponse
     */
    async unbindInstanceDomains(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.unbindInstanceDomainsWithOptions(request, runtime);
    }
    async untagResourcesWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.all)) {
            query["All"] = request.all;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.resourceId)) {
            query["ResourceId"] = request.resourceId;
        }
        if (!tea_util_1.default.isUnset(request.resourceType)) {
            query["ResourceType"] = request.resourceType;
        }
        if (!tea_util_1.default.isUnset(request.tagKey)) {
            query["TagKey"] = request.tagKey;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UntagResources",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UntagResourcesResponse({}));
    }
    async untagResources(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.untagResourcesWithOptions(request, runtime);
    }
    async updateAppKeyStateWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.appKeyId)) {
            query["AppKeyId"] = request.appKeyId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.state)) {
            query["State"] = request.state;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateAppKeyState",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateAppKeyStateResponse({}));
    }
    async updateAppKeyState(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateAppKeyStateWithOptions(request, runtime);
    }
    /**
      * In each CIDR block, the end IP address must be greater than or equal to the start IP address.\\
      * The CIDR blocks that are specified for all custom lines of a domain name cannot be overlapped.
      *
      * @param request UpdateCustomLineRequest
      * @param runtime runtime options for this request RuntimeOptions
      * @return UpdateCustomLineResponse
     */
    async updateCustomLineWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.ipSegment)) {
            query["IpSegment"] = request.ipSegment;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.lineId)) {
            query["LineId"] = request.lineId;
        }
        if (!tea_util_1.default.isUnset(request.lineName)) {
            query["LineName"] = request.lineName;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateCustomLine",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateCustomLineResponse({}));
    }
    /**
      * In each CIDR block, the end IP address must be greater than or equal to the start IP address.\\
      * The CIDR blocks that are specified for all custom lines of a domain name cannot be overlapped.
      *
      * @param request UpdateCustomLineRequest
      * @return UpdateCustomLineResponse
     */
    async updateCustomLine(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateCustomLineWithOptions(request, runtime);
    }
    async updateDNSSLBWeightWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.recordId)) {
            query["RecordId"] = request.recordId;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        if (!tea_util_1.default.isUnset(request.weight)) {
            query["Weight"] = request.weight;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDNSSLBWeight",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDNSSLBWeightResponse({}));
    }
    async updateDNSSLBWeight(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDNSSLBWeightWithOptions(request, runtime);
    }
    async updateDnsCacheDomainWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.cacheTtlMax)) {
            query["CacheTtlMax"] = request.cacheTtlMax;
        }
        if (!tea_util_1.default.isUnset(request.cacheTtlMin)) {
            query["CacheTtlMin"] = request.cacheTtlMin;
        }
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.sourceDnsServer)) {
            query["SourceDnsServer"] = request.sourceDnsServer;
        }
        if (!tea_util_1.default.isUnset(request.sourceEdns)) {
            query["SourceEdns"] = request.sourceEdns;
        }
        if (!tea_util_1.default.isUnset(request.sourceProtocol)) {
            query["SourceProtocol"] = request.sourceProtocol;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDnsCacheDomain",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDnsCacheDomainResponse({}));
    }
    async updateDnsCacheDomain(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDnsCacheDomainWithOptions(request, runtime);
    }
    async updateDnsCacheDomainRemarkWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.remark)) {
            query["Remark"] = request.remark;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDnsCacheDomainRemark",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDnsCacheDomainRemarkResponse({}));
    }
    async updateDnsCacheDomainRemark(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDnsCacheDomainRemarkWithOptions(request, runtime);
    }
    async updateDnsGtmAccessStrategyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.accessMode)) {
            query["AccessMode"] = request.accessMode;
        }
        if (!tea_util_1.default.isUnset(request.defaultAddrPool)) {
            query["DefaultAddrPool"] = request.defaultAddrPool;
        }
        if (!tea_util_1.default.isUnset(request.defaultAddrPoolType)) {
            query["DefaultAddrPoolType"] = request.defaultAddrPoolType;
        }
        if (!tea_util_1.default.isUnset(request.defaultLatencyOptimization)) {
            query["DefaultLatencyOptimization"] = request.defaultLatencyOptimization;
        }
        if (!tea_util_1.default.isUnset(request.defaultLbaStrategy)) {
            query["DefaultLbaStrategy"] = request.defaultLbaStrategy;
        }
        if (!tea_util_1.default.isUnset(request.defaultMaxReturnAddrNum)) {
            query["DefaultMaxReturnAddrNum"] = request.defaultMaxReturnAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.defaultMinAvailableAddrNum)) {
            query["DefaultMinAvailableAddrNum"] = request.defaultMinAvailableAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.failoverAddrPool)) {
            query["FailoverAddrPool"] = request.failoverAddrPool;
        }
        if (!tea_util_1.default.isUnset(request.failoverAddrPoolType)) {
            query["FailoverAddrPoolType"] = request.failoverAddrPoolType;
        }
        if (!tea_util_1.default.isUnset(request.failoverLatencyOptimization)) {
            query["FailoverLatencyOptimization"] = request.failoverLatencyOptimization;
        }
        if (!tea_util_1.default.isUnset(request.failoverLbaStrategy)) {
            query["FailoverLbaStrategy"] = request.failoverLbaStrategy;
        }
        if (!tea_util_1.default.isUnset(request.failoverMaxReturnAddrNum)) {
            query["FailoverMaxReturnAddrNum"] = request.failoverMaxReturnAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.failoverMinAvailableAddrNum)) {
            query["FailoverMinAvailableAddrNum"] = request.failoverMinAvailableAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.lines)) {
            query["Lines"] = request.lines;
        }
        if (!tea_util_1.default.isUnset(request.strategyId)) {
            query["StrategyId"] = request.strategyId;
        }
        if (!tea_util_1.default.isUnset(request.strategyName)) {
            query["StrategyName"] = request.strategyName;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDnsGtmAccessStrategy",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDnsGtmAccessStrategyResponse({}));
    }
    async updateDnsGtmAccessStrategy(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDnsGtmAccessStrategyWithOptions(request, runtime);
    }
    async updateDnsGtmAddressPoolWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addr)) {
            query["Addr"] = request.addr;
        }
        if (!tea_util_1.default.isUnset(request.addrPoolId)) {
            query["AddrPoolId"] = request.addrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.lbaStrategy)) {
            query["LbaStrategy"] = request.lbaStrategy;
        }
        if (!tea_util_1.default.isUnset(request.name)) {
            query["Name"] = request.name;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDnsGtmAddressPool",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDnsGtmAddressPoolResponse({}));
    }
    async updateDnsGtmAddressPool(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDnsGtmAddressPoolWithOptions(request, runtime);
    }
    async updateDnsGtmInstanceGlobalConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.alertConfig)) {
            query["AlertConfig"] = request.alertConfig;
        }
        if (!tea_util_1.default.isUnset(request.alertGroup)) {
            query["AlertGroup"] = request.alertGroup;
        }
        if (!tea_util_1.default.isUnset(request.cnameType)) {
            query["CnameType"] = request.cnameType;
        }
        if (!tea_util_1.default.isUnset(request.forceUpdate)) {
            query["ForceUpdate"] = request.forceUpdate;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.instanceName)) {
            query["InstanceName"] = request.instanceName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.publicCnameMode)) {
            query["PublicCnameMode"] = request.publicCnameMode;
        }
        if (!tea_util_1.default.isUnset(request.publicRr)) {
            query["PublicRr"] = request.publicRr;
        }
        if (!tea_util_1.default.isUnset(request.publicUserDomainName)) {
            query["PublicUserDomainName"] = request.publicUserDomainName;
        }
        if (!tea_util_1.default.isUnset(request.publicZoneName)) {
            query["PublicZoneName"] = request.publicZoneName;
        }
        if (!tea_util_1.default.isUnset(request.ttl)) {
            query["Ttl"] = request.ttl;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDnsGtmInstanceGlobalConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDnsGtmInstanceGlobalConfigResponse({}));
    }
    async updateDnsGtmInstanceGlobalConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDnsGtmInstanceGlobalConfigWithOptions(request, runtime);
    }
    async updateDnsGtmMonitorWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.evaluationCount)) {
            query["EvaluationCount"] = request.evaluationCount;
        }
        if (!tea_util_1.default.isUnset(request.interval)) {
            query["Interval"] = request.interval;
        }
        if (!tea_util_1.default.isUnset(request.ispCityNode)) {
            query["IspCityNode"] = request.ispCityNode;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.monitorConfigId)) {
            query["MonitorConfigId"] = request.monitorConfigId;
        }
        if (!tea_util_1.default.isUnset(request.monitorExtendInfo)) {
            query["MonitorExtendInfo"] = request.monitorExtendInfo;
        }
        if (!tea_util_1.default.isUnset(request.protocolType)) {
            query["ProtocolType"] = request.protocolType;
        }
        if (!tea_util_1.default.isUnset(request.timeout)) {
            query["Timeout"] = request.timeout;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDnsGtmMonitor",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDnsGtmMonitorResponse({}));
    }
    async updateDnsGtmMonitor(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDnsGtmMonitorWithOptions(request, runtime);
    }
    async updateDomainGroupWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.groupId)) {
            query["GroupId"] = request.groupId;
        }
        if (!tea_util_1.default.isUnset(request.groupName)) {
            query["GroupName"] = request.groupName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDomainGroup",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDomainGroupResponse({}));
    }
    async updateDomainGroup(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDomainGroupWithOptions(request, runtime);
    }
    async updateDomainRecordWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.line)) {
            query["Line"] = request.line;
        }
        if (!tea_util_1.default.isUnset(request.priority)) {
            query["Priority"] = request.priority;
        }
        if (!tea_util_1.default.isUnset(request.RR)) {
            query["RR"] = request.RR;
        }
        if (!tea_util_1.default.isUnset(request.recordId)) {
            query["RecordId"] = request.recordId;
        }
        if (!tea_util_1.default.isUnset(request.TTL)) {
            query["TTL"] = request.TTL;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        if (!tea_util_1.default.isUnset(request.value)) {
            query["Value"] = request.value;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDomainRecord",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDomainRecordResponse({}));
    }
    async updateDomainRecord(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDomainRecordWithOptions(request, runtime);
    }
    async updateDomainRecordRemarkWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.recordId)) {
            query["RecordId"] = request.recordId;
        }
        if (!tea_util_1.default.isUnset(request.remark)) {
            query["Remark"] = request.remark;
        }
        if (!tea_util_1.default.isUnset(request.userClientIp)) {
            query["UserClientIp"] = request.userClientIp;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDomainRecordRemark",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDomainRecordRemarkResponse({}));
    }
    async updateDomainRecordRemark(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDomainRecordRemarkWithOptions(request, runtime);
    }
    async updateDomainRemarkWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.domainName)) {
            query["DomainName"] = request.domainName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.remark)) {
            query["Remark"] = request.remark;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateDomainRemark",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateDomainRemarkResponse({}));
    }
    async updateDomainRemark(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateDomainRemarkWithOptions(request, runtime);
    }
    async updateGtmAccessStrategyWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.accessLines)) {
            query["AccessLines"] = request.accessLines;
        }
        if (!tea_util_1.default.isUnset(request.defaultAddrPoolId)) {
            query["DefaultAddrPoolId"] = request.defaultAddrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.failoverAddrPoolId)) {
            query["FailoverAddrPoolId"] = request.failoverAddrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.strategyId)) {
            query["StrategyId"] = request.strategyId;
        }
        if (!tea_util_1.default.isUnset(request.strategyName)) {
            query["StrategyName"] = request.strategyName;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateGtmAccessStrategy",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateGtmAccessStrategyResponse({}));
    }
    async updateGtmAccessStrategy(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateGtmAccessStrategyWithOptions(request, runtime);
    }
    async updateGtmAddressPoolWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.addr)) {
            query["Addr"] = request.addr;
        }
        if (!tea_util_1.default.isUnset(request.addrPoolId)) {
            query["AddrPoolId"] = request.addrPoolId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.minAvailableAddrNum)) {
            query["MinAvailableAddrNum"] = request.minAvailableAddrNum;
        }
        if (!tea_util_1.default.isUnset(request.name)) {
            query["Name"] = request.name;
        }
        if (!tea_util_1.default.isUnset(request.type)) {
            query["Type"] = request.type;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateGtmAddressPool",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateGtmAddressPoolResponse({}));
    }
    async updateGtmAddressPool(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateGtmAddressPoolWithOptions(request, runtime);
    }
    async updateGtmInstanceGlobalConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.alertGroup)) {
            query["AlertGroup"] = request.alertGroup;
        }
        if (!tea_util_1.default.isUnset(request.cnameCustomDomainName)) {
            query["CnameCustomDomainName"] = request.cnameCustomDomainName;
        }
        if (!tea_util_1.default.isUnset(request.cnameMode)) {
            query["CnameMode"] = request.cnameMode;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.instanceName)) {
            query["InstanceName"] = request.instanceName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.lbaStrategy)) {
            query["LbaStrategy"] = request.lbaStrategy;
        }
        if (!tea_util_1.default.isUnset(request.ttl)) {
            query["Ttl"] = request.ttl;
        }
        if (!tea_util_1.default.isUnset(request.userDomainName)) {
            query["UserDomainName"] = request.userDomainName;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateGtmInstanceGlobalConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateGtmInstanceGlobalConfigResponse({}));
    }
    async updateGtmInstanceGlobalConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateGtmInstanceGlobalConfigWithOptions(request, runtime);
    }
    async updateGtmMonitorWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.evaluationCount)) {
            query["EvaluationCount"] = request.evaluationCount;
        }
        if (!tea_util_1.default.isUnset(request.interval)) {
            query["Interval"] = request.interval;
        }
        if (!tea_util_1.default.isUnset(request.ispCityNode)) {
            query["IspCityNode"] = request.ispCityNode;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.monitorConfigId)) {
            query["MonitorConfigId"] = request.monitorConfigId;
        }
        if (!tea_util_1.default.isUnset(request.monitorExtendInfo)) {
            query["MonitorExtendInfo"] = request.monitorExtendInfo;
        }
        if (!tea_util_1.default.isUnset(request.protocolType)) {
            query["ProtocolType"] = request.protocolType;
        }
        if (!tea_util_1.default.isUnset(request.timeout)) {
            query["Timeout"] = request.timeout;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateGtmMonitor",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateGtmMonitorResponse({}));
    }
    async updateGtmMonitor(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateGtmMonitorWithOptions(request, runtime);
    }
    async updateGtmRecoveryPlanWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.faultAddrPool)) {
            query["FaultAddrPool"] = request.faultAddrPool;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        if (!tea_util_1.default.isUnset(request.name)) {
            query["Name"] = request.name;
        }
        if (!tea_util_1.default.isUnset(request.recoveryPlanId)) {
            query["RecoveryPlanId"] = request.recoveryPlanId;
        }
        if (!tea_util_1.default.isUnset(request.remark)) {
            query["Remark"] = request.remark;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateGtmRecoveryPlan",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateGtmRecoveryPlanResponse({}));
    }
    async updateGtmRecoveryPlan(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateGtmRecoveryPlanWithOptions(request, runtime);
    }
    async updateIspFlushCacheInstanceConfigWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.instanceName)) {
            query["InstanceName"] = request.instanceName;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "UpdateIspFlushCacheInstanceConfig",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new UpdateIspFlushCacheInstanceConfigResponse({}));
    }
    async updateIspFlushCacheInstanceConfig(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.updateIspFlushCacheInstanceConfigWithOptions(request, runtime);
    }
    async validateDnsGtmCnameRrCanUseWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.cnameMode)) {
            query["CnameMode"] = request.cnameMode;
        }
        if (!tea_util_1.default.isUnset(request.cnameRr)) {
            query["CnameRr"] = request.cnameRr;
        }
        if (!tea_util_1.default.isUnset(request.cnameType)) {
            query["CnameType"] = request.cnameType;
        }
        if (!tea_util_1.default.isUnset(request.cnameZone)) {
            query["CnameZone"] = request.cnameZone;
        }
        if (!tea_util_1.default.isUnset(request.instanceId)) {
            query["InstanceId"] = request.instanceId;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "ValidateDnsGtmCnameRrCanUse",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new ValidateDnsGtmCnameRrCanUseResponse({}));
    }
    async validateDnsGtmCnameRrCanUse(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.validateDnsGtmCnameRrCanUseWithOptions(request, runtime);
    }
    async validatePdnsUdpIpSegmentWithOptions(request, runtime) {
        tea_util_1.default.validateModel(request);
        let query = {};
        if (!tea_util_1.default.isUnset(request.ip)) {
            query["Ip"] = request.ip;
        }
        if (!tea_util_1.default.isUnset(request.lang)) {
            query["Lang"] = request.lang;
        }
        let req = new $OpenApi.OpenApiRequest({
            query: openapi_util_1.default.query(query),
        });
        let params = new $OpenApi.Params({
            action: "ValidatePdnsUdpIpSegment",
            version: "2015-01-09",
            protocol: "HTTPS",
            pathname: "/",
            method: "POST",
            authType: "AK",
            style: "RPC",
            reqBodyType: "formData",
            bodyType: "json",
        });
        return $tea.cast(await this.callApi(params, req, runtime), new ValidatePdnsUdpIpSegmentResponse({}));
    }
    async validatePdnsUdpIpSegment(request) {
        let runtime = new $Util.RuntimeOptions({});
        return await this.validatePdnsUdpIpSegmentWithOptions(request, runtime);
    }
}
exports.default = Client;
//# sourceMappingURL=client.js.map