/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 * 
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
*/

import { ServiceClientOptions, RequestOptions, ServiceCallback } from 'ms-rest';
import * as models from '../models';


/**
 * @class
 * Profiles
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the CdnManagementClient.
 */
export interface Profiles {

    /**
     * @summary Lists the CDN profiles within an Azure subscitption.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listBySubscriptionId(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ProfileListResult>): void;
    listBySubscriptionId(callback: ServiceCallback<models.ProfileListResult>): void;

    /**
     * @summary Lists the CDN profiles within a resource group.
     *
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listByResourceGroup(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ProfileListResult>): void;
    listByResourceGroup(resourceGroupName: string, callback: ServiceCallback<models.ProfileListResult>): void;

    /**
     * @summary Gets a CDN profile with the specified parameters.
     *
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Profile>): void;
    get(profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Profile>): void;

    /**
     * @summary Creates a new CDN profile with the specified parameters.
     *
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {object} profileProperties Profile properties needed for creation.
     * 
     * @param {string} [profileProperties.location] Profile location
     * 
     * @param {object} [profileProperties.tags] Profile tags
     * 
     * @param {object} [profileProperties.sku] The SKU (pricing tier) of the CDN
     * profile.
     * 
     * @param {string} [profileProperties.sku.name] Name of the pricing tier.
     * Possible values include: 'Standard_Verizon', 'Premium_Verizon',
     * 'Custom_Verizon', 'Standard_Akamai'
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    create(profileName: string, profileProperties: models.ProfileCreateParameters, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Profile>): void;
    create(profileName: string, profileProperties: models.ProfileCreateParameters, resourceGroupName: string, callback: ServiceCallback<models.Profile>): void;

    /**
     * @summary Creates a new CDN profile with the specified parameters.
     *
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {object} profileProperties Profile properties needed for creation.
     * 
     * @param {string} [profileProperties.location] Profile location
     * 
     * @param {object} [profileProperties.tags] Profile tags
     * 
     * @param {object} [profileProperties.sku] The SKU (pricing tier) of the CDN
     * profile.
     * 
     * @param {string} [profileProperties.sku.name] Name of the pricing tier.
     * Possible values include: 'Standard_Verizon', 'Premium_Verizon',
     * 'Custom_Verizon', 'Standard_Akamai'
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreate(profileName: string, profileProperties: models.ProfileCreateParameters, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Profile>): void;
    beginCreate(profileName: string, profileProperties: models.ProfileCreateParameters, resourceGroupName: string, callback: ServiceCallback<models.Profile>): void;

    /**
     * @summary Updates an existing CDN profile with the specified parameters.
     *
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} tags Profile tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    update(profileName: string, resourceGroupName: string, tags: { [propertyName: string]: string }, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Profile>): void;
    update(profileName: string, resourceGroupName: string, tags: { [propertyName: string]: string }, callback: ServiceCallback<models.Profile>): void;

    /**
     * @summary Updates an existing CDN profile with the specified parameters.
     *
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} tags Profile tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginUpdate(profileName: string, resourceGroupName: string, tags: { [propertyName: string]: string }, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Profile>): void;
    beginUpdate(profileName: string, resourceGroupName: string, tags: { [propertyName: string]: string }, callback: ServiceCallback<models.Profile>): void;

    /**
     * @summary Deletes an existing CDN profile with the specified parameters.
     * Deleting a profile will result in the deletion of all subresources
     * including endpoints, origins and custom domains.
     *
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteIfExists(profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteIfExists(profileName: string, resourceGroupName: string, callback: ServiceCallback<void>): void;

    /**
     * @summary Deletes an existing CDN profile with the specified parameters.
     * Deleting a profile will result in the deletion of all subresources
     * including endpoints, origins and custom domains.
     *
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteIfExists(profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteIfExists(profileName: string, resourceGroupName: string, callback: ServiceCallback<void>): void;

    /**
     * @summary Generates a dynamic SSO URI used to sign in to the CDN
     * Supplemental Portal used for advanced management tasks, such as Country
     * Filtering, Advanced HTTP Reports, and Real-time Stats and Alerts. The SSO
     * URI changes approximately every 10 minutes.
     *
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    generateSsoUri(profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SsoUri>): void;
    generateSsoUri(profileName: string, resourceGroupName: string, callback: ServiceCallback<models.SsoUri>): void;
}

/**
 * @class
 * Endpoints
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the CdnManagementClient.
 */
export interface Endpoints {

