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

    /**
     * List labs.
     *
     * @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
     */
    listBySubscription(options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationLab>): void;
    listBySubscription(callback: ServiceCallback<models.ResponseWithContinuationLab>): void;

    /**
     * List labs.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @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
     */
    listByResourceGroup(resourceGroupName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationLab>): void;
    listByResourceGroup(resourceGroupName: string, callback: ServiceCallback<models.ResponseWithContinuationLab>): void;

    /**
     * Get lab.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @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
     */
    getResource(resourceGroupName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Lab>): void;
    getResource(resourceGroupName: string, name: string, callback: ServiceCallback<models.Lab>): void;

    /**
     * Create or replace an existing Lab. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @param {object} lab
     * 
     * @param {string} [lab.defaultStorageAccount] The lab's default storage
     * account.
     * 
     * @param {string} [lab.artifactsStorageAccount] The artifact storage account
     * of the lab.
     * 
     * @param {array} [lab.storageAccounts] The storage accounts of the lab.
     * 
     * @param {string} [lab.vaultName] The name of the key vault of the lab.
     * 
     * @param {string} [lab.labStorageType] The type of the lab storage. Possible
     * values include: 'Standard', 'Premium'
     * 
     * @param {string} [lab.defaultVirtualNetworkId] The default virtual network
     * identifier of the lab.
     * 
     * @param {date} [lab.createdDate] The creation date of the lab.
     * 
     * @param {string} [lab.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [lab.id] The identifier of the resource.
     * 
     * @param {string} [lab.name] The name of the resource.
     * 
     * @param {string} [lab.type] The type of the resource.
     * 
     * @param {string} [lab.location] The location of the resource.
     * 
     * @param {object} [lab.tags] The tags of the resource.
     * 
     * @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
     */
    createOrUpdateResource(resourceGroupName: string, name: string, lab: models.Lab, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Lab>): void;
    createOrUpdateResource(resourceGroupName: string, name: string, lab: models.Lab, callback: ServiceCallback<models.Lab>): void;

    /**
     * Create or replace an existing Lab. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @param {object} lab
     * 
     * @param {string} [lab.defaultStorageAccount] The lab's default storage
     * account.
     * 
     * @param {string} [lab.artifactsStorageAccount] The artifact storage account
     * of the lab.
     * 
     * @param {array} [lab.storageAccounts] The storage accounts of the lab.
     * 
     * @param {string} [lab.vaultName] The name of the key vault of the lab.
     * 
     * @param {string} [lab.labStorageType] The type of the lab storage. Possible
     * values include: 'Standard', 'Premium'
     * 
     * @param {string} [lab.defaultVirtualNetworkId] The default virtual network
     * identifier of the lab.
     * 
     * @param {date} [lab.createdDate] The creation date of the lab.
     * 
     * @param {string} [lab.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [lab.id] The identifier of the resource.
     * 
     * @param {string} [lab.name] The name of the resource.
     * 
     * @param {string} [lab.type] The type of the resource.
     * 
     * @param {string} [lab.location] The location of the resource.
     * 
     * @param {object} [lab.tags] The tags of the resource.
     * 
     * @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
     */
    beginCreateOrUpdateResource(resourceGroupName: string, name: string, lab: models.Lab, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Lab>): void;
    beginCreateOrUpdateResource(resourceGroupName: string, name: string, lab: models.Lab, callback: ServiceCallback<models.Lab>): void;

    /**
     * Delete lab. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @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
     */
    deleteResource(resourceGroupName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteResource(resourceGroupName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Delete lab. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @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
     */
    beginDeleteResource(resourceGroupName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteResource(resourceGroupName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Modify properties of labs.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @param {object} lab
     * 
     * @param {string} [lab.defaultStorageAccount] The lab's default storage
     * account.
     * 
     * @param {string} [lab.artifactsStorageAccount] The artifact storage account
     * of the lab.
     * 
     * @param {array} [lab.storageAccounts] The storage accounts of the lab.
     * 
     * @param {string} [lab.vaultName] The name of the key vault of the lab.
     * 
     * @param {string} [lab.labStorageType] The type of the lab storage. Possible
     * values include: 'Standard', 'Premium'
     * 
     * @param {string} [lab.defaultVirtualNetworkId] The default virtual network
     * identifier of the lab.
     * 
     * @param {date} [lab.createdDate] The creation date of the lab.
     * 
     * @param {string} [lab.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [lab.id] The identifier of the resource.
     * 
     * @param {string} [lab.name] The name of the resource.
     * 
     * @param {string} [lab.type] The type of the resource.
     * 
     * @param {string} [lab.location] The location of the resource.
     * 
     * @param {object} [lab.tags] The tags of the resource.
     * 
     * @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
     */
    patchResource(resourceGroupName: string, name: string, lab: models.Lab, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Lab>): void;
    patchResource(resourceGroupName: string, name: string, lab: models.Lab, callback: ServiceCallback<models.Lab>): void;

    /**
     * Create virtual machines in a Lab. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @param {object} labVirtualMachine
     * 
     * @param {string} [labVirtualMachine.notes] The notes of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.ownerObjectId] The object identifier of
     * the owner of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUserId] The object identifier
     * of the creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUser] The email address of
     * creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.computeId] The resource identifier
     * (Microsoft.Compute) of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.customImageId] The custom image
     * identifier of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.osType] The OS type of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.size] The size of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.userName] The user name of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.password] The password of the virtual
     * machine administrator.
     * 
     * @param {string} [labVirtualMachine.sshKey] The SSH key of the virtual
     * machine administrator.
     * 
     * @param {boolean} [labVirtualMachine.isAuthenticationWithSshKey] A value
     * indicating whether this virtual machine uses an SSH key for authentication.
     * 
     * @param {string} [labVirtualMachine.fqdn] The fully-qualified domain name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labSubnetName] The lab subnet name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labVirtualNetworkId] The lab virtual
     * network identifier of the virtual machine.
     * 
     * @param {boolean} [labVirtualMachine.disallowPublicIpAddress] Indicates
     * whether the virtual machine is to be created without a public IP address.
     * 
     * @param {array} [labVirtualMachine.artifacts] The artifacts to be installed
     * on the virtual machine.
     * 
     * @param {object} [labVirtualMachine.artifactDeploymentStatus] The artifact
     * deployment status for the virtual machine.
     * 
     * @param {string}
     * [labVirtualMachine.artifactDeploymentStatus.deploymentStatus] The
     * deployment status of the artifact.
     * 
     * @param {number}
     * [labVirtualMachine.artifactDeploymentStatus.artifactsApplied] The total
     * count of the artifacts that were successfully applied.
     * 
     * @param {number} [labVirtualMachine.artifactDeploymentStatus.totalArtifacts]
     * The total count of the artifacts that were tentatively applied.
     * 
     * @param {object} [labVirtualMachine.galleryImageReference] The Microsoft
     * Azure Marketplace image reference of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.offer] The offer
     * of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.publisher] The
     * publisher of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.sku] The SKU of
     * the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.osType] The OS
     * type of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.version] The
     * version of the gallery image.
     * 
     * @param {string} [labVirtualMachine.provisioningState] The provisioning
     * status of the resource.
     * 
     * @param {string} [labVirtualMachine.id] The identifier of the resource.
     * 
     * @param {string} [labVirtualMachine.name] The name of the resource.
     * 
     * @param {string} [labVirtualMachine.type] The type of the resource.
     * 
     * @param {string} [labVirtualMachine.location] The location of the resource.
     * 
     * @param {object} [labVirtualMachine.tags] The tags of the resource.
     * 
     * @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
     */
    createEnvironment(resourceGroupName: string, name: string, labVirtualMachine: models.LabVirtualMachine, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    createEnvironment(resourceGroupName: string, name: string, labVirtualMachine: models.LabVirtualMachine, callback: ServiceCallback<void>): void;

    /**
     * Create virtual machines in a Lab. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @param {object} labVirtualMachine
     * 
     * @param {string} [labVirtualMachine.notes] The notes of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.ownerObjectId] The object identifier of
     * the owner of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUserId] The object identifier
     * of the creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUser] The email address of
     * creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.computeId] The resource identifier
     * (Microsoft.Compute) of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.customImageId] The custom image
     * identifier of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.osType] The OS type of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.size] The size of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.userName] The user name of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.password] The password of the virtual
     * machine administrator.
     * 
     * @param {string} [labVirtualMachine.sshKey] The SSH key of the virtual
     * machine administrator.
     * 
     * @param {boolean} [labVirtualMachine.isAuthenticationWithSshKey] A value
     * indicating whether this virtual machine uses an SSH key for authentication.
     * 
     * @param {string} [labVirtualMachine.fqdn] The fully-qualified domain name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labSubnetName] The lab subnet name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labVirtualNetworkId] The lab virtual
     * network identifier of the virtual machine.
     * 
     * @param {boolean} [labVirtualMachine.disallowPublicIpAddress] Indicates
     * whether the virtual machine is to be created without a public IP address.
     * 
     * @param {array} [labVirtualMachine.artifacts] The artifacts to be installed
     * on the virtual machine.
     * 
     * @param {object} [labVirtualMachine.artifactDeploymentStatus] The artifact
     * deployment status for the virtual machine.
     * 
     * @param {string}
     * [labVirtualMachine.artifactDeploymentStatus.deploymentStatus] The
     * deployment status of the artifact.
     * 
     * @param {number}
     * [labVirtualMachine.artifactDeploymentStatus.artifactsApplied] The total
     * count of the artifacts that were successfully applied.
     * 
     * @param {number} [labVirtualMachine.artifactDeploymentStatus.totalArtifacts]
     * The total count of the artifacts that were tentatively applied.
     * 
     * @param {object} [labVirtualMachine.galleryImageReference] The Microsoft
     * Azure Marketplace image reference of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.offer] The offer
     * of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.publisher] The
     * publisher of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.sku] The SKU of
     * the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.osType] The OS
     * type of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.version] The
     * version of the gallery image.
     * 
     * @param {string} [labVirtualMachine.provisioningState] The provisioning
     * status of the resource.
     * 
     * @param {string} [labVirtualMachine.id] The identifier of the resource.
     * 
     * @param {string} [labVirtualMachine.name] The name of the resource.
     * 
     * @param {string} [labVirtualMachine.type] The type of the resource.
     * 
     * @param {string} [labVirtualMachine.location] The location of the resource.
     * 
     * @param {object} [labVirtualMachine.tags] The tags of the resource.
     * 
     * @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
     */
    beginCreateEnvironment(resourceGroupName: string, name: string, labVirtualMachine: models.LabVirtualMachine, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginCreateEnvironment(resourceGroupName: string, name: string, labVirtualMachine: models.LabVirtualMachine, callback: ServiceCallback<void>): void;

    /**
     * Generate a URI for uploading custom disk images to a Lab.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @param {object} generateUploadUriParameter
     * 
     * @param {string} [generateUploadUriParameter.blobName] The blob name of the
     * upload URI.
     * 
     * @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
     */
    generateUploadUri(resourceGroupName: string, name: string, generateUploadUriParameter: models.GenerateUploadUriParameter, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GenerateUploadUriResponse>): void;
    generateUploadUri(resourceGroupName: string, name: string, generateUploadUriParameter: models.GenerateUploadUriParameter, callback: ServiceCallback<models.GenerateUploadUriResponse>): void;

    /**
     * List disk images available for custom image creation.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the lab.
     * 
     * @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
     */
    listVhds(resourceGroupName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationLabVhd>): void;
    listVhds(resourceGroupName: string, name: string, callback: ServiceCallback<models.ResponseWithContinuationLabVhd>): void;

    /**
     * List labs.
     *
     * @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
     */
    listBySubscriptionNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationLab>): void;
    listBySubscriptionNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationLab>): void;

    /**
     * List labs.
     *
     * @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
     */
    listByResourceGroupNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationLab>): void;
    listByResourceGroupNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationLab>): void;

    /**
     * List disk images available for custom image creation.
     *
     * @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
     */
    listVhdsNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationLabVhd>): void;
    listVhdsNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationLabVhd>): void;
}

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

    /**
     * List artifact sources.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @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(resourceGroupName: string, labName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationArtifactSource>): void;
    list(resourceGroupName: string, labName: string, callback: ServiceCallback<models.ResponseWithContinuationArtifactSource>): void;

    /**
     * Get artifact source.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the artifact source.
     * 
     * @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
     */
    getResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ArtifactSource>): void;
    getResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<models.ArtifactSource>): void;

    /**
     * Create or replace an existing artifact source.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the artifact source.
     * 
     * @param {object} artifactSource
     * 
     * @param {string} [artifactSource.displayName] The display name of the
     * artifact source.
     * 
     * @param {string} [artifactSource.uri] The URI of the artifact source.
     * 
     * @param {string} [artifactSource.sourceType] The type of the artifact
     * source. Possible values include: 'VsoGit', 'GitHub'
     * 
     * @param {string} [artifactSource.folderPath] The folder path of the artifact
     * source.
     * 
     * @param {string} [artifactSource.branchRef] The branch reference of the
     * artifact source.
     * 
     * @param {string} [artifactSource.securityToken] The security token of the
     * artifact source.
     * 
     * @param {string} [artifactSource.status] The status of the artifact source.
     * Possible values include: 'Enabled', 'Disabled'
     * 
     * @param {string} [artifactSource.provisioningState] The provisioning status
     * of the resource.
     * 
     * @param {string} [artifactSource.id] The identifier of the resource.
     * 
     * @param {string} [artifactSource.name] The name of the resource.
     * 
     * @param {string} [artifactSource.type] The type of the resource.
     * 
     * @param {string} [artifactSource.location] The location of the resource.
     * 
     * @param {object} [artifactSource.tags] The tags of the resource.
     * 
     * @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
     */
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, artifactSource: models.ArtifactSource, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ArtifactSource>): void;
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, artifactSource: models.ArtifactSource, callback: ServiceCallback<models.ArtifactSource>): void;

    /**
     * Delete artifact source.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the artifact source.
     * 
     * @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
     */
    deleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Modify properties of artifact sources.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the artifact source.
     * 
     * @param {object} artifactSource
     * 
     * @param {string} [artifactSource.displayName] The display name of the
     * artifact source.
     * 
     * @param {string} [artifactSource.uri] The URI of the artifact source.
     * 
     * @param {string} [artifactSource.sourceType] The type of the artifact
     * source. Possible values include: 'VsoGit', 'GitHub'
     * 
     * @param {string} [artifactSource.folderPath] The folder path of the artifact
     * source.
     * 
     * @param {string} [artifactSource.branchRef] The branch reference of the
     * artifact source.
     * 
     * @param {string} [artifactSource.securityToken] The security token of the
     * artifact source.
     * 
     * @param {string} [artifactSource.status] The status of the artifact source.
     * Possible values include: 'Enabled', 'Disabled'
     * 
     * @param {string} [artifactSource.provisioningState] The provisioning status
     * of the resource.
     * 
     * @param {string} [artifactSource.id] The identifier of the resource.
     * 
     * @param {string} [artifactSource.name] The name of the resource.
     * 
     * @param {string} [artifactSource.type] The type of the resource.
     * 
     * @param {string} [artifactSource.location] The location of the resource.
     * 
     * @param {object} [artifactSource.tags] The tags of the resource.
     * 
     * @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
     */
    patchResource(resourceGroupName: string, labName: string, name: string, artifactSource: models.ArtifactSource, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ArtifactSource>): void;
    patchResource(resourceGroupName: string, labName: string, name: string, artifactSource: models.ArtifactSource, callback: ServiceCallback<models.ArtifactSource>): void;

    /**
     * List artifact sources.
     *
     * @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.ResponseWithContinuationArtifactSource>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationArtifactSource>): void;
}

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

    /**
     * List artifacts.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} artifactSourceName The name of the artifact source.
     * 
     * @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(resourceGroupName: string, labName: string, artifactSourceName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationArtifact>): void;
    list(resourceGroupName: string, labName: string, artifactSourceName: string, callback: ServiceCallback<models.ResponseWithContinuationArtifact>): void;

    /**
     * Get artifact.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} artifactSourceName The name of the artifact source.
     * 
     * @param {string} name The name of the artifact.
     * 
     * @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
     */
    getResource(resourceGroupName: string, labName: string, artifactSourceName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Artifact>): void;
    getResource(resourceGroupName: string, labName: string, artifactSourceName: string, name: string, callback: ServiceCallback<models.Artifact>): void;

    /**
     * Generates an ARM template for the given artifact, uploads the required
     * files to a storage account, and validates the generated artifact.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} artifactSourceName The name of the artifact source.
     * 
     * @param {string} name The name of the artifact.
     * 
     * @param {object} generateArmTemplateRequest
     * 
     * @param {string} [generateArmTemplateRequest.virtualMachineName] The
     * resource name of the virtual machine.
     * 
     * @param {array} [generateArmTemplateRequest.parameters] The parameters of
     * the ARM template.
     * 
     * @param {string} [generateArmTemplateRequest.location] The location 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
     */
    generateArmTemplate(resourceGroupName: string, labName: string, artifactSourceName: string, name: string, generateArmTemplateRequest: models.GenerateArmTemplateRequest, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ArmTemplateInfo>): void;
    generateArmTemplate(resourceGroupName: string, labName: string, artifactSourceName: string, name: string, generateArmTemplateRequest: models.GenerateArmTemplateRequest, callback: ServiceCallback<models.ArmTemplateInfo>): void;

    /**
     * List artifacts.
     *
     * @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.ResponseWithContinuationArtifact>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationArtifact>): void;
}

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

    /**
     * List cost insights.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @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(resourceGroupName: string, labName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationCostInsight>): void;
    list(resourceGroupName: string, labName: string, callback: ServiceCallback<models.ResponseWithContinuationCostInsight>): void;

    /**
     * Get cost insight.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the cost insight.
     * 
     * @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
     */
    getResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CostInsight>): void;
    getResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<models.CostInsight>): void;

    /**
     * Refresh Lab's Cost Insight Data. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the cost insight.
     * 
     * @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
     */
    refreshData(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    refreshData(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Refresh Lab's Cost Insight Data. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the cost insight.
     * 
     * @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
     */
    beginRefreshData(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginRefreshData(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * List cost insights.
     *
     * @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.ResponseWithContinuationCostInsight>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationCostInsight>): void;
}

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

    /**
     * List costs.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @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(resourceGroupName: string, labName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationCost>): void;
    list(resourceGroupName: string, labName: string, callback: ServiceCallback<models.ResponseWithContinuationCost>): void;

    /**
     * Get cost.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the cost.
     * 
     * @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
     */
    getResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Cost>): void;
    getResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<models.Cost>): void;

    /**
     * Refresh Lab's Cost Data. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the cost.
     * 
     * @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
     */
    refreshData(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    refreshData(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Refresh Lab's Cost Data. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the cost.
     * 
     * @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
     */
    beginRefreshData(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginRefreshData(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * List costs.
     *
     * @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.ResponseWithContinuationCost>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationCost>): void;
}

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

    /**
     * List custom images.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @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(resourceGroupName: string, labName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationCustomImage>): void;
    list(resourceGroupName: string, labName: string, callback: ServiceCallback<models.ResponseWithContinuationCustomImage>): void;

    /**
     * Get custom image.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the custom image.
     * 
     * @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
     */
    getResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CustomImage>): void;
    getResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<models.CustomImage>): void;

    /**
     * Create or replace an existing custom image. This operation can take a while
     * to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the custom image.
     * 
     * @param {object} customImage
     * 
     * @param {object} [customImage.vm]
     * 
     * @param {string} [customImage.vm.sourceVmId] The source vm identifier.
     * 
     * @param {boolean} [customImage.vm.sysPrep] Indicates whether sysprep has
     * been run on the VHD.
     * 
     * @param {object} [customImage.vm.windowsOsInfo] The Windows OS information
     * of the VM.
     * 
     * @param {string} [customImage.vm.windowsOsInfo.windowsOsState] The state of
     * the Windows OS. Possible values include: 'NonSysprepped',
     * 'SysprepRequested', 'SysprepApplied'
     * 
     * @param {object} [customImage.vm.linuxOsInfo] The Linux OS information of
     * the VM.
     * 
     * @param {string} [customImage.vm.linuxOsInfo.linuxOsState] The state of the
     * Linux OS. Possible values include: 'NonDeprovisioned',
     * 'DeprovisionRequested', 'DeprovisionApplied'
     * 
     * @param {object} [customImage.vhd] The VHD from which the image is to be
     * created.
     * 
     * @param {string} [customImage.vhd.imageName] The image name.
     * 
     * @param {boolean} [customImage.vhd.sysPrep] Indicates whether sysprep has
     * been run on the VHD.
     * 
     * @param {string} [customImage.description] The description of the custom
     * image.
     * 
     * @param {string} [customImage.osType] The OS type of the custom image.
     * Possible values include: 'Windows', 'Linux', 'None'
     * 
     * @param {string} [customImage.author] The author of the custom image.
     * 
     * @param {date} [customImage.creationDate] The creation date of the custom
     * image.
     * 
     * @param {string} [customImage.provisioningState] The provisioning status of
     * the resource.
     * 
     * @param {string} [customImage.id] The identifier of the resource.
     * 
     * @param {string} [customImage.name] The name of the resource.
     * 
     * @param {string} [customImage.type] The type of the resource.
     * 
     * @param {string} [customImage.location] The location of the resource.
     * 
     * @param {object} [customImage.tags] The tags of the resource.
     * 
     * @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
     */
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, customImage: models.CustomImage, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CustomImage>): void;
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, customImage: models.CustomImage, callback: ServiceCallback<models.CustomImage>): void;

    /**
     * Create or replace an existing custom image. This operation can take a while
     * to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the custom image.
     * 
     * @param {object} customImage
     * 
     * @param {object} [customImage.vm]
     * 
     * @param {string} [customImage.vm.sourceVmId] The source vm identifier.
     * 
     * @param {boolean} [customImage.vm.sysPrep] Indicates whether sysprep has
     * been run on the VHD.
     * 
     * @param {object} [customImage.vm.windowsOsInfo] The Windows OS information
     * of the VM.
     * 
     * @param {string} [customImage.vm.windowsOsInfo.windowsOsState] The state of
     * the Windows OS. Possible values include: 'NonSysprepped',
     * 'SysprepRequested', 'SysprepApplied'
     * 
     * @param {object} [customImage.vm.linuxOsInfo] The Linux OS information of
     * the VM.
     * 
     * @param {string} [customImage.vm.linuxOsInfo.linuxOsState] The state of the
     * Linux OS. Possible values include: 'NonDeprovisioned',
     * 'DeprovisionRequested', 'DeprovisionApplied'
     * 
     * @param {object} [customImage.vhd] The VHD from which the image is to be
     * created.
     * 
     * @param {string} [customImage.vhd.imageName] The image name.
     * 
     * @param {boolean} [customImage.vhd.sysPrep] Indicates whether sysprep has
     * been run on the VHD.
     * 
     * @param {string} [customImage.description] The description of the custom
     * image.
     * 
     * @param {string} [customImage.osType] The OS type of the custom image.
     * Possible values include: 'Windows', 'Linux', 'None'
     * 
     * @param {string} [customImage.author] The author of the custom image.
     * 
     * @param {date} [customImage.creationDate] The creation date of the custom
     * image.
     * 
     * @param {string} [customImage.provisioningState] The provisioning status of
     * the resource.
     * 
     * @param {string} [customImage.id] The identifier of the resource.
     * 
     * @param {string} [customImage.name] The name of the resource.
     * 
     * @param {string} [customImage.type] The type of the resource.
     * 
     * @param {string} [customImage.location] The location of the resource.
     * 
     * @param {object} [customImage.tags] The tags of the resource.
     * 
     * @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
     */
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, customImage: models.CustomImage, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CustomImage>): void;
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, customImage: models.CustomImage, callback: ServiceCallback<models.CustomImage>): void;

    /**
     * Delete custom image. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the custom image.
     * 
     * @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
     */
    deleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Delete custom image. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the custom image.
     * 
     * @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
     */
    beginDeleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * List custom images.
     *
     * @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.ResponseWithContinuationCustomImage>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationCustomImage>): void;
}

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

    /**
     * List formulas.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @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(resourceGroupName: string, labName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationFormula>): void;
    list(resourceGroupName: string, labName: string, callback: ServiceCallback<models.ResponseWithContinuationFormula>): void;

    /**
     * Get formula.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the formula.
     * 
     * @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
     */
    getResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Formula>): void;
    getResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<models.Formula>): void;

    /**
     * Create or replace an existing Formula. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the formula.
     * 
     * @param {object} formula
     * 
     * @param {string} [formula.description] The description of the formula.
     * 
     * @param {string} [formula.author] The author of the formula.
     * 
     * @param {string} [formula.osType] The OS type of the formula.
     * 
     * @param {date} [formula.creationDate] The creation date of the formula.
     * 
     * @param {object} [formula.formulaContent] The content of the formula.
     * 
     * @param {string} [formula.formulaContent.notes] The notes of the virtual
     * machine.
     * 
     * @param {string} [formula.formulaContent.ownerObjectId] The object
     * identifier of the owner of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.createdByUserId] The object
     * identifier of the creator of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.createdByUser] The email address of
     * creator of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.computeId] The resource identifier
     * (Microsoft.Compute) of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.customImageId] The custom image
     * identifier of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.osType] The OS type of the virtual
     * machine.
     * 
     * @param {string} [formula.formulaContent.size] The size of the virtual
     * machine.
     * 
     * @param {string} [formula.formulaContent.userName] The user name of the
     * virtual machine.
     * 
     * @param {string} [formula.formulaContent.password] The password of the
     * virtual machine administrator.
     * 
     * @param {string} [formula.formulaContent.sshKey] The SSH key of the virtual
     * machine administrator.
     * 
     * @param {boolean} [formula.formulaContent.isAuthenticationWithSshKey] A
     * value indicating whether this virtual machine uses an SSH key for
     * authentication.
     * 
     * @param {string} [formula.formulaContent.fqdn] The fully-qualified domain
     * name of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.labSubnetName] The lab subnet name
     * of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.labVirtualNetworkId] The lab
     * virtual network identifier of the virtual machine.
     * 
     * @param {boolean} [formula.formulaContent.disallowPublicIpAddress] Indicates
     * whether the virtual machine is to be created without a public IP address.
     * 
     * @param {array} [formula.formulaContent.artifacts] The artifacts to be
     * installed on the virtual machine.
     * 
     * @param {object} [formula.formulaContent.artifactDeploymentStatus] The
     * artifact deployment status for the virtual machine.
     * 
     * @param {string}
     * [formula.formulaContent.artifactDeploymentStatus.deploymentStatus] The
     * deployment status of the artifact.
     * 
     * @param {number}
     * [formula.formulaContent.artifactDeploymentStatus.artifactsApplied] The
     * total count of the artifacts that were successfully applied.
     * 
     * @param {number}
     * [formula.formulaContent.artifactDeploymentStatus.totalArtifacts] The total
     * count of the artifacts that were tentatively applied.
     * 
     * @param {object} [formula.formulaContent.galleryImageReference] The
     * Microsoft Azure Marketplace image reference of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.offer] The
     * offer of the gallery image.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.publisher]
     * The publisher of the gallery image.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.sku] The SKU
     * of the gallery image.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.osType] The
     * OS type of the gallery image.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.version] The
     * version of the gallery image.
     * 
     * @param {string} [formula.formulaContent.provisioningState] The provisioning
     * status of the resource.
     * 
     * @param {string} [formula.formulaContent.id] The identifier of the resource.
     * 
     * @param {string} [formula.formulaContent.name] The name of the resource.
     * 
     * @param {string} [formula.formulaContent.type] The type of the resource.
     * 
     * @param {string} [formula.formulaContent.location] The location of the
     * resource.
     * 
     * @param {object} [formula.formulaContent.tags] The tags of the resource.
     * 
     * @param {object} [formula.vm] Information about a VM from which a formula is
     * to be created.
     * 
     * @param {string} [formula.vm.labVmId] The identifier of the VM from which a
     * formula is to be created.
     * 
     * @param {string} [formula.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [formula.id] The identifier of the resource.
     * 
     * @param {string} [formula.name] The name of the resource.
     * 
     * @param {string} [formula.type] The type of the resource.
     * 
     * @param {string} [formula.location] The location of the resource.
     * 
     * @param {object} [formula.tags] The tags of the resource.
     * 
     * @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
     */
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, formula: models.Formula, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Formula>): void;
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, formula: models.Formula, callback: ServiceCallback<models.Formula>): void;

    /**
     * Create or replace an existing Formula. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the formula.
     * 
     * @param {object} formula
     * 
     * @param {string} [formula.description] The description of the formula.
     * 
     * @param {string} [formula.author] The author of the formula.
     * 
     * @param {string} [formula.osType] The OS type of the formula.
     * 
     * @param {date} [formula.creationDate] The creation date of the formula.
     * 
     * @param {object} [formula.formulaContent] The content of the formula.
     * 
     * @param {string} [formula.formulaContent.notes] The notes of the virtual
     * machine.
     * 
     * @param {string} [formula.formulaContent.ownerObjectId] The object
     * identifier of the owner of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.createdByUserId] The object
     * identifier of the creator of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.createdByUser] The email address of
     * creator of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.computeId] The resource identifier
     * (Microsoft.Compute) of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.customImageId] The custom image
     * identifier of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.osType] The OS type of the virtual
     * machine.
     * 
     * @param {string} [formula.formulaContent.size] The size of the virtual
     * machine.
     * 
     * @param {string} [formula.formulaContent.userName] The user name of the
     * virtual machine.
     * 
     * @param {string} [formula.formulaContent.password] The password of the
     * virtual machine administrator.
     * 
     * @param {string} [formula.formulaContent.sshKey] The SSH key of the virtual
     * machine administrator.
     * 
     * @param {boolean} [formula.formulaContent.isAuthenticationWithSshKey] A
     * value indicating whether this virtual machine uses an SSH key for
     * authentication.
     * 
     * @param {string} [formula.formulaContent.fqdn] The fully-qualified domain
     * name of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.labSubnetName] The lab subnet name
     * of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.labVirtualNetworkId] The lab
     * virtual network identifier of the virtual machine.
     * 
     * @param {boolean} [formula.formulaContent.disallowPublicIpAddress] Indicates
     * whether the virtual machine is to be created without a public IP address.
     * 
     * @param {array} [formula.formulaContent.artifacts] The artifacts to be
     * installed on the virtual machine.
     * 
     * @param {object} [formula.formulaContent.artifactDeploymentStatus] The
     * artifact deployment status for the virtual machine.
     * 
     * @param {string}
     * [formula.formulaContent.artifactDeploymentStatus.deploymentStatus] The
     * deployment status of the artifact.
     * 
     * @param {number}
     * [formula.formulaContent.artifactDeploymentStatus.artifactsApplied] The
     * total count of the artifacts that were successfully applied.
     * 
     * @param {number}
     * [formula.formulaContent.artifactDeploymentStatus.totalArtifacts] The total
     * count of the artifacts that were tentatively applied.
     * 
     * @param {object} [formula.formulaContent.galleryImageReference] The
     * Microsoft Azure Marketplace image reference of the virtual machine.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.offer] The
     * offer of the gallery image.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.publisher]
     * The publisher of the gallery image.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.sku] The SKU
     * of the gallery image.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.osType] The
     * OS type of the gallery image.
     * 
     * @param {string} [formula.formulaContent.galleryImageReference.version] The
     * version of the gallery image.
     * 
     * @param {string} [formula.formulaContent.provisioningState] The provisioning
     * status of the resource.
     * 
     * @param {string} [formula.formulaContent.id] The identifier of the resource.
     * 
     * @param {string} [formula.formulaContent.name] The name of the resource.
     * 
     * @param {string} [formula.formulaContent.type] The type of the resource.
     * 
     * @param {string} [formula.formulaContent.location] The location of the
     * resource.
     * 
     * @param {object} [formula.formulaContent.tags] The tags of the resource.
     * 
     * @param {object} [formula.vm] Information about a VM from which a formula is
     * to be created.
     * 
     * @param {string} [formula.vm.labVmId] The identifier of the VM from which a
     * formula is to be created.
     * 
     * @param {string} [formula.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [formula.id] The identifier of the resource.
     * 
     * @param {string} [formula.name] The name of the resource.
     * 
     * @param {string} [formula.type] The type of the resource.
     * 
     * @param {string} [formula.location] The location of the resource.
     * 
     * @param {object} [formula.tags] The tags of the resource.
     * 
     * @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
     */
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, formula: models.Formula, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Formula>): void;
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, formula: models.Formula, callback: ServiceCallback<models.Formula>): void;

    /**
     * Delete formula.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the formula.
     * 
     * @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
     */
    deleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * List formulas.
     *
     * @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.ResponseWithContinuationFormula>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationFormula>): void;
}

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

    /**
     * List gallery images.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @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(resourceGroupName: string, labName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationGalleryImage>): void;
    list(resourceGroupName: string, labName: string, callback: ServiceCallback<models.ResponseWithContinuationGalleryImage>): void;

    /**
     * List gallery images.
     *
     * @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.ResponseWithContinuationGalleryImage>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationGalleryImage>): void;
}

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

    /**
     * Evaluates Lab Policy.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the policy set.
     * 
     * @param {object} evaluatePoliciesRequest
     * 
     * @param {array} [evaluatePoliciesRequest.policies] Policies to evaluate.
     * 
     * @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
     */
    evaluatePolicies(resourceGroupName: string, labName: string, name: string, evaluatePoliciesRequest: models.EvaluatePoliciesRequest, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.EvaluatePoliciesResponse>): void;
    evaluatePolicies(resourceGroupName: string, labName: string, name: string, evaluatePoliciesRequest: models.EvaluatePoliciesRequest, callback: ServiceCallback<models.EvaluatePoliciesResponse>): void;
}

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

    /**
     * List policies.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} policySetName The name of the policy set.
     * 
     * @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(resourceGroupName: string, labName: string, policySetName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationPolicy>): void;
    list(resourceGroupName: string, labName: string, policySetName: string, callback: ServiceCallback<models.ResponseWithContinuationPolicy>): void;

    /**
     * Get policy.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} policySetName The name of the policy set.
     * 
     * @param {string} name The name of the policy.
     * 
     * @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
     */
    getResource(resourceGroupName: string, labName: string, policySetName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Policy>): void;
    getResource(resourceGroupName: string, labName: string, policySetName: string, name: string, callback: ServiceCallback<models.Policy>): void;

    /**
     * Create or replace an existing policy.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} policySetName The name of the policy set.
     * 
     * @param {string} name The name of the policy.
     * 
     * @param {object} policy
     * 
     * @param {string} [policy.description] The description of the policy.
     * 
     * @param {string} [policy.status] The status of the policy. Possible values
     * include: 'Enabled', 'Disabled'
     * 
     * @param {string} [policy.factName] The fact name of the policy. Possible
     * values include: 'UserOwnedLabVmCount', 'LabVmCount', 'LabVmSize',
     * 'GalleryImage', 'UserOwnedLabVmCountInSubnet'
     * 
     * @param {string} [policy.factData] The fact data of the policy.
     * 
     * @param {string} [policy.threshold] The threshold of the policy.
     * 
     * @param {string} [policy.evaluatorType] The evaluator type of the policy.
     * Possible values include: 'AllowedValuesPolicy', 'MaxValuePolicy'
     * 
     * @param {string} [policy.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [policy.id] The identifier of the resource.
     * 
     * @param {string} [policy.name] The name of the resource.
     * 
     * @param {string} [policy.type] The type of the resource.
     * 
     * @param {string} [policy.location] The location of the resource.
     * 
     * @param {object} [policy.tags] The tags of the resource.
     * 
     * @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
     */
    createOrUpdateResource(resourceGroupName: string, labName: string, policySetName: string, name: string, policy: models.Policy, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Policy>): void;
    createOrUpdateResource(resourceGroupName: string, labName: string, policySetName: string, name: string, policy: models.Policy, callback: ServiceCallback<models.Policy>): void;

    /**
     * Delete policy.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} policySetName The name of the policy set.
     * 
     * @param {string} name The name of the policy.
     * 
     * @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
     */
    deleteResource(resourceGroupName: string, labName: string, policySetName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteResource(resourceGroupName: string, labName: string, policySetName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Modify properties of policies.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} policySetName The name of the policy set.
     * 
     * @param {string} name The name of the policy.
     * 
     * @param {object} policy
     * 
     * @param {string} [policy.description] The description of the policy.
     * 
     * @param {string} [policy.status] The status of the policy. Possible values
     * include: 'Enabled', 'Disabled'
     * 
     * @param {string} [policy.factName] The fact name of the policy. Possible
     * values include: 'UserOwnedLabVmCount', 'LabVmCount', 'LabVmSize',
     * 'GalleryImage', 'UserOwnedLabVmCountInSubnet'
     * 
     * @param {string} [policy.factData] The fact data of the policy.
     * 
     * @param {string} [policy.threshold] The threshold of the policy.
     * 
     * @param {string} [policy.evaluatorType] The evaluator type of the policy.
     * Possible values include: 'AllowedValuesPolicy', 'MaxValuePolicy'
     * 
     * @param {string} [policy.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [policy.id] The identifier of the resource.
     * 
     * @param {string} [policy.name] The name of the resource.
     * 
     * @param {string} [policy.type] The type of the resource.
     * 
     * @param {string} [policy.location] The location of the resource.
     * 
     * @param {object} [policy.tags] The tags of the resource.
     * 
     * @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
     */
    patchResource(resourceGroupName: string, labName: string, policySetName: string, name: string, policy: models.Policy, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Policy>): void;
    patchResource(resourceGroupName: string, labName: string, policySetName: string, name: string, policy: models.Policy, callback: ServiceCallback<models.Policy>): void;

    /**
     * List policies.
     *
     * @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.ResponseWithContinuationPolicy>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationPolicy>): void;
}

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

    /**
     * List schedules.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @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(resourceGroupName: string, labName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationSchedule>): void;
    list(resourceGroupName: string, labName: string, callback: ServiceCallback<models.ResponseWithContinuationSchedule>): void;

    /**
     * Get schedule.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the schedule.
     * 
     * @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
     */
    getResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Schedule>): void;
    getResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<models.Schedule>): void;

    /**
     * Create or replace an existing schedule. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the schedule.
     * 
     * @param {object} schedule
     * 
     * @param {string} [schedule.status] The status of the schedule. Possible
     * values include: 'Enabled', 'Disabled'
     * 
     * @param {string} [schedule.taskType] The task type of the schedule. Possible
     * values include: 'LabVmsShutdownTask', 'LabVmsStartupTask', 'LabBillingTask'
     * 
     * @param {object} [schedule.weeklyRecurrence] The weekly recurrence of the
     * schedule.
     * 
     * @param {array} [schedule.weeklyRecurrence.weekdays] The days of the week.
     * 
     * @param {string} [schedule.weeklyRecurrence.time] The time of the day.
     * 
     * @param {object} [schedule.dailyRecurrence] The daily recurrence of the
     * schedule.
     * 
     * @param {string} [schedule.dailyRecurrence.time]
     * 
     * @param {object} [schedule.hourlyRecurrence] The hourly recurrence of the
     * schedule.
     * 
     * @param {number} [schedule.hourlyRecurrence.minute] Minutes of the hour the
     * schedule will run.
     * 
     * @param {string} [schedule.timeZoneId] The time zone id.
     * 
     * @param {string} [schedule.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [schedule.id] The identifier of the resource.
     * 
     * @param {string} [schedule.name] The name of the resource.
     * 
     * @param {string} [schedule.type] The type of the resource.
     * 
     * @param {string} [schedule.location] The location of the resource.
     * 
     * @param {object} [schedule.tags] The tags of the resource.
     * 
     * @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
     */
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, schedule: models.Schedule, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Schedule>): void;
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, schedule: models.Schedule, callback: ServiceCallback<models.Schedule>): void;

    /**
     * Create or replace an existing schedule. This operation can take a while to
     * complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the schedule.
     * 
     * @param {object} schedule
     * 
     * @param {string} [schedule.status] The status of the schedule. Possible
     * values include: 'Enabled', 'Disabled'
     * 
     * @param {string} [schedule.taskType] The task type of the schedule. Possible
     * values include: 'LabVmsShutdownTask', 'LabVmsStartupTask', 'LabBillingTask'
     * 
     * @param {object} [schedule.weeklyRecurrence] The weekly recurrence of the
     * schedule.
     * 
     * @param {array} [schedule.weeklyRecurrence.weekdays] The days of the week.
     * 
     * @param {string} [schedule.weeklyRecurrence.time] The time of the day.
     * 
     * @param {object} [schedule.dailyRecurrence] The daily recurrence of the
     * schedule.
     * 
     * @param {string} [schedule.dailyRecurrence.time]
     * 
     * @param {object} [schedule.hourlyRecurrence] The hourly recurrence of the
     * schedule.
     * 
     * @param {number} [schedule.hourlyRecurrence.minute] Minutes of the hour the
     * schedule will run.
     * 
     * @param {string} [schedule.timeZoneId] The time zone id.
     * 
     * @param {string} [schedule.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [schedule.id] The identifier of the resource.
     * 
     * @param {string} [schedule.name] The name of the resource.
     * 
     * @param {string} [schedule.type] The type of the resource.
     * 
     * @param {string} [schedule.location] The location of the resource.
     * 
     * @param {object} [schedule.tags] The tags of the resource.
     * 
     * @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
     */
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, schedule: models.Schedule, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Schedule>): void;
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, schedule: models.Schedule, callback: ServiceCallback<models.Schedule>): void;

    /**
     * Delete schedule. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the schedule.
     * 
     * @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
     */
    deleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Delete schedule. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the schedule.
     * 
     * @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
     */
    beginDeleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Modify properties of schedules.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the schedule.
     * 
     * @param {object} schedule
     * 
     * @param {string} [schedule.status] The status of the schedule. Possible
     * values include: 'Enabled', 'Disabled'
     * 
     * @param {string} [schedule.taskType] The task type of the schedule. Possible
     * values include: 'LabVmsShutdownTask', 'LabVmsStartupTask', 'LabBillingTask'
     * 
     * @param {object} [schedule.weeklyRecurrence] The weekly recurrence of the
     * schedule.
     * 
     * @param {array} [schedule.weeklyRecurrence.weekdays] The days of the week.
     * 
     * @param {string} [schedule.weeklyRecurrence.time] The time of the day.
     * 
     * @param {object} [schedule.dailyRecurrence] The daily recurrence of the
     * schedule.
     * 
     * @param {string} [schedule.dailyRecurrence.time]
     * 
     * @param {object} [schedule.hourlyRecurrence] The hourly recurrence of the
     * schedule.
     * 
     * @param {number} [schedule.hourlyRecurrence.minute] Minutes of the hour the
     * schedule will run.
     * 
     * @param {string} [schedule.timeZoneId] The time zone id.
     * 
     * @param {string} [schedule.provisioningState] The provisioning status of the
     * resource.
     * 
     * @param {string} [schedule.id] The identifier of the resource.
     * 
     * @param {string} [schedule.name] The name of the resource.
     * 
     * @param {string} [schedule.type] The type of the resource.
     * 
     * @param {string} [schedule.location] The location of the resource.
     * 
     * @param {object} [schedule.tags] The tags of the resource.
     * 
     * @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
     */
    patchResource(resourceGroupName: string, labName: string, name: string, schedule: models.Schedule, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Schedule>): void;
    patchResource(resourceGroupName: string, labName: string, name: string, schedule: models.Schedule, callback: ServiceCallback<models.Schedule>): void;

    /**
     * Execute a schedule. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the schedule.
     * 
     * @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
     */
    execute(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    execute(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Execute a schedule. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the schedule.
     * 
     * @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
     */
    beginExecute(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginExecute(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * List schedules.
     *
     * @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.ResponseWithContinuationSchedule>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationSchedule>): void;
}

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

    /**
     * List virtual machines.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @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(resourceGroupName: string, labName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationLabVirtualMachine>): void;
    list(resourceGroupName: string, labName: string, callback: ServiceCallback<models.ResponseWithContinuationLabVirtualMachine>): void;

    /**
     * Get virtual machine.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name 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
     */
    getResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LabVirtualMachine>): void;
    getResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<models.LabVirtualMachine>): void;

    /**
     * Create or replace an existing Virtual Machine. This operation can take a
     * while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual Machine.
     * 
     * @param {object} labVirtualMachine
     * 
     * @param {string} [labVirtualMachine.notes] The notes of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.ownerObjectId] The object identifier of
     * the owner of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUserId] The object identifier
     * of the creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUser] The email address of
     * creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.computeId] The resource identifier
     * (Microsoft.Compute) of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.customImageId] The custom image
     * identifier of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.osType] The OS type of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.size] The size of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.userName] The user name of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.password] The password of the virtual
     * machine administrator.
     * 
     * @param {string} [labVirtualMachine.sshKey] The SSH key of the virtual
     * machine administrator.
     * 
     * @param {boolean} [labVirtualMachine.isAuthenticationWithSshKey] A value
     * indicating whether this virtual machine uses an SSH key for authentication.
     * 
     * @param {string} [labVirtualMachine.fqdn] The fully-qualified domain name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labSubnetName] The lab subnet name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labVirtualNetworkId] The lab virtual
     * network identifier of the virtual machine.
     * 
     * @param {boolean} [labVirtualMachine.disallowPublicIpAddress] Indicates
     * whether the virtual machine is to be created without a public IP address.
     * 
     * @param {array} [labVirtualMachine.artifacts] The artifacts to be installed
     * on the virtual machine.
     * 
     * @param {object} [labVirtualMachine.artifactDeploymentStatus] The artifact
     * deployment status for the virtual machine.
     * 
     * @param {string}
     * [labVirtualMachine.artifactDeploymentStatus.deploymentStatus] The
     * deployment status of the artifact.
     * 
     * @param {number}
     * [labVirtualMachine.artifactDeploymentStatus.artifactsApplied] The total
     * count of the artifacts that were successfully applied.
     * 
     * @param {number} [labVirtualMachine.artifactDeploymentStatus.totalArtifacts]
     * The total count of the artifacts that were tentatively applied.
     * 
     * @param {object} [labVirtualMachine.galleryImageReference] The Microsoft
     * Azure Marketplace image reference of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.offer] The offer
     * of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.publisher] The
     * publisher of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.sku] The SKU of
     * the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.osType] The OS
     * type of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.version] The
     * version of the gallery image.
     * 
     * @param {string} [labVirtualMachine.provisioningState] The provisioning
     * status of the resource.
     * 
     * @param {string} [labVirtualMachine.id] The identifier of the resource.
     * 
     * @param {string} [labVirtualMachine.name] The name of the resource.
     * 
     * @param {string} [labVirtualMachine.type] The type of the resource.
     * 
     * @param {string} [labVirtualMachine.location] The location of the resource.
     * 
     * @param {object} [labVirtualMachine.tags] The tags of the resource.
     * 
     * @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
     */
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, labVirtualMachine: models.LabVirtualMachine, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LabVirtualMachine>): void;
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, labVirtualMachine: models.LabVirtualMachine, callback: ServiceCallback<models.LabVirtualMachine>): void;

    /**
     * Create or replace an existing Virtual Machine. This operation can take a
     * while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual Machine.
     * 
     * @param {object} labVirtualMachine
     * 
     * @param {string} [labVirtualMachine.notes] The notes of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.ownerObjectId] The object identifier of
     * the owner of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUserId] The object identifier
     * of the creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUser] The email address of
     * creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.computeId] The resource identifier
     * (Microsoft.Compute) of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.customImageId] The custom image
     * identifier of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.osType] The OS type of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.size] The size of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.userName] The user name of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.password] The password of the virtual
     * machine administrator.
     * 
     * @param {string} [labVirtualMachine.sshKey] The SSH key of the virtual
     * machine administrator.
     * 
     * @param {boolean} [labVirtualMachine.isAuthenticationWithSshKey] A value
     * indicating whether this virtual machine uses an SSH key for authentication.
     * 
     * @param {string} [labVirtualMachine.fqdn] The fully-qualified domain name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labSubnetName] The lab subnet name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labVirtualNetworkId] The lab virtual
     * network identifier of the virtual machine.
     * 
     * @param {boolean} [labVirtualMachine.disallowPublicIpAddress] Indicates
     * whether the virtual machine is to be created without a public IP address.
     * 
     * @param {array} [labVirtualMachine.artifacts] The artifacts to be installed
     * on the virtual machine.
     * 
     * @param {object} [labVirtualMachine.artifactDeploymentStatus] The artifact
     * deployment status for the virtual machine.
     * 
     * @param {string}
     * [labVirtualMachine.artifactDeploymentStatus.deploymentStatus] The
     * deployment status of the artifact.
     * 
     * @param {number}
     * [labVirtualMachine.artifactDeploymentStatus.artifactsApplied] The total
     * count of the artifacts that were successfully applied.
     * 
     * @param {number} [labVirtualMachine.artifactDeploymentStatus.totalArtifacts]
     * The total count of the artifacts that were tentatively applied.
     * 
     * @param {object} [labVirtualMachine.galleryImageReference] The Microsoft
     * Azure Marketplace image reference of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.offer] The offer
     * of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.publisher] The
     * publisher of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.sku] The SKU of
     * the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.osType] The OS
     * type of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.version] The
     * version of the gallery image.
     * 
     * @param {string} [labVirtualMachine.provisioningState] The provisioning
     * status of the resource.
     * 
     * @param {string} [labVirtualMachine.id] The identifier of the resource.
     * 
     * @param {string} [labVirtualMachine.name] The name of the resource.
     * 
     * @param {string} [labVirtualMachine.type] The type of the resource.
     * 
     * @param {string} [labVirtualMachine.location] The location of the resource.
     * 
     * @param {object} [labVirtualMachine.tags] The tags of the resource.
     * 
     * @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
     */
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, labVirtualMachine: models.LabVirtualMachine, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LabVirtualMachine>): void;
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, labVirtualMachine: models.LabVirtualMachine, callback: ServiceCallback<models.LabVirtualMachine>): void;

    /**
     * Delete virtual machine. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name 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
     */
    deleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Delete virtual machine. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name 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
     */
    beginDeleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Modify properties of virtual machines.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual Machine.
     * 
     * @param {object} labVirtualMachine
     * 
     * @param {string} [labVirtualMachine.notes] The notes of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.ownerObjectId] The object identifier of
     * the owner of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUserId] The object identifier
     * of the creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.createdByUser] The email address of
     * creator of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.computeId] The resource identifier
     * (Microsoft.Compute) of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.customImageId] The custom image
     * identifier of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.osType] The OS type of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.size] The size of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.userName] The user name of the virtual
     * machine.
     * 
     * @param {string} [labVirtualMachine.password] The password of the virtual
     * machine administrator.
     * 
     * @param {string} [labVirtualMachine.sshKey] The SSH key of the virtual
     * machine administrator.
     * 
     * @param {boolean} [labVirtualMachine.isAuthenticationWithSshKey] A value
     * indicating whether this virtual machine uses an SSH key for authentication.
     * 
     * @param {string} [labVirtualMachine.fqdn] The fully-qualified domain name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labSubnetName] The lab subnet name of
     * the virtual machine.
     * 
     * @param {string} [labVirtualMachine.labVirtualNetworkId] The lab virtual
     * network identifier of the virtual machine.
     * 
     * @param {boolean} [labVirtualMachine.disallowPublicIpAddress] Indicates
     * whether the virtual machine is to be created without a public IP address.
     * 
     * @param {array} [labVirtualMachine.artifacts] The artifacts to be installed
     * on the virtual machine.
     * 
     * @param {object} [labVirtualMachine.artifactDeploymentStatus] The artifact
     * deployment status for the virtual machine.
     * 
     * @param {string}
     * [labVirtualMachine.artifactDeploymentStatus.deploymentStatus] The
     * deployment status of the artifact.
     * 
     * @param {number}
     * [labVirtualMachine.artifactDeploymentStatus.artifactsApplied] The total
     * count of the artifacts that were successfully applied.
     * 
     * @param {number} [labVirtualMachine.artifactDeploymentStatus.totalArtifacts]
     * The total count of the artifacts that were tentatively applied.
     * 
     * @param {object} [labVirtualMachine.galleryImageReference] The Microsoft
     * Azure Marketplace image reference of the virtual machine.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.offer] The offer
     * of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.publisher] The
     * publisher of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.sku] The SKU of
     * the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.osType] The OS
     * type of the gallery image.
     * 
     * @param {string} [labVirtualMachine.galleryImageReference.version] The
     * version of the gallery image.
     * 
     * @param {string} [labVirtualMachine.provisioningState] The provisioning
     * status of the resource.
     * 
     * @param {string} [labVirtualMachine.id] The identifier of the resource.
     * 
     * @param {string} [labVirtualMachine.name] The name of the resource.
     * 
     * @param {string} [labVirtualMachine.type] The type of the resource.
     * 
     * @param {string} [labVirtualMachine.location] The location of the resource.
     * 
     * @param {object} [labVirtualMachine.tags] The tags of the resource.
     * 
     * @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
     */
    patchResource(resourceGroupName: string, labName: string, name: string, labVirtualMachine: models.LabVirtualMachine, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LabVirtualMachine>): void;
    patchResource(resourceGroupName: string, labName: string, name: string, labVirtualMachine: models.LabVirtualMachine, callback: ServiceCallback<models.LabVirtualMachine>): void;

    /**
     * Apply artifacts to Lab VM. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual Machine.
     * 
     * @param {object} applyArtifactsRequest
     * 
     * @param {array} [applyArtifactsRequest.artifacts] The list of artifacts to
     * apply.
     * 
     * @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
     */
    applyArtifacts(resourceGroupName: string, labName: string, name: string, applyArtifactsRequest: models.ApplyArtifactsRequest, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    applyArtifacts(resourceGroupName: string, labName: string, name: string, applyArtifactsRequest: models.ApplyArtifactsRequest, callback: ServiceCallback<void>): void;

    /**
     * Apply artifacts to Lab VM. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual Machine.
     * 
     * @param {object} applyArtifactsRequest
     * 
     * @param {array} [applyArtifactsRequest.artifacts] The list of artifacts to
     * apply.
     * 
     * @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
     */
    beginApplyArtifacts(resourceGroupName: string, labName: string, name: string, applyArtifactsRequest: models.ApplyArtifactsRequest, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginApplyArtifacts(resourceGroupName: string, labName: string, name: string, applyArtifactsRequest: models.ApplyArtifactsRequest, callback: ServiceCallback<void>): void;

    /**
     * Start a Lab VM. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name 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, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    start(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Start a Lab VM. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name 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, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginStart(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Stop a Lab VM. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name 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
     */
    stop(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    stop(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Stop a Lab VM. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name 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
     */
    beginStop(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginStop(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * List 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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationLabVirtualMachine>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationLabVirtualMachine>): void;
}

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

    /**
     * List virtual networks.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @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(resourceGroupName: string, labName: string, options: { filter? : string, top? : number, orderBy? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResponseWithContinuationVirtualNetwork>): void;
    list(resourceGroupName: string, labName: string, callback: ServiceCallback<models.ResponseWithContinuationVirtualNetwork>): void;

    /**
     * Get virtual network.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual network.
     * 
     * @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
     */
    getResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetwork>): void;
    getResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<models.VirtualNetwork>): void;

    /**
     * Create or replace an existing virtual network. This operation can take a
     * while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual network.
     * 
     * @param {object} virtualNetwork
     * 
     * @param {array} [virtualNetwork.allowedSubnets] The allowed subnets of the
     * virtual network.
     * 
     * @param {string} [virtualNetwork.description] The description of the virtual
     * network.
     * 
     * @param {string} [virtualNetwork.externalProviderResourceId] The
     * Microsoft.Network resource identifier of the virtual network.
     * 
     * @param {array} [virtualNetwork.subnetOverrides] The subnet overrides of the
     * virtual network.
     * 
     * @param {string} [virtualNetwork.provisioningState] The provisioning status
     * of the resource.
     * 
     * @param {string} [virtualNetwork.id] The identifier of the resource.
     * 
     * @param {string} [virtualNetwork.name] The name of the resource.
     * 
     * @param {string} [virtualNetwork.type] The type of the resource.
     * 
     * @param {string} [virtualNetwork.location] The location of the resource.
     * 
     * @param {object} [virtualNetwork.tags] The tags of the resource.
     * 
     * @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
     */
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, virtualNetwork: models.VirtualNetwork, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetwork>): void;
    createOrUpdateResource(resourceGroupName: string, labName: string, name: string, virtualNetwork: models.VirtualNetwork, callback: ServiceCallback<models.VirtualNetwork>): void;

    /**
     * Create or replace an existing virtual network. This operation can take a
     * while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual network.
     * 
     * @param {object} virtualNetwork
     * 
     * @param {array} [virtualNetwork.allowedSubnets] The allowed subnets of the
     * virtual network.
     * 
     * @param {string} [virtualNetwork.description] The description of the virtual
     * network.
     * 
     * @param {string} [virtualNetwork.externalProviderResourceId] The
     * Microsoft.Network resource identifier of the virtual network.
     * 
     * @param {array} [virtualNetwork.subnetOverrides] The subnet overrides of the
     * virtual network.
     * 
     * @param {string} [virtualNetwork.provisioningState] The provisioning status
     * of the resource.
     * 
     * @param {string} [virtualNetwork.id] The identifier of the resource.
     * 
     * @param {string} [virtualNetwork.name] The name of the resource.
     * 
     * @param {string} [virtualNetwork.type] The type of the resource.
     * 
     * @param {string} [virtualNetwork.location] The location of the resource.
     * 
     * @param {object} [virtualNetwork.tags] The tags of the resource.
     * 
     * @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
     */
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, virtualNetwork: models.VirtualNetwork, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetwork>): void;
    beginCreateOrUpdateResource(resourceGroupName: string, labName: string, name: string, virtualNetwork: models.VirtualNetwork, callback: ServiceCallback<models.VirtualNetwork>): void;

    /**
     * Delete virtual network. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual network.
     * 
     * @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
     */
    deleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Delete virtual network. This operation can take a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual network.
     * 
     * @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
     */
    beginDeleteResource(resourceGroupName: string, labName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteResource(resourceGroupName: string, labName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Modify properties of virtual networks.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} labName The name of the lab.
     * 
     * @param {string} name The name of the virtual network.
     * 
     * @param {object} virtualNetwork
     * 
     * @param {array} [virtualNetwork.allowedSubnets] The allowed subnets of the
     * virtual network.
     * 
     * @param {string} [virtualNetwork.description] The description of the virtual
     * network.
     * 
     * @param {string} [virtualNetwork.externalProviderResourceId] The
     * Microsoft.Network resource identifier of the virtual network.
     * 
     * @param {array} [virtualNetwork.subnetOverrides] The subnet overrides of the
     * virtual network.
     * 
     * @param {string} [virtualNetwork.provisioningState] The provisioning status
     * of the resource.
     * 
     * @param {string} [virtualNetwork.id] The identifier of the resource.
     * 
     * @param {string} [virtualNetwork.name] The name of the resource.
     * 
     * @param {string} [virtualNetwork.type] The type of the resource.
     * 
     * @param {string} [virtualNetwork.location] The location of the resource.
     * 
     * @param {object} [virtualNetwork.tags] The tags of the resource.
     * 
     * @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
     */
    patchResource(resourceGroupName: string, labName: string, name: string, virtualNetwork: models.VirtualNetwork, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetwork>): void;
    patchResource(resourceGroupName: string, labName: string, name: string, virtualNetwork: models.VirtualNetwork, callback: ServiceCallback<models.VirtualNetwork>): void;

    /**
     * List virtual networks.
     *
     * @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.ResponseWithContinuationVirtualNetwork>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ResponseWithContinuationVirtualNetwork>): void;
}
