import localVarRequest from 'request';

export * from './action';
export * from './actionError';
export * from './actionResourcesInner';
export * from './actionResponse';
export * from './actionsResponse';
export * from './actionsResponseMeta';
export * from './actionsResponseMetaPagination';
export * from './addDeleteRouteRequest';
export * from './addSubnetRequest';
export * from './addTargetRequest';
export * from './addTargetRequestLabelSelector';
export * from './addTargetRequestServer';
export * from './addToPlacementGroupRequest';
export * from './applyToResourcesRequest';
export * from './assignFloatingIPRequest';
export * from './assignPrimaryIPRequest';
export * from './attachToNetworkRequest';
export * from './attachVolumeRequest';
export * from './certificate';
export * from './certificateResponse';
export * from './certificateStatus';
export * from './certificateStatusError';
export * from './certificateUsedByInner';
export * from './certificatesResponse';
export * from './changeDNSPTRRequest';
export * from './changeIPRangeRequest';
export * from './changeLoadbalancerDnsPtrRequest';
export * from './changeProtectionRequest';
export * from './changeProtectionRequest1';
export * from './changeProtectionRequest2';
export * from './changeTypeRequest';
export * from './createCertificateRequest';
export * from './createCertificateResponse';
export * from './createFirewallRequest';
export * from './createFirewallRequestApplyToInner';
export * from './createFirewallRequestApplyToInnerLabelSelector';
export * from './createFirewallRequestApplyToInnerServer';
export * from './createFirewallResponse';
export * from './createFloatingIPRequest';
export * from './createImageRequest';
export * from './createLoadBalancerRequest';
export * from './createLoadBalancerRequestLabels';
export * from './createNetworkRequest';
export * from './createNetworkRequestSubnetsInner';
export * from './createPlacementGroupRequest';
export * from './createPlacementGroupResponse';
export * from './createPrimaryIPRequest';
export * from './createPrimaryIPResponse';
export * from './createServerRequest';
export * from './createServerRequestFirewallsInner';
export * from './createServerRequestPublicNet';
export * from './createServerResponse';
export * from './createVolumeRequest';
export * from './datacentersGet200Response';
export * from './datacentersGet200ResponseDatacentersInner';
export * from './datacentersGet200ResponseDatacentersInnerLocation';
export * from './datacentersGet200ResponseDatacentersInnerServerTypes';
export * from './datacentersIdGet200Response';
export * from './deleteSubnetRequest';
export * from './deprecationInfo';
export * from './detachFromNetworkRequest';
export * from './firewall';
export * from './firewallAppliedToInner';
export * from './firewallAppliedToInnerAppliedToResourcesInner';
export * from './firewallAppliedToInnerAppliedToResourcesInnerServer';
export * from './firewallAppliedToInnerLabelSelector';
export * from './firewallApplyToResources';
export * from './firewallApplyToResourcesLabelSelector';
export * from './firewallApplyToResourcesServer';
export * from './firewallRemoveFromResources';
export * from './firewallResponse';
export * from './firewallsResponse';
export * from './floatingIpsGet200Response';
export * from './floatingIpsGet200ResponseFloatingIpsInner';
export * from './floatingIpsGet200ResponseFloatingIpsInnerDnsPtrInner';
export * from './floatingIpsGet200ResponseFloatingIpsInnerHomeLocation';
export * from './floatingIpsGet200ResponseFloatingIpsInnerProtection';
export * from './floatingIpsIdActionsGet200Response';
export * from './floatingIpsIdGet200Response';
export * from './floatingIpsPost201Response';
export * from './imagesGet200Response';
export * from './imagesGet200ResponseImagesInner';
export * from './imagesGet200ResponseImagesInnerCreatedFrom';
export * from './imagesIdActionsChangeProtectionPostRequest';
export * from './imagesIdGet200Response';
export * from './isosGet200Response';
export * from './isosGet200ResponseIsosInner';
export * from './isosIdGet200Response';
export * from './loadBalancerAlgorithm';
export * from './loadBalancerService';
export * from './loadBalancerServiceHTTP';
export * from './loadBalancerServiceHTTP1';
export * from './loadBalancerServiceHealthCheck';
export * from './loadBalancerServiceHealthCheckHttp';
export * from './loadBalancerTarget';
export * from './loadBalancerTargetHealthStatusInner';
export * from './loadBalancerTargetIP';
export * from './loadBalancerTargetLabelSelector';
export * from './loadBalancerTargetServer';
export * from './loadBalancerTargetTarget';
export * from './loadBalancerTypesGet200Response';
export * from './loadBalancerTypesGet200ResponseLoadBalancerTypesInner';
export * from './loadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInner';
export * from './loadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceHourly';
export * from './loadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceMonthly';
export * from './loadBalancerTypesIdGet200Response';
export * from './loadBalancersGet200Response';
export * from './loadBalancersGet200ResponseLoadBalancersInner';
export * from './loadBalancersGet200ResponseLoadBalancersInnerAlgorithm';
export * from './loadBalancersGet200ResponseLoadBalancersInnerLocation';
export * from './loadBalancersGet200ResponseLoadBalancersInnerPrivateNetInner';
export * from './loadBalancersGet200ResponseLoadBalancersInnerPublicNet';
export * from './loadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv4';
export * from './loadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv6';
export * from './loadBalancersIdActionsAttachToNetworkPostRequest';
export * from './loadBalancersIdActionsChangeAlgorithmPostRequest';
export * from './loadBalancersIdActionsChangeProtectionPostRequest';
export * from './loadBalancersIdActionsDeleteServicePostRequest';
export * from './loadBalancersIdActionsDetachFromNetworkPostRequest';
export * from './loadBalancersIdGet200Response';
export * from './loadBalancersIdMetricsGet200Response';
export * from './loadBalancersIdMetricsGet200ResponseMetrics';
export * from './loadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValue';
export * from './loadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValueValuesInnerInner';
export * from './loadBalancersIdPutRequest';
export * from './loadBalancersPost201Response';
export * from './locationsGet200Response';
export * from './locationsIdGet200Response';
export * from './networksGet200Response';
export * from './networksGet200ResponseNetworksInner';
export * from './networksGet200ResponseNetworksInnerProtection';
export * from './networksGet200ResponseNetworksInnerRoutesInner';
export * from './networksGet200ResponseNetworksInnerSubnetsInner';
export * from './networksPost201Response';
export * from './nullableAction';
export * from './placementGroup';
export * from './placementGroupNullable';
export * from './placementGroupResponse';
export * from './placementGroupsResponse';
export * from './pricingGet200Response';
export * from './pricingGet200ResponsePricing';
export * from './pricingGet200ResponsePricingFloatingIp';
export * from './pricingGet200ResponsePricingFloatingIpPriceMonthly';
export * from './pricingGet200ResponsePricingFloatingIpsInner';
export * from './pricingGet200ResponsePricingFloatingIpsInnerPricesInner';
export * from './pricingGet200ResponsePricingFloatingIpsInnerPricesInnerPriceMonthly';
export * from './pricingGet200ResponsePricingImage';
export * from './pricingGet200ResponsePricingLoadBalancerTypesInner';
export * from './pricingGet200ResponsePricingLoadBalancerTypesInnerPricesInner';
export * from './pricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceHourly';
export * from './pricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceMonthly';
export * from './pricingGet200ResponsePricingPrimaryIpsInner';
export * from './pricingGet200ResponsePricingPrimaryIpsInnerPricesInner';
export * from './pricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceHourly';
export * from './pricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceMonthly';
export * from './pricingGet200ResponsePricingServerBackup';
export * from './pricingGet200ResponsePricingServerTypesInner';
export * from './pricingGet200ResponsePricingServerTypesInnerPricesInner';
export * from './pricingGet200ResponsePricingServerTypesInnerPricesInnerPriceHourly';
export * from './pricingGet200ResponsePricingServerTypesInnerPricesInnerPriceMonthly';
export * from './pricingGet200ResponsePricingTraffic';
export * from './pricingGet200ResponsePricingVolume';
export * from './primaryIP';
export * from './primaryIPDatacenter';
export * from './primaryIPDnsPtrInner';
export * from './primaryIPResponse';
export * from './primaryIPsResponse';
export * from './rebuildServerRequest';
export * from './removeFromResourcesRequest';
export * from './removeTargetRequest';
export * from './rule';
export * from './serverPublicNetFirewall';
export * from './serverTypesGet200Response';
export * from './serverTypesGet200ResponseServerTypesInner';
export * from './serverTypesIdGet200Response';
export * from './serversGet200Response';
export * from './serversGet200ResponseServersInner';
export * from './serversGet200ResponseServersInnerDatacenter';
export * from './serversGet200ResponseServersInnerImage';
export * from './serversGet200ResponseServersInnerIso';
export * from './serversGet200ResponseServersInnerPrivateNetInner';
export * from './serversGet200ResponseServersInnerProtection';
export * from './serversGet200ResponseServersInnerPublicNet';
export * from './serversGet200ResponseServersInnerPublicNetIpv4';
export * from './serversGet200ResponseServersInnerPublicNetIpv6';
export * from './serversGet200ResponseServersInnerPublicNetIpv6DnsPtrInner';
export * from './serversGet200ResponseServersInnerServerType';
export * from './serversIdActionsAttachIsoPostRequest';
export * from './serversIdActionsChangeAliasIpsPostRequest';
export * from './serversIdActionsChangeDnsPtrPostRequest';
export * from './serversIdActionsChangeProtectionPostRequest';
export * from './serversIdActionsChangeTypePostRequest';
export * from './serversIdActionsCreateImagePost201Response';
export * from './serversIdActionsEnableRescuePost201Response';
export * from './serversIdActionsEnableRescuePostRequest';
export * from './serversIdActionsRebuildPost201Response';
export * from './serversIdActionsRequestConsolePost201Response';
export * from './serversIdDelete200Response';
export * from './serversIdGet200Response';
export * from './setRulesRequest';
export * from './sshKeysGet200Response';
export * from './sshKeysGet200ResponseSshKeysInner';
export * from './sshKeysIdPutRequest';
export * from './sshKeysPost201Response';
export * from './sshKeysPostRequest';
export * from './updateCertificateRequest';
export * from './updateFirewallRequest';
export * from './updateFloatingIPRequest';
export * from './updateImageRequest';
export * from './updateLoadBalancerService';
export * from './updateLoadBalancerServiceHealthCheck';
export * from './updateLoadBalancerServiceHealthCheckHttp';
export * from './updateNetworkRequest';
export * from './updateNetworkRequestLabels';
export * from './updatePlacementGroupRequest';
export * from './updatePrimaryIPRequest';
export * from './updateServerRequest';
export * from './updateVolumeRequest';
export * from './volumesGet200Response';
export * from './volumesGet200ResponseVolumesInner';
export * from './volumesGet200ResponseVolumesInnerLocation';
export * from './volumesIdActionsChangeProtectionPostRequest';
export * from './volumesIdActionsResizePostRequest';
export * from './volumesIdGet200Response';
export * from './volumesPost201Response';