    /**
     * @summary Lists existing CDN endpoints within a profile.
     *
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listByProfile(profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.EndpointListResult>): void;
    listByProfile(profileName: string, resourceGroupName: string, callback: ServiceCallback<models.EndpointListResult>): void;

    /**
     * @summary Gets an existing CDN endpoint with the specified parameters.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Endpoint>): void;
    get(endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Endpoint>): void;

    /**
     * @summary Creates a new CDN endpoint with the specified parameters.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {object} endpointProperties Endpoint properties
     * 
     * @param {string} [endpointProperties.location] Endpoint location
     * 
     * @param {object} [endpointProperties.tags] Endpoint tags
     * 
     * @param {string} [endpointProperties.originHostHeader] The host header CDN
     * provider will send along with content requests to origins. The default
     * value is the host name of the origin.
     * 
     * @param {string} [endpointProperties.originPath] The path used for origin
     * requests.
     * 
     * @param {array} [endpointProperties.contentTypesToCompress] List of content
     * types on which compression will be applied. The value for the elements
     * should be a valid MIME type.
     * 
     * @param {boolean} [endpointProperties.isCompressionEnabled] Indicates
     * whether content compression is enabled. Default value is false. If
     * compression is enabled, the content transferred from the CDN endpoint to
     * the end user will be compressed. The requested content must be larger than
     * 1 byte and smaller than 1 MB.
     * 
     * @param {boolean} [endpointProperties.isHttpAllowed] Indicates whether HTTP
     * traffic is allowed on the endpoint. Default value is true. At least one
     * protocol (HTTP or HTTPS) must be allowed.
     * 
     * @param {boolean} [endpointProperties.isHttpsAllowed] Indicates whether
     * https traffic is allowed on the endpoint. Default value is true. At least
     * one protocol (HTTP or HTTPS) must be allowed.
     * 
     * @param {string} [endpointProperties.queryStringCachingBehavior] Defines the
     * query string caching behavior. Possible values include:
     * 'IgnoreQueryString', 'BypassCaching', 'UseQueryString', 'NotSet'
     * 
     * @param {array} [endpointProperties.origins] The set of origins for the CDN
     * endpoint. When multiple origins exist, the first origin will be used as
     * primary and rest will be used as failover options.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    create(endpointName: string, endpointProperties: models.EndpointCreateParameters, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Endpoint>): void;
    create(endpointName: string, endpointProperties: models.EndpointCreateParameters, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Endpoint>): void;

    /**
     * @summary Creates a new CDN endpoint with the specified parameters.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {object} endpointProperties Endpoint properties
     * 
     * @param {string} [endpointProperties.location] Endpoint location
     * 
     * @param {object} [endpointProperties.tags] Endpoint tags
     * 
     * @param {string} [endpointProperties.originHostHeader] The host header CDN
     * provider will send along with content requests to origins. The default
     * value is the host name of the origin.
     * 
     * @param {string} [endpointProperties.originPath] The path used for origin
     * requests.
     * 
     * @param {array} [endpointProperties.contentTypesToCompress] List of content
     * types on which compression will be applied. The value for the elements
     * should be a valid MIME type.
     * 
     * @param {boolean} [endpointProperties.isCompressionEnabled] Indicates
     * whether content compression is enabled. Default value is false. If
     * compression is enabled, the content transferred from the CDN endpoint to
     * the end user will be compressed. The requested content must be larger than
     * 1 byte and smaller than 1 MB.
     * 
     * @param {boolean} [endpointProperties.isHttpAllowed] Indicates whether HTTP
     * traffic is allowed on the endpoint. Default value is true. At least one
     * protocol (HTTP or HTTPS) must be allowed.
     * 
     * @param {boolean} [endpointProperties.isHttpsAllowed] Indicates whether
     * https traffic is allowed on the endpoint. Default value is true. At least
     * one protocol (HTTP or HTTPS) must be allowed.
     * 
     * @param {string} [endpointProperties.queryStringCachingBehavior] Defines the
     * query string caching behavior. Possible values include:
     * 'IgnoreQueryString', 'BypassCaching', 'UseQueryString', 'NotSet'
     * 
     * @param {array} [endpointProperties.origins] The set of origins for the CDN
     * endpoint. When multiple origins exist, the first origin will be used as
     * primary and rest will be used as failover options.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreate(endpointName: string, endpointProperties: models.EndpointCreateParameters, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Endpoint>): void;
    beginCreate(endpointName: string, endpointProperties: models.EndpointCreateParameters, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Endpoint>): void;

    /**
     * @summary Updates an existing CDN endpoint with the specified parameters.
     * Only tags and OriginHostHeader can be updated after creating an endpoint.
     * To update origins, use the Update Origin operation. To update custom
     * domains, use the Update Custom Domain operation.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {object} endpointProperties Endpoint properties
     * 
     * @param {object} [endpointProperties.tags] Endpoint tags
     * 
     * @param {string} [endpointProperties.originHostHeader] The host header the
     * CDN provider will send along with content requests to origins. The default
     * value is the host name of the origin.
     * 
     * @param {string} [endpointProperties.originPath] The path used for origin
     * requests.
     * 
     * @param {array} [endpointProperties.contentTypesToCompress] List of content
     * types on which compression will be applied. The value for the elements
     * should be a valid MIME type.
     * 
     * @param {boolean} [endpointProperties.isCompressionEnabled] Indicates
     * whether content compression is enabled. Default value is false. If
     * compression is enabled, the content transferred from the CDN endpoint to
     * the end user will be compressed. The requested content must be larger than
     * 1 byte and smaller than 1 MB.
     * 
     * @param {boolean} [endpointProperties.isHttpAllowed] Indicates whether HTTP
     * traffic is allowed on the endpoint. Default value is true. At least one
     * protocol (HTTP or HTTPS) must be allowed.
     * 
     * @param {boolean} [endpointProperties.isHttpsAllowed] Indicates whether
     * HTTPS traffic is allowed on the endpoint. Default value is true. At least
     * one protocol (HTTP or HTTPS) must be allowed.
     * 
     * @param {string} [endpointProperties.queryStringCachingBehavior] Defines the
     * query string caching behavior. Possible values include:
     * 'IgnoreQueryString', 'BypassCaching', 'UseQueryString', 'NotSet'
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    update(endpointName: string, endpointProperties: models.EndpointUpdateParameters, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Endpoint>): void;
    update(endpointName: string, endpointProperties: models.EndpointUpdateParameters, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Endpoint>): void;

    /**
     * @summary Updates an existing CDN endpoint with the specified parameters.
     * Only tags and OriginHostHeader can be updated after creating an endpoint.
     * To update origins, use the Update Origin operation. To update custom
     * domains, use the Update Custom Domain operation.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {object} endpointProperties Endpoint properties
     * 
     * @param {object} [endpointProperties.tags] Endpoint tags
     * 
     * @param {string} [endpointProperties.originHostHeader] The host header the
     * CDN provider will send along with content requests to origins. The default
     * value is the host name of the origin.
     * 
     * @param {string} [endpointProperties.originPath] The path used for origin
     * requests.
     * 
     * @param {array} [endpointProperties.contentTypesToCompress] List of content
     * types on which compression will be applied. The value for the elements
     * should be a valid MIME type.
     * 
     * @param {boolean} [endpointProperties.isCompressionEnabled] Indicates
     * whether content compression is enabled. Default value is false. If
     * compression is enabled, the content transferred from the CDN endpoint to
     * the end user will be compressed. The requested content must be larger than
     * 1 byte and smaller than 1 MB.
     * 
     * @param {boolean} [endpointProperties.isHttpAllowed] Indicates whether HTTP
     * traffic is allowed on the endpoint. Default value is true. At least one
     * protocol (HTTP or HTTPS) must be allowed.
     * 
     * @param {boolean} [endpointProperties.isHttpsAllowed] Indicates whether
     * HTTPS traffic is allowed on the endpoint. Default value is true. At least
     * one protocol (HTTP or HTTPS) must be allowed.
     * 
     * @param {string} [endpointProperties.queryStringCachingBehavior] Defines the
     * query string caching behavior. Possible values include:
     * 'IgnoreQueryString', 'BypassCaching', 'UseQueryString', 'NotSet'
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginUpdate(endpointName: string, endpointProperties: models.EndpointUpdateParameters, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Endpoint>): void;
    beginUpdate(endpointName: string, endpointProperties: models.EndpointUpdateParameters, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Endpoint>): void;

    /**
     * @summary Deletes an existing CDN endpoint with the specified parameters.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteIfExists(endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteIfExists(endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<void>): void;

    /**
     * @summary Deletes an existing CDN endpoint with the specified parameters.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteIfExists(endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteIfExists(endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<void>): void;

    /**
     * @summary Starts an existing stopped CDN endpoint.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    start(endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Endpoint>): void;
    start(endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Endpoint>): void;

    /**
     * @summary Starts an existing stopped CDN endpoint.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginStart(endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Endpoint>): void;
    beginStart(endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Endpoint>): void;

    /**
     * @summary Stops an existing running CDN endpoint.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    stop(endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Endpoint>): void;
    stop(endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Endpoint>): void;

    /**
     * @summary Stops an existing running CDN endpoint.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginStop(endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Endpoint>): void;
    beginStop(endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Endpoint>): void;

    /**
     * @summary Forcibly purges CDN endpoint content.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {array} contentPaths The path to the content to be purged. Can
     * describe a file path or a wild card directory.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    purgeContent(endpointName: string, profileName: string, resourceGroupName: string, contentPaths: string[], options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    purgeContent(endpointName: string, profileName: string, resourceGroupName: string, contentPaths: string[], callback: ServiceCallback<void>): void;

    /**
     * @summary Forcibly purges CDN endpoint content.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {array} contentPaths The path to the content to be purged. Can
     * describe a file path or a wild card directory.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginPurgeContent(endpointName: string, profileName: string, resourceGroupName: string, contentPaths: string[], options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginPurgeContent(endpointName: string, profileName: string, resourceGroupName: string, contentPaths: string[], callback: ServiceCallback<void>): void;

    /**
     * @summary Forcibly pre-loads CDN endpoint content.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {array} contentPaths The path to the content to be loaded. Should
     * describe a file path.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    loadContent(endpointName: string, profileName: string, resourceGroupName: string, contentPaths: string[], options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    loadContent(endpointName: string, profileName: string, resourceGroupName: string, contentPaths: string[], callback: ServiceCallback<void>): void;

    /**
     * @summary Forcibly pre-loads CDN endpoint content.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {array} contentPaths The path to the content to be loaded. Should
     * describe a file path.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginLoadContent(endpointName: string, profileName: string, resourceGroupName: string, contentPaths: string[], options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginLoadContent(endpointName: string, profileName: string, resourceGroupName: string, contentPaths: string[], callback: ServiceCallback<void>): void;

    /**
     * @summary Validates a custom domain mapping to ensure it maps to the correct
     * CNAME in DNS.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {string} hostName The host name of the custom domain. Must be a
     * domain name.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    validateCustomDomain(endpointName: string, profileName: string, resourceGroupName: string, hostName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ValidateCustomDomainOutput>): void;
    validateCustomDomain(endpointName: string, profileName: string, resourceGroupName: string, hostName: string, callback: ServiceCallback<models.ValidateCustomDomainOutput>): void;
}

/**
 * @class
 * Origins
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the CdnManagementClient.
 */
export interface Origins {

