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

    /**
     * The operation to create or update the availability set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name Parameters supplied to the Create Availability Set
     * operation.
     * 
     * @param {object} parameters Parameters supplied to the Create Availability
     * Set operation.
     * 
     * @param {number} [parameters.platformUpdateDomainCount] Update Domain count.
     * 
     * @param {number} [parameters.platformFaultDomainCount] Fault Domain count.
     * 
     * @param {array} [parameters.virtualMachines] a list containing reference to
     * all Virtual Machines created under this Availability Set.
     * 
     * @param {array} [parameters.statuses] the resource status information.
     * 
     * @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, name: string, parameters: models.AvailabilitySet, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AvailabilitySet>): void;
    createOrUpdate(resourceGroupName: string, name: string, parameters: models.AvailabilitySet, callback: ServiceCallback<models.AvailabilitySet>): void;

    /**
     * The operation to delete the availability set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} availabilitySetName The name of the availability set.
     * 
     * @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, availabilitySetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, availabilitySetName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to get the availability set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} availabilitySetName The name of the availability set.
     * 
     * @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, availabilitySetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AvailabilitySet>): void;
    get(resourceGroupName: string, availabilitySetName: string, callback: ServiceCallback<models.AvailabilitySet>): void;

    /**
     * The operation to list the availability sets.
     *
     * @param {string} resourceGroupName The name of 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
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AvailabilitySetListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.AvailabilitySetListResult>): void;

    /**
     * Lists all available virtual machine sizes that can be used to create a new
     * virtual machine in an existing availability set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} availabilitySetName The name of the availability set.
     * 
     * @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
     */
    listAvailableSizes(resourceGroupName: string, availabilitySetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineSizeListResult>): void;
    listAvailableSizes(resourceGroupName: string, availabilitySetName: string, callback: ServiceCallback<models.VirtualMachineSizeListResult>): void;
}

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

    /**
     * Gets a virtual machine extension image.
     *
     * @param {string} location
     * 
     * @param {string} publisherName
     * 
     * @param {string} type
     * 
     * @param {string} version
     * 
     * @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(location: string, publisherName: string, type: string, version: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineExtensionImage>): void;
    get(location: string, publisherName: string, type: string, version: string, callback: ServiceCallback<models.VirtualMachineExtensionImage>): void;

    /**
     * Gets a list of virtual machine extension image types.
     *
     * @param {string} location
     * 
     * @param {string} publisherName
     * 
     * @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
     */
    listTypes(location: string, publisherName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineExtensionImage[]>): void;
    listTypes(location: string, publisherName: string, callback: ServiceCallback<models.VirtualMachineExtensionImage[]>): void;

    /**
     * Gets a list of virtual machine extension image versions.
     *
     * @param {string} location
     * 
     * @param {string} publisherName
     * 
     * @param {string} type
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @param {number} [options.top]
     * 
     * @param {string} [options.orderby]
     * 
     * @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
     */
    listVersions(location: string, publisherName: string, type: string, options: { filter? : string, top? : number, orderby? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineExtensionImage[]>): void;
    listVersions(location: string, publisherName: string, type: string, callback: ServiceCallback<models.VirtualMachineExtensionImage[]>): void;
}

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

    /**
     * The operation to create or update the extension.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine where the extension
     * should be create or updated.
     * 
     * @param {string} vmExtensionName The name of the virtual machine extension.
     * 
     * @param {object} extensionParameters Parameters supplied to the Create
     * Virtual Machine Extension operation.
     * 
     * @param {string} [extensionParameters.forceUpdateTag] how the extension
     * handler should be forced to update even if the extension configuration has
     * not changed.
     * 
     * @param {string} [extensionParameters.publisher] the name of the extension
     * handler publisher.
     * 
     * @param {string} [extensionParameters.virtualMachineExtensionType] the type
     * of the extension handler.
     * 
     * @param {string} [extensionParameters.typeHandlerVersion] the type version
     * of the extension handler.
     * 
     * @param {boolean} [extensionParameters.autoUpgradeMinorVersion] whether the
     * extension handler should be automatically upgraded across minor versions.
     * 
     * @param {object} [extensionParameters.settings] Json formatted public
     * settings for the extension.
     * 
     * @param {object} [extensionParameters.protectedSettings] Json formatted
     * protected settings for the extension.
     * 
     * @param {object} [extensionParameters.instanceView] the virtual machine
     * extension instance view.
     * 
     * @param {string} [extensionParameters.instanceView.name] the virtual machine
     * extension name.
     * 
     * @param {string} [extensionParameters.instanceView.type] the full type of
     * the extension handler which includes both publisher and type.
     * 
     * @param {string} [extensionParameters.instanceView.typeHandlerVersion] the
     * type version of the extension handler.
     * 
     * @param {array} [extensionParameters.instanceView.substatuses] the resource
     * status information.
     * 
     * @param {array} [extensionParameters.instanceView.statuses] the resource
     * status information.
     * 
     * @param {string} [extensionParameters.location] Resource location
     * 
     * @param {object} [extensionParameters.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, vmName: string, vmExtensionName: string, extensionParameters: models.VirtualMachineExtension, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineExtension>): void;
    createOrUpdate(resourceGroupName: string, vmName: string, vmExtensionName: string, extensionParameters: models.VirtualMachineExtension, callback: ServiceCallback<models.VirtualMachineExtension>): void;

    /**
     * The operation to create or update the extension.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine where the extension
     * should be create or updated.
     * 
     * @param {string} vmExtensionName The name of the virtual machine extension.
     * 
     * @param {object} extensionParameters Parameters supplied to the Create
     * Virtual Machine Extension operation.
     * 
     * @param {string} [extensionParameters.forceUpdateTag] how the extension
     * handler should be forced to update even if the extension configuration has
     * not changed.
     * 
     * @param {string} [extensionParameters.publisher] the name of the extension
     * handler publisher.
     * 
     * @param {string} [extensionParameters.virtualMachineExtensionType] the type
     * of the extension handler.
     * 
     * @param {string} [extensionParameters.typeHandlerVersion] the type version
     * of the extension handler.
     * 
     * @param {boolean} [extensionParameters.autoUpgradeMinorVersion] whether the
     * extension handler should be automatically upgraded across minor versions.
     * 
     * @param {object} [extensionParameters.settings] Json formatted public
     * settings for the extension.
     * 
     * @param {object} [extensionParameters.protectedSettings] Json formatted
     * protected settings for the extension.
     * 
     * @param {object} [extensionParameters.instanceView] the virtual machine
     * extension instance view.
     * 
     * @param {string} [extensionParameters.instanceView.name] the virtual machine
     * extension name.
     * 
     * @param {string} [extensionParameters.instanceView.type] the full type of
     * the extension handler which includes both publisher and type.
     * 
     * @param {string} [extensionParameters.instanceView.typeHandlerVersion] the
     * type version of the extension handler.
     * 
     * @param {array} [extensionParameters.instanceView.substatuses] the resource
     * status information.
     * 
     * @param {array} [extensionParameters.instanceView.statuses] the resource
     * status information.
     * 
     * @param {string} [extensionParameters.location] Resource location
     * 
     * @param {object} [extensionParameters.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
     */
    beginCreateOrUpdate(resourceGroupName: string, vmName: string, vmExtensionName: string, extensionParameters: models.VirtualMachineExtension, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineExtension>): void;
    beginCreateOrUpdate(resourceGroupName: string, vmName: string, vmExtensionName: string, extensionParameters: models.VirtualMachineExtension, callback: ServiceCallback<models.VirtualMachineExtension>): void;

    /**
     * The operation to delete the extension.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine where the extension
     * should be deleted.
     * 
     * @param {string} vmExtensionName The name of the virtual machine extension.
     * 
     * @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, vmName: string, vmExtensionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, vmName: string, vmExtensionName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to delete the extension.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine where the extension
     * should be deleted.
     * 
     * @param {string} vmExtensionName The name of the virtual machine extension.
     * 
     * @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, vmName: string, vmExtensionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, vmName: string, vmExtensionName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to get the extension.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine containing the
     * extension.
     * 
     * @param {string} vmExtensionName The name of the virtual machine extension.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] The expand expression to apply on the
     * operation.
     * 
     * @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, vmName: string, vmExtensionName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineExtension>): void;
    get(resourceGroupName: string, vmName: string, vmExtensionName: string, callback: ServiceCallback<models.VirtualMachineExtension>): void;
}

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

    /**
     * Gets a virtual machine image.
     *
     * @param {string} location
     * 
     * @param {string} publisherName
     * 
     * @param {string} offer
     * 
     * @param {string} skus
     * 
     * @param {string} version
     * 
     * @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(location: string, publisherName: string, offer: string, skus: string, version: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineImage>): void;
    get(location: string, publisherName: string, offer: string, skus: string, version: string, callback: ServiceCallback<models.VirtualMachineImage>): void;

    /**
     * Gets a list of virtual machine images.
     *
     * @param {string} location
     * 
     * @param {string} publisherName
     * 
     * @param {string} offer
     * 
     * @param {string} skus
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @param {number} [options.top]
     * 
     * @param {string} [options.orderby]
     * 
     * @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(location: string, publisherName: string, offer: string, skus: string, options: { filter? : string, top? : number, orderby? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineImageResource[]>): void;
    list(location: string, publisherName: string, offer: string, skus: string, callback: ServiceCallback<models.VirtualMachineImageResource[]>): void;

    /**
     * Gets a list of virtual machine image offers.
     *
     * @param {string} location
     * 
     * @param {string} publisherName
     * 
     * @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
     */
    listOffers(location: string, publisherName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineImageResource[]>): void;
    listOffers(location: string, publisherName: string, callback: ServiceCallback<models.VirtualMachineImageResource[]>): void;

    /**
     * Gets a list of virtual machine image publishers.
     *
     * @param {string} location
     * 
     * @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
     */
    listPublishers(location: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineImageResource[]>): void;
    listPublishers(location: string, callback: ServiceCallback<models.VirtualMachineImageResource[]>): void;

    /**
     * Gets a list of virtual machine image skus.
     *
     * @param {string} location
     * 
     * @param {string} publisherName
     * 
     * @param {string} offer
     * 
     * @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
     */
    listSkus(location: string, publisherName: string, offer: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineImageResource[]>): void;
    listSkus(location: string, publisherName: string, offer: string, callback: ServiceCallback<models.VirtualMachineImageResource[]>): void;
}

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

    /**
     * Lists compute usages for a subscription.
     *
     * @param {string} location The location upon which resource usage is queried.
     * 
     * @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(location: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ListUsagesResult>): void;
    list(location: string, callback: ServiceCallback<models.ListUsagesResult>): void;

    /**
     * Lists compute usages for 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.ListUsagesResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ListUsagesResult>): void;
}

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

    /**
     * Lists all available virtual machine sizes for a subscription in a location.
     *
     * @param {string} location The location upon which virtual-machine-sizes is
     * queried.
     * 
     * @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(location: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineSizeListResult>): void;
    list(location: string, callback: ServiceCallback<models.VirtualMachineSizeListResult>): void;
}

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

    /**
     * Captures the VM by copying virtual hard disks of the VM and outputs a
     * template that can be used to create similar VMs.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @param {object} parameters Parameters supplied to the Capture Virtual
     * Machine operation.
     * 
     * @param {string} [parameters.vhdPrefix] the captured VirtualHardDisk's name
     * prefix.
     * 
     * @param {string} [parameters.destinationContainerName] the destination
     * container name.
     * 
     * @param {boolean} [parameters.overwriteVhds] whether it overwrites
     * destination VirtualHardDisk if true, in case of conflict.
     * 
     * @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
     */
    capture(resourceGroupName: string, vmName: string, parameters: models.VirtualMachineCaptureParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineCaptureResult>): void;
    capture(resourceGroupName: string, vmName: string, parameters: models.VirtualMachineCaptureParameters, callback: ServiceCallback<models.VirtualMachineCaptureResult>): void;

    /**
     * Captures the VM by copying virtual hard disks of the VM and outputs a
     * template that can be used to create similar VMs.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @param {object} parameters Parameters supplied to the Capture Virtual
     * Machine operation.
     * 
     * @param {string} [parameters.vhdPrefix] the captured VirtualHardDisk's name
     * prefix.
     * 
     * @param {string} [parameters.destinationContainerName] the destination
     * container name.
     * 
     * @param {boolean} [parameters.overwriteVhds] whether it overwrites
     * destination VirtualHardDisk if true, in case of conflict.
     * 
     * @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
     */
    beginCapture(resourceGroupName: string, vmName: string, parameters: models.VirtualMachineCaptureParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineCaptureResult>): void;
    beginCapture(resourceGroupName: string, vmName: string, parameters: models.VirtualMachineCaptureParameters, callback: ServiceCallback<models.VirtualMachineCaptureResult>): void;

    /**
     * The operation to create or update a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @param {object} parameters Parameters supplied to the Create Virtual
     * Machine operation.
     * 
     * @param {object} [parameters.plan] the purchase plan when deploying virtual
     * machine from VM Marketplace images.
     * 
     * @param {string} [parameters.plan.name] the plan ID.
     * 
     * @param {string} [parameters.plan.publisher] the publisher ID.
     * 
     * @param {string} [parameters.plan.product] the offer ID.
     * 
     * @param {string} [parameters.plan.promotionCode] the promotion code.
     * 
     * @param {object} [parameters.hardwareProfile] the hardware profile.
     * 
     * @param {string} [parameters.hardwareProfile.vmSize] The virtual machine
     * size name. Possible values include: 'Basic_A0', 'Basic_A1', 'Basic_A2',
     * 'Basic_A3', 'Basic_A4', 'Standard_A0', 'Standard_A1', 'Standard_A2',
     * 'Standard_A3', 'Standard_A4', 'Standard_A5', 'Standard_A6', 'Standard_A7',
     * 'Standard_A8', 'Standard_A9', 'Standard_A10', 'Standard_A11',
     * 'Standard_D1', 'Standard_D2', 'Standard_D3', 'Standard_D4',
     * 'Standard_D11', 'Standard_D12', 'Standard_D13', 'Standard_D14',
     * 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2',
     * 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2',
     * 'Standard_D14_v2', 'Standard_D15_v2', 'Standard_DS1', 'Standard_DS2',
     * 'Standard_DS3', 'Standard_DS4', 'Standard_DS11', 'Standard_DS12',
     * 'Standard_DS13', 'Standard_DS14', 'Standard_DS1_v2', 'Standard_DS2_v2',
     * 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2',
     * 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2',
     * 'Standard_DS14_v2', 'Standard_DS15_v2', 'Standard_G1', 'Standard_G2',
     * 'Standard_G3', 'Standard_G4', 'Standard_G5', 'Standard_GS1',
     * 'Standard_GS2', 'Standard_GS3', 'Standard_GS4', 'Standard_GS5'
     * 
     * @param {object} [parameters.storageProfile] the storage profile.
     * 
     * @param {object} [parameters.storageProfile.imageReference] the image
     * reference.
     * 
     * @param {string} [parameters.storageProfile.imageReference.publisher] the
     * image publisher.
     * 
     * @param {string} [parameters.storageProfile.imageReference.offer] the image
     * offer.
     * 
     * @param {string} [parameters.storageProfile.imageReference.sku] the image
     * sku.
     * 
     * @param {string} [parameters.storageProfile.imageReference.version] the
     * image version. The allowed formats are Major.Minor.Build or 'latest'.
     * Major, Minor and Build being decimal numbers. Specify 'latest' to use the
     * latest version of image.
     * 
     * @param {object} [parameters.storageProfile.osDisk] the OS disk.
     * 
     * @param {string} [parameters.storageProfile.osDisk.osType] the Operating
     * System type. Possible values include: 'Windows', 'Linux'
     * 
     * @param {object} [parameters.storageProfile.osDisk.encryptionSettings] the
     * disk encryption settings.
     * 
     * @param {object}
     * [parameters.storageProfile.osDisk.encryptionSettings.diskEncryptionKey]
     * the disk encryption key which is a KeyVault Secret.
     * 
     * @param {string}
     * [parameters.storageProfile.osDisk.encryptionSettings.diskEncryptionKey.secretUrl]
     * the URL referencing a secret in a Key Vault.
     * 
     * @param {object}
     * [parameters.storageProfile.osDisk.encryptionSettings.diskEncryptionKey.sourceVault]
     * the Relative URL of the Key Vault containing the secret.
     * 
     * @param {object}
     * [parameters.storageProfile.osDisk.encryptionSettings.keyEncryptionKey] the
     * key encryption key which is KeyVault Key.
     * 
     * @param {string}
     * [parameters.storageProfile.osDisk.encryptionSettings.keyEncryptionKey.keyUrl]
     * the URL referencing a key in a Key Vault.
     * 
     * @param {object}
     * [parameters.storageProfile.osDisk.encryptionSettings.keyEncryptionKey.sourceVault]
     * the Relative URL of the Key Vault containing the key
     * 
     * @param {boolean}
     * [parameters.storageProfile.osDisk.encryptionSettings.enabled] whether disk
     * encryption should be enabled on the Virtual Machine.
     * 
     * @param {string} [parameters.storageProfile.osDisk.name] the disk name.
     * 
     * @param {object} [parameters.storageProfile.osDisk.vhd] the Virtual Hard
     * Disk.
     * 
     * @param {object} [parameters.storageProfile.osDisk.image] the Source User
     * Image VirtualHardDisk. This VirtualHardDisk will be copied before using it
     * to attach to the Virtual Machine.If SourceImage is provided, the
     * destination VirtualHardDisk should not exist.
     * 
     * @param {string} [parameters.storageProfile.osDisk.image.uri] the virtual
     * hard disk's uri. It should be a valid Uri to a virtual hard disk.
     * 
     * @param {string} [parameters.storageProfile.osDisk.caching] the caching
     * type. Possible values include: 'None', 'ReadOnly', 'ReadWrite'
     * 
     * @param {string} [parameters.storageProfile.osDisk.createOption] the create
     * option. Possible values include: 'fromImage', 'empty', 'attach'
     * 
     * @param {number} [parameters.storageProfile.osDisk.diskSizeGB] the initial
     * disk size in GB for blank data disks, and the new desired size for
     * existing OS and Data disks.
     * 
     * @param {array} [parameters.storageProfile.dataDisks] the data disks.
     * 
     * @param {object} [parameters.osProfile] the OS profile.
     * 
     * @param {string} [parameters.osProfile.computerName] the computer name.
     * 
     * @param {string} [parameters.osProfile.adminUsername] the admin user name.
     * 
     * @param {string} [parameters.osProfile.adminPassword] the admin user
     * password.
     * 
     * @param {string} [parameters.osProfile.customData] a base-64 encoded string
     * of custom data.
     * 
     * @param {object} [parameters.osProfile.windowsConfiguration] the Windows
     * Configuration of the OS profile.
     * 
     * @param {boolean}
     * [parameters.osProfile.windowsConfiguration.provisionVMAgent] whether VM
     * Agent should be provisioned on the Virtual Machine.
     * 
     * @param {boolean}
     * [parameters.osProfile.windowsConfiguration.enableAutomaticUpdates] whether
     * Windows updates are automatically installed on the VM
     * 
     * @param {string} [parameters.osProfile.windowsConfiguration.timeZone] the
     * Time Zone of the VM
     * 
     * @param {array}
     * [parameters.osProfile.windowsConfiguration.additionalUnattendContent] the
     * additional base-64 encoded XML formatted information that can be included
     * in the Unattend.xml file.
     * 
     * @param {object} [parameters.osProfile.windowsConfiguration.winRM] the
     * Windows Remote Management configuration of the VM
     * 
     * @param {array} [parameters.osProfile.windowsConfiguration.winRM.listeners]
     * the list of Windows Remote Management listeners
     * 
     * @param {object} [parameters.osProfile.linuxConfiguration] the Linux
     * Configuration of the OS profile.
     * 
     * @param {boolean}
     * [parameters.osProfile.linuxConfiguration.disablePasswordAuthentication]
     * whether Authentication using user name and password is allowed or not
     * 
     * @param {object} [parameters.osProfile.linuxConfiguration.ssh] the SSH
     * configuration for linux VMs
     * 
     * @param {array} [parameters.osProfile.linuxConfiguration.ssh.publicKeys] the
     * list of SSH public keys used to authenticate with linux based VMs
     * 
     * @param {array} [parameters.osProfile.secrets] the List of certificates for
     * addition to the VM.
     * 
     * @param {object} [parameters.networkProfile] the network profile.
     * 
     * @param {array} [parameters.networkProfile.networkInterfaces] the network
     * interfaces.
     * 
     * @param {object} [parameters.diagnosticsProfile] the diagnostics profile.
     * 
     * @param {object} [parameters.diagnosticsProfile.bootDiagnostics] the boot
     * diagnostics.
     * 
     * @param {boolean} [parameters.diagnosticsProfile.bootDiagnostics.enabled]
     * whether boot diagnostics should be enabled on the Virtual Machine.
     * 
     * @param {string} [parameters.diagnosticsProfile.bootDiagnostics.storageUri]
     * the boot diagnostics storage Uri. It should be a valid Uri
     * 
     * @param {object} [parameters.availabilitySet] the reference Id of the
     * availability set to which this virtual machine belongs.
     * 
     * @param {string} [parameters.availabilitySet.id] Resource Id
     * 
     * @param {string} [parameters.licenseType] the license type, which is for
     * bring your own license scenario.
     * 
     * @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, vmName: string, parameters: models.VirtualMachine, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachine>): void;
    createOrUpdate(resourceGroupName: string, vmName: string, parameters: models.VirtualMachine, callback: ServiceCallback<models.VirtualMachine>): void;

    /**
     * The operation to create or update a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @param {object} parameters Parameters supplied to the Create Virtual
     * Machine operation.
     * 
     * @param {object} [parameters.plan] the purchase plan when deploying virtual
     * machine from VM Marketplace images.
     * 
     * @param {string} [parameters.plan.name] the plan ID.
     * 
     * @param {string} [parameters.plan.publisher] the publisher ID.
     * 
     * @param {string} [parameters.plan.product] the offer ID.
     * 
     * @param {string} [parameters.plan.promotionCode] the promotion code.
     * 
     * @param {object} [parameters.hardwareProfile] the hardware profile.
     * 
     * @param {string} [parameters.hardwareProfile.vmSize] The virtual machine
     * size name. Possible values include: 'Basic_A0', 'Basic_A1', 'Basic_A2',
     * 'Basic_A3', 'Basic_A4', 'Standard_A0', 'Standard_A1', 'Standard_A2',
     * 'Standard_A3', 'Standard_A4', 'Standard_A5', 'Standard_A6', 'Standard_A7',
     * 'Standard_A8', 'Standard_A9', 'Standard_A10', 'Standard_A11',
     * 'Standard_D1', 'Standard_D2', 'Standard_D3', 'Standard_D4',
     * 'Standard_D11', 'Standard_D12', 'Standard_D13', 'Standard_D14',
     * 'Standard_D1_v2', 'Standard_D2_v2', 'Standard_D3_v2', 'Standard_D4_v2',
     * 'Standard_D5_v2', 'Standard_D11_v2', 'Standard_D12_v2', 'Standard_D13_v2',
     * 'Standard_D14_v2', 'Standard_D15_v2', 'Standard_DS1', 'Standard_DS2',
     * 'Standard_DS3', 'Standard_DS4', 'Standard_DS11', 'Standard_DS12',
     * 'Standard_DS13', 'Standard_DS14', 'Standard_DS1_v2', 'Standard_DS2_v2',
     * 'Standard_DS3_v2', 'Standard_DS4_v2', 'Standard_DS5_v2',
     * 'Standard_DS11_v2', 'Standard_DS12_v2', 'Standard_DS13_v2',
     * 'Standard_DS14_v2', 'Standard_DS15_v2', 'Standard_G1', 'Standard_G2',
     * 'Standard_G3', 'Standard_G4', 'Standard_G5', 'Standard_GS1',
     * 'Standard_GS2', 'Standard_GS3', 'Standard_GS4', 'Standard_GS5'
     * 
     * @param {object} [parameters.storageProfile] the storage profile.
     * 
     * @param {object} [parameters.storageProfile.imageReference] the image
     * reference.
     * 
     * @param {string} [parameters.storageProfile.imageReference.publisher] the
     * image publisher.
     * 
     * @param {string} [parameters.storageProfile.imageReference.offer] the image
     * offer.
     * 
     * @param {string} [parameters.storageProfile.imageReference.sku] the image
     * sku.
     * 
     * @param {string} [parameters.storageProfile.imageReference.version] the
     * image version. The allowed formats are Major.Minor.Build or 'latest'.
     * Major, Minor and Build being decimal numbers. Specify 'latest' to use the
     * latest version of image.
     * 
     * @param {object} [parameters.storageProfile.osDisk] the OS disk.
     * 
     * @param {string} [parameters.storageProfile.osDisk.osType] the Operating
     * System type. Possible values include: 'Windows', 'Linux'
     * 
     * @param {object} [parameters.storageProfile.osDisk.encryptionSettings] the
     * disk encryption settings.
     * 
     * @param {object}
     * [parameters.storageProfile.osDisk.encryptionSettings.diskEncryptionKey]
     * the disk encryption key which is a KeyVault Secret.
     * 
     * @param {string}
     * [parameters.storageProfile.osDisk.encryptionSettings.diskEncryptionKey.secretUrl]
     * the URL referencing a secret in a Key Vault.
     * 
     * @param {object}
     * [parameters.storageProfile.osDisk.encryptionSettings.diskEncryptionKey.sourceVault]
     * the Relative URL of the Key Vault containing the secret.
     * 
     * @param {object}
     * [parameters.storageProfile.osDisk.encryptionSettings.keyEncryptionKey] the
     * key encryption key which is KeyVault Key.
     * 
     * @param {string}
     * [parameters.storageProfile.osDisk.encryptionSettings.keyEncryptionKey.keyUrl]
     * the URL referencing a key in a Key Vault.
     * 
     * @param {object}
     * [parameters.storageProfile.osDisk.encryptionSettings.keyEncryptionKey.sourceVault]
     * the Relative URL of the Key Vault containing the key
     * 
     * @param {boolean}
     * [parameters.storageProfile.osDisk.encryptionSettings.enabled] whether disk
     * encryption should be enabled on the Virtual Machine.
     * 
     * @param {string} [parameters.storageProfile.osDisk.name] the disk name.
     * 
     * @param {object} [parameters.storageProfile.osDisk.vhd] the Virtual Hard
     * Disk.
     * 
     * @param {object} [parameters.storageProfile.osDisk.image] the Source User
     * Image VirtualHardDisk. This VirtualHardDisk will be copied before using it
     * to attach to the Virtual Machine.If SourceImage is provided, the
     * destination VirtualHardDisk should not exist.
     * 
     * @param {string} [parameters.storageProfile.osDisk.image.uri] the virtual
     * hard disk's uri. It should be a valid Uri to a virtual hard disk.
     * 
     * @param {string} [parameters.storageProfile.osDisk.caching] the caching
     * type. Possible values include: 'None', 'ReadOnly', 'ReadWrite'
     * 
     * @param {string} [parameters.storageProfile.osDisk.createOption] the create
     * option. Possible values include: 'fromImage', 'empty', 'attach'
     * 
     * @param {number} [parameters.storageProfile.osDisk.diskSizeGB] the initial
     * disk size in GB for blank data disks, and the new desired size for
     * existing OS and Data disks.
     * 
     * @param {array} [parameters.storageProfile.dataDisks] the data disks.
     * 
     * @param {object} [parameters.osProfile] the OS profile.
     * 
     * @param {string} [parameters.osProfile.computerName] the computer name.
     * 
     * @param {string} [parameters.osProfile.adminUsername] the admin user name.
     * 
     * @param {string} [parameters.osProfile.adminPassword] the admin user
     * password.
     * 
     * @param {string} [parameters.osProfile.customData] a base-64 encoded string
     * of custom data.
     * 
     * @param {object} [parameters.osProfile.windowsConfiguration] the Windows
     * Configuration of the OS profile.
     * 
     * @param {boolean}
     * [parameters.osProfile.windowsConfiguration.provisionVMAgent] whether VM
     * Agent should be provisioned on the Virtual Machine.
     * 
     * @param {boolean}
     * [parameters.osProfile.windowsConfiguration.enableAutomaticUpdates] whether
     * Windows updates are automatically installed on the VM
     * 
     * @param {string} [parameters.osProfile.windowsConfiguration.timeZone] the
     * Time Zone of the VM
     * 
     * @param {array}
     * [parameters.osProfile.windowsConfiguration.additionalUnattendContent] the
     * additional base-64 encoded XML formatted information that can be included
     * in the Unattend.xml file.
     * 
     * @param {object} [parameters.osProfile.windowsConfiguration.winRM] the
     * Windows Remote Management configuration of the VM
     * 
     * @param {array} [parameters.osProfile.windowsConfiguration.winRM.listeners]
     * the list of Windows Remote Management listeners
     * 
     * @param {object} [parameters.osProfile.linuxConfiguration] the Linux
     * Configuration of the OS profile.
     * 
     * @param {boolean}
     * [parameters.osProfile.linuxConfiguration.disablePasswordAuthentication]
     * whether Authentication using user name and password is allowed or not
     * 
     * @param {object} [parameters.osProfile.linuxConfiguration.ssh] the SSH
     * configuration for linux VMs
     * 
     * @param {array} [parameters.osProfile.linuxConfiguration.ssh.publicKeys] the
     * list of SSH public keys used to authenticate with linux based VMs
     * 
     * @param {array} [parameters.osProfile.secrets] the List of certificates for
     * addition to the VM.
     * 
     * @param {object} [parameters.networkProfile] the network profile.
     * 
     * @param {array} [parameters.networkProfile.networkInterfaces] the network
     * interfaces.
     * 
     * @param {object} [parameters.diagnosticsProfile] the diagnostics profile.
     * 
     * @param {object} [parameters.diagnosticsProfile.bootDiagnostics] the boot
     * diagnostics.
     * 
     * @param {boolean} [parameters.diagnosticsProfile.bootDiagnostics.enabled]
     * whether boot diagnostics should be enabled on the Virtual Machine.
     * 
     * @param {string} [parameters.diagnosticsProfile.bootDiagnostics.storageUri]
     * the boot diagnostics storage Uri. It should be a valid Uri
     * 
     * @param {object} [parameters.availabilitySet] the reference Id of the
     * availability set to which this virtual machine belongs.
     * 
     * @param {string} [parameters.availabilitySet.id] Resource Id
     * 
     * @param {string} [parameters.licenseType] the license type, which is for
     * bring your own license scenario.
     * 
     * @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
     */
    beginCreateOrUpdate(resourceGroupName: string, vmName: string, parameters: models.VirtualMachine, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachine>): void;
    beginCreateOrUpdate(resourceGroupName: string, vmName: string, parameters: models.VirtualMachine, callback: ServiceCallback<models.VirtualMachine>): void;

    /**
     * The operation to delete a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to delete a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to get a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] The expand expression to apply on the
     * operation. Possible values include: 'instanceView'
     * 
     * @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, vmName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachine>): void;
    get(resourceGroupName: string, vmName: string, callback: ServiceCallback<models.VirtualMachine>): void;

    /**
     * Shuts down the Virtual Machine and releases the compute resources. You are
     * not billed for the compute resources that this Virtual Machine uses.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    deallocate(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deallocate(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * Shuts down the Virtual Machine and releases the compute resources. You are
     * not billed for the compute resources that this Virtual Machine uses.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    beginDeallocate(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeallocate(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * Sets the state of the VM as Generalized.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    generalize(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    generalize(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to list virtual machines under a resource group.
     *
     * @param {string} resourceGroupName The name of 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
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.VirtualMachineListResult>): void;

    /**
     * Gets the list of Virtual Machines in the subscription. Use nextLink
     * property in the response to get the next page of Virtual Machines. Do this
     * till nextLink is not null to fetch all the Virtual Machines.
     *
     * @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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineListResult>): void;
    listAll(callback: ServiceCallback<models.VirtualMachineListResult>): void;

    /**
     * Lists all available virtual machine sizes it can be resized to for a
     * virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    listAvailableSizes(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineSizeListResult>): void;
    listAvailableSizes(resourceGroupName: string, vmName: string, callback: ServiceCallback<models.VirtualMachineSizeListResult>): void;

    /**
     * The operation to power off (stop) a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    powerOff(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    powerOff(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to power off (stop) a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    beginPowerOff(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginPowerOff(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to restart a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    restart(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    restart(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to restart a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    beginRestart(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginRestart(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to start a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    start(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to start a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginStart(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to redeploy a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    redeploy(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    redeploy(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to redeploy a virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmName The name of the virtual machine.
     * 
     * @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
     */
    beginRedeploy(resourceGroupName: string, vmName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginRedeploy(resourceGroupName: string, vmName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to list virtual machines under a resource group.
     *
     * @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.VirtualMachineListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.VirtualMachineListResult>): void;

    /**
     * Gets the list of Virtual Machines in the subscription. Use nextLink
     * property in the response to get the next page of Virtual Machines. Do this
     * till nextLink is not null to fetch all the Virtual Machines.
     *
     * @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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineListResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.VirtualMachineListResult>): void;
}

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

    /**
     * Allows you to create or update a virtual machine scale set by providing
     * parameters or a path to pre-configured parameter file.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name Parameters supplied to the Create Virtual Machine
     * Scale Set operation.
     * 
     * @param {object} parameters Parameters supplied to the Create Virtual
     * Machine Scale Set operation.
     * 
     * @param {object} [parameters.sku] the virtual machine scale set sku.
     * 
     * @param {string} [parameters.sku.name] the sku name.
     * 
     * @param {string} [parameters.sku.tier] the sku tier.
     * 
     * @param {number} [parameters.sku.capacity] the sku capacity.
     * 
     * @param {object} [parameters.upgradePolicy] the upgrade policy.
     * 
     * @param {string} [parameters.upgradePolicy.mode] the upgrade mode. Possible
     * values include: 'Automatic', 'Manual'
     * 
     * @param {object} [parameters.virtualMachineProfile] the virtual machine
     * profile.
     * 
     * @param {object} [parameters.virtualMachineProfile.osProfile] the virtual
     * machine scale set OS profile.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.osProfile.computerNamePrefix] the
     * computer name prefix.
     * 
     * @param {string} [parameters.virtualMachineProfile.osProfile.adminUsername]
     * the admin user name.
     * 
     * @param {string} [parameters.virtualMachineProfile.osProfile.adminPassword]
     * the admin user password.
     * 
     * @param {string} [parameters.virtualMachineProfile.osProfile.customData] a
     * base-64 encoded string of custom data.
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration] the
     * Windows Configuration of the OS profile.
     * 
     * @param {boolean}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.provisionVMAgent]
     * whether VM Agent should be provisioned on the Virtual Machine.
     * 
     * @param {boolean}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.enableAutomaticUpdates]
     * whether Windows updates are automatically installed on the VM
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.timeZone]
     * the Time Zone of the VM
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.additionalUnattendContent]
     * the additional base-64 encoded XML formatted information that can be
     * included in the Unattend.xml file.
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.winRM]
     * the Windows Remote Management configuration of the VM
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.winRM.listeners]
     * the list of Windows Remote Management listeners
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.osProfile.linuxConfiguration] the Linux
     * Configuration of the OS profile.
     * 
     * @param {boolean}
     * [parameters.virtualMachineProfile.osProfile.linuxConfiguration.disablePasswordAuthentication]
     * whether Authentication using user name and password is allowed or not
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.osProfile.linuxConfiguration.ssh] the
     * SSH configuration for linux VMs
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.osProfile.linuxConfiguration.ssh.publicKeys]
     * the list of SSH public keys used to authenticate with linux based VMs
     * 
     * @param {array} [parameters.virtualMachineProfile.osProfile.secrets] the
     * List of certificates for addition to the VM.
     * 
     * @param {object} [parameters.virtualMachineProfile.storageProfile] the
     * virtual machine scale set storage profile.
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.storageProfile.imageReference] the image
     * reference.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.imageReference.publisher]
     * the image publisher.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.imageReference.offer] the
     * image offer.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.imageReference.sku] the
     * image sku.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.imageReference.version]
     * the image version. The allowed formats are Major.Minor.Build or 'latest'.
     * Major, Minor and Build being decimal numbers. Specify 'latest' to use the
     * latest version of image.
     * 
     * @param {object} [parameters.virtualMachineProfile.storageProfile.osDisk]
     * the OS disk.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.name] the disk
     * name.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.caching] the
     * caching type. Possible values include: 'None', 'ReadOnly', 'ReadWrite'
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.createOption] the
     * create option. Possible values include: 'fromImage', 'empty', 'attach'
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.osType] the
     * Operating System type. Possible values include: 'Windows', 'Linux'
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.image] the Source
     * User Image VirtualHardDisk. This VirtualHardDisk will be copied before
     * using it to attach to the Virtual Machine.If SourceImage is provided, the
     * destination VirtualHardDisk should not exist.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.image.uri] the
     * virtual hard disk's uri. It should be a valid Uri to a virtual hard disk.
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.vhdContainers] the
     * list of virtual hard disk container uris.
     * 
     * @param {object} [parameters.virtualMachineProfile.networkProfile] the
     * virtual machine scale set network profile.
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.networkProfile.networkInterfaceConfigurations]
     * the list of network configurations.
     * 
     * @param {object} [parameters.virtualMachineProfile.extensionProfile] the
     * virtual machine scale set extension profile.
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.extensionProfile.extensions] the virtual
     * machine scale set child extension resources.
     * 
     * @param {boolean} [parameters.overProvision] Specifies whether the Virtual
     * Machine Scale Set should be overprovisioned.
     * 
     * @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, name: string, parameters: models.VirtualMachineScaleSet, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSet>): void;
    createOrUpdate(resourceGroupName: string, name: string, parameters: models.VirtualMachineScaleSet, callback: ServiceCallback<models.VirtualMachineScaleSet>): void;

    /**
     * Allows you to create or update a virtual machine scale set by providing
     * parameters or a path to pre-configured parameter file.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name Parameters supplied to the Create Virtual Machine
     * Scale Set operation.
     * 
     * @param {object} parameters Parameters supplied to the Create Virtual
     * Machine Scale Set operation.
     * 
     * @param {object} [parameters.sku] the virtual machine scale set sku.
     * 
     * @param {string} [parameters.sku.name] the sku name.
     * 
     * @param {string} [parameters.sku.tier] the sku tier.
     * 
     * @param {number} [parameters.sku.capacity] the sku capacity.
     * 
     * @param {object} [parameters.upgradePolicy] the upgrade policy.
     * 
     * @param {string} [parameters.upgradePolicy.mode] the upgrade mode. Possible
     * values include: 'Automatic', 'Manual'
     * 
     * @param {object} [parameters.virtualMachineProfile] the virtual machine
     * profile.
     * 
     * @param {object} [parameters.virtualMachineProfile.osProfile] the virtual
     * machine scale set OS profile.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.osProfile.computerNamePrefix] the
     * computer name prefix.
     * 
     * @param {string} [parameters.virtualMachineProfile.osProfile.adminUsername]
     * the admin user name.
     * 
     * @param {string} [parameters.virtualMachineProfile.osProfile.adminPassword]
     * the admin user password.
     * 
     * @param {string} [parameters.virtualMachineProfile.osProfile.customData] a
     * base-64 encoded string of custom data.
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration] the
     * Windows Configuration of the OS profile.
     * 
     * @param {boolean}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.provisionVMAgent]
     * whether VM Agent should be provisioned on the Virtual Machine.
     * 
     * @param {boolean}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.enableAutomaticUpdates]
     * whether Windows updates are automatically installed on the VM
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.timeZone]
     * the Time Zone of the VM
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.additionalUnattendContent]
     * the additional base-64 encoded XML formatted information that can be
     * included in the Unattend.xml file.
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.winRM]
     * the Windows Remote Management configuration of the VM
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.osProfile.windowsConfiguration.winRM.listeners]
     * the list of Windows Remote Management listeners
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.osProfile.linuxConfiguration] the Linux
     * Configuration of the OS profile.
     * 
     * @param {boolean}
     * [parameters.virtualMachineProfile.osProfile.linuxConfiguration.disablePasswordAuthentication]
     * whether Authentication using user name and password is allowed or not
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.osProfile.linuxConfiguration.ssh] the
     * SSH configuration for linux VMs
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.osProfile.linuxConfiguration.ssh.publicKeys]
     * the list of SSH public keys used to authenticate with linux based VMs
     * 
     * @param {array} [parameters.virtualMachineProfile.osProfile.secrets] the
     * List of certificates for addition to the VM.
     * 
     * @param {object} [parameters.virtualMachineProfile.storageProfile] the
     * virtual machine scale set storage profile.
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.storageProfile.imageReference] the image
     * reference.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.imageReference.publisher]
     * the image publisher.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.imageReference.offer] the
     * image offer.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.imageReference.sku] the
     * image sku.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.imageReference.version]
     * the image version. The allowed formats are Major.Minor.Build or 'latest'.
     * Major, Minor and Build being decimal numbers. Specify 'latest' to use the
     * latest version of image.
     * 
     * @param {object} [parameters.virtualMachineProfile.storageProfile.osDisk]
     * the OS disk.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.name] the disk
     * name.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.caching] the
     * caching type. Possible values include: 'None', 'ReadOnly', 'ReadWrite'
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.createOption] the
     * create option. Possible values include: 'fromImage', 'empty', 'attach'
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.osType] the
     * Operating System type. Possible values include: 'Windows', 'Linux'
     * 
     * @param {object}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.image] the Source
     * User Image VirtualHardDisk. This VirtualHardDisk will be copied before
     * using it to attach to the Virtual Machine.If SourceImage is provided, the
     * destination VirtualHardDisk should not exist.
     * 
     * @param {string}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.image.uri] the
     * virtual hard disk's uri. It should be a valid Uri to a virtual hard disk.
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.storageProfile.osDisk.vhdContainers] the
     * list of virtual hard disk container uris.
     * 
     * @param {object} [parameters.virtualMachineProfile.networkProfile] the
     * virtual machine scale set network profile.
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.networkProfile.networkInterfaceConfigurations]
     * the list of network configurations.
     * 
     * @param {object} [parameters.virtualMachineProfile.extensionProfile] the
     * virtual machine scale set extension profile.
     * 
     * @param {array}
     * [parameters.virtualMachineProfile.extensionProfile.extensions] the virtual
     * machine scale set child extension resources.
     * 
     * @param {boolean} [parameters.overProvision] Specifies whether the Virtual
     * Machine Scale Set should be overprovisioned.
     * 
     * @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
     */
    beginCreateOrUpdate(resourceGroupName: string, name: string, parameters: models.VirtualMachineScaleSet, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSet>): void;
    beginCreateOrUpdate(resourceGroupName: string, name: string, parameters: models.VirtualMachineScaleSet, callback: ServiceCallback<models.VirtualMachineScaleSet>): void;

    /**
     * Allows you to deallocate virtual machines in a virtual machine scale set.
     * Shuts down the virtual machines and releases the compute resources. You
     * are not billed for the compute resources that this virtual machine scale
     * set uses.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {array} [options.instanceIds] the virtual machine scale set instance
     * ids.
     * 
     * @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
     */
    deallocate(resourceGroupName: string, vmScaleSetName: string, options: { instanceIds? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deallocate(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to deallocate virtual machines in a virtual machine scale set.
     * Shuts down the virtual machines and releases the compute resources. You
     * are not billed for the compute resources that this virtual machine scale
     * set uses.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {array} [options.instanceIds] the virtual machine scale set instance
     * ids.
     * 
     * @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
     */
    beginDeallocate(resourceGroupName: string, vmScaleSetName: string, options: { instanceIds? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeallocate(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to delete a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @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, vmScaleSetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to delete a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @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, vmScaleSetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Display information about a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @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, vmScaleSetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSet>): void;
    get(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<models.VirtualMachineScaleSet>): void;

    /**
     * Allows you to delete virtual machines in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {array} instanceIds the virtual machine scale set instance ids.
     * 
     * @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
     */
    deleteInstances(resourceGroupName: string, vmScaleSetName: string, instanceIds: string[], options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteInstances(resourceGroupName: string, vmScaleSetName: string, instanceIds: string[], callback: ServiceCallback<void>): void;

    /**
     * Allows you to delete virtual machines in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {array} instanceIds the virtual machine scale set instance ids.
     * 
     * @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
     */
    beginDeleteInstances(resourceGroupName: string, vmScaleSetName: string, instanceIds: string[], options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteInstances(resourceGroupName: string, vmScaleSetName: string, instanceIds: string[], callback: ServiceCallback<void>): void;

    /**
     * Displays status of a virtual machine scale set instance.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @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
     */
    getInstanceView(resourceGroupName: string, vmScaleSetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSetInstanceView>): void;
    getInstanceView(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<models.VirtualMachineScaleSetInstanceView>): void;

    /**
     * Lists all virtual machine scale sets under a resource group.
     *
     * @param {string} resourceGroupName The name of 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
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSetListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.VirtualMachineScaleSetListResult>): void;

    /**
     * Lists all Virtual Machine Scale Sets in the subscription. Use nextLink
     * property in the response to get the next page of Virtual Machine Scale
     * Sets. Do this till nextLink is not null to fetch all the Virtual Machine
     * Scale Sets.
     *
     * @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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSetListWithLinkResult>): void;
    listAll(callback: ServiceCallback<models.VirtualMachineScaleSetListWithLinkResult>): void;

    /**
     * Displays available skus for your virtual machine scale set including the
     * minimum and maximum vm instances allowed for a particular sku.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @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
     */
    listSkus(resourceGroupName: string, vmScaleSetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSetListSkusResult>): void;
    listSkus(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<models.VirtualMachineScaleSetListSkusResult>): void;

    /**
     * Allows you to power off (stop) virtual machines in a virtual machine scale
     * set. Note that resources are still attached and you are getting charged
     * for the resources. Use deallocate to release resources.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {array} [options.instanceIds] the virtual machine scale set instance
     * ids.
     * 
     * @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
     */
    powerOff(resourceGroupName: string, vmScaleSetName: string, options: { instanceIds? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    powerOff(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to power off (stop) virtual machines in a virtual machine scale
     * set. Note that resources are still attached and you are getting charged
     * for the resources. Use deallocate to release resources.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {array} [options.instanceIds] the virtual machine scale set instance
     * ids.
     * 
     * @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
     */
    beginPowerOff(resourceGroupName: string, vmScaleSetName: string, options: { instanceIds? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginPowerOff(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to restart virtual machines in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {array} [options.instanceIds] the virtual machine scale set instance
     * ids.
     * 
     * @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
     */
    restart(resourceGroupName: string, vmScaleSetName: string, options: { instanceIds? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    restart(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to restart virtual machines in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {array} [options.instanceIds] the virtual machine scale set instance
     * ids.
     * 
     * @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
     */
    beginRestart(resourceGroupName: string, vmScaleSetName: string, options: { instanceIds? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginRestart(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to start virtual machines in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {array} [options.instanceIds] the virtual machine scale set instance
     * ids.
     * 
     * @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(resourceGroupName: string, vmScaleSetName: string, options: { instanceIds? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    start(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to start virtual machines in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {array} [options.instanceIds] the virtual machine scale set instance
     * ids.
     * 
     * @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(resourceGroupName: string, vmScaleSetName: string, options: { instanceIds? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginStart(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to manually upgrade virtual machines in a virtual machine scale
     * set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {array} instanceIds the virtual machine scale set instance ids.
     * 
     * @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
     */
    updateInstances(resourceGroupName: string, vmScaleSetName: string, instanceIds: string[], options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    updateInstances(resourceGroupName: string, vmScaleSetName: string, instanceIds: string[], callback: ServiceCallback<void>): void;

    /**
     * Allows you to manually upgrade virtual machines in a virtual machine scale
     * set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {array} instanceIds the virtual machine scale set instance ids.
     * 
     * @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
     */
    beginUpdateInstances(resourceGroupName: string, vmScaleSetName: string, instanceIds: string[], options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginUpdateInstances(resourceGroupName: string, vmScaleSetName: string, instanceIds: string[], callback: ServiceCallback<void>): void;

    /**
     * Allows you to re-image(update the version of the installed operating
     * system) virtual machines in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @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
     */
    reimage(resourceGroupName: string, vmScaleSetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    reimage(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to re-image(update the version of the installed operating
     * system) virtual machines in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @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
     */
    beginReimage(resourceGroupName: string, vmScaleSetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginReimage(resourceGroupName: string, vmScaleSetName: string, callback: ServiceCallback<void>): void;

    /**
     * Lists all virtual machine scale sets under a resource group.
     *
     * @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.VirtualMachineScaleSetListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.VirtualMachineScaleSetListResult>): void;

    /**
     * Lists all Virtual Machine Scale Sets in the subscription. Use nextLink
     * property in the response to get the next page of Virtual Machine Scale
     * Sets. Do this till nextLink is not null to fetch all the Virtual Machine
     * Scale Sets.
     *
     * @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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSetListWithLinkResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.VirtualMachineScaleSetListWithLinkResult>): void;

    /**
     * Displays available skus for your virtual machine scale set including the
     * minimum and maximum vm instances allowed for a particular sku.
     *
     * @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
     */
    listSkusNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSetListSkusResult>): void;
    listSkusNext(nextPageLink: string, callback: ServiceCallback<models.VirtualMachineScaleSetListSkusResult>): void;
}

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

    /**
     * Allows you to re-image(update the version of the installed operating
     * system) a virtual machine scale set instance.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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
     */
    reimage(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    reimage(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to re-image(update the version of the installed operating
     * system) a virtual machine scale set instance.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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
     */
    beginReimage(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginReimage(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to deallocate a virtual machine scale set virtual machine. Shuts
     * down the virtual machine and releases the compute resources. You are not
     * billed for the compute resources that this virtual machine uses.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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
     */
    deallocate(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deallocate(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to deallocate a virtual machine scale set virtual machine. Shuts
     * down the virtual machine and releases the compute resources. You are not
     * billed for the compute resources that this virtual machine uses.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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
     */
    beginDeallocate(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeallocate(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to delete a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to delete a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Displays information about a virtual machine scale set virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSetVM>): void;
    get(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<models.VirtualMachineScaleSetVM>): void;

    /**
     * Displays the status of a virtual machine scale set virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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
     */
    getInstanceView(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSetVMInstanceView>): void;
    getInstanceView(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<models.VirtualMachineScaleSetVMInstanceView>): void;

    /**
     * Lists all virtual machines in a VM scale sets.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualMachineScaleSetName The name of the virtual machine
     * scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @param {string} [options.select] The list parameters.
     * 
     * @param {string} [options.expand] The expand expression to apply on the
     * operation.
     * 
     * @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, virtualMachineScaleSetName: string, options: { filter? : string, select? : string, expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualMachineScaleSetVMListResult>): void;
    list(resourceGroupName: string, virtualMachineScaleSetName: string, callback: ServiceCallback<models.VirtualMachineScaleSetVMListResult>): void;

    /**
     * Allows you to power off (stop) a virtual machine in a VM scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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
     */
    powerOff(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    powerOff(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to power off (stop) a virtual machine in a VM scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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
     */
    beginPowerOff(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginPowerOff(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to restart a virtual machine in a VM scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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
     */
    restart(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    restart(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to restart a virtual machine in a VM scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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
     */
    beginRestart(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginRestart(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to start a virtual machine in a VM scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    start(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Allows you to start a virtual machine in a VM scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} vmScaleSetName The name of the virtual machine scale set.
     * 
     * @param {string} instanceId The instance id of the virtual machine.
     * 
     * @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(resourceGroupName: string, vmScaleSetName: string, instanceId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginStart(resourceGroupName: string, vmScaleSetName: string, instanceId: string, callback: ServiceCallback<void>): void;

    /**
     * Lists all virtual machines in a VM scale sets.
     *
     * @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.VirtualMachineScaleSetVMListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.VirtualMachineScaleSetVMListResult>): void;
}

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

    /**
     * The operation to create or update a container service.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} containerServiceName The name of the container service
     * within the given subscription and resource group.
     * 
     * @param {object} parameters Parameters supplied to the Create Container
     * Service operation.
     * 
     * @param {object} [parameters.orchestratorProfile] Properties of orchestrator
     * 
     * @param {string} [parameters.orchestratorProfile.orchestratorType] Specifies
     * what orchestrator will be used to manage container cluster resources.
     * Possible values include: 'Swarm', 'DCOS'
     * 
     * @param {object} [parameters.masterProfile] Properties of master agents
     * 
     * @param {number} [parameters.masterProfile.count] Number of masters (VMs) in
     * the container cluster
     * 
     * @param {string} [parameters.masterProfile.dnsPrefix] DNS prefix to be used
     * to create FQDN for master
     * 
     * @param {array} [parameters.agentPoolProfiles] Properties of agent pools
     * 
     * @param {object} [parameters.windowsProfile] Properties of Windows VMs
     * 
     * @param {string} [parameters.windowsProfile.adminUsername] The administrator
     * username to use for Windows VMs
     * 
     * @param {string} [parameters.windowsProfile.adminPassword] The administrator
     * password to use for Windows VMs
     * 
     * @param {object} [parameters.linuxProfile] Properties for Linux VMs
     * 
     * @param {string} [parameters.linuxProfile.adminUsername] The administrator
     * username to use for all Linux VMs
     * 
     * @param {object} [parameters.linuxProfile.ssh] Specifies the ssh key
     * configuration for Linux VMs
     * 
     * @param {array} [parameters.linuxProfile.ssh.publicKeys] the list of SSH
     * public keys used to authenticate with Linux based VMs
     * 
     * @param {object} [parameters.diagnosticsProfile] Properties for Diagnostic
     * Agent
     * 
     * @param {object} [parameters.diagnosticsProfile.vmDiagnostics] Profile for
     * container service VM diagnostic agent
     * 
     * @param {boolean} [parameters.diagnosticsProfile.vmDiagnostics.enabled]
     * whether VM Diagnostic Agent should be provisioned on the Virtual Machine.
     * 
     * @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, containerServiceName: string, parameters: models.ContainerService, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ContainerService>): void;
    createOrUpdate(resourceGroupName: string, containerServiceName: string, parameters: models.ContainerService, callback: ServiceCallback<models.ContainerService>): void;

    /**
     * The operation to create or update a container service.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} containerServiceName The name of the container service
     * within the given subscription and resource group.
     * 
     * @param {object} parameters Parameters supplied to the Create Container
     * Service operation.
     * 
     * @param {object} [parameters.orchestratorProfile] Properties of orchestrator
     * 
     * @param {string} [parameters.orchestratorProfile.orchestratorType] Specifies
     * what orchestrator will be used to manage container cluster resources.
     * Possible values include: 'Swarm', 'DCOS'
     * 
     * @param {object} [parameters.masterProfile] Properties of master agents
     * 
     * @param {number} [parameters.masterProfile.count] Number of masters (VMs) in
     * the container cluster
     * 
     * @param {string} [parameters.masterProfile.dnsPrefix] DNS prefix to be used
     * to create FQDN for master
     * 
     * @param {array} [parameters.agentPoolProfiles] Properties of agent pools
     * 
     * @param {object} [parameters.windowsProfile] Properties of Windows VMs
     * 
     * @param {string} [parameters.windowsProfile.adminUsername] The administrator
     * username to use for Windows VMs
     * 
     * @param {string} [parameters.windowsProfile.adminPassword] The administrator
     * password to use for Windows VMs
     * 
     * @param {object} [parameters.linuxProfile] Properties for Linux VMs
     * 
     * @param {string} [parameters.linuxProfile.adminUsername] The administrator
     * username to use for all Linux VMs
     * 
     * @param {object} [parameters.linuxProfile.ssh] Specifies the ssh key
     * configuration for Linux VMs
     * 
     * @param {array} [parameters.linuxProfile.ssh.publicKeys] the list of SSH
     * public keys used to authenticate with Linux based VMs
     * 
     * @param {object} [parameters.diagnosticsProfile] Properties for Diagnostic
     * Agent
     * 
     * @param {object} [parameters.diagnosticsProfile.vmDiagnostics] Profile for
     * container service VM diagnostic agent
     * 
     * @param {boolean} [parameters.diagnosticsProfile.vmDiagnostics.enabled]
     * whether VM Diagnostic Agent should be provisioned on the Virtual Machine.
     * 
     * @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
     */
    beginCreateOrUpdate(resourceGroupName: string, containerServiceName: string, parameters: models.ContainerService, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ContainerService>): void;
    beginCreateOrUpdate(resourceGroupName: string, containerServiceName: string, parameters: models.ContainerService, callback: ServiceCallback<models.ContainerService>): void;

    /**
     * The operation to get a container service.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} containerServiceName The name of the container service
     * within the given subscription and 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
     */
    get(resourceGroupName: string, containerServiceName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ContainerService>): void;
    get(resourceGroupName: string, containerServiceName: string, callback: ServiceCallback<models.ContainerService>): void;

    /**
     * The operation to delete a container service.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} containerServiceName The name of the container service
     * within the given subscription and 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
     */
    deleteMethod(resourceGroupName: string, containerServiceName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, containerServiceName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to delete a container service.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} containerServiceName The name of the container service
     * within the given subscription and 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
     */
    beginDeleteMethod(resourceGroupName: string, containerServiceName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, containerServiceName: string, callback: ServiceCallback<void>): void;

    /**
     * The operation to list container services.
     *
     * @param {string} resourceGroupName The name of 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
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ContainerServiceListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.ContainerServiceListResult>): void;
}
