/*
 * 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 0.16.0.0
 * 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
 * Deployments
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the ResourceManagementClient.
 */
export interface Deployments {

    /**
     * Delete deployment.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment to be deleted.
     * 
     * @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
     */
    deleteMethod(resourceGroupName: string, deploymentName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, deploymentName: string, callback: ServiceCallback<void>): void;

    /**
     * Delete deployment.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment to be deleted.
     * 
     * @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
     */
    beginDeleteMethod(resourceGroupName: string, deploymentName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, deploymentName: string, callback: ServiceCallback<void>): void;

    /**
     * Checks whether deployment exists.
     *
     * @param {string} resourceGroupName The name of the resource group to check.
     * The name is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment.
     * 
     * @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
     */
    checkExistence(resourceGroupName: string, deploymentName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<boolean>): void;
    checkExistence(resourceGroupName: string, deploymentName: string, callback: ServiceCallback<boolean>): void;

    /**
     * Create a named template deployment using a template.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment.
     * 
     * @param {object} parameters Additional parameters supplied to the operation.
     * 
     * @param {object} [parameters.properties] Gets or sets the deployment
     * properties.
     * 
     * @param {object} [parameters.properties.template] Gets or sets the template
     * content. Use only one of Template or TemplateLink.
     * 
     * @param {object} [parameters.properties.templateLink] Gets or sets the URI
     * referencing the template. Use only one of Template or TemplateLink.
     * 
     * @param {string} [parameters.properties.templateLink.uri] URI referencing
     * the template.
     * 
     * @param {string} [parameters.properties.templateLink.contentVersion] If
     * included it must match the ContentVersion in the template.
     * 
     * @param {object} [parameters.properties.parameters] Deployment parameters.
     * Use only one of Parameters or ParametersLink.
     * 
     * @param {object} [parameters.properties.parametersLink] Gets or sets the URI
     * referencing the parameters. Use only one of Parameters or ParametersLink.
     * 
     * @param {string} [parameters.properties.parametersLink.uri] URI referencing
     * the template.
     * 
     * @param {string} [parameters.properties.parametersLink.contentVersion] If
     * included it must match the ContentVersion in the template.
     * 
     * @param {string} [parameters.properties.mode] Gets or sets the deployment
     * mode. Possible values include: 'Incremental', 'Complete'
     * 
     * @param {object} [parameters.properties.debugSetting] Gets or sets the debug
     * setting of the deployment.
     * 
     * @param {string} [parameters.properties.debugSetting.detailLevel] Gets or
     * sets the debug detail level.
     * 
     * @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
     */
    createOrUpdate(resourceGroupName: string, deploymentName: string, parameters: models.Deployment, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentExtended>): void;
    createOrUpdate(resourceGroupName: string, deploymentName: string, parameters: models.Deployment, callback: ServiceCallback<models.DeploymentExtended>): void;

    /**
     * Create a named template deployment using a template.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment.
     * 
     * @param {object} parameters Additional parameters supplied to the operation.
     * 
     * @param {object} [parameters.properties] Gets or sets the deployment
     * properties.
     * 
     * @param {object} [parameters.properties.template] Gets or sets the template
     * content. Use only one of Template or TemplateLink.
     * 
     * @param {object} [parameters.properties.templateLink] Gets or sets the URI
     * referencing the template. Use only one of Template or TemplateLink.
     * 
     * @param {string} [parameters.properties.templateLink.uri] URI referencing
     * the template.
     * 
     * @param {string} [parameters.properties.templateLink.contentVersion] If
     * included it must match the ContentVersion in the template.
     * 
     * @param {object} [parameters.properties.parameters] Deployment parameters.
     * Use only one of Parameters or ParametersLink.
     * 
     * @param {object} [parameters.properties.parametersLink] Gets or sets the URI
     * referencing the parameters. Use only one of Parameters or ParametersLink.
     * 
     * @param {string} [parameters.properties.parametersLink.uri] URI referencing
     * the template.
     * 
     * @param {string} [parameters.properties.parametersLink.contentVersion] If
     * included it must match the ContentVersion in the template.
     * 
     * @param {string} [parameters.properties.mode] Gets or sets the deployment
     * mode. Possible values include: 'Incremental', 'Complete'
     * 
     * @param {object} [parameters.properties.debugSetting] Gets or sets the debug
     * setting of the deployment.
     * 
     * @param {string} [parameters.properties.debugSetting.detailLevel] Gets or
     * sets the debug detail level.
     * 
     * @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
     */
    beginCreateOrUpdate(resourceGroupName: string, deploymentName: string, parameters: models.Deployment, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentExtended>): void;
    beginCreateOrUpdate(resourceGroupName: string, deploymentName: string, parameters: models.Deployment, callback: ServiceCallback<models.DeploymentExtended>): void;