    /**
     * @summary Lists the existing CDN origins within an endpoint.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listByEndpoint(endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.OriginListResult>): void;
    listByEndpoint(endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.OriginListResult>): void;

    /**
     * @summary Gets an existing CDN origin within an endpoint.
     *
     * @param {string} originName Name of the origin, an arbitrary value but it
     * needs to be unique under endpoint
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(originName: string, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Origin>): void;
    get(originName: string, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Origin>): void;

    /**
     * @summary Creates a new CDN origin within an endpoint.
     *
     * @param {string} originName Name of the origin, an arbitrary value but it
     * needs to be unique under endpoint
     * 
     * @param {object} originProperties Origin properties
     * 
     * @param {string} [originProperties.hostName] The address of the origin.
     * Domain names, IPv4 addresses, and IPv6 addresses are supported.
     * 
     * @param {number} [originProperties.httpPort] The value of the HTTP port.
     * Must be between 1 and 65535.
     * 
     * @param {number} [originProperties.httpsPort] The value of the HTTPS port.
     * Must be between 1 and 65535.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    create(originName: string, originProperties: models.OriginParameters, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Origin>): void;
    create(originName: string, originProperties: models.OriginParameters, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Origin>): void;

    /**
     * @summary Creates a new CDN origin within an endpoint.
     *
     * @param {string} originName Name of the origin, an arbitrary value but it
     * needs to be unique under endpoint
     * 
     * @param {object} originProperties Origin properties
     * 
     * @param {string} [originProperties.hostName] The address of the origin.
     * Domain names, IPv4 addresses, and IPv6 addresses are supported.
     * 
     * @param {number} [originProperties.httpPort] The value of the HTTP port.
     * Must be between 1 and 65535.
     * 
     * @param {number} [originProperties.httpsPort] The value of the HTTPS port.
     * Must be between 1 and 65535.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreate(originName: string, originProperties: models.OriginParameters, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Origin>): void;
    beginCreate(originName: string, originProperties: models.OriginParameters, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Origin>): void;

    /**
     * @summary Updates an existing CDN origin within an endpoint.
     *
     * @param {string} originName Name of the origin. Must be unique within
     * endpoint.
     * 
     * @param {object} originProperties Origin properties
     * 
     * @param {string} [originProperties.hostName] The address of the origin.
     * Domain names, IPv4 addresses, and IPv6 addresses are supported.
     * 
     * @param {number} [originProperties.httpPort] The value of the HTTP port.
     * Must be between 1 and 65535.
     * 
     * @param {number} [originProperties.httpsPort] The value of the HTTPS port.
     * Must be between 1 and 65535.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    update(originName: string, originProperties: models.OriginParameters, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Origin>): void;
    update(originName: string, originProperties: models.OriginParameters, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Origin>): void;

    /**
     * @summary Updates an existing CDN origin within an endpoint.
     *
     * @param {string} originName Name of the origin. Must be unique within
     * endpoint.
     * 
     * @param {object} originProperties Origin properties
     * 
     * @param {string} [originProperties.hostName] The address of the origin.
     * Domain names, IPv4 addresses, and IPv6 addresses are supported.
     * 
     * @param {number} [originProperties.httpPort] The value of the HTTP port.
     * Must be between 1 and 65535.
     * 
     * @param {number} [originProperties.httpsPort] The value of the HTTPS port.
     * Must be between 1 and 65535.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginUpdate(originName: string, originProperties: models.OriginParameters, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Origin>): void;
    beginUpdate(originName: string, originProperties: models.OriginParameters, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Origin>): void;

    /**
     * @summary Deletes an existing CDN origin within an endpoint.
     *
     * @param {string} originName Name of the origin. Must be unique within
     * endpoint.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteIfExists(originName: string, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Origin>): void;
    deleteIfExists(originName: string, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Origin>): void;

    /**
     * @summary Deletes an existing CDN origin within an endpoint.
     *
     * @param {string} originName Name of the origin. Must be unique within
     * endpoint.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteIfExists(originName: string, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Origin>): void;
    beginDeleteIfExists(originName: string, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.Origin>): void;
}

/**
 * @class
 * CustomDomains
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the CdnManagementClient.
 */
export interface CustomDomains {