import * as fs from 'fs';

export interface RequestDetailedFile {
    value: Buffer;
    options?: {
        filename?: string;
        contentType?: string;
    }
}

export type RequestFile = string | Buffer | fs.ReadStream | RequestDetailedFile;


import { Action } from './action';
import { ActionError } from './actionError';
import { ActionResourcesInner } from './actionResourcesInner';
import { ActionResponse } from './actionResponse';
import { ActionsResponse } from './actionsResponse';
import { ActionsResponseMeta } from './actionsResponseMeta';
import { ActionsResponseMetaPagination } from './actionsResponseMetaPagination';
import { AddDeleteRouteRequest } from './addDeleteRouteRequest';
import { AddSubnetRequest } from './addSubnetRequest';
import { AddTargetRequest } from './addTargetRequest';
import { AddTargetRequestLabelSelector } from './addTargetRequestLabelSelector';
import { AddTargetRequestServer } from './addTargetRequestServer';
import { AddToPlacementGroupRequest } from './addToPlacementGroupRequest';
import { ApplyToResourcesRequest } from './applyToResourcesRequest';
import { AssignFloatingIPRequest } from './assignFloatingIPRequest';
import { AssignPrimaryIPRequest } from './assignPrimaryIPRequest';
import { AttachToNetworkRequest } from './attachToNetworkRequest';
import { AttachVolumeRequest } from './attachVolumeRequest';
import { Certificate } from './certificate';
import { CertificateResponse } from './certificateResponse';
import { CertificateStatus } from './certificateStatus';
import { CertificateStatusError } from './certificateStatusError';
import { CertificateUsedByInner } from './certificateUsedByInner';
import { CertificatesResponse } from './certificatesResponse';
import { ChangeDNSPTRRequest } from './changeDNSPTRRequest';
import { ChangeIPRangeRequest } from './changeIPRangeRequest';
import { ChangeLoadbalancerDnsPtrRequest } from './changeLoadbalancerDnsPtrRequest';
import { ChangeProtectionRequest } from './changeProtectionRequest';
import { ChangeProtectionRequest1 } from './changeProtectionRequest1';
import { ChangeProtectionRequest2 } from './changeProtectionRequest2';
import { ChangeTypeRequest } from './changeTypeRequest';
import { CreateCertificateRequest } from './createCertificateRequest';
import { CreateCertificateResponse } from './createCertificateResponse';
import { CreateFirewallRequest } from './createFirewallRequest';
import { CreateFirewallRequestApplyToInner } from './createFirewallRequestApplyToInner';
import { CreateFirewallRequestApplyToInnerLabelSelector } from './createFirewallRequestApplyToInnerLabelSelector';
import { CreateFirewallRequestApplyToInnerServer } from './createFirewallRequestApplyToInnerServer';
import { CreateFirewallResponse } from './createFirewallResponse';
import { CreateFloatingIPRequest } from './createFloatingIPRequest';
import { CreateImageRequest } from './createImageRequest';
import { CreateLoadBalancerRequest } from './createLoadBalancerRequest';
import { CreateLoadBalancerRequestLabels } from './createLoadBalancerRequestLabels';
import { CreateNetworkRequest } from './createNetworkRequest';
import { CreateNetworkRequestSubnetsInner } from './createNetworkRequestSubnetsInner';
import { CreatePlacementGroupRequest } from './createPlacementGroupRequest';
import { CreatePlacementGroupResponse } from './createPlacementGroupResponse';
import { CreatePrimaryIPRequest } from './createPrimaryIPRequest';
import { CreatePrimaryIPResponse } from './createPrimaryIPResponse';
import { CreateServerRequest } from './createServerRequest';
import { CreateServerRequestFirewallsInner } from './createServerRequestFirewallsInner';
import { CreateServerRequestPublicNet } from './createServerRequestPublicNet';
import { CreateServerResponse } from './createServerResponse';
import { CreateVolumeRequest } from './createVolumeRequest';
import { DatacentersGet200Response } from './datacentersGet200Response';
import { DatacentersGet200ResponseDatacentersInner } from './datacentersGet200ResponseDatacentersInner';
import { DatacentersGet200ResponseDatacentersInnerLocation } from './datacentersGet200ResponseDatacentersInnerLocation';
import { DatacentersGet200ResponseDatacentersInnerServerTypes } from './datacentersGet200ResponseDatacentersInnerServerTypes';
import { DatacentersIdGet200Response } from './datacentersIdGet200Response';
import { DeleteSubnetRequest } from './deleteSubnetRequest';
import { DeprecationInfo } from './deprecationInfo';
import { DetachFromNetworkRequest } from './detachFromNetworkRequest';
import { Firewall } from './firewall';
import { FirewallAppliedToInner } from './firewallAppliedToInner';
import { FirewallAppliedToInnerAppliedToResourcesInner } from './firewallAppliedToInnerAppliedToResourcesInner';
import { FirewallAppliedToInnerAppliedToResourcesInnerServer } from './firewallAppliedToInnerAppliedToResourcesInnerServer';
import { FirewallAppliedToInnerLabelSelector } from './firewallAppliedToInnerLabelSelector';
import { FirewallApplyToResources } from './firewallApplyToResources';
import { FirewallApplyToResourcesLabelSelector } from './firewallApplyToResourcesLabelSelector';
import { FirewallApplyToResourcesServer } from './firewallApplyToResourcesServer';
import { FirewallRemoveFromResources } from './firewallRemoveFromResources';
import { FirewallResponse } from './firewallResponse';
import { FirewallsResponse } from './firewallsResponse';
import { FloatingIpsGet200Response } from './floatingIpsGet200Response';
import { FloatingIpsGet200ResponseFloatingIpsInner } from './floatingIpsGet200ResponseFloatingIpsInner';
import { FloatingIpsGet200ResponseFloatingIpsInnerDnsPtrInner } from './floatingIpsGet200ResponseFloatingIpsInnerDnsPtrInner';
import { FloatingIpsGet200ResponseFloatingIpsInnerHomeLocation } from './floatingIpsGet200ResponseFloatingIpsInnerHomeLocation';
import { FloatingIpsGet200ResponseFloatingIpsInnerProtection } from './floatingIpsGet200ResponseFloatingIpsInnerProtection';
import { FloatingIpsIdActionsGet200Response } from './floatingIpsIdActionsGet200Response';
import { FloatingIpsIdGet200Response } from './floatingIpsIdGet200Response';
import { FloatingIpsPost201Response } from './floatingIpsPost201Response';
import { ImagesGet200Response } from './imagesGet200Response';
import { ImagesGet200ResponseImagesInner } from './imagesGet200ResponseImagesInner';
import { ImagesGet200ResponseImagesInnerCreatedFrom } from './imagesGet200ResponseImagesInnerCreatedFrom';
import { ImagesIdActionsChangeProtectionPostRequest } from './imagesIdActionsChangeProtectionPostRequest';
import { ImagesIdGet200Response } from './imagesIdGet200Response';
import { IsosGet200Response } from './isosGet200Response';
import { IsosGet200ResponseIsosInner } from './isosGet200ResponseIsosInner';
import { IsosIdGet200Response } from './isosIdGet200Response';
import { LoadBalancerAlgorithm } from './loadBalancerAlgorithm';
import { LoadBalancerService } from './loadBalancerService';
import { LoadBalancerServiceHTTP } from './loadBalancerServiceHTTP';
import { LoadBalancerServiceHTTP1 } from './loadBalancerServiceHTTP1';
import { LoadBalancerServiceHealthCheck } from './loadBalancerServiceHealthCheck';
import { LoadBalancerServiceHealthCheckHttp } from './loadBalancerServiceHealthCheckHttp';
import { LoadBalancerTarget } from './loadBalancerTarget';
import { LoadBalancerTargetHealthStatusInner } from './loadBalancerTargetHealthStatusInner';
import { LoadBalancerTargetIP } from './loadBalancerTargetIP';
import { LoadBalancerTargetLabelSelector } from './loadBalancerTargetLabelSelector';
import { LoadBalancerTargetServer } from './loadBalancerTargetServer';
import { LoadBalancerTargetTarget } from './loadBalancerTargetTarget';
import { LoadBalancerTypesGet200Response } from './loadBalancerTypesGet200Response';
import { LoadBalancerTypesGet200ResponseLoadBalancerTypesInner } from './loadBalancerTypesGet200ResponseLoadBalancerTypesInner';
import { LoadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInner } from './loadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInner';
import { LoadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceHourly } from './loadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceHourly';
import { LoadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceMonthly } from './loadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceMonthly';
import { LoadBalancerTypesIdGet200Response } from './loadBalancerTypesIdGet200Response';
import { LoadBalancersGet200Response } from './loadBalancersGet200Response';
import { LoadBalancersGet200ResponseLoadBalancersInner } from './loadBalancersGet200ResponseLoadBalancersInner';
import { LoadBalancersGet200ResponseLoadBalancersInnerAlgorithm } from './loadBalancersGet200ResponseLoadBalancersInnerAlgorithm';
import { LoadBalancersGet200ResponseLoadBalancersInnerLocation } from './loadBalancersGet200ResponseLoadBalancersInnerLocation';
import { LoadBalancersGet200ResponseLoadBalancersInnerPrivateNetInner } from './loadBalancersGet200ResponseLoadBalancersInnerPrivateNetInner';
import { LoadBalancersGet200ResponseLoadBalancersInnerPublicNet } from './loadBalancersGet200ResponseLoadBalancersInnerPublicNet';
import { LoadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv4 } from './loadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv4';
import { LoadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv6 } from './loadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv6';
import { LoadBalancersIdActionsAttachToNetworkPostRequest } from './loadBalancersIdActionsAttachToNetworkPostRequest';
import { LoadBalancersIdActionsChangeAlgorithmPostRequest } from './loadBalancersIdActionsChangeAlgorithmPostRequest';
import { LoadBalancersIdActionsChangeProtectionPostRequest } from './loadBalancersIdActionsChangeProtectionPostRequest';
import { LoadBalancersIdActionsDeleteServicePostRequest } from './loadBalancersIdActionsDeleteServicePostRequest';
import { LoadBalancersIdActionsDetachFromNetworkPostRequest } from './loadBalancersIdActionsDetachFromNetworkPostRequest';
import { LoadBalancersIdGet200Response } from './loadBalancersIdGet200Response';
import { LoadBalancersIdMetricsGet200Response } from './loadBalancersIdMetricsGet200Response';
import { LoadBalancersIdMetricsGet200ResponseMetrics } from './loadBalancersIdMetricsGet200ResponseMetrics';
import { LoadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValue } from './loadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValue';
import { LoadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValueValuesInnerInner } from './loadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValueValuesInnerInner';
import { LoadBalancersIdPutRequest } from './loadBalancersIdPutRequest';
import { LoadBalancersPost201Response } from './loadBalancersPost201Response';
import { LocationsGet200Response } from './locationsGet200Response';
import { LocationsIdGet200Response } from './locationsIdGet200Response';
import { NetworksGet200Response } from './networksGet200Response';
import { NetworksGet200ResponseNetworksInner } from './networksGet200ResponseNetworksInner';
import { NetworksGet200ResponseNetworksInnerProtection } from './networksGet200ResponseNetworksInnerProtection';
import { NetworksGet200ResponseNetworksInnerRoutesInner } from './networksGet200ResponseNetworksInnerRoutesInner';
import { NetworksGet200ResponseNetworksInnerSubnetsInner } from './networksGet200ResponseNetworksInnerSubnetsInner';
import { NetworksPost201Response } from './networksPost201Response';
import { NullableAction } from './nullableAction';
import { PlacementGroup } from './placementGroup';
import { PlacementGroupNullable } from './placementGroupNullable';
import { PlacementGroupResponse } from './placementGroupResponse';
import { PlacementGroupsResponse } from './placementGroupsResponse';
import { PricingGet200Response } from './pricingGet200Response';
import { PricingGet200ResponsePricing } from './pricingGet200ResponsePricing';
import { PricingGet200ResponsePricingFloatingIp } from './pricingGet200ResponsePricingFloatingIp';
import { PricingGet200ResponsePricingFloatingIpPriceMonthly } from './pricingGet200ResponsePricingFloatingIpPriceMonthly';
import { PricingGet200ResponsePricingFloatingIpsInner } from './pricingGet200ResponsePricingFloatingIpsInner';
import { PricingGet200ResponsePricingFloatingIpsInnerPricesInner } from './pricingGet200ResponsePricingFloatingIpsInnerPricesInner';
import { PricingGet200ResponsePricingFloatingIpsInnerPricesInnerPriceMonthly } from './pricingGet200ResponsePricingFloatingIpsInnerPricesInnerPriceMonthly';
import { PricingGet200ResponsePricingImage } from './pricingGet200ResponsePricingImage';
import { PricingGet200ResponsePricingLoadBalancerTypesInner } from './pricingGet200ResponsePricingLoadBalancerTypesInner';
import { PricingGet200ResponsePricingLoadBalancerTypesInnerPricesInner } from './pricingGet200ResponsePricingLoadBalancerTypesInnerPricesInner';
import { PricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceHourly } from './pricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceHourly';
import { PricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceMonthly } from './pricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceMonthly';
import { PricingGet200ResponsePricingPrimaryIpsInner } from './pricingGet200ResponsePricingPrimaryIpsInner';
import { PricingGet200ResponsePricingPrimaryIpsInnerPricesInner } from './pricingGet200ResponsePricingPrimaryIpsInnerPricesInner';
import { PricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceHourly } from './pricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceHourly';
import { PricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceMonthly } from './pricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceMonthly';
import { PricingGet200ResponsePricingServerBackup } from './pricingGet200ResponsePricingServerBackup';
import { PricingGet200ResponsePricingServerTypesInner } from './pricingGet200ResponsePricingServerTypesInner';
import { PricingGet200ResponsePricingServerTypesInnerPricesInner } from './pricingGet200ResponsePricingServerTypesInnerPricesInner';
import { PricingGet200ResponsePricingServerTypesInnerPricesInnerPriceHourly } from './pricingGet200ResponsePricingServerTypesInnerPricesInnerPriceHourly';
import { PricingGet200ResponsePricingServerTypesInnerPricesInnerPriceMonthly } from './pricingGet200ResponsePricingServerTypesInnerPricesInnerPriceMonthly';
import { PricingGet200ResponsePricingTraffic } from './pricingGet200ResponsePricingTraffic';
import { PricingGet200ResponsePricingVolume } from './pricingGet200ResponsePricingVolume';
import { PrimaryIP } from './primaryIP';
import { PrimaryIPDatacenter } from './primaryIPDatacenter';
import { PrimaryIPDnsPtrInner } from './primaryIPDnsPtrInner';
import { PrimaryIPResponse } from './primaryIPResponse';
import { PrimaryIPsResponse } from './primaryIPsResponse';
import { RebuildServerRequest } from './rebuildServerRequest';
import { RemoveFromResourcesRequest } from './removeFromResourcesRequest';
import { RemoveTargetRequest } from './removeTargetRequest';
import { Rule } from './rule';
import { ServerPublicNetFirewall } from './serverPublicNetFirewall';
import { ServerTypesGet200Response } from './serverTypesGet200Response';
import { ServerTypesGet200ResponseServerTypesInner } from './serverTypesGet200ResponseServerTypesInner';
import { ServerTypesIdGet200Response } from './serverTypesIdGet200Response';
import { ServersGet200Response } from './serversGet200Response';
import { ServersGet200ResponseServersInner } from './serversGet200ResponseServersInner';
import { ServersGet200ResponseServersInnerDatacenter } from './serversGet200ResponseServersInnerDatacenter';
import { ServersGet200ResponseServersInnerImage } from './serversGet200ResponseServersInnerImage';
import { ServersGet200ResponseServersInnerIso } from './serversGet200ResponseServersInnerIso';
import { ServersGet200ResponseServersInnerPrivateNetInner } from './serversGet200ResponseServersInnerPrivateNetInner';
import { ServersGet200ResponseServersInnerProtection } from './serversGet200ResponseServersInnerProtection';
import { ServersGet200ResponseServersInnerPublicNet } from './serversGet200ResponseServersInnerPublicNet';
import { ServersGet200ResponseServersInnerPublicNetIpv4 } from './serversGet200ResponseServersInnerPublicNetIpv4';
import { ServersGet200ResponseServersInnerPublicNetIpv6 } from './serversGet200ResponseServersInnerPublicNetIpv6';
import { ServersGet200ResponseServersInnerPublicNetIpv6DnsPtrInner } from './serversGet200ResponseServersInnerPublicNetIpv6DnsPtrInner';
import { ServersGet200ResponseServersInnerServerType } from './serversGet200ResponseServersInnerServerType';
import { ServersIdActionsAttachIsoPostRequest } from './serversIdActionsAttachIsoPostRequest';
import { ServersIdActionsChangeAliasIpsPostRequest } from './serversIdActionsChangeAliasIpsPostRequest';
import { ServersIdActionsChangeDnsPtrPostRequest } from './serversIdActionsChangeDnsPtrPostRequest';
import { ServersIdActionsChangeProtectionPostRequest } from './serversIdActionsChangeProtectionPostRequest';
import { ServersIdActionsChangeTypePostRequest } from './serversIdActionsChangeTypePostRequest';
import { ServersIdActionsCreateImagePost201Response } from './serversIdActionsCreateImagePost201Response';
import { ServersIdActionsEnableRescuePost201Response } from './serversIdActionsEnableRescuePost201Response';
import { ServersIdActionsEnableRescuePostRequest } from './serversIdActionsEnableRescuePostRequest';
import { ServersIdActionsRebuildPost201Response } from './serversIdActionsRebuildPost201Response';
import { ServersIdActionsRequestConsolePost201Response } from './serversIdActionsRequestConsolePost201Response';
import { ServersIdDelete200Response } from './serversIdDelete200Response';
import { ServersIdGet200Response } from './serversIdGet200Response';
import { SetRulesRequest } from './setRulesRequest';
import { SshKeysGet200Response } from './sshKeysGet200Response';
import { SshKeysGet200ResponseSshKeysInner } from './sshKeysGet200ResponseSshKeysInner';
import { SshKeysIdPutRequest } from './sshKeysIdPutRequest';
import { SshKeysPost201Response } from './sshKeysPost201Response';
import { SshKeysPostRequest } from './sshKeysPostRequest';
import { UpdateCertificateRequest } from './updateCertificateRequest';
import { UpdateFirewallRequest } from './updateFirewallRequest';
import { UpdateFloatingIPRequest } from './updateFloatingIPRequest';
import { UpdateImageRequest } from './updateImageRequest';
import { UpdateLoadBalancerService } from './updateLoadBalancerService';
import { UpdateLoadBalancerServiceHealthCheck } from './updateLoadBalancerServiceHealthCheck';
import { UpdateLoadBalancerServiceHealthCheckHttp } from './updateLoadBalancerServiceHealthCheckHttp';
import { UpdateNetworkRequest } from './updateNetworkRequest';
import { UpdateNetworkRequestLabels } from './updateNetworkRequestLabels';
import { UpdatePlacementGroupRequest } from './updatePlacementGroupRequest';
import { UpdatePrimaryIPRequest } from './updatePrimaryIPRequest';
import { UpdateServerRequest } from './updateServerRequest';
import { UpdateVolumeRequest } from './updateVolumeRequest';
import { VolumesGet200Response } from './volumesGet200Response';
import { VolumesGet200ResponseVolumesInner } from './volumesGet200ResponseVolumesInner';
import { VolumesGet200ResponseVolumesInnerLocation } from './volumesGet200ResponseVolumesInnerLocation';
import { VolumesIdActionsChangeProtectionPostRequest } from './volumesIdActionsChangeProtectionPostRequest';
import { VolumesIdActionsResizePostRequest } from './volumesIdActionsResizePostRequest';
import { VolumesIdGet200Response } from './volumesIdGet200Response';
import { VolumesPost201Response } from './volumesPost201Response';