    /**
     * Get a deployment.
     *
     * @param {string} resourceGroupName The name of the resource group to get.
     * The name is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment.
     * 
     * @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(resourceGroupName: string, deploymentName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentExtended>): void;
    get(resourceGroupName: string, deploymentName: string, callback: ServiceCallback<models.DeploymentExtended>): void;

    /**
     * Cancel a currently running template deployment.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment.
     * 
     * @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
     */
    cancel(resourceGroupName: string, deploymentName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    cancel(resourceGroupName: string, deploymentName: string, callback: ServiceCallback<void>): void;

    /**
     * Validate a deployment template.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment.
     * 
     * @param {object} parameters Deployment to validate.
     * 
     * @param {object} [parameters.properties] Gets or sets the deployment
     * properties.
     * 
     * @param {object} [parameters.properties.template] Gets or sets the template
     * content. Use only one of Template or TemplateLink.
     * 
     * @param {object} [parameters.properties.templateLink] Gets or sets the URI
     * referencing the template. Use only one of Template or TemplateLink.
     * 
     * @param {string} [parameters.properties.templateLink.uri] URI referencing
     * the template.
     * 
     * @param {string} [parameters.properties.templateLink.contentVersion] If
     * included it must match the ContentVersion in the template.
     * 
     * @param {object} [parameters.properties.parameters] Deployment parameters.
     * Use only one of Parameters or ParametersLink.
     * 
     * @param {object} [parameters.properties.parametersLink] Gets or sets the URI
     * referencing the parameters. Use only one of Parameters or ParametersLink.
     * 
     * @param {string} [parameters.properties.parametersLink.uri] URI referencing
     * the template.
     * 
     * @param {string} [parameters.properties.parametersLink.contentVersion] If
     * included it must match the ContentVersion in the template.
     * 
     * @param {string} [parameters.properties.mode] Gets or sets the deployment
     * mode. Possible values include: 'Incremental', 'Complete'
     * 
     * @param {object} [parameters.properties.debugSetting] Gets or sets the debug
     * setting of the deployment.
     * 
     * @param {string} [parameters.properties.debugSetting.detailLevel] Gets or
     * sets the debug detail level.
     * 
     * @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
     */
    validate(resourceGroupName: string, deploymentName: string, parameters: models.Deployment, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentValidateResult>): void;
    validate(resourceGroupName: string, deploymentName: string, parameters: models.Deployment, callback: ServiceCallback<models.DeploymentValidateResult>): void;

    /**
     * Exports a deployment template.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment.
     * 
     * @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
     */
    exportTemplate(resourceGroupName: string, deploymentName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentExportResult>): void;
    exportTemplate(resourceGroupName: string, deploymentName: string, callback: ServiceCallback<models.DeploymentExportResult>): void;

    /**
     * Get a list of deployments.
     *
     * @param {string} resourceGroupName The name of the resource group to filter
     * by. The name is case insensitive.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @param {number} [options.top] Query parameters. If null is passed returns
     * all deployments.
     * 
     * @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(resourceGroupName: string, options: { filter? : string, top? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.DeploymentListResult>): void;

    /**
     * Get a list of deployments.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.DeploymentListResult>): void;
}

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

    /**
     * Unregisters provider from a subscription.
     *
     * @param {string} resourceProviderNamespace Namespace of the resource
     * provider.
     * 
     * @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
     */
    unregister(resourceProviderNamespace: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Provider>): void;
    unregister(resourceProviderNamespace: string, callback: ServiceCallback<models.Provider>): void;

    /**
     * Registers provider to be used with a subscription.
     *
     * @param {string} resourceProviderNamespace Namespace of the resource
     * provider.
     * 
     * @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
     */
    register(resourceProviderNamespace: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Provider>): void;
    register(resourceProviderNamespace: string, callback: ServiceCallback<models.Provider>): void;

    /**
     * Gets a list of resource providers.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {number} [options.top] Query parameters. If null is passed returns
     * all deployments.
     * 
     * @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: { top? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ProviderListResult>): void;
    list(callback: ServiceCallback<models.ProviderListResult>): void;

    /**
     * Gets a resource provider.
     *
     * @param {string} resourceProviderNamespace Namespace of the resource
     * provider.
     * 
     * @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(resourceProviderNamespace: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Provider>): void;
    get(resourceProviderNamespace: string, callback: ServiceCallback<models.Provider>): void;

    /**
     * Gets a list of resource providers.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ProviderListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ProviderListResult>): void;
}

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

    /**
     * Get all of the resources under a subscription.
     *
     * @param {string} resourceGroupName Query parameters. If null is passed
     * returns all resource groups.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @param {number} [options.top] Query parameters. If null is passed returns
     * all resource groups.
     * 
     * @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
     */
    listResources(resourceGroupName: string, options: { filter? : string, top? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceListResult>): void;
    listResources(resourceGroupName: string, callback: ServiceCallback<models.ResourceListResult>): void;

    /**
     * Checks whether resource group exists.
     *
     * @param {string} resourceGroupName The name of the resource group to check.
     * The name is case insensitive.
     * 
     * @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
     */
    checkExistence(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<boolean>): void;
    checkExistence(resourceGroupName: string, callback: ServiceCallback<boolean>): void;

    /**
     * Create a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group to be
     * created or updated.
     * 
     * @param {object} parameters Parameters supplied to the create or update
     * resource group service operation.
     * 
     * @param {string} [parameters.name] Gets or sets the Name of the resource
     * group.
     * 
     * @param {object} [parameters.properties]
     * 
     * @param {string} [parameters.location] Gets or sets the location of the
     * resource group. It cannot be changed after the resource group has been
     * created. Has to be one of the supported Azure Locations, such as West US,
     * East US, West Europe, East Asia, etc.
     * 
     * @param {object} [parameters.tags] Gets or sets the tags attached to the
     * resource group.
     * 
     * @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
     */
    createOrUpdate(resourceGroupName: string, parameters: models.ResourceGroup, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceGroup>): void;
    createOrUpdate(resourceGroupName: string, parameters: models.ResourceGroup, callback: ServiceCallback<models.ResourceGroup>): void;

    /**
     * Delete resource group.
     *
     * @param {string} resourceGroupName The name of the resource group to be
     * deleted. The name is case insensitive.
     * 
     * @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
     */
    deleteMethod(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, callback: ServiceCallback<void>): void;

    /**
     * Delete resource group.
     *
     * @param {string} resourceGroupName The name of the resource group to be
     * deleted. The name is case insensitive.
     * 
     * @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
     */
    beginDeleteMethod(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, callback: ServiceCallback<void>): void;

    /**
     * Get a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group to get.
     * The name is case insensitive.
     * 
     * @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(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceGroup>): void;
    get(resourceGroupName: string, callback: ServiceCallback<models.ResourceGroup>): void;

    /**
     * Resource groups can be updated through a simple PATCH operation to a group
     * address. The format of the request is the same as that for creating a
     * resource groups, though if a field is unspecified current value will be
     * carried over.
     *
     * @param {string} resourceGroupName The name of the resource group to be
     * created or updated. The name is case insensitive.
     * 
     * @param {object} parameters Parameters supplied to the update state resource
     * group service operation.
     * 
     * @param {string} [parameters.name] Gets or sets the Name of the resource
     * group.
     * 
     * @param {object} [parameters.properties]
     * 
     * @param {string} [parameters.location] Gets or sets the location of the
     * resource group. It cannot be changed after the resource group has been
     * created. Has to be one of the supported Azure Locations, such as West US,
     * East US, West Europe, East Asia, etc.
     * 
     * @param {object} [parameters.tags] Gets or sets the tags attached to the
     * resource group.
     * 
     * @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
     */
    patch(resourceGroupName: string, parameters: models.ResourceGroup, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceGroup>): void;
    patch(resourceGroupName: string, parameters: models.ResourceGroup, callback: ServiceCallback<models.ResourceGroup>): void;

    /**
     * Captures the specified resource group as a template.
     *
     * @param {string} resourceGroupName The name of the resource group to be
     * created or updated.
     * 
     * @param {object} parameters Parameters supplied to the export template
     * resource group operation.
     * 
     * @param {array} [parameters.resources] Gets or sets the ids of the
     * resources. The only supported string currently is '*' (all resources).
     * Future api updates will support exporting specific resources.
     * 
     * @param {string} [parameters.options] The export template options. Supported
     * values include 'IncludeParameterDefaultValue', 'IncludeComments' or
     * 'IncludeParameterDefaultValue, IncludeComments
     * 
     * @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
     */
    exportTemplate(resourceGroupName: string, parameters: models.ExportTemplateRequest, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceGroupExportResult>): void;
    exportTemplate(resourceGroupName: string, parameters: models.ExportTemplateRequest, callback: ServiceCallback<models.ResourceGroupExportResult>): void;

    /**
     * Gets a collection of resource groups.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @param {number} [options.top] Query parameters. If null is passed returns
     * all resource groups.
     * 
     * @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: { filter? : string, top? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceGroupListResult>): void;
    list(callback: ServiceCallback<models.ResourceGroupListResult>): void;

    /**
     * Get all of the resources under a subscription.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @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
     */
    listResourcesNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceListResult>): void;
    listResourcesNext(nextPageLink: string, callback: ServiceCallback<models.ResourceListResult>): void;

    /**
     * Gets a collection of resource groups.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceGroupListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResourceGroupListResult>): void;
}

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

    /**
     * Move resources from one resource group to another. The resources being
     * moved should all be in the same resource group.
     *
     * @param {string} sourceResourceGroupName Source resource group name.
     * 
     * @param {object} parameters move resources' parameters.
     * 
     * @param {array} [parameters.resources] Gets or sets the ids of the resources.
     * 
     * @param {string} [parameters.targetResourceGroup] The target resource group.
     * 
     * @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
     */
    moveResources(sourceResourceGroupName: string, parameters: models.ResourcesMoveInfo, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    moveResources(sourceResourceGroupName: string, parameters: models.ResourcesMoveInfo, callback: ServiceCallback<void>): void;

    /**
     * Move resources from one resource group to another. The resources being
     * moved should all be in the same resource group.
     *
     * @param {string} sourceResourceGroupName Source resource group name.
     * 
     * @param {object} parameters move resources' parameters.
     * 
     * @param {array} [parameters.resources] Gets or sets the ids of the resources.
     * 
     * @param {string} [parameters.targetResourceGroup] The target resource group.
     * 
     * @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
     */
    beginMoveResources(sourceResourceGroupName: string, parameters: models.ResourcesMoveInfo, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginMoveResources(sourceResourceGroupName: string, parameters: models.ResourcesMoveInfo, callback: ServiceCallback<void>): void;

    /**
     * Get all of the resources under a subscription.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @param {number} [options.top] Query parameters. If null is passed returns
     * all resource groups.
     * 
     * @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: { filter? : string, top? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceListResult>): void;
    list(callback: ServiceCallback<models.ResourceListResult>): void;

    /**
     * Checks whether resource exists.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} resourceProviderNamespace Resource identity.
     * 
     * @param {string} parentResourcePath Resource identity.
     * 
     * @param {string} resourceType Resource identity.
     * 
     * @param {string} resourceName Resource identity.
     * 
     * @param {string} apiVersion
     * 
     * @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
     */
    checkExistence(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, apiVersion: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<boolean>): void;
    checkExistence(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, apiVersion: string, callback: ServiceCallback<boolean>): void;

    /**
     * Delete resource and all of its resources.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} resourceProviderNamespace Resource identity.
     * 
     * @param {string} parentResourcePath Resource identity.
     * 
     * @param {string} resourceType Resource identity.
     * 
     * @param {string} resourceName Resource identity.
     * 
     * @param {string} apiVersion
     * 
     * @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
     */
    deleteMethod(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, apiVersion: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, apiVersion: string, callback: ServiceCallback<void>): void;

    /**
     * Create a resource.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} resourceProviderNamespace Resource identity.
     * 
     * @param {string} parentResourcePath Resource identity.
     * 
     * @param {string} resourceType Resource identity.
     * 
     * @param {string} resourceName Resource identity.
     * 
     * @param {string} apiVersion
     * 
     * @param {object} parameters Create or update resource parameters.
     * 
     * @param {object} [parameters.plan] Gets or sets the plan of the resource.
     * 
     * @param {string} [parameters.plan.name] Gets or sets the plan ID.
     * 
     * @param {string} [parameters.plan.publisher] Gets or sets the publisher ID.
     * 
     * @param {string} [parameters.plan.product] Gets or sets the offer ID.
     * 
     * @param {string} [parameters.plan.promotionCode] Gets or sets the promotion
     * code.
     * 
     * @param {object} [parameters.properties] Gets or sets the resource
     * properties.
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource 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
     */
    createOrUpdate(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, apiVersion: string, parameters: models.GenericResource, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GenericResource>): void;
    createOrUpdate(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, apiVersion: string, parameters: models.GenericResource, callback: ServiceCallback<models.GenericResource>): void;

    /**
     * Returns a resource belonging to a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} resourceProviderNamespace Resource identity.
     * 
     * @param {string} parentResourcePath Resource identity.
     * 
     * @param {string} resourceType Resource identity.
     * 
     * @param {string} resourceName Resource identity.
     * 
     * @param {string} apiVersion
     * 
     * @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(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, apiVersion: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GenericResource>): void;
    get(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, apiVersion: string, callback: ServiceCallback<models.GenericResource>): void;

    /**
     * Get all of the resources under a subscription.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResourceListResult>): void;
}

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

    /**
     * Delete a subscription resource tag value.
     *
     * @param {string} tagName The name of the tag.
     * 
     * @param {string} tagValue The value of the tag.
     * 
     * @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
     */
    deleteValue(tagName: string, tagValue: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteValue(tagName: string, tagValue: string, callback: ServiceCallback<void>): void;

    /**
     * Create a subscription resource tag value.
     *
     * @param {string} tagName The name of the tag.
     * 
     * @param {string} tagValue The value of the tag.
     * 
     * @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
     */
    createOrUpdateValue(tagName: string, tagValue: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TagValue>): void;
    createOrUpdateValue(tagName: string, tagValue: string, callback: ServiceCallback<models.TagValue>): void;

    /**
     * Create a subscription resource tag.
     *
     * @param {string} tagName The name of the tag.
     * 
     * @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
     */
    createOrUpdate(tagName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TagDetails>): void;
    createOrUpdate(tagName: string, callback: ServiceCallback<models.TagDetails>): void;

    /**
     * Delete a subscription resource tag.
     *
     * @param {string} tagName The name of the tag.
     * 
     * @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
     */
    deleteMethod(tagName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(tagName: string, callback: ServiceCallback<void>): void;

    /**
     * Get a list of subscription resource 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
     */
    list(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TagsListResult>): void;
    list(callback: ServiceCallback<models.TagsListResult>): void;

    /**
     * Get a list of subscription resource tags.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TagsListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.TagsListResult>): void;
}

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

    /**
     * Get a list of deployments operations.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment.
     * 
     * @param {string} operationId Operation Id.
     * 
     * @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(resourceGroupName: string, deploymentName: string, operationId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentOperation>): void;
    get(resourceGroupName: string, deploymentName: string, operationId: string, callback: ServiceCallback<models.DeploymentOperation>): void;

    /**
     * Gets a list of deployments operations.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} deploymentName The name of the deployment.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {number} [options.top] Query 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(resourceGroupName: string, deploymentName: string, options: { top? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentOperationsListResult>): void;
    list(resourceGroupName: string, deploymentName: string, callback: ServiceCallback<models.DeploymentOperationsListResult>): void;

    /**
     * Gets a list of deployments operations.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeploymentOperationsListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.DeploymentOperationsListResult>): void;
}

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

    /**
     * Gets a list of resource providers.
     *
     * @param {string} resourceProviderNamespace Resource identity.
     * 
     * @param {string} apiVersion
     * 
     * @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(resourceProviderNamespace: string, apiVersion: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceProviderOperationDetailListResult>): void;
    list(resourceProviderNamespace: string, apiVersion: string, callback: ServiceCallback<models.ResourceProviderOperationDetailListResult>): void;

    /**
     * Gets a list of resource providers.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResourceProviderOperationDetailListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResourceProviderOperationDetailListResult>): void;
}