    /**
     * @summary Lists the existing CDN custom domains within an endpoint.
     *
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listByEndpoint(endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CustomDomainListResult>): void;
    listByEndpoint(endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.CustomDomainListResult>): void;

    /**
     * @summary Gets an existing CDN custom domain within an endpoint.
     *
     * @param {string} customDomainName Name of the custom domain within an
     * endpoint.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CustomDomain>): void;
    get(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.CustomDomain>): void;

    /**
     * @summary Creates a new CDN custom domain within an endpoint.
     *
     * @param {string} customDomainName Name of the custom domain within an
     * endpoint.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {string} hostName The host name of the custom domain. Must be a
     * domain name.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    create(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, hostName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CustomDomain>): void;
    create(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, hostName: string, callback: ServiceCallback<models.CustomDomain>): void;

    /**
     * @summary Creates a new CDN custom domain within an endpoint.
     *
     * @param {string} customDomainName Name of the custom domain within an
     * endpoint.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {string} hostName The host name of the custom domain. Must be a
     * domain name.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreate(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, hostName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CustomDomain>): void;
    beginCreate(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, hostName: string, callback: ServiceCallback<models.CustomDomain>): void;

    /**
     * @summary Updates an existing CDN custom domain within an endpoint.
     *
     * @param {string} customDomainName Name of the custom domain within an
     * endpoint.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {string} hostName The host name of the custom domain. Must be a
     * domain name.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    update(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, hostName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ErrorResponse>): void;
    update(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, hostName: string, callback: ServiceCallback<models.ErrorResponse>): void;

    /**
     * @summary Deletes an existing CDN custom domain within an endpoint.
     *
     * @param {string} customDomainName Name of the custom domain within an
     * endpoint.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteIfExists(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CustomDomain>): void;
    deleteIfExists(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.CustomDomain>): void;

    /**
     * @summary Deletes an existing CDN custom domain within an endpoint.
     *
     * @param {string} customDomainName Name of the custom domain within an
     * endpoint.
     * 
     * @param {string} endpointName Name of the endpoint within the CDN profile.
     * 
     * @param {string} profileName Name of the CDN profile within the resource
     * group.
     * 
     * @param {string} resourceGroupName Name of the resource group within the
     * Azure subscription.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteIfExists(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CustomDomain>): void;
    beginDeleteIfExists(customDomainName: string, endpointName: string, profileName: string, resourceGroupName: string, callback: ServiceCallback<models.CustomDomain>): void;
}

/**
 * @class
 * NameAvailability
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the CdnManagementClient.
 */
export interface NameAvailability {

    /**
     * @summary Check the availability of a resource name without creating the
     * resource. This is needed for resources where name is globally unique, such
     * as a CDN endpoint.
     *
     * @param {string} name The resource name to validate.
     * 
     * @param {string} type The type of the resource whose name is to be
     * validated. Possible values include: 'Microsoft.Cdn/Profiles/Endpoints'
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    checkNameAvailability(name: string, type: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CheckNameAvailabilityOutput>): void;
    checkNameAvailability(name: string, type: string, callback: ServiceCallback<models.CheckNameAvailabilityOutput>): void;
}

/**
 * @class
 * Operations
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the CdnManagementClient.
 */
export interface Operations {

    /**
     * @summary Lists all of the available CDN REST API operations.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.OperationListResult>): void;
    list(callback: ServiceCallback<models.OperationListResult>): void;
}