/* tslint:disable:no-unused-variable */
let primitives = [
                    "string",
                    "boolean",
                    "double",
                    "integer",
                    "long",
                    "float",
                    "number",
                    "any"
                 ];

let enumsMap: {[index: string]: any} = {
        "Action.StatusEnum": Action.StatusEnum,
        "AddSubnetRequest.TypeEnum": AddSubnetRequest.TypeEnum,
        "AddTargetRequest.TypeEnum": AddTargetRequest.TypeEnum,
        "AssignPrimaryIPRequest.AssigneeTypeEnum": AssignPrimaryIPRequest.AssigneeTypeEnum,
        "Certificate.TypeEnum": Certificate.TypeEnum,
        "CertificateStatus.IssuanceEnum": CertificateStatus.IssuanceEnum,
        "CertificateStatus.RenewalEnum": CertificateStatus.RenewalEnum,
        "CreateCertificateRequest.TypeEnum": CreateCertificateRequest.TypeEnum,
        "CreateFirewallRequestApplyToInner.TypeEnum": CreateFirewallRequestApplyToInner.TypeEnum,
        "CreateFloatingIPRequest.TypeEnum": CreateFloatingIPRequest.TypeEnum,
        "CreateImageRequest.TypeEnum": CreateImageRequest.TypeEnum,
        "CreateNetworkRequestSubnetsInner.TypeEnum": CreateNetworkRequestSubnetsInner.TypeEnum,
        "CreatePlacementGroupRequest.TypeEnum": CreatePlacementGroupRequest.TypeEnum,
        "CreatePrimaryIPRequest.AssigneeTypeEnum": CreatePrimaryIPRequest.AssigneeTypeEnum,
        "CreatePrimaryIPRequest.TypeEnum": CreatePrimaryIPRequest.TypeEnum,
        "FirewallAppliedToInner.TypeEnum": FirewallAppliedToInner.TypeEnum,
        "FirewallAppliedToInnerAppliedToResourcesInner.TypeEnum": FirewallAppliedToInnerAppliedToResourcesInner.TypeEnum,
        "FirewallApplyToResources.TypeEnum": FirewallApplyToResources.TypeEnum,
        "FirewallRemoveFromResources.TypeEnum": FirewallRemoveFromResources.TypeEnum,
        "FloatingIpsGet200ResponseFloatingIpsInner.TypeEnum": FloatingIpsGet200ResponseFloatingIpsInner.TypeEnum,
        "ImagesGet200ResponseImagesInner.ArchitectureEnum": ImagesGet200ResponseImagesInner.ArchitectureEnum,
        "ImagesGet200ResponseImagesInner.OsFlavorEnum": ImagesGet200ResponseImagesInner.OsFlavorEnum,
        "ImagesGet200ResponseImagesInner.StatusEnum": ImagesGet200ResponseImagesInner.StatusEnum,
        "ImagesGet200ResponseImagesInner.TypeEnum": ImagesGet200ResponseImagesInner.TypeEnum,
        "IsosGet200ResponseIsosInner.ArchitectureEnum": IsosGet200ResponseIsosInner.ArchitectureEnum,
        "IsosGet200ResponseIsosInner.TypeEnum": IsosGet200ResponseIsosInner.TypeEnum,
        "LoadBalancerAlgorithm.TypeEnum": LoadBalancerAlgorithm.TypeEnum,
        "LoadBalancerService.ProtocolEnum": LoadBalancerService.ProtocolEnum,
        "LoadBalancerServiceHealthCheck.ProtocolEnum": LoadBalancerServiceHealthCheck.ProtocolEnum,
        "LoadBalancerTarget.TypeEnum": LoadBalancerTarget.TypeEnum,
        "LoadBalancerTargetHealthStatusInner.StatusEnum": LoadBalancerTargetHealthStatusInner.StatusEnum,
        "LoadBalancersGet200ResponseLoadBalancersInnerAlgorithm.TypeEnum": LoadBalancersGet200ResponseLoadBalancersInnerAlgorithm.TypeEnum,
        "LoadBalancersIdActionsChangeAlgorithmPostRequest.TypeEnum": LoadBalancersIdActionsChangeAlgorithmPostRequest.TypeEnum,
        "NetworksGet200ResponseNetworksInnerSubnetsInner.TypeEnum": NetworksGet200ResponseNetworksInnerSubnetsInner.TypeEnum,
        "NullableAction.StatusEnum": NullableAction.StatusEnum,
        "PlacementGroup.TypeEnum": PlacementGroup.TypeEnum,
        "PlacementGroupNullable.TypeEnum": PlacementGroupNullable.TypeEnum,
        "PricingGet200ResponsePricingFloatingIpsInner.TypeEnum": PricingGet200ResponsePricingFloatingIpsInner.TypeEnum,
        "PricingGet200ResponsePricingPrimaryIpsInner.TypeEnum": PricingGet200ResponsePricingPrimaryIpsInner.TypeEnum,
        "PrimaryIP.AssigneeTypeEnum": PrimaryIP.AssigneeTypeEnum,
        "PrimaryIP.TypeEnum": PrimaryIP.TypeEnum,
        "RemoveTargetRequest.TypeEnum": RemoveTargetRequest.TypeEnum,
        "Rule.DirectionEnum": Rule.DirectionEnum,
        "Rule.ProtocolEnum": Rule.ProtocolEnum,
        "ServerPublicNetFirewall.StatusEnum": ServerPublicNetFirewall.StatusEnum,
        "ServerTypesGet200ResponseServerTypesInner.ArchitectureEnum": ServerTypesGet200ResponseServerTypesInner.ArchitectureEnum,
        "ServerTypesGet200ResponseServerTypesInner.CpuTypeEnum": ServerTypesGet200ResponseServerTypesInner.CpuTypeEnum,
        "ServerTypesGet200ResponseServerTypesInner.StorageTypeEnum": ServerTypesGet200ResponseServerTypesInner.StorageTypeEnum,
        "ServersGet200ResponseServersInner.StatusEnum": ServersGet200ResponseServersInner.StatusEnum,
        "ServersGet200ResponseServersInnerImage.ArchitectureEnum": ServersGet200ResponseServersInnerImage.ArchitectureEnum,
        "ServersGet200ResponseServersInnerImage.OsFlavorEnum": ServersGet200ResponseServersInnerImage.OsFlavorEnum,
        "ServersGet200ResponseServersInnerImage.StatusEnum": ServersGet200ResponseServersInnerImage.StatusEnum,
        "ServersGet200ResponseServersInnerImage.TypeEnum": ServersGet200ResponseServersInnerImage.TypeEnum,
        "ServersGet200ResponseServersInnerIso.ArchitectureEnum": ServersGet200ResponseServersInnerIso.ArchitectureEnum,
        "ServersGet200ResponseServersInnerIso.TypeEnum": ServersGet200ResponseServersInnerIso.TypeEnum,
        "ServersGet200ResponseServersInnerServerType.CpuTypeEnum": ServersGet200ResponseServersInnerServerType.CpuTypeEnum,
        "ServersGet200ResponseServersInnerServerType.StorageTypeEnum": ServersGet200ResponseServersInnerServerType.StorageTypeEnum,
        "ServersIdActionsEnableRescuePostRequest.TypeEnum": ServersIdActionsEnableRescuePostRequest.TypeEnum,
        "UpdateImageRequest.TypeEnum": UpdateImageRequest.TypeEnum,
        "UpdateLoadBalancerService.ProtocolEnum": UpdateLoadBalancerService.ProtocolEnum,
        "UpdateLoadBalancerServiceHealthCheck.ProtocolEnum": UpdateLoadBalancerServiceHealthCheck.ProtocolEnum,
        "VolumesGet200ResponseVolumesInner.StatusEnum": VolumesGet200ResponseVolumesInner.StatusEnum,
}

let typeMap: {[index: string]: any} = {
    "Action": Action,
    "ActionError": ActionError,
    "ActionResourcesInner": ActionResourcesInner,
    "ActionResponse": ActionResponse,
    "ActionsResponse": ActionsResponse,
    "ActionsResponseMeta": ActionsResponseMeta,
    "ActionsResponseMetaPagination": ActionsResponseMetaPagination,
    "AddDeleteRouteRequest": AddDeleteRouteRequest,
    "AddSubnetRequest": AddSubnetRequest,
    "AddTargetRequest": AddTargetRequest,
    "AddTargetRequestLabelSelector": AddTargetRequestLabelSelector,
    "AddTargetRequestServer": AddTargetRequestServer,
    "AddToPlacementGroupRequest": AddToPlacementGroupRequest,
    "ApplyToResourcesRequest": ApplyToResourcesRequest,
    "AssignFloatingIPRequest": AssignFloatingIPRequest,
    "AssignPrimaryIPRequest": AssignPrimaryIPRequest,
    "AttachToNetworkRequest": AttachToNetworkRequest,
    "AttachVolumeRequest": AttachVolumeRequest,
    "Certificate": Certificate,
    "CertificateResponse": CertificateResponse,
    "CertificateStatus": CertificateStatus,
    "CertificateStatusError": CertificateStatusError,
    "CertificateUsedByInner": CertificateUsedByInner,
    "CertificatesResponse": CertificatesResponse,
    "ChangeDNSPTRRequest": ChangeDNSPTRRequest,
    "ChangeIPRangeRequest": ChangeIPRangeRequest,
    "ChangeLoadbalancerDnsPtrRequest": ChangeLoadbalancerDnsPtrRequest,
    "ChangeProtectionRequest": ChangeProtectionRequest,
    "ChangeProtectionRequest1": ChangeProtectionRequest1,
    "ChangeProtectionRequest2": ChangeProtectionRequest2,
    "ChangeTypeRequest": ChangeTypeRequest,
    "CreateCertificateRequest": CreateCertificateRequest,
    "CreateCertificateResponse": CreateCertificateResponse,
    "CreateFirewallRequest": CreateFirewallRequest,
    "CreateFirewallRequestApplyToInner": CreateFirewallRequestApplyToInner,
    "CreateFirewallRequestApplyToInnerLabelSelector": CreateFirewallRequestApplyToInnerLabelSelector,
    "CreateFirewallRequestApplyToInnerServer": CreateFirewallRequestApplyToInnerServer,
    "CreateFirewallResponse": CreateFirewallResponse,
    "CreateFloatingIPRequest": CreateFloatingIPRequest,
    "CreateImageRequest": CreateImageRequest,
    "CreateLoadBalancerRequest": CreateLoadBalancerRequest,
    "CreateLoadBalancerRequestLabels": CreateLoadBalancerRequestLabels,
    "CreateNetworkRequest": CreateNetworkRequest,
    "CreateNetworkRequestSubnetsInner": CreateNetworkRequestSubnetsInner,
    "CreatePlacementGroupRequest": CreatePlacementGroupRequest,
    "CreatePlacementGroupResponse": CreatePlacementGroupResponse,
    "CreatePrimaryIPRequest": CreatePrimaryIPRequest,
    "CreatePrimaryIPResponse": CreatePrimaryIPResponse,
    "CreateServerRequest": CreateServerRequest,
    "CreateServerRequestFirewallsInner": CreateServerRequestFirewallsInner,
    "CreateServerRequestPublicNet": CreateServerRequestPublicNet,
    "CreateServerResponse": CreateServerResponse,
    "CreateVolumeRequest": CreateVolumeRequest,
    "DatacentersGet200Response": DatacentersGet200Response,
    "DatacentersGet200ResponseDatacentersInner": DatacentersGet200ResponseDatacentersInner,
    "DatacentersGet200ResponseDatacentersInnerLocation": DatacentersGet200ResponseDatacentersInnerLocation,
    "DatacentersGet200ResponseDatacentersInnerServerTypes": DatacentersGet200ResponseDatacentersInnerServerTypes,
    "DatacentersIdGet200Response": DatacentersIdGet200Response,
    "DeleteSubnetRequest": DeleteSubnetRequest,
    "DeprecationInfo": DeprecationInfo,
    "DetachFromNetworkRequest": DetachFromNetworkRequest,
    "Firewall": Firewall,
    "FirewallAppliedToInner": FirewallAppliedToInner,
    "FirewallAppliedToInnerAppliedToResourcesInner": FirewallAppliedToInnerAppliedToResourcesInner,
    "FirewallAppliedToInnerAppliedToResourcesInnerServer": FirewallAppliedToInnerAppliedToResourcesInnerServer,
    "FirewallAppliedToInnerLabelSelector": FirewallAppliedToInnerLabelSelector,
    "FirewallApplyToResources": FirewallApplyToResources,
    "FirewallApplyToResourcesLabelSelector": FirewallApplyToResourcesLabelSelector,
    "FirewallApplyToResourcesServer": FirewallApplyToResourcesServer,
    "FirewallRemoveFromResources": FirewallRemoveFromResources,
    "FirewallResponse": FirewallResponse,
    "FirewallsResponse": FirewallsResponse,
    "FloatingIpsGet200Response": FloatingIpsGet200Response,
    "FloatingIpsGet200ResponseFloatingIpsInner": FloatingIpsGet200ResponseFloatingIpsInner,
    "FloatingIpsGet200ResponseFloatingIpsInnerDnsPtrInner": FloatingIpsGet200ResponseFloatingIpsInnerDnsPtrInner,
    "FloatingIpsGet200ResponseFloatingIpsInnerHomeLocation": FloatingIpsGet200ResponseFloatingIpsInnerHomeLocation,
    "FloatingIpsGet200ResponseFloatingIpsInnerProtection": FloatingIpsGet200ResponseFloatingIpsInnerProtection,
    "FloatingIpsIdActionsGet200Response": FloatingIpsIdActionsGet200Response,
    "FloatingIpsIdGet200Response": FloatingIpsIdGet200Response,
    "FloatingIpsPost201Response": FloatingIpsPost201Response,
    "ImagesGet200Response": ImagesGet200Response,
    "ImagesGet200ResponseImagesInner": ImagesGet200ResponseImagesInner,
    "ImagesGet200ResponseImagesInnerCreatedFrom": ImagesGet200ResponseImagesInnerCreatedFrom,
    "ImagesIdActionsChangeProtectionPostRequest": ImagesIdActionsChangeProtectionPostRequest,
    "ImagesIdGet200Response": ImagesIdGet200Response,
    "IsosGet200Response": IsosGet200Response,
    "IsosGet200ResponseIsosInner": IsosGet200ResponseIsosInner,
    "IsosIdGet200Response": IsosIdGet200Response,
    "LoadBalancerAlgorithm": LoadBalancerAlgorithm,
    "LoadBalancerService": LoadBalancerService,
    "LoadBalancerServiceHTTP": LoadBalancerServiceHTTP,
    "LoadBalancerServiceHTTP1": LoadBalancerServiceHTTP1,
    "LoadBalancerServiceHealthCheck": LoadBalancerServiceHealthCheck,
    "LoadBalancerServiceHealthCheckHttp": LoadBalancerServiceHealthCheckHttp,
    "LoadBalancerTarget": LoadBalancerTarget,
    "LoadBalancerTargetHealthStatusInner": LoadBalancerTargetHealthStatusInner,
    "LoadBalancerTargetIP": LoadBalancerTargetIP,
    "LoadBalancerTargetLabelSelector": LoadBalancerTargetLabelSelector,
    "LoadBalancerTargetServer": LoadBalancerTargetServer,
    "LoadBalancerTargetTarget": LoadBalancerTargetTarget,
    "LoadBalancerTypesGet200Response": LoadBalancerTypesGet200Response,
    "LoadBalancerTypesGet200ResponseLoadBalancerTypesInner": LoadBalancerTypesGet200ResponseLoadBalancerTypesInner,
    "LoadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInner": LoadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInner,
    "LoadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceHourly": LoadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceHourly,
    "LoadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceMonthly": LoadBalancerTypesGet200ResponseLoadBalancerTypesInnerPricesInnerPriceMonthly,
    "LoadBalancerTypesIdGet200Response": LoadBalancerTypesIdGet200Response,
    "LoadBalancersGet200Response": LoadBalancersGet200Response,
    "LoadBalancersGet200ResponseLoadBalancersInner": LoadBalancersGet200ResponseLoadBalancersInner,
    "LoadBalancersGet200ResponseLoadBalancersInnerAlgorithm": LoadBalancersGet200ResponseLoadBalancersInnerAlgorithm,
    "LoadBalancersGet200ResponseLoadBalancersInnerLocation": LoadBalancersGet200ResponseLoadBalancersInnerLocation,
    "LoadBalancersGet200ResponseLoadBalancersInnerPrivateNetInner": LoadBalancersGet200ResponseLoadBalancersInnerPrivateNetInner,
    "LoadBalancersGet200ResponseLoadBalancersInnerPublicNet": LoadBalancersGet200ResponseLoadBalancersInnerPublicNet,
    "LoadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv4": LoadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv4,
    "LoadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv6": LoadBalancersGet200ResponseLoadBalancersInnerPublicNetIpv6,
    "LoadBalancersIdActionsAttachToNetworkPostRequest": LoadBalancersIdActionsAttachToNetworkPostRequest,
    "LoadBalancersIdActionsChangeAlgorithmPostRequest": LoadBalancersIdActionsChangeAlgorithmPostRequest,
    "LoadBalancersIdActionsChangeProtectionPostRequest": LoadBalancersIdActionsChangeProtectionPostRequest,
    "LoadBalancersIdActionsDeleteServicePostRequest": LoadBalancersIdActionsDeleteServicePostRequest,
    "LoadBalancersIdActionsDetachFromNetworkPostRequest": LoadBalancersIdActionsDetachFromNetworkPostRequest,
    "LoadBalancersIdGet200Response": LoadBalancersIdGet200Response,
    "LoadBalancersIdMetricsGet200Response": LoadBalancersIdMetricsGet200Response,
    "LoadBalancersIdMetricsGet200ResponseMetrics": LoadBalancersIdMetricsGet200ResponseMetrics,
    "LoadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValue": LoadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValue,
    "LoadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValueValuesInnerInner": LoadBalancersIdMetricsGet200ResponseMetricsTimeSeriesValueValuesInnerInner,
    "LoadBalancersIdPutRequest": LoadBalancersIdPutRequest,
    "LoadBalancersPost201Response": LoadBalancersPost201Response,
    "LocationsGet200Response": LocationsGet200Response,
    "LocationsIdGet200Response": LocationsIdGet200Response,
    "NetworksGet200Response": NetworksGet200Response,
    "NetworksGet200ResponseNetworksInner": NetworksGet200ResponseNetworksInner,
    "NetworksGet200ResponseNetworksInnerProtection": NetworksGet200ResponseNetworksInnerProtection,
    "NetworksGet200ResponseNetworksInnerRoutesInner": NetworksGet200ResponseNetworksInnerRoutesInner,
    "NetworksGet200ResponseNetworksInnerSubnetsInner": NetworksGet200ResponseNetworksInnerSubnetsInner,
    "NetworksPost201Response": NetworksPost201Response,
    "NullableAction": NullableAction,
    "PlacementGroup": PlacementGroup,
    "PlacementGroupNullable": PlacementGroupNullable,
    "PlacementGroupResponse": PlacementGroupResponse,
    "PlacementGroupsResponse": PlacementGroupsResponse,
    "PricingGet200Response": PricingGet200Response,
    "PricingGet200ResponsePricing": PricingGet200ResponsePricing,
    "PricingGet200ResponsePricingFloatingIp": PricingGet200ResponsePricingFloatingIp,
    "PricingGet200ResponsePricingFloatingIpPriceMonthly": PricingGet200ResponsePricingFloatingIpPriceMonthly,
    "PricingGet200ResponsePricingFloatingIpsInner": PricingGet200ResponsePricingFloatingIpsInner,
    "PricingGet200ResponsePricingFloatingIpsInnerPricesInner": PricingGet200ResponsePricingFloatingIpsInnerPricesInner,
    "PricingGet200ResponsePricingFloatingIpsInnerPricesInnerPriceMonthly": PricingGet200ResponsePricingFloatingIpsInnerPricesInnerPriceMonthly,
    "PricingGet200ResponsePricingImage": PricingGet200ResponsePricingImage,
    "PricingGet200ResponsePricingLoadBalancerTypesInner": PricingGet200ResponsePricingLoadBalancerTypesInner,
    "PricingGet200ResponsePricingLoadBalancerTypesInnerPricesInner": PricingGet200ResponsePricingLoadBalancerTypesInnerPricesInner,
    "PricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceHourly": PricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceHourly,
    "PricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceMonthly": PricingGet200ResponsePricingLoadBalancerTypesInnerPricesInnerPriceMonthly,
    "PricingGet200ResponsePricingPrimaryIpsInner": PricingGet200ResponsePricingPrimaryIpsInner,
    "PricingGet200ResponsePricingPrimaryIpsInnerPricesInner": PricingGet200ResponsePricingPrimaryIpsInnerPricesInner,
    "PricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceHourly": PricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceHourly,
    "PricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceMonthly": PricingGet200ResponsePricingPrimaryIpsInnerPricesInnerPriceMonthly,
    "PricingGet200ResponsePricingServerBackup": PricingGet200ResponsePricingServerBackup,
    "PricingGet200ResponsePricingServerTypesInner": PricingGet200ResponsePricingServerTypesInner,
    "PricingGet200ResponsePricingServerTypesInnerPricesInner": PricingGet200ResponsePricingServerTypesInnerPricesInner,
    "PricingGet200ResponsePricingServerTypesInnerPricesInnerPriceHourly": PricingGet200ResponsePricingServerTypesInnerPricesInnerPriceHourly,
    "PricingGet200ResponsePricingServerTypesInnerPricesInnerPriceMonthly": PricingGet200ResponsePricingServerTypesInnerPricesInnerPriceMonthly,
    "PricingGet200ResponsePricingTraffic": PricingGet200ResponsePricingTraffic,
    "PricingGet200ResponsePricingVolume": PricingGet200ResponsePricingVolume,
    "PrimaryIP": PrimaryIP,
    "PrimaryIPDatacenter": PrimaryIPDatacenter,
    "PrimaryIPDnsPtrInner": PrimaryIPDnsPtrInner,
    "PrimaryIPResponse": PrimaryIPResponse,
    "PrimaryIPsResponse": PrimaryIPsResponse,
    "RebuildServerRequest": RebuildServerRequest,
    "RemoveFromResourcesRequest": RemoveFromResourcesRequest,
    "RemoveTargetRequest": RemoveTargetRequest,
    "Rule": Rule,
    "ServerPublicNetFirewall": ServerPublicNetFirewall,
    "ServerTypesGet200Response": ServerTypesGet200Response,
    "ServerTypesGet200ResponseServerTypesInner": ServerTypesGet200ResponseServerTypesInner,
    "ServerTypesIdGet200Response": ServerTypesIdGet200Response,
    "ServersGet200Response": ServersGet200Response,
    "ServersGet200ResponseServersInner": ServersGet200ResponseServersInner,
    "ServersGet200ResponseServersInnerDatacenter": ServersGet200ResponseServersInnerDatacenter,
    "ServersGet200ResponseServersInnerImage": ServersGet200ResponseServersInnerImage,
    "ServersGet200ResponseServersInnerIso": ServersGet200ResponseServersInnerIso,
    "ServersGet200ResponseServersInnerPrivateNetInner": ServersGet200ResponseServersInnerPrivateNetInner,
    "ServersGet200ResponseServersInnerProtection": ServersGet200ResponseServersInnerProtection,
    "ServersGet200ResponseServersInnerPublicNet": ServersGet200ResponseServersInnerPublicNet,
    "ServersGet200ResponseServersInnerPublicNetIpv4": ServersGet200ResponseServersInnerPublicNetIpv4,
    "ServersGet200ResponseServersInnerPublicNetIpv6": ServersGet200ResponseServersInnerPublicNetIpv6,
    "ServersGet200ResponseServersInnerPublicNetIpv6DnsPtrInner": ServersGet200ResponseServersInnerPublicNetIpv6DnsPtrInner,
    "ServersGet200ResponseServersInnerServerType": ServersGet200ResponseServersInnerServerType,
    "ServersIdActionsAttachIsoPostRequest": ServersIdActionsAttachIsoPostRequest,
    "ServersIdActionsChangeAliasIpsPostRequest": ServersIdActionsChangeAliasIpsPostRequest,
    "ServersIdActionsChangeDnsPtrPostRequest": ServersIdActionsChangeDnsPtrPostRequest,
    "ServersIdActionsChangeProtectionPostRequest": ServersIdActionsChangeProtectionPostRequest,
    "ServersIdActionsChangeTypePostRequest": ServersIdActionsChangeTypePostRequest,
    "ServersIdActionsCreateImagePost201Response": ServersIdActionsCreateImagePost201Response,
    "ServersIdActionsEnableRescuePost201Response": ServersIdActionsEnableRescuePost201Response,
    "ServersIdActionsEnableRescuePostRequest": ServersIdActionsEnableRescuePostRequest,
    "ServersIdActionsRebuildPost201Response": ServersIdActionsRebuildPost201Response,
    "ServersIdActionsRequestConsolePost201Response": ServersIdActionsRequestConsolePost201Response,
    "ServersIdDelete200Response": ServersIdDelete200Response,
    "ServersIdGet200Response": ServersIdGet200Response,
    "SetRulesRequest": SetRulesRequest,
    "SshKeysGet200Response": SshKeysGet200Response,
    "SshKeysGet200ResponseSshKeysInner": SshKeysGet200ResponseSshKeysInner,
    "SshKeysIdPutRequest": SshKeysIdPutRequest,
    "SshKeysPost201Response": SshKeysPost201Response,
    "SshKeysPostRequest": SshKeysPostRequest,
    "UpdateCertificateRequest": UpdateCertificateRequest,
    "UpdateFirewallRequest": UpdateFirewallRequest,
    "UpdateFloatingIPRequest": UpdateFloatingIPRequest,
    "UpdateImageRequest": UpdateImageRequest,
    "UpdateLoadBalancerService": UpdateLoadBalancerService,
    "UpdateLoadBalancerServiceHealthCheck": UpdateLoadBalancerServiceHealthCheck,
    "UpdateLoadBalancerServiceHealthCheckHttp": UpdateLoadBalancerServiceHealthCheckHttp,
    "UpdateNetworkRequest": UpdateNetworkRequest,
    "UpdateNetworkRequestLabels": UpdateNetworkRequestLabels,
    "UpdatePlacementGroupRequest": UpdatePlacementGroupRequest,
    "UpdatePrimaryIPRequest": UpdatePrimaryIPRequest,
    "UpdateServerRequest": UpdateServerRequest,
    "UpdateVolumeRequest": UpdateVolumeRequest,
    "VolumesGet200Response": VolumesGet200Response,
    "VolumesGet200ResponseVolumesInner": VolumesGet200ResponseVolumesInner,
    "VolumesGet200ResponseVolumesInnerLocation": VolumesGet200ResponseVolumesInnerLocation,
    "VolumesIdActionsChangeProtectionPostRequest": VolumesIdActionsChangeProtectionPostRequest,
    "VolumesIdActionsResizePostRequest": VolumesIdActionsResizePostRequest,
    "VolumesIdGet200Response": VolumesIdGet200Response,
    "VolumesPost201Response": VolumesPost201Response,
}

export class ObjectSerializer {
    public static findCorrectType(data: any, expectedType: string) {
        if (data == undefined) {
            return expectedType;
        } else if (primitives.indexOf(expectedType.toLowerCase()) !== -1) {
            return expectedType;
        } else if (expectedType === "Date") {
            return expectedType;
        } else {
            if (enumsMap[expectedType]) {
                return expectedType;
            }

            if (!typeMap[expectedType]) {
                return expectedType; // w/e we don't know the type
            }

            // Check the discriminator
            let discriminatorProperty = typeMap[expectedType].discriminator;
            if (discriminatorProperty == null) {
                return expectedType; // the type does not have a discriminator. use it.
            } else {
                if (data[discriminatorProperty]) {
                    var discriminatorType = data[discriminatorProperty];
                    if(typeMap[discriminatorType]){
                        return discriminatorType; // use the type given in the discriminator
                    } else {
                        return expectedType; // discriminator did not map to a type
                    }
                } else {
                    return expectedType; // discriminator was not present (or an empty string)
                }
            }
        }
    }

    public static serialize(data: any, type: string) {
        if (data == undefined) {
            return data;
        } else if (primitives.indexOf(type.toLowerCase()) !== -1) {
            return data;
        } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6
            let subType: string = type.replace("Array<", ""); // Array<Type> => Type>
            subType = subType.substring(0, subType.length - 1); // Type> => Type
            let transformedData: any[] = [];
            for (let index = 0; index < data.length; index++) {
                let datum = data[index];
                transformedData.push(ObjectSerializer.serialize(datum, subType));
            }
            return transformedData;
        } else if (type === "Date") {
            return data.toISOString();
        } else {
            if (enumsMap[type]) {
                return data;
            }
            if (!typeMap[type]) { // in case we dont know the type
                return data;
            }

            // Get the actual type of this object
            type = this.findCorrectType(data, type);

            // get the map for the correct type.
            let attributeTypes = typeMap[type].getAttributeTypeMap();
            let instance: {[index: string]: any} = {};
            for (let index = 0; index < attributeTypes.length; index++) {
                let attributeType = attributeTypes[index];
                instance[attributeType.baseName] = ObjectSerializer.serialize(data[attributeType.name], attributeType.type);
            }
            return instance;
        }
    }

    public static deserialize(data: any, type: string) {
        // polymorphism may change the actual type.
        type = ObjectSerializer.findCorrectType(data, type);
        if (data == undefined) {
            return data;
        } else if (primitives.indexOf(type.toLowerCase()) !== -1) {
            return data;
        } else if (type.lastIndexOf("Array<", 0) === 0) { // string.startsWith pre es6
            let subType: string = type.replace("Array<", ""); // Array<Type> => Type>
            subType = subType.substring(0, subType.length - 1); // Type> => Type
            let transformedData: any[] = [];
            for (let index = 0; index < data.length; index++) {
                let datum = data[index];
                transformedData.push(ObjectSerializer.deserialize(datum, subType));
            }
            return transformedData;
        } else if (type === "Date") {
            return new Date(data);
        } else {
            if (enumsMap[type]) {// is Enum
                return data;
            }

            if (!typeMap[type]) { // dont know the type
                return data;
            }
            let instance = new typeMap[type]();
            let attributeTypes = typeMap[type].getAttributeTypeMap();
            for (let index = 0; index < attributeTypes.length; index++) {
                let attributeType = attributeTypes[index];
                instance[attributeType.name] = ObjectSerializer.deserialize(data[attributeType.baseName], attributeType.type);
            }
            return instance;
        }
    }
}

export interface Authentication {
    /**
    * Apply authentication settings to header and query params.
    */
    applyToRequest(requestOptions: localVarRequest.Options): Promise<void> | void;
}

export class HttpBasicAuth implements Authentication {
    public username: string = '';
    public password: string = '';

    applyToRequest(requestOptions: localVarRequest.Options): void {
        requestOptions.auth = {
            username: this.username, password: this.password
        }
    }
}

export class HttpBearerAuth implements Authentication {
    public accessToken: string | (() => string) = '';

    applyToRequest(requestOptions: localVarRequest.Options): void {
        if (requestOptions && requestOptions.headers) {
            const accessToken = typeof this.accessToken === 'function'
                            ? this.accessToken()
                            : this.accessToken;
            requestOptions.headers["Authorization"] = "Bearer " + accessToken;
        }
    }
}

export class ApiKeyAuth implements Authentication {
    public apiKey: string = '';

    constructor(private location: string, private paramName: string) {
    }

    applyToRequest(requestOptions: localVarRequest.Options): void {
        if (this.location == "query") {
            (<any>requestOptions.qs)[this.paramName] = this.apiKey;
        } else if (this.location == "header" && requestOptions && requestOptions.headers) {
            requestOptions.headers[this.paramName] = this.apiKey;
        } else if (this.location == 'cookie' && requestOptions && requestOptions.headers) {
            if (requestOptions.headers['Cookie']) {
                requestOptions.headers['Cookie'] += '; ' + this.paramName + '=' + encodeURIComponent(this.apiKey);
            }
            else {
                requestOptions.headers['Cookie'] = this.paramName + '=' + encodeURIComponent(this.apiKey);
            }
        }
    }
}

export class OAuth implements Authentication {
    public accessToken: string = '';

    applyToRequest(requestOptions: localVarRequest.Options): void {
        if (requestOptions && requestOptions.headers) {
            requestOptions.headers["Authorization"] = "Bearer " + this.accessToken;
        }
    }
}

export class VoidAuth implements Authentication {
    public username: string = '';
    public password: string = '';

    applyToRequest(_: localVarRequest.Options): void {
        // Do nothing
    }
}

export type Interceptor = (requestOptions: localVarRequest.Options) => (Promise<void> | void);
