/*
 * 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 moment from 'moment';
import * as stream from 'stream';
import * as models from '../models';


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

    /**
     * Lists all of the applications available in the specified account.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.applicationListOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.applicationListOptions.maxResults] The maximum
     * number of items to return in the response.
     * 
     * @param {number} [options.applicationListOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.applicationListOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.applicationListOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.applicationListOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(options: { applicationListOptions? : models.ApplicationListOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationListResult>): void;
    list(callback: ServiceCallback<models.ApplicationListResult>): void;

    /**
     * Gets information about the specified application.
     *
     * @param {string} applicationId The id of the application.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.applicationGetOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.applicationGetOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.applicationGetOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.applicationGetOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.applicationGetOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(applicationId: string, options: { applicationGetOptions? : models.ApplicationGetOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationSummary>): void;
    get(applicationId: string, callback: ServiceCallback<models.ApplicationSummary>): void;

    /**
     * Lists all of the applications available in the specified account.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.applicationListNextOptions] Additional parameters
     * for the operation
     * 
     * @param {string} [options.applicationListNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.applicationListNextOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.applicationListNextOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] 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: { applicationListNextOptions? : models.ApplicationListNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ApplicationListResult>): void;
}

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

    /**
     * Lists the usage metrics, aggregated by pool across individual time
     * intervals, for the specified account.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolListPoolUsageMetricsOptions] Additional
     * parameters for the operation
     * 
     * @param {date} [options.poolListPoolUsageMetricsOptions.startTime] The
     * earliest time from which to include metrics. This must be at least two and
     * a half hours before the current time.
     * 
     * @param {date} [options.poolListPoolUsageMetricsOptions.endTime] The latest
     * time from which to include metrics. This must be at least two hours before
     * the current time.
     * 
     * @param {string} [options.poolListPoolUsageMetricsOptions.filter] An OData
     * $filter clause.
     * 
     * @param {number} [options.poolListPoolUsageMetricsOptions.maxResults] The
     * maximum number of items to return in the response.
     * 
     * @param {number} [options.poolListPoolUsageMetricsOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string} [options.poolListPoolUsageMetricsOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.poolListPoolUsageMetricsOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolListPoolUsageMetricsOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listPoolUsageMetrics(options: { poolListPoolUsageMetricsOptions? : models.PoolListPoolUsageMetricsOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PoolListPoolUsageMetricsResult>): void;
    listPoolUsageMetrics(callback: ServiceCallback<models.PoolListPoolUsageMetricsResult>): void;

    /**
     * Gets lifetime summary statistics for all of the pools in the specified
     * account. Statistics are aggregated across all pools that have ever existed
     * in the account, from account creation to the last update time of the
     * statistics.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolGetAllPoolsLifetimeStatisticsOptions]
     * Additional parameters for the operation
     * 
     * @param {number} [options.poolGetAllPoolsLifetimeStatisticsOptions.timeout]
     * The maximum time that the server can spend processing the request, in
     * seconds. The default is 30 seconds.
     * 
     * @param {string}
     * [options.poolGetAllPoolsLifetimeStatisticsOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.poolGetAllPoolsLifetimeStatisticsOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.poolGetAllPoolsLifetimeStatisticsOptions.ocpDate]
     * The time the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getAllPoolsLifetimeStatistics(options: { poolGetAllPoolsLifetimeStatisticsOptions? : models.PoolGetAllPoolsLifetimeStatisticsOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PoolStatistics>): void;
    getAllPoolsLifetimeStatistics(callback: ServiceCallback<models.PoolStatistics>): void;

    /**
     * Adds a pool to the specified account.
     *
     * @param {object} pool The pool to be added.
     * 
     * @param {string} [pool.id] A string that uniquely identifies the pool within
     * the account. The id can contain any combination of alphanumeric characters
     * including hyphens and underscores, and cannot contain more than 64
     * characters.
     * 
     * @param {string} [pool.displayName] The display name for the pool.
     * 
     * @param {string} [pool.vmSize] The size of virtual machines in the pool. All
     * virtual machines in a pool are the same size.
     * 
     * @param {object} [pool.cloudServiceConfiguration] The cloud service
     * configuration for the pool. This property and VirtualMachineConfiguration
     * are mutually exclusive and one of the properties must be specified.
     * 
     * @param {string} [pool.cloudServiceConfiguration.osFamily] The Azure Guest
     * OS family to be installed on the virtual machines in the pool.
     * 
     * @param {string} [pool.cloudServiceConfiguration.targetOSVersion] The Azure
     * Guest OS version to be installed on the virtual machines in the pool. The
     * default value is * which specifies the latest operating system version for
     * the specified OS family.
     * 
     * @param {string} [pool.cloudServiceConfiguration.currentOSVersion] The Azure
     * Guest OS Version currently installed on the virtual machines in the pool.
     * This may differ from TargetOSVersion if the pool state is Upgrading.
     * 
     * @param {object} [pool.virtualMachineConfiguration] The virtual machine
     * configuration for the pool. This property and CloudServiceConfiguration
     * are mutually exclusive and one of the properties must be specified.
     * 
     * @param {object} [pool.virtualMachineConfiguration.imageReference] A
     * reference to the Azure Virtual Machines Marketplace image to use.
     * 
     * @param {string} [pool.virtualMachineConfiguration.imageReference.publisher]
     * The publisher of the Azure Virtual Machines Marketplace image. For
     * example, Canonical or MicrosoftWindowsServer.
     * 
     * @param {string} [pool.virtualMachineConfiguration.imageReference.offer] The
     * offer type of the Azure Virtual Machines Marketplace image. For example,
     * UbuntuServer or WindowsServer.
     * 
     * @param {string} [pool.virtualMachineConfiguration.imageReference.sku] The
     * SKU of the Azure Virtual Machines Marketplace image. For example,
     * 14.04.0-LTS or 2012-R2-Datacenter.
     * 
     * @param {string} [pool.virtualMachineConfiguration.imageReference.version]
     * The version of the Azure Virtual Machines Marketplace image. A value of
     * 'latest' can be specified to select the latest version of an image. If
     * omitted, the default is 'latest'.
     * 
     * @param {string} [pool.virtualMachineConfiguration.nodeAgentSKUId] The SKU
     * of Batch Node Agent to be provisioned on the compute node. The Batch node
     * agent is a program that runs on each node in the pool, and provides the
     * command-and-control interface between the node and the Batch service.
     * There are different implementations of the node agent, known as SKUs, for
     * different operating systems.
     * 
     * @param {object} [pool.virtualMachineConfiguration.windowsConfiguration]
     * Windows operating system settings on the virtual machine. This property
     * must not be specified if the ImageReference property specifies a Linux OS
     * image.
     * 
     * @param {boolean}
     * [pool.virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates]
     * Whether automatic updates are enabled on the virtual machine. If omitted,
     * the default value is true.
     * 
     * @param {moment.duration} [pool.resizeTimeout] The timeout for allocation of
     * compute nodes to the pool. In a Get Pool operation, this is the timeout
     * for the most recent resize operation. The default value is 10 minutes.
     * 
     * @param {number} [pool.targetDedicated] The desired number of compute nodes
     * in the pool. This property must have the default value if EnableAutoScale
     * is true. It is required if EnableAutoScale is false.
     * 
     * @param {boolean} [pool.enableAutoScale] Whether the pool size should
     * automatically adjust over time. If true, the AutoScaleFormula property
     * must be set. If false, the TargetDedicated property must be set.
     * 
     * @param {string} [pool.autoScaleFormula] A formula for the desired number of
     * compute nodes in the pool.
     * 
     * @param {moment.duration} [pool.autoScaleEvaluationInterval] A time interval
     * for the desired autoscale evaluation period in the pool.
     * 
     * @param {boolean} [pool.enableInterNodeCommunication] Whether the pool
     * permits direct communication between nodes.
     * 
     * @param {object} [pool.startTask] A task specified to run on each compute
     * node as it joins the pool.
     * 
     * @param {string} [pool.startTask.commandLine] The command line of the start
     * task.
     * 
     * @param {array} [pool.startTask.resourceFiles] A list of files that the
     * Batch service will download to the compute node before running the command
     * line.
     * 
     * @param {array} [pool.startTask.environmentSettings] A list of environment
     * variable settings for the start task.
     * 
     * @param {boolean} [pool.startTask.runElevated] Whether to run the start task
     * in elevated mode. The default value is false.
     * 
     * @param {number} [pool.startTask.maxTaskRetryCount] The maximum number of
     * times the task may be retried.
     * 
     * @param {boolean} [pool.startTask.waitForSuccess] Whether the Batch service
     * should wait for the start task to complete successfully (that is, to exit
     * with exit code 0) before scheduling any tasks on the compute node.
     * 
     * @param {array} [pool.certificateReferences] The list of certificates to be
     * installed on each compute node in the pool.
     * 
     * @param {array} [pool.applicationPackageReferences] The list of application
     * packages to be installed on each compute node in the pool.
     * 
     * @param {number} [pool.maxTasksPerNode] The maximum number of tasks that can
     * run concurrently on a single compute node in the pool.
     * 
     * @param {object} [pool.taskSchedulingPolicy] How the Batch service
     * distributes tasks between compute nodes in the pool.
     * 
     * @param {string} [pool.taskSchedulingPolicy.nodeFillType] How tasks should
     * be distributed across compute nodes. Possible values include: 'spread',
     * 'pack', 'unmapped'
     * 
     * @param {array} [pool.metadata] A list of name-value pairs associated with
     * the pool as metadata.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolAddOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.poolAddOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.poolAddOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolAddOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolAddOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    add(pool: models.PoolAddParameter, options: { poolAddOptions? : models.PoolAddOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    add(pool: models.PoolAddParameter, callback: ServiceCallback<void>): void;

    /**
     * Lists all of the pools in the specified account.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolListOptions] Additional parameters for the
     * operation
     * 
     * @param {string} [options.poolListOptions.filter] An OData $filter clause.
     * 
     * @param {string} [options.poolListOptions.select] An OData $select clause.
     * 
     * @param {string} [options.poolListOptions.expand] An OData $expand clause.
     * 
     * @param {number} [options.poolListOptions.maxResults] The maximum number of
     * items to return in the response.
     * 
     * @param {number} [options.poolListOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.poolListOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolListOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolListOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(options: { poolListOptions? : models.PoolListOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudPoolListResult>): void;
    list(callback: ServiceCallback<models.CloudPoolListResult>): void;

    /**
     * Deletes a pool from the specified account.
     *
     * @param {string} poolId The id of the pool to delete.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolDeleteMethodOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.poolDeleteMethodOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.poolDeleteMethodOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolDeleteMethodOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.poolDeleteMethodOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.poolDeleteMethodOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.poolDeleteMethodOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.poolDeleteMethodOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.poolDeleteMethodOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(poolId: string, options: { poolDeleteMethodOptions? : models.PoolDeleteMethodOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(poolId: string, callback: ServiceCallback<void>): void;

    /**
     * Gets basic properties of a pool.
     *
     * @param {string} poolId The id of the pool to get.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolExistsOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.poolExistsOptions.timeout] The maximum time that
     * the server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.poolExistsOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolExistsOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolExistsOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.poolExistsOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.poolExistsOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.poolExistsOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.poolExistsOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    exists(poolId: string, options: { poolExistsOptions? : models.PoolExistsOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<boolean>): void;
    exists(poolId: string, callback: ServiceCallback<boolean>): void;

    /**
     * Gets information about the specified pool.
     *
     * @param {string} poolId The id of the pool to get.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolGetOptions] Additional parameters for the
     * operation
     * 
     * @param {string} [options.poolGetOptions.select] An OData $select clause.
     * 
     * @param {string} [options.poolGetOptions.expand] An OData $expand clause.
     * 
     * @param {number} [options.poolGetOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.poolGetOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolGetOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolGetOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.poolGetOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.poolGetOptions.ifNoneMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * does not match the specified ETag.
     * 
     * @param {date} [options.poolGetOptions.ifModifiedSince] Specify this header
     * to perform the operation only if the resource has been modified since the
     * specified date/time.
     * 
     * @param {date} [options.poolGetOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(poolId: string, options: { poolGetOptions? : models.PoolGetOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudPool>): void;
    get(poolId: string, callback: ServiceCallback<models.CloudPool>): void;

    /**
     * Updates the properties of a pool.
     *
     * @param {string} poolId The id of the pool to update.
     * 
     * @param {object} poolPatchParameter The parameters for the request.
     * 
     * @param {object} [poolPatchParameter.startTask] A task to run on each
     * compute node as it joins the pool. If omitted, any existing start task is
     * left unchanged.
     * 
     * @param {string} [poolPatchParameter.startTask.commandLine] The command line
     * of the start task.
     * 
     * @param {array} [poolPatchParameter.startTask.resourceFiles] A list of files
     * that the Batch service will download to the compute node before running
     * the command line.
     * 
     * @param {array} [poolPatchParameter.startTask.environmentSettings] A list of
     * environment variable settings for the start task.
     * 
     * @param {boolean} [poolPatchParameter.startTask.runElevated] Whether to run
     * the start task in elevated mode. The default value is false.
     * 
     * @param {number} [poolPatchParameter.startTask.maxTaskRetryCount] The
     * maximum number of times the task may be retried.
     * 
     * @param {boolean} [poolPatchParameter.startTask.waitForSuccess] Whether the
     * Batch service should wait for the start task to complete successfully
     * (that is, to exit with exit code 0) before scheduling any tasks on the
     * compute node.
     * 
     * @param {array} [poolPatchParameter.certificateReferences] A list of
     * certificates to be installed on each compute node in the pool. If omitted,
     * any existing certificate references are left unchanged.
     * 
     * @param {array} [poolPatchParameter.applicationPackageReferences] A list of
     * application packages to be installed on each compute node in the pool. If
     * omitted, any existing application package references are left unchanged.
     * 
     * @param {array} [poolPatchParameter.metadata] A list of name-value pairs
     * associated with the pool as metadata. If omitted, any existing metadata is
     * left unchanged.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolPatchOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.poolPatchOptions.timeout] The maximum time that
     * the server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.poolPatchOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolPatchOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolPatchOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.poolPatchOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.poolPatchOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.poolPatchOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.poolPatchOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    patch(poolId: string, poolPatchParameter: models.PoolPatchParameter, options: { poolPatchOptions? : models.PoolPatchOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    patch(poolId: string, poolPatchParameter: models.PoolPatchParameter, callback: ServiceCallback<void>): void;

    /**
     * Disables automatic scaling for a pool.
     *
     * @param {string} poolId The id of the pool on which to disable automatic
     * scaling.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolDisableAutoScaleOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.poolDisableAutoScaleOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.poolDisableAutoScaleOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.poolDisableAutoScaleOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolDisableAutoScaleOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    disableAutoScale(poolId: string, options: { poolDisableAutoScaleOptions? : models.PoolDisableAutoScaleOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    disableAutoScale(poolId: string, callback: ServiceCallback<void>): void;

    /**
     * Enables automatic scaling for a pool.
     *
     * @param {string} poolId The id of the pool on which to enable automatic
     * scaling.
     * 
     * @param {object} poolEnableAutoScaleParameter The parameters for the request.
     * 
     * @param {string} [poolEnableAutoScaleParameter.autoScaleFormula] The formula
     * for the desired number of compute nodes in the pool.
     * 
     * @param {moment.duration}
     * [poolEnableAutoScaleParameter.autoScaleEvaluationInterval] A time interval
     * for the desired autoscale evaluation period in the pool.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolEnableAutoScaleOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.poolEnableAutoScaleOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.poolEnableAutoScaleOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolEnableAutoScaleOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.poolEnableAutoScaleOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.poolEnableAutoScaleOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.poolEnableAutoScaleOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.poolEnableAutoScaleOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.poolEnableAutoScaleOptions.ifUnmodifiedSince]
     * Specify this header to perform the operation only if the resource has not
     * been modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    enableAutoScale(poolId: string, poolEnableAutoScaleParameter: models.PoolEnableAutoScaleParameter, options: { poolEnableAutoScaleOptions? : models.PoolEnableAutoScaleOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    enableAutoScale(poolId: string, poolEnableAutoScaleParameter: models.PoolEnableAutoScaleParameter, callback: ServiceCallback<void>): void;

    /**
     * Gets the result of evaluating an automatic scaling formula on the pool.
     *
     * @param {string} poolId The id of the pool on which to evaluate the
     * automatic scaling formula.
     * 
     * @param {string} autoScaleFormula A formula for the desired number of
     * compute nodes in the pool.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolEvaluateAutoScaleOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.poolEvaluateAutoScaleOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.poolEvaluateAutoScaleOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.poolEvaluateAutoScaleOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolEvaluateAutoScaleOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    evaluateAutoScale(poolId: string, autoScaleFormula: string, options: { poolEvaluateAutoScaleOptions? : models.PoolEvaluateAutoScaleOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AutoScaleRun>): void;
    evaluateAutoScale(poolId: string, autoScaleFormula: string, callback: ServiceCallback<models.AutoScaleRun>): void;

    /**
     * Changes the number of compute nodes that are assigned to a pool.
     *
     * @param {string} poolId The id of the pool to resize.
     * 
     * @param {object} poolResizeParameter The parameters for the request.
     * 
     * @param {number} [poolResizeParameter.targetDedicated] The desired number of
     * compute nodes in the pool.
     * 
     * @param {moment.duration} [poolResizeParameter.resizeTimeout] The timeout
     * for allocation of compute nodes to the pool or removal of compute nodes
     * from the pool. The default value is 10 minutes.
     * 
     * @param {string} [poolResizeParameter.nodeDeallocationOption] When nodes may
     * be removed from the pool, if the pool size is decreasing. Possible values
     * include: 'requeue', 'terminate', 'taskcompletion', 'retaineddata'
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolResizeOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.poolResizeOptions.timeout] The maximum time that
     * the server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.poolResizeOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolResizeOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolResizeOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.poolResizeOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.poolResizeOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.poolResizeOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.poolResizeOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    resize(poolId: string, poolResizeParameter: models.PoolResizeParameter, options: { poolResizeOptions? : models.PoolResizeOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    resize(poolId: string, poolResizeParameter: models.PoolResizeParameter, callback: ServiceCallback<void>): void;

    /**
     * Stops an ongoing resize operation on the pool. This does not restore the
     * pool to its previous state before the resize operation: it only stops any
     * further changes being made, and the pool maintains its current state.
     *
     * @param {string} poolId The id of the pool whose resizing you want to stop.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolStopResizeOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.poolStopResizeOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.poolStopResizeOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolStopResizeOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.poolStopResizeOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {string} [options.poolStopResizeOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.poolStopResizeOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.poolStopResizeOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.poolStopResizeOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    stopResize(poolId: string, options: { poolStopResizeOptions? : models.PoolStopResizeOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    stopResize(poolId: string, callback: ServiceCallback<void>): void;

    /**
     * Updates the properties of a pool.
     *
     * @param {string} poolId The id of the pool to update.
     * 
     * @param {object} poolUpdatePropertiesParameter The parameters for the
     * request.
     * 
     * @param {object} [poolUpdatePropertiesParameter.startTask] A task to run on
     * each compute node as it joins the pool. If omitted, any existing start
     * task is removed from the pool.
     * 
     * @param {string} [poolUpdatePropertiesParameter.startTask.commandLine] The
     * command line of the start task.
     * 
     * @param {array} [poolUpdatePropertiesParameter.startTask.resourceFiles] A
     * list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [poolUpdatePropertiesParameter.startTask.environmentSettings] A list of
     * environment variable settings for the start task.
     * 
     * @param {boolean} [poolUpdatePropertiesParameter.startTask.runElevated]
     * Whether to run the start task in elevated mode. The default value is false.
     * 
     * @param {number} [poolUpdatePropertiesParameter.startTask.maxTaskRetryCount]
     * The maximum number of times the task may be retried.
     * 
     * @param {boolean} [poolUpdatePropertiesParameter.startTask.waitForSuccess]
     * Whether the Batch service should wait for the start task to complete
     * successfully (that is, to exit with exit code 0) before scheduling any
     * tasks on the compute node.
     * 
     * @param {array} [poolUpdatePropertiesParameter.certificateReferences] A list
     * of certificates to be installed on each compute node in the pool. If you
     * specify an empty collection, any existing certificate references are
     * removed from the pool.
     * 
     * @param {array} [poolUpdatePropertiesParameter.applicationPackageReferences]
     * A list of application packages to be installed on each compute node in the
     * pool. If you specify an empty collection, any existing application
     * packages references are removed from the pool.
     * 
     * @param {array} [poolUpdatePropertiesParameter.metadata] A list of
     * name-value pairs associated with the pool as metadata. If you specify an
     * empty collection, any existing metadata is removed from the pool.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolUpdatePropertiesOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.poolUpdatePropertiesOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.poolUpdatePropertiesOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.poolUpdatePropertiesOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.poolUpdatePropertiesOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    updateProperties(poolId: string, poolUpdatePropertiesParameter: models.PoolUpdatePropertiesParameter, options: { poolUpdatePropertiesOptions? : models.PoolUpdatePropertiesOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    updateProperties(poolId: string, poolUpdatePropertiesParameter: models.PoolUpdatePropertiesParameter, callback: ServiceCallback<void>): void;

    /**
     * Upgrades the operating system of the specified pool.
     *
     * @param {string} poolId The id of the pool to upgrade.
     * 
     * @param {string} targetOSVersion The Azure Guest OS version to be installed
     * on the virtual machines in the pool.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolUpgradeOSOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.poolUpgradeOSOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.poolUpgradeOSOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolUpgradeOSOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.poolUpgradeOSOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {string} [options.poolUpgradeOSOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.poolUpgradeOSOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.poolUpgradeOSOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.poolUpgradeOSOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    upgradeOS(poolId: string, targetOSVersion: string, options: { poolUpgradeOSOptions? : models.PoolUpgradeOSOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    upgradeOS(poolId: string, targetOSVersion: string, callback: ServiceCallback<void>): void;

    /**
     * Removes compute nodes from the specified pool.
     *
     * @param {string} poolId The id of the pool from which you want to remove
     * nodes.
     * 
     * @param {object} nodeRemoveParameter The parameters for the request.
     * 
     * @param {array} [nodeRemoveParameter.nodeList] A list containing the id of
     * the compute nodes to be removed from the specified pool.
     * 
     * @param {moment.duration} [nodeRemoveParameter.resizeTimeout] The timeout
     * for removal of compute nodes to the pool. The default value is 10 minutes.
     * 
     * @param {string} [nodeRemoveParameter.nodeDeallocationOption] When compute
     * nodes may be removed from the pool. Possible values include: 'requeue',
     * 'terminate', 'taskcompletion', 'retaineddata'
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolRemoveNodesOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.poolRemoveNodesOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.poolRemoveNodesOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolRemoveNodesOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.poolRemoveNodesOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {string} [options.poolRemoveNodesOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.poolRemoveNodesOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.poolRemoveNodesOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.poolRemoveNodesOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    removeNodes(poolId: string, nodeRemoveParameter: models.NodeRemoveParameter, options: { poolRemoveNodesOptions? : models.PoolRemoveNodesOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    removeNodes(poolId: string, nodeRemoveParameter: models.NodeRemoveParameter, callback: ServiceCallback<void>): void;

    /**
     * Lists the usage metrics, aggregated by pool across individual time
     * intervals, for the specified account.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolListPoolUsageMetricsNextOptions] Additional
     * parameters for the operation
     * 
     * @param {string}
     * [options.poolListPoolUsageMetricsNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.poolListPoolUsageMetricsNextOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.poolListPoolUsageMetricsNextOptions.ocpDate] The
     * time the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listPoolUsageMetricsNext(nextPageLink: string, options: { poolListPoolUsageMetricsNextOptions? : models.PoolListPoolUsageMetricsNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PoolListPoolUsageMetricsResult>): void;
    listPoolUsageMetricsNext(nextPageLink: string, callback: ServiceCallback<models.PoolListPoolUsageMetricsResult>): void;

    /**
     * Lists all of the pools in the specified account.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.poolListNextOptions] Additional parameters for the
     * operation
     * 
     * @param {string} [options.poolListNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.poolListNextOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.poolListNextOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] 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: { poolListNextOptions? : models.PoolListNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudPoolListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.CloudPoolListResult>): void;
}

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

    /**
     * Lists all node agent SKUs supported by the Azure Batch service.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.accountListNodeAgentSkusOptions] Additional
     * parameters for the operation
     * 
     * @param {string} [options.accountListNodeAgentSkusOptions.filter] An OData
     * $filter clause.
     * 
     * @param {number} [options.accountListNodeAgentSkusOptions.maxResults] The
     * maximum number of items to return in the response.
     * 
     * @param {number} [options.accountListNodeAgentSkusOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string} [options.accountListNodeAgentSkusOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.accountListNodeAgentSkusOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.accountListNodeAgentSkusOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listNodeAgentSkus(options: { accountListNodeAgentSkusOptions? : models.AccountListNodeAgentSkusOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AccountListNodeAgentSkusResult>): void;
    listNodeAgentSkus(callback: ServiceCallback<models.AccountListNodeAgentSkusResult>): void;

    /**
     * Lists all node agent SKUs supported by the Azure Batch service.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.accountListNodeAgentSkusNextOptions] Additional
     * parameters for the operation
     * 
     * @param {string}
     * [options.accountListNodeAgentSkusNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.accountListNodeAgentSkusNextOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.accountListNodeAgentSkusNextOptions.ocpDate] The
     * time the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listNodeAgentSkusNext(nextPageLink: string, options: { accountListNodeAgentSkusNextOptions? : models.AccountListNodeAgentSkusNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AccountListNodeAgentSkusResult>): void;
    listNodeAgentSkusNext(nextPageLink: string, callback: ServiceCallback<models.AccountListNodeAgentSkusResult>): void;
}

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

    /**
     * Gets lifetime summary statistics for all of the jobs in the specified
     * account. Statistics are aggregated across all jobs that have ever existed
     * in the account, from account creation to the last update time of the
     * statistics.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobGetAllJobsLifetimeStatisticsOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.jobGetAllJobsLifetimeStatisticsOptions.timeout]
     * The maximum time that the server can spend processing the request, in
     * seconds. The default is 30 seconds.
     * 
     * @param {string}
     * [options.jobGetAllJobsLifetimeStatisticsOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.jobGetAllJobsLifetimeStatisticsOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobGetAllJobsLifetimeStatisticsOptions.ocpDate] The
     * time the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getAllJobsLifetimeStatistics(options: { jobGetAllJobsLifetimeStatisticsOptions? : models.JobGetAllJobsLifetimeStatisticsOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobStatistics>): void;
    getAllJobsLifetimeStatistics(callback: ServiceCallback<models.JobStatistics>): void;

    /**
     * Deletes a job.
     *
     * @param {string} jobId The id of the job to delete.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobDeleteMethodOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.jobDeleteMethodOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.jobDeleteMethodOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobDeleteMethodOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobDeleteMethodOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {string} [options.jobDeleteMethodOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.jobDeleteMethodOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobDeleteMethodOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.jobDeleteMethodOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(jobId: string, options: { jobDeleteMethodOptions? : models.JobDeleteMethodOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(jobId: string, callback: ServiceCallback<void>): void;

    /**
     * Gets information about the specified job.
     *
     * @param {string} jobId The id of the job.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobGetOptions] Additional parameters for the
     * operation
     * 
     * @param {string} [options.jobGetOptions.select] An OData $select clause.
     * 
     * @param {string} [options.jobGetOptions.expand] An OData $expand clause.
     * 
     * @param {number} [options.jobGetOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.jobGetOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobGetOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobGetOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(jobId: string, options: { jobGetOptions? : models.JobGetOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJob>): void;
    get(jobId: string, callback: ServiceCallback<models.CloudJob>): void;

    /**
     * Updates the properties of a job.
     *
     * @param {string} jobId The id of the job whose properties you want to update.
     * 
     * @param {object} jobPatchParameter The parameters for the request.
     * 
     * @param {number} [jobPatchParameter.priority] The priority of the job.
     * Priority values can range from -1000 to 1000, with -1000 being the lowest
     * priority and 1000 being the highest priority. If omitted, the priority of
     * the job is left unchanged.
     * 
     * @param {object} [jobPatchParameter.constraints] The execution constraints
     * for the job. If omitted, the existing execution constraints are left
     * unchanged.
     * 
     * @param {moment.duration} [jobPatchParameter.constraints.maxWallClockTime]
     * The maximum elapsed time that the job may run, measured from the time the
     * job starts. If the job does not complete within the time limit, the Batch
     * service terminates it and any tasks that are still running.
     * 
     * @param {number} [jobPatchParameter.constraints.maxTaskRetryCount] The
     * maximum number of times each task may be retried. The Batch service
     * retries a task if its exit code is nonzero.
     * 
     * @param {object} [jobPatchParameter.poolInfo] The pool on which the Batch
     * service runs the job's tasks. If omitted, the job continues to run on its
     * current pool.
     * 
     * @param {string} [jobPatchParameter.poolInfo.poolId] The id of an existing
     * pool. All the tasks of the job will run on the specified pool. You must
     * specify either PoolId or AutoPoolSpecification, but not both.
     * 
     * @param {object} [jobPatchParameter.poolInfo.autoPoolSpecification]
     * Characteristics for a temporary 'auto pool'. The Batch service will create
     * this auto pool and run all of the tasks of the job on it, and will delete
     * the pool once the job has completed. You must specify either PoolId or
     * AutoPoolSpecification, but not both.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.autoPoolIdPrefix] A
     * prefix to be added to the unique identifier when a pool is automatically
     * created. The prefix can be up to 20 characters long.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.poolLifetimeOption] The
     * minimum lifetime of created auto pools, and how multiple jobs on a
     * schedule are assigned to pools. Possible values include: 'jobschedule',
     * 'job', 'unmapped'
     * 
     * @param {boolean}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.keepAlive] Whether to
     * keep an auto pool alive after its lifetime expires.
     * 
     * @param {object} [jobPatchParameter.poolInfo.autoPoolSpecification.pool] The
     * pool specification for the auto pool.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.displayName] The
     * display name for the pool.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.vmSize] The size of
     * the virtual machines in the pool. All virtual machines in a pool are the
     * same size.
     * 
     * @param {object}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration]
     * The cloud service configuration for the pool. This property and
     * VirtualMachineConfiguration are mutually exclusive and one of the
     * properties must be specified.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.osFamily]
     * The Azure Guest OS family to be installed on the virtual machines in the
     * pool.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.targetOSVersion]
     * The Azure Guest OS version to be installed on the virtual machines in the
     * pool. The default value is * which specifies the latest operating system
     * version for the specified OS family.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.currentOSVersion]
     * The Azure Guest OS Version currently installed on the virtual machines in
     * the pool. This may differ from TargetOSVersion if the pool state is
     * Upgrading.
     * 
     * @param {object}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration]
     * The virtual machine configuration for the pool. This property and
     * CloudServiceConfiguration are mutually exclusive and one of the properties
     * must be specified.
     * 
     * @param {object}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference]
     * A reference to the Azure Virtual Machines Marketplace image to use.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.publisher]
     * The publisher of the Azure Virtual Machines Marketplace image. For
     * example, Canonical or MicrosoftWindowsServer.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.offer]
     * The offer type of the Azure Virtual Machines Marketplace image. For
     * example, UbuntuServer or WindowsServer.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.sku]
     * The SKU of the Azure Virtual Machines Marketplace image. For example,
     * 14.04.0-LTS or 2012-R2-Datacenter.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.version]
     * The version of the Azure Virtual Machines Marketplace image. A value of
     * 'latest' can be specified to select the latest version of an image. If
     * omitted, the default is 'latest'.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.nodeAgentSKUId]
     * The SKU of Batch Node Agent to be provisioned on the compute node. The
     * Batch node agent is a program that runs on each node in the pool, and
     * provides the command-and-control interface between the node and the Batch
     * service. There are different implementations of the node agent, known as
     * SKUs, for different operating systems.
     * 
     * @param {object}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration]
     * Windows operating system settings on the virtual machine. This property
     * must not be specified if the ImageReference property specifies a Linux OS
     * image.
     * 
     * @param {boolean}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates]
     * Whether automatic updates are enabled on the virtual machine. If omitted,
     * the default value is true.
     * 
     * @param {number}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.maxTasksPerNode]
     * The maximum number of tasks that can run concurrently on a single compute
     * node in the pool.
     * 
     * @param {object}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy]
     * How tasks are distributed among compute nodes in the pool.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy.nodeFillType]
     * How tasks should be distributed across compute nodes. Possible values
     * include: 'spread', 'pack', 'unmapped'
     * 
     * @param {moment.duration}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.resizeTimeout] The
     * timeout for allocation of compute nodes to the pool.
     * 
     * @param {number}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.targetDedicated]
     * The desired number of compute nodes in the pool.
     * 
     * @param {boolean}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.enableAutoScale]
     * Whether the pool size should automatically adjust over time.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.autoScaleFormula]
     * The formula for the desired number of compute nodes in the pool.
     * 
     * @param {moment.duration}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.autoScaleEvaluationInterval]
     * A time interval for the desired AutoScale evaluation period in the pool.
     * 
     * @param {boolean}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.enableInterNodeCommunication]
     * Whether the pool permits direct communication between nodes.
     * 
     * @param {object}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.startTask] A task
     * to run on each compute node as it joins the pool. The task runs when the
     * node is added to the pool or when the node is restarted.
     * 
     * @param {string}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.startTask.commandLine]
     * The command line of the start task.
     * 
     * @param {array}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.startTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.startTask.environmentSettings]
     * A list of environment variable settings for the start task.
     * 
     * @param {boolean}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.startTask.runElevated]
     * Whether to run the start task in elevated mode. The default value is false.
     * 
     * @param {number}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.startTask.maxTaskRetryCount]
     * The maximum number of times the task may be retried.
     * 
     * @param {boolean}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.startTask.waitForSuccess]
     * Whether the Batch service should wait for the start task to complete
     * successfully (that is, to exit with exit code 0) before scheduling any
     * tasks on the compute node.
     * 
     * @param {array}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.certificateReferences]
     * A list of certificates to be installed on each compute node in the pool.
     * 
     * @param {array}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.applicationPackageReferences]
     * The list of application packages to be installed on each compute node in
     * the pool.
     * 
     * @param {array}
     * [jobPatchParameter.poolInfo.autoPoolSpecification.pool.metadata] A list of
     * name-value pairs associated with the pool as metadata.
     * 
     * @param {array} [jobPatchParameter.metadata] A list of name-value pairs
     * associated with the job as metadata. If omitted, the existing job metadata
     * is left unchanged.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobPatchOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.jobPatchOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.jobPatchOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobPatchOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobPatchOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.jobPatchOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.jobPatchOptions.ifNoneMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * does not match the specified ETag.
     * 
     * @param {date} [options.jobPatchOptions.ifModifiedSince] Specify this header
     * to perform the operation only if the resource has been modified since the
     * specified date/time.
     * 
     * @param {date} [options.jobPatchOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    patch(jobId: string, jobPatchParameter: models.JobPatchParameter, options: { jobPatchOptions? : models.JobPatchOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    patch(jobId: string, jobPatchParameter: models.JobPatchParameter, callback: ServiceCallback<void>): void;

    /**
     * Updates the properties of a job.
     *
     * @param {string} jobId The id of the job whose properties you want to update.
     * 
     * @param {object} jobUpdateParameter The parameters for the request.
     * 
     * @param {number} [jobUpdateParameter.priority] The priority of the job.
     * Priority values can range from -1000 to 1000, with -1000 being the lowest
     * priority and 1000 being the highest priority. If omitted, the priority of
     * the job is left unchanged.
     * 
     * @param {object} [jobUpdateParameter.constraints] The execution constraints
     * for the job. If omitted, the existing execution constraints are left
     * unchanged.
     * 
     * @param {moment.duration} [jobUpdateParameter.constraints.maxWallClockTime]
     * The maximum elapsed time that the job may run, measured from the time the
     * job starts. If the job does not complete within the time limit, the Batch
     * service terminates it and any tasks that are still running.
     * 
     * @param {number} [jobUpdateParameter.constraints.maxTaskRetryCount] The
     * maximum number of times each task may be retried. The Batch service
     * retries a task if its exit code is nonzero.
     * 
     * @param {object} [jobUpdateParameter.poolInfo] The pool on which the Batch
     * service runs the job's tasks. If omitted, the job continues to run on its
     * current pool.
     * 
     * @param {string} [jobUpdateParameter.poolInfo.poolId] The id of an existing
     * pool. All the tasks of the job will run on the specified pool. You must
     * specify either PoolId or AutoPoolSpecification, but not both.
     * 
     * @param {object} [jobUpdateParameter.poolInfo.autoPoolSpecification]
     * Characteristics for a temporary 'auto pool'. The Batch service will create
     * this auto pool and run all of the tasks of the job on it, and will delete
     * the pool once the job has completed. You must specify either PoolId or
     * AutoPoolSpecification, but not both.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.autoPoolIdPrefix] A
     * prefix to be added to the unique identifier when a pool is automatically
     * created. The prefix can be up to 20 characters long.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.poolLifetimeOption] The
     * minimum lifetime of created auto pools, and how multiple jobs on a
     * schedule are assigned to pools. Possible values include: 'jobschedule',
     * 'job', 'unmapped'
     * 
     * @param {boolean}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.keepAlive] Whether to
     * keep an auto pool alive after its lifetime expires.
     * 
     * @param {object} [jobUpdateParameter.poolInfo.autoPoolSpecification.pool]
     * The pool specification for the auto pool.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.displayName] The
     * display name for the pool.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.vmSize] The size
     * of the virtual machines in the pool. All virtual machines in a pool are
     * the same size.
     * 
     * @param {object}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration]
     * The cloud service configuration for the pool. This property and
     * VirtualMachineConfiguration are mutually exclusive and one of the
     * properties must be specified.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.osFamily]
     * The Azure Guest OS family to be installed on the virtual machines in the
     * pool.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.targetOSVersion]
     * The Azure Guest OS version to be installed on the virtual machines in the
     * pool. The default value is * which specifies the latest operating system
     * version for the specified OS family.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.currentOSVersion]
     * The Azure Guest OS Version currently installed on the virtual machines in
     * the pool. This may differ from TargetOSVersion if the pool state is
     * Upgrading.
     * 
     * @param {object}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration]
     * The virtual machine configuration for the pool. This property and
     * CloudServiceConfiguration are mutually exclusive and one of the properties
     * must be specified.
     * 
     * @param {object}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference]
     * A reference to the Azure Virtual Machines Marketplace image to use.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.publisher]
     * The publisher of the Azure Virtual Machines Marketplace image. For
     * example, Canonical or MicrosoftWindowsServer.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.offer]
     * The offer type of the Azure Virtual Machines Marketplace image. For
     * example, UbuntuServer or WindowsServer.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.sku]
     * The SKU of the Azure Virtual Machines Marketplace image. For example,
     * 14.04.0-LTS or 2012-R2-Datacenter.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.version]
     * The version of the Azure Virtual Machines Marketplace image. A value of
     * 'latest' can be specified to select the latest version of an image. If
     * omitted, the default is 'latest'.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.nodeAgentSKUId]
     * The SKU of Batch Node Agent to be provisioned on the compute node. The
     * Batch node agent is a program that runs on each node in the pool, and
     * provides the command-and-control interface between the node and the Batch
     * service. There are different implementations of the node agent, known as
     * SKUs, for different operating systems.
     * 
     * @param {object}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration]
     * Windows operating system settings on the virtual machine. This property
     * must not be specified if the ImageReference property specifies a Linux OS
     * image.
     * 
     * @param {boolean}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates]
     * Whether automatic updates are enabled on the virtual machine. If omitted,
     * the default value is true.
     * 
     * @param {number}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.maxTasksPerNode]
     * The maximum number of tasks that can run concurrently on a single compute
     * node in the pool.
     * 
     * @param {object}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy]
     * How tasks are distributed among compute nodes in the pool.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy.nodeFillType]
     * How tasks should be distributed across compute nodes. Possible values
     * include: 'spread', 'pack', 'unmapped'
     * 
     * @param {moment.duration}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.resizeTimeout] The
     * timeout for allocation of compute nodes to the pool.
     * 
     * @param {number}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.targetDedicated]
     * The desired number of compute nodes in the pool.
     * 
     * @param {boolean}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.enableAutoScale]
     * Whether the pool size should automatically adjust over time.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.autoScaleFormula]
     * The formula for the desired number of compute nodes in the pool.
     * 
     * @param {moment.duration}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.autoScaleEvaluationInterval]
     * A time interval for the desired AutoScale evaluation period in the pool.
     * 
     * @param {boolean}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.enableInterNodeCommunication]
     * Whether the pool permits direct communication between nodes.
     * 
     * @param {object}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.startTask] A task
     * to run on each compute node as it joins the pool. The task runs when the
     * node is added to the pool or when the node is restarted.
     * 
     * @param {string}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.startTask.commandLine]
     * The command line of the start task.
     * 
     * @param {array}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.startTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.startTask.environmentSettings]
     * A list of environment variable settings for the start task.
     * 
     * @param {boolean}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.startTask.runElevated]
     * Whether to run the start task in elevated mode. The default value is false.
     * 
     * @param {number}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.startTask.maxTaskRetryCount]
     * The maximum number of times the task may be retried.
     * 
     * @param {boolean}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.startTask.waitForSuccess]
     * Whether the Batch service should wait for the start task to complete
     * successfully (that is, to exit with exit code 0) before scheduling any
     * tasks on the compute node.
     * 
     * @param {array}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.certificateReferences]
     * A list of certificates to be installed on each compute node in the pool.
     * 
     * @param {array}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.applicationPackageReferences]
     * The list of application packages to be installed on each compute node in
     * the pool.
     * 
     * @param {array}
     * [jobUpdateParameter.poolInfo.autoPoolSpecification.pool.metadata] A list
     * of name-value pairs associated with the pool as metadata.
     * 
     * @param {array} [jobUpdateParameter.metadata] A list of name-value pairs
     * associated with the job as metadata. If omitted, the existing job metadata
     * is left unchanged.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobUpdateOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.jobUpdateOptions.timeout] The maximum time that
     * the server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.jobUpdateOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobUpdateOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobUpdateOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.jobUpdateOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.jobUpdateOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobUpdateOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.jobUpdateOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    update(jobId: string, jobUpdateParameter: models.JobUpdateParameter, options: { jobUpdateOptions? : models.JobUpdateOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    update(jobId: string, jobUpdateParameter: models.JobUpdateParameter, callback: ServiceCallback<void>): void;

    /**
     * Disables the specified job, preventing new tasks from running.
     *
     * @param {string} jobId The id of the job to disable.
     * 
     * @param {string} disableTasks What to do with active tasks associated with
     * the job. Possible values include: 'requeue', 'terminate', 'wait'
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobDisableOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.jobDisableOptions.timeout] The maximum time that
     * the server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.jobDisableOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobDisableOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobDisableOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.jobDisableOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.jobDisableOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobDisableOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.jobDisableOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    disable(jobId: string, disableTasks: string, options: { jobDisableOptions? : models.JobDisableOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    disable(jobId: string, disableTasks: string, callback: ServiceCallback<void>): void;

    /**
     * Enables the specified job, allowing new tasks to run.
     *
     * @param {string} jobId The id of the job to enable.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobEnableOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.jobEnableOptions.timeout] The maximum time that
     * the server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.jobEnableOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobEnableOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobEnableOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.jobEnableOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.jobEnableOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobEnableOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.jobEnableOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    enable(jobId: string, options: { jobEnableOptions? : models.JobEnableOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    enable(jobId: string, callback: ServiceCallback<void>): void;

    /**
     * Terminates the specified job, marking it as completed.
     *
     * @param {string} jobId The id of the job to terminate.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.terminateReason] The text you want to appear as
     * the job's TerminateReason. The default is 'UserTerminate'.
     * 
     * @param {object} [options.jobTerminateOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.jobTerminateOptions.timeout] The maximum time that
     * the server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.jobTerminateOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobTerminateOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobTerminateOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {string} [options.jobTerminateOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.jobTerminateOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobTerminateOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.jobTerminateOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    terminate(jobId: string, options: { terminateReason? : string, jobTerminateOptions? : models.JobTerminateOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    terminate(jobId: string, callback: ServiceCallback<void>): void;

    /**
     * Adds a job to the specified account.
     *
     * @param {object} job The job to be added.
     * 
     * @param {string} [job.id] A string that uniquely identifies the job within
     * the account. The id can contain any combination of alphanumeric characters
     * including hyphens and underscores, and cannot contain more than 64
     * characters. It is common to use a GUID for the id.
     * 
     * @param {string} [job.displayName] The display name for the job.
     * 
     * @param {number} [job.priority] The priority of the job. Priority values can
     * range from -1000 to 1000, with -1000 being the lowest priority and 1000
     * being the highest priority. The default value is 0.
     * 
     * @param {object} [job.constraints] The execution constraints for the job.
     * 
     * @param {moment.duration} [job.constraints.maxWallClockTime] The maximum
     * elapsed time that the job may run, measured from the time the job starts.
     * If the job does not complete within the time limit, the Batch service
     * terminates it and any tasks that are still running.
     * 
     * @param {number} [job.constraints.maxTaskRetryCount] The maximum number of
     * times each task may be retried. The Batch service retries a task if its
     * exit code is nonzero.
     * 
     * @param {object} [job.jobManagerTask] Details of a Job Manager task to be
     * launched when the job is started.
     * 
     * @param {string} [job.jobManagerTask.id] A string that uniquely identifies
     * the Job Manager task. A GUID is recommended.
     * 
     * @param {string} [job.jobManagerTask.displayName] The display name of the
     * Job Manager task.
     * 
     * @param {string} [job.jobManagerTask.commandLine] The command line of the
     * Job Manager task.
     * 
     * @param {array} [job.jobManagerTask.resourceFiles] A list of files that the
     * Batch service will download to the compute node before running the command
     * line.
     * 
     * @param {array} [job.jobManagerTask.environmentSettings] A list of
     * environment variable settings for the Job Manager task.
     * 
     * @param {object} [job.jobManagerTask.constraints] Constraints that apply to
     * the Job Manager task.
     * 
     * @param {boolean} [job.jobManagerTask.killJobOnCompletion] Whether
     * completion of the Job Manager task signifies completion of the entire job.
     * 
     * @param {boolean} [job.jobManagerTask.runElevated] Whether to run the Job
     * Manager task in elevated mode. The default value is false.
     * 
     * @param {boolean} [job.jobManagerTask.runExclusive] Whether the Job Manager
     * task requires exclusive use of the compute node where it runs. If true, no
     * other tasks will run on the same compute node for as long as the Job
     * Manager is running. If false, other tasks can run simultaneously with the
     * Job Manager on a compute node. (The Job Manager task counts normally
     * against the node’s concurrent task limit, so this is only relevant if the
     * node allows multiple concurrent tasks.)
     * 
     * @param {object} [job.jobPreparationTask] The Job Preparation task.
     * 
     * @param {string} [job.jobPreparationTask.id] A string that uniquely
     * identifies the job preparation task within the job. The id can contain any
     * combination of alphanumeric characters including hyphens and underscores
     * and cannot contain more than 64 characters.
     * 
     * @param {string} [job.jobPreparationTask.commandLine] The command line of
     * the Job Preparation task.
     * 
     * @param {array} [job.jobPreparationTask.resourceFiles] A list of files that
     * the Batch service will download to the compute node before running the
     * command line.
     * 
     * @param {array} [job.jobPreparationTask.environmentSettings] A list of
     * environment variable settings for the Job Preparation task.
     * 
     * @param {object} [job.jobPreparationTask.constraints] Constraints that apply
     * to the Job Preparation task.
     * 
     * @param {moment.duration}
     * [job.jobPreparationTask.constraints.maxWallClockTime] The maximum elapsed
     * time that the task may run, measured from the time the task starts. If the
     * task does not complete within the time limit, the Batch service terminates
     * it.
     * 
     * @param {moment.duration} [job.jobPreparationTask.constraints.retentionTime]
     * The minimum time to retain the working directory for the task on the
     * compute node where it ran, from the time it completes execution. After
     * this time, the Batch service may delete the working directory and all its
     * contents. The default is infinite.
     * 
     * @param {number} [job.jobPreparationTask.constraints.maxTaskRetryCount] The
     * maximum number of times the task may be retried. The Batch service retries
     * a task if its exit code is nonzero.
     * 
     * @param {boolean} [job.jobPreparationTask.waitForSuccess] Whether the Batch
     * service should wait for the Job Preparation task to complete successfully
     * before scheduling any other tasks of the job on the compute node.
     * 
     * @param {boolean} [job.jobPreparationTask.runElevated] Whether to run the
     * Job Preparation task in elevated mode. The default value is false.
     * 
     * @param {boolean} [job.jobPreparationTask.rerunOnNodeRebootAfterSuccess]
     * Whether the Batch service should rerun the Job Preparation task after a
     * compute node reboots. Note that the Job Preparation task should still be
     * written to be idempotent because it can be rerun if the compute node is
     * rebooted while Job Preparation task is still running. The default value is
     * true.
     * 
     * @param {object} [job.jobReleaseTask] The Job Release task.
     * 
     * @param {string} [job.jobReleaseTask.id] A string that uniquely identifies
     * the Job Release task within the job. The id can contain any combination of
     * alphanumeric characters including hyphens and underscores and cannot
     * contain more than 64 characters.
     * 
     * @param {string} [job.jobReleaseTask.commandLine] The command line of the
     * Job Release task.
     * 
     * @param {array} [job.jobReleaseTask.resourceFiles] A list of files that the
     * Batch service will download to the compute node before running the command
     * line.
     * 
     * @param {array} [job.jobReleaseTask.environmentSettings] A list of
     * environment variable settings for the Job Release task.
     * 
     * @param {moment.duration} [job.jobReleaseTask.maxWallClockTime] The maximum
     * elapsed time that the Job Release task may run on a given compute node,
     * measured from the time the task starts. If the task does not complete
     * within the time limit, the Batch service terminates it. The default value
     * is 15 minutes.
     * 
     * @param {moment.duration} [job.jobReleaseTask.retentionTime] The minimum
     * time to retain the working directory for the Job Release task on the
     * compute node. After this time, the Batch service may delete the working
     * directory and all its contents. The default is infinite.
     * 
     * @param {boolean} [job.jobReleaseTask.runElevated] Whether to run the Job
     * Release task in elevated mode. The default value is false.
     * 
     * @param {array} [job.commonEnvironmentSettings] The list of common
     * environment variable settings. These environment variables are set for all
     * tasks in the job (including the Job Manager, Job Preparation and Job
     * Release tasks).
     * 
     * @param {object} [job.poolInfo] The pool on which the Batch service runs the
     * job’s tasks.
     * 
     * @param {string} [job.poolInfo.poolId] The id of an existing pool. All the
     * tasks of the job will run on the specified pool. You must specify either
     * PoolId or AutoPoolSpecification, but not both.
     * 
     * @param {object} [job.poolInfo.autoPoolSpecification] Characteristics for a
     * temporary 'auto pool'. The Batch service will create this auto pool and
     * run all of the tasks of the job on it, and will delete the pool once the
     * job has completed. You must specify either PoolId or
     * AutoPoolSpecification, but not both.
     * 
     * @param {string} [job.poolInfo.autoPoolSpecification.autoPoolIdPrefix] A
     * prefix to be added to the unique identifier when a pool is automatically
     * created. The prefix can be up to 20 characters long.
     * 
     * @param {string} [job.poolInfo.autoPoolSpecification.poolLifetimeOption] The
     * minimum lifetime of created auto pools, and how multiple jobs on a
     * schedule are assigned to pools. Possible values include: 'jobschedule',
     * 'job', 'unmapped'
     * 
     * @param {boolean} [job.poolInfo.autoPoolSpecification.keepAlive] Whether to
     * keep an auto pool alive after its lifetime expires.
     * 
     * @param {object} [job.poolInfo.autoPoolSpecification.pool] The pool
     * specification for the auto pool.
     * 
     * @param {string} [job.poolInfo.autoPoolSpecification.pool.displayName] The
     * display name for the pool.
     * 
     * @param {string} [job.poolInfo.autoPoolSpecification.pool.vmSize] The size
     * of the virtual machines in the pool. All virtual machines in a pool are
     * the same size.
     * 
     * @param {object}
     * [job.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration] The
     * cloud service configuration for the pool. This property and
     * VirtualMachineConfiguration are mutually exclusive and one of the
     * properties must be specified.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.osFamily]
     * The Azure Guest OS family to be installed on the virtual machines in the
     * pool.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.targetOSVersion]
     * The Azure Guest OS version to be installed on the virtual machines in the
     * pool. The default value is * which specifies the latest operating system
     * version for the specified OS family.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.currentOSVersion]
     * The Azure Guest OS Version currently installed on the virtual machines in
     * the pool. This may differ from TargetOSVersion if the pool state is
     * Upgrading.
     * 
     * @param {object}
     * [job.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration] The
     * virtual machine configuration for the pool. This property and
     * CloudServiceConfiguration are mutually exclusive and one of the properties
     * must be specified.
     * 
     * @param {object}
     * [job.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference]
     * A reference to the Azure Virtual Machines Marketplace image to use.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.publisher]
     * The publisher of the Azure Virtual Machines Marketplace image. For
     * example, Canonical or MicrosoftWindowsServer.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.offer]
     * The offer type of the Azure Virtual Machines Marketplace image. For
     * example, UbuntuServer or WindowsServer.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.sku]
     * The SKU of the Azure Virtual Machines Marketplace image. For example,
     * 14.04.0-LTS or 2012-R2-Datacenter.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.version]
     * The version of the Azure Virtual Machines Marketplace image. A value of
     * 'latest' can be specified to select the latest version of an image. If
     * omitted, the default is 'latest'.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.nodeAgentSKUId]
     * The SKU of Batch Node Agent to be provisioned on the compute node. The
     * Batch node agent is a program that runs on each node in the pool, and
     * provides the command-and-control interface between the node and the Batch
     * service. There are different implementations of the node agent, known as
     * SKUs, for different operating systems.
     * 
     * @param {object}
     * [job.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration]
     * Windows operating system settings on the virtual machine. This property
     * must not be specified if the ImageReference property specifies a Linux OS
     * image.
     * 
     * @param {boolean}
     * [job.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates]
     * Whether automatic updates are enabled on the virtual machine. If omitted,
     * the default value is true.
     * 
     * @param {number} [job.poolInfo.autoPoolSpecification.pool.maxTasksPerNode]
     * The maximum number of tasks that can run concurrently on a single compute
     * node in the pool.
     * 
     * @param {object}
     * [job.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy] How tasks
     * are distributed among compute nodes in the pool.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy.nodeFillType]
     * How tasks should be distributed across compute nodes. Possible values
     * include: 'spread', 'pack', 'unmapped'
     * 
     * @param {moment.duration}
     * [job.poolInfo.autoPoolSpecification.pool.resizeTimeout] The timeout for
     * allocation of compute nodes to the pool.
     * 
     * @param {number} [job.poolInfo.autoPoolSpecification.pool.targetDedicated]
     * The desired number of compute nodes in the pool.
     * 
     * @param {boolean} [job.poolInfo.autoPoolSpecification.pool.enableAutoScale]
     * Whether the pool size should automatically adjust over time.
     * 
     * @param {string} [job.poolInfo.autoPoolSpecification.pool.autoScaleFormula]
     * The formula for the desired number of compute nodes in the pool.
     * 
     * @param {moment.duration}
     * [job.poolInfo.autoPoolSpecification.pool.autoScaleEvaluationInterval] A
     * time interval for the desired AutoScale evaluation period in the pool.
     * 
     * @param {boolean}
     * [job.poolInfo.autoPoolSpecification.pool.enableInterNodeCommunication]
     * Whether the pool permits direct communication between nodes.
     * 
     * @param {object} [job.poolInfo.autoPoolSpecification.pool.startTask] A task
     * to run on each compute node as it joins the pool. The task runs when the
     * node is added to the pool or when the node is restarted.
     * 
     * @param {string}
     * [job.poolInfo.autoPoolSpecification.pool.startTask.commandLine] The
     * command line of the start task.
     * 
     * @param {array}
     * [job.poolInfo.autoPoolSpecification.pool.startTask.resourceFiles] A list
     * of files that the Batch service will download to the compute node before
     * running the command line.
     * 
     * @param {array}
     * [job.poolInfo.autoPoolSpecification.pool.startTask.environmentSettings] A
     * list of environment variable settings for the start task.
     * 
     * @param {boolean}
     * [job.poolInfo.autoPoolSpecification.pool.startTask.runElevated] Whether to
     * run the start task in elevated mode. The default value is false.
     * 
     * @param {number}
     * [job.poolInfo.autoPoolSpecification.pool.startTask.maxTaskRetryCount] The
     * maximum number of times the task may be retried.
     * 
     * @param {boolean}
     * [job.poolInfo.autoPoolSpecification.pool.startTask.waitForSuccess] Whether
     * the Batch service should wait for the start task to complete successfully
     * (that is, to exit with exit code 0) before scheduling any tasks on the
     * compute node.
     * 
     * @param {array}
     * [job.poolInfo.autoPoolSpecification.pool.certificateReferences] A list of
     * certificates to be installed on each compute node in the pool.
     * 
     * @param {array}
     * [job.poolInfo.autoPoolSpecification.pool.applicationPackageReferences] The
     * list of application packages to be installed on each compute node in the
     * pool.
     * 
     * @param {array} [job.poolInfo.autoPoolSpecification.pool.metadata] A list of
     * name-value pairs associated with the pool as metadata.
     * 
     * @param {array} [job.metadata] A list of name-value pairs associated with
     * the job as metadata.
     * 
     * @param {boolean} [job.usesTaskDependencies] The flag that determines if
     * this job will use tasks with dependencies.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobAddOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.jobAddOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.jobAddOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobAddOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobAddOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    add(job: models.JobAddParameter, options: { jobAddOptions? : models.JobAddOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    add(job: models.JobAddParameter, callback: ServiceCallback<void>): void;

    /**
     * Lists all of the jobs in the specified account.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobListOptions] Additional parameters for the
     * operation
     * 
     * @param {string} [options.jobListOptions.filter] An OData $filter clause.
     * 
     * @param {string} [options.jobListOptions.select] An OData $select clause.
     * 
     * @param {string} [options.jobListOptions.expand] An OData $expand clause.
     * 
     * @param {number} [options.jobListOptions.maxResults] The maximum number of
     * items to return in the response.
     * 
     * @param {number} [options.jobListOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.jobListOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobListOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobListOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(options: { jobListOptions? : models.JobListOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJobListResult>): void;
    list(callback: ServiceCallback<models.CloudJobListResult>): void;

    /**
     * Lists the jobs that have been created under the specified job schedule.
     *
     * @param {string} jobScheduleId The id of the job schedule from which you
     * want to get a list of jobs.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobListFromJobScheduleOptions] Additional
     * parameters for the operation
     * 
     * @param {string} [options.jobListFromJobScheduleOptions.filter] An OData
     * $filter clause.
     * 
     * @param {string} [options.jobListFromJobScheduleOptions.select] An OData
     * $select clause.
     * 
     * @param {string} [options.jobListFromJobScheduleOptions.expand] An OData
     * $expand clause.
     * 
     * @param {number} [options.jobListFromJobScheduleOptions.maxResults] The
     * maximum number of items to return in the response.
     * 
     * @param {number} [options.jobListFromJobScheduleOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.jobListFromJobScheduleOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.jobListFromJobScheduleOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobListFromJobScheduleOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listFromJobSchedule(jobScheduleId: string, options: { jobListFromJobScheduleOptions? : models.JobListFromJobScheduleOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJobListResult>): void;
    listFromJobSchedule(jobScheduleId: string, callback: ServiceCallback<models.CloudJobListResult>): void;

    /**
     * Lists the execution status of the Job Preparation and Job Release task for
     * the specified job across the compute nodes where the job has run.
     *
     * @param {string} jobId The id of the job.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobListPreparationAndReleaseTaskStatusOptions]
     * Additional parameters for the operation
     * 
     * @param {string}
     * [options.jobListPreparationAndReleaseTaskStatusOptions.filter] An OData
     * $filter clause.
     * 
     * @param {string}
     * [options.jobListPreparationAndReleaseTaskStatusOptions.select] An OData
     * $select clause.
     * 
     * @param {number}
     * [options.jobListPreparationAndReleaseTaskStatusOptions.maxResults] The
     * maximum number of items to return in the response.
     * 
     * @param {number}
     * [options.jobListPreparationAndReleaseTaskStatusOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string}
     * [options.jobListPreparationAndReleaseTaskStatusOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.jobListPreparationAndReleaseTaskStatusOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date}
     * [options.jobListPreparationAndReleaseTaskStatusOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listPreparationAndReleaseTaskStatus(jobId: string, options: { jobListPreparationAndReleaseTaskStatusOptions? : models.JobListPreparationAndReleaseTaskStatusOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJobListPreparationAndReleaseTaskStatusResult>): void;
    listPreparationAndReleaseTaskStatus(jobId: string, callback: ServiceCallback<models.CloudJobListPreparationAndReleaseTaskStatusResult>): void;

    /**
     * Lists all of the jobs in the specified account.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobListNextOptions] Additional parameters for the
     * operation
     * 
     * @param {string} [options.jobListNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobListNextOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobListNextOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {object} [options.customHeaders] 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: { jobListNextOptions? : models.JobListNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJobListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.CloudJobListResult>): void;

    /**
     * Lists the jobs that have been created under the specified job schedule.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobListFromJobScheduleNextOptions] Additional
     * parameters for the operation
     * 
     * @param {string} [options.jobListFromJobScheduleNextOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.jobListFromJobScheduleNextOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobListFromJobScheduleNextOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listFromJobScheduleNext(nextPageLink: string, options: { jobListFromJobScheduleNextOptions? : models.JobListFromJobScheduleNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJobListResult>): void;
    listFromJobScheduleNext(nextPageLink: string, callback: ServiceCallback<models.CloudJobListResult>): void;

    /**
     * Lists the execution status of the Job Preparation and Job Release task for
     * the specified job across the compute nodes where the job has run.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobListPreparationAndReleaseTaskStatusNextOptions]
     * Additional parameters for the operation
     * 
     * @param {string}
     * [options.jobListPreparationAndReleaseTaskStatusNextOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.jobListPreparationAndReleaseTaskStatusNextOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date}
     * [options.jobListPreparationAndReleaseTaskStatusNextOptions.ocpDate] The
     * time the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listPreparationAndReleaseTaskStatusNext(nextPageLink: string, options: { jobListPreparationAndReleaseTaskStatusNextOptions? : models.JobListPreparationAndReleaseTaskStatusNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJobListPreparationAndReleaseTaskStatusResult>): void;
    listPreparationAndReleaseTaskStatusNext(nextPageLink: string, callback: ServiceCallback<models.CloudJobListPreparationAndReleaseTaskStatusResult>): void;
}

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

    /**
     * Adds a certificate to the specified account.
     *
     * @param {object} certificate The certificate to be added.
     * 
     * @param {string} [certificate.thumbprint] The X.509 thumbprint of the
     * certificate. This is a sequence of up to 40 hex digits (it may include
     * spaces but these are removed).
     * 
     * @param {string} [certificate.thumbprintAlgorithm] The algorithm used to
     * derive the thumbprint. This must be sha1.
     * 
     * @param {string} [certificate.data] The base64-encoded contents of the
     * certificate. The maximum size is 10KB.
     * 
     * @param {string} [certificate.certificateFormat] The format of the
     * certificate data. Possible values include: 'pfx', 'cer', 'unmapped'
     * 
     * @param {string} [certificate.password] The password to access the
     * certificate's private key.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.certificateAddOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.certificateAddOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.certificateAddOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.certificateAddOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.certificateAddOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    add(certificate: models.CertificateAddParameter, options: { certificateAddOptions? : models.CertificateAddOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    add(certificate: models.CertificateAddParameter, callback: ServiceCallback<void>): void;

    /**
     * Lists all of the certificates that have been added to the specified account.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.certificateListOptions] Additional parameters for
     * the operation
     * 
     * @param {string} [options.certificateListOptions.filter] An OData $filter
     * clause.
     * 
     * @param {string} [options.certificateListOptions.select] An OData $select
     * clause.
     * 
     * @param {number} [options.certificateListOptions.maxResults] The maximum
     * number of items to return in the response.
     * 
     * @param {number} [options.certificateListOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.certificateListOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.certificateListOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.certificateListOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(options: { certificateListOptions? : models.CertificateListOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CertificateListResult>): void;
    list(callback: ServiceCallback<models.CertificateListResult>): void;

    /**
     * Cancels a failed deletion of a certificate from the specified account.
     *
     * @param {string} thumbprintAlgorithm The algorithm used to derive the
     * thumbprint parameter. This must be sha1.
     * 
     * @param {string} thumbprint The thumbprint of the certificate being deleted.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.certificateCancelDeletionOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.certificateCancelDeletionOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string} [options.certificateCancelDeletionOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.certificateCancelDeletionOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.certificateCancelDeletionOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    cancelDeletion(thumbprintAlgorithm: string, thumbprint: string, options: { certificateCancelDeletionOptions? : models.CertificateCancelDeletionOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    cancelDeletion(thumbprintAlgorithm: string, thumbprint: string, callback: ServiceCallback<void>): void;

    /**
     * Deletes a certificate from the specified account.
     *
     * @param {string} thumbprintAlgorithm The algorithm used to derive the
     * thumbprint parameter. This must be sha1.
     * 
     * @param {string} thumbprint The thumbprint of the certificate to be deleted.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.certificateDeleteMethodOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.certificateDeleteMethodOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string} [options.certificateDeleteMethodOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.certificateDeleteMethodOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.certificateDeleteMethodOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(thumbprintAlgorithm: string, thumbprint: string, options: { certificateDeleteMethodOptions? : models.CertificateDeleteMethodOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(thumbprintAlgorithm: string, thumbprint: string, callback: ServiceCallback<void>): void;

    /**
     * Gets information about the specified certificate.
     *
     * @param {string} thumbprintAlgorithm The algorithm used to derive the
     * thumbprint parameter. This must be sha1.
     * 
     * @param {string} thumbprint The thumbprint of the certificate to get.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.certificateGetOptions] Additional parameters for
     * the operation
     * 
     * @param {string} [options.certificateGetOptions.select] An OData $select
     * clause.
     * 
     * @param {number} [options.certificateGetOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.certificateGetOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.certificateGetOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.certificateGetOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(thumbprintAlgorithm: string, thumbprint: string, options: { certificateGetOptions? : models.CertificateGetOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Certificate>): void;
    get(thumbprintAlgorithm: string, thumbprint: string, callback: ServiceCallback<models.Certificate>): void;

    /**
     * Lists all of the certificates that have been added to the specified account.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.certificateListNextOptions] Additional parameters
     * for the operation
     * 
     * @param {string} [options.certificateListNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.certificateListNextOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.certificateListNextOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] 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: { certificateListNextOptions? : models.CertificateListNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CertificateListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.CertificateListResult>): void;
}

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

    /**
     * Deletes the specified task file from the compute node where the task ran.
     *
     * @param {string} jobId The id of the job that contains the task.
     * 
     * @param {string} taskId The id of the task whose file you want to delete.
     * 
     * @param {string} fileName The path to the task file that you want to delete.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {boolean} [options.recursive] Whether to delete children of a
     * directory. If the fileName parameter represents a directory instead of a
     * file, you can set Recursive to true to delete the directory and all of the
     * files and subdirectories in it. If Recursive is false then the directory
     * must be empty or deletion will fail.
     * 
     * @param {object} [options.fileDeleteFromTaskOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.fileDeleteFromTaskOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.fileDeleteFromTaskOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.fileDeleteFromTaskOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.fileDeleteFromTaskOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteFromTask(jobId: string, taskId: string, fileName: string, options: { recursive? : boolean, fileDeleteFromTaskOptions? : models.FileDeleteFromTaskOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteFromTask(jobId: string, taskId: string, fileName: string, callback: ServiceCallback<void>): void;

    /**
     * Returns the content of the specified task file.
     *
     * @param {string} jobId The id of the job that contains the task.
     * 
     * @param {string} taskId The id of the task whose file you want to retrieve.
     * 
     * @param {string} fileName The path to the task file that you want to get the
     * content of.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.fileGetFromTaskOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.fileGetFromTaskOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.fileGetFromTaskOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.fileGetFromTaskOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.fileGetFromTaskOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {string} [options.fileGetFromTaskOptions.ocpRange] The byte range to
     * be retrieved. The default is to retrieve the entire file. The format is
     * startRange-endRange.
     * 
     * @param {date} [options.fileGetFromTaskOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.fileGetFromTaskOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getFromTask(jobId: string, taskId: string, fileName: string, options: { fileGetFromTaskOptions? : models.FileGetFromTaskOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<stream.Readable>): void;
    getFromTask(jobId: string, taskId: string, fileName: string, callback: ServiceCallback<stream.Readable>): void;

    /**
     * Gets the properties of the specified task file.
     *
     * @param {string} jobId The id of the job that contains the task.
     * 
     * @param {string} taskId The id of the task whose file you want to get the
     * properties of.
     * 
     * @param {string} fileName The path to the task file that you want to get the
     * properties of.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.fileGetNodeFilePropertiesFromTaskOptions]
     * Additional parameters for the operation
     * 
     * @param {number} [options.fileGetNodeFilePropertiesFromTaskOptions.timeout]
     * The maximum time that the server can spend processing the request, in
     * seconds. The default is 30 seconds.
     * 
     * @param {string}
     * [options.fileGetNodeFilePropertiesFromTaskOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.fileGetNodeFilePropertiesFromTaskOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.fileGetNodeFilePropertiesFromTaskOptions.ocpDate]
     * The time the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {date}
     * [options.fileGetNodeFilePropertiesFromTaskOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date}
     * [options.fileGetNodeFilePropertiesFromTaskOptions.ifUnmodifiedSince]
     * Specify this header to perform the operation only if the resource has not
     * been modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getNodeFilePropertiesFromTask(jobId: string, taskId: string, fileName: string, options: { fileGetNodeFilePropertiesFromTaskOptions? : models.FileGetNodeFilePropertiesFromTaskOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    getNodeFilePropertiesFromTask(jobId: string, taskId: string, fileName: string, callback: ServiceCallback<void>): void;

    /**
     * Deletes the specified task file from the compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node from which you want to
     * delete the file.
     * 
     * @param {string} fileName The path to the file that you want to delete.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {boolean} [options.recursive] Whether to delete children of a
     * directory. If the fileName parameter represents a directory instead of a
     * file, you can set Recursive to true to delete the directory and all of the
     * files and subdirectories in it. If Recursive is false then the directory
     * must be empty or deletion will fail.
     * 
     * @param {object} [options.fileDeleteFromComputeNodeOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.fileDeleteFromComputeNodeOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string} [options.fileDeleteFromComputeNodeOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.fileDeleteFromComputeNodeOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.fileDeleteFromComputeNodeOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteFromComputeNode(poolId: string, nodeId: string, fileName: string, options: { recursive? : boolean, fileDeleteFromComputeNodeOptions? : models.FileDeleteFromComputeNodeOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteFromComputeNode(poolId: string, nodeId: string, fileName: string, callback: ServiceCallback<void>): void;

    /**
     * Returns the content of the specified task file.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node that contains the file.
     * 
     * @param {string} fileName The path to the task file that you want to get the
     * content of.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.fileGetFromComputeNodeOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.fileGetFromComputeNodeOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.fileGetFromComputeNodeOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.fileGetFromComputeNodeOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.fileGetFromComputeNodeOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.fileGetFromComputeNodeOptions.ocpRange] The byte
     * range to be retrieved. The default is to retrieve the entire file. The
     * format is startRange-endRange.
     * 
     * @param {date} [options.fileGetFromComputeNodeOptions.ifModifiedSince]
     * Specify this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.fileGetFromComputeNodeOptions.ifUnmodifiedSince]
     * Specify this header to perform the operation only if the resource has not
     * been modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getFromComputeNode(poolId: string, nodeId: string, fileName: string, options: { fileGetFromComputeNodeOptions? : models.FileGetFromComputeNodeOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<stream.Readable>): void;
    getFromComputeNode(poolId: string, nodeId: string, fileName: string, callback: ServiceCallback<stream.Readable>): void;

    /**
     * Gets the properties of the specified compute node file.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node that contains the file.
     * 
     * @param {string} fileName The path to the compute node file that you want to
     * get the properties of.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.fileGetNodeFilePropertiesFromComputeNodeOptions]
     * Additional parameters for the operation
     * 
     * @param {number}
     * [options.fileGetNodeFilePropertiesFromComputeNodeOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string}
     * [options.fileGetNodeFilePropertiesFromComputeNodeOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.fileGetNodeFilePropertiesFromComputeNodeOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date}
     * [options.fileGetNodeFilePropertiesFromComputeNodeOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {date}
     * [options.fileGetNodeFilePropertiesFromComputeNodeOptions.ifModifiedSince]
     * Specify this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date}
     * [options.fileGetNodeFilePropertiesFromComputeNodeOptions.ifUnmodifiedSince]
     * Specify this header to perform the operation only if the resource has not
     * been modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getNodeFilePropertiesFromComputeNode(poolId: string, nodeId: string, fileName: string, options: { fileGetNodeFilePropertiesFromComputeNodeOptions? : models.FileGetNodeFilePropertiesFromComputeNodeOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    getNodeFilePropertiesFromComputeNode(poolId: string, nodeId: string, fileName: string, callback: ServiceCallback<void>): void;

    /**
     * Lists the files in a task's directory on its compute node.
     *
     * @param {string} jobId The id of the job that contains the task.
     * 
     * @param {string} taskId The id of the task whose files you want to list.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {boolean} [options.recursive] Whether to list children of a
     * directory.
     * 
     * @param {object} [options.fileListFromTaskOptions] Additional parameters for
     * the operation
     * 
     * @param {string} [options.fileListFromTaskOptions.filter] An OData $filter
     * clause.
     * 
     * @param {number} [options.fileListFromTaskOptions.maxResults] The maximum
     * number of items to return in the response.
     * 
     * @param {number} [options.fileListFromTaskOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.fileListFromTaskOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.fileListFromTaskOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.fileListFromTaskOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listFromTask(jobId: string, taskId: string, options: { recursive? : boolean, fileListFromTaskOptions? : models.FileListFromTaskOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeFileListResult>): void;
    listFromTask(jobId: string, taskId: string, callback: ServiceCallback<models.NodeFileListResult>): void;

    /**
     * Lists all of the files in task directories on the specified compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node whose files you want to
     * list.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {boolean} [options.recursive] Whether to list children of a
     * directory.
     * 
     * @param {object} [options.fileListFromComputeNodeOptions] Additional
     * parameters for the operation
     * 
     * @param {string} [options.fileListFromComputeNodeOptions.filter] An OData
     * $filter clause.
     * 
     * @param {number} [options.fileListFromComputeNodeOptions.maxResults] The
     * maximum number of items to return in the response.
     * 
     * @param {number} [options.fileListFromComputeNodeOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string} [options.fileListFromComputeNodeOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.fileListFromComputeNodeOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.fileListFromComputeNodeOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listFromComputeNode(poolId: string, nodeId: string, options: { recursive? : boolean, fileListFromComputeNodeOptions? : models.FileListFromComputeNodeOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeFileListResult>): void;
    listFromComputeNode(poolId: string, nodeId: string, callback: ServiceCallback<models.NodeFileListResult>): void;

    /**
     * Lists the files in a task's directory on its compute node.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.fileListFromTaskNextOptions] Additional parameters
     * for the operation
     * 
     * @param {string} [options.fileListFromTaskNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.fileListFromTaskNextOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.fileListFromTaskNextOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listFromTaskNext(nextPageLink: string, options: { fileListFromTaskNextOptions? : models.FileListFromTaskNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeFileListResult>): void;
    listFromTaskNext(nextPageLink: string, callback: ServiceCallback<models.NodeFileListResult>): void;

    /**
     * Lists all of the files in task directories on the specified compute node.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.fileListFromComputeNodeNextOptions] Additional
     * parameters for the operation
     * 
     * @param {string}
     * [options.fileListFromComputeNodeNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.fileListFromComputeNodeNextOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.fileListFromComputeNodeNextOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listFromComputeNodeNext(nextPageLink: string, options: { fileListFromComputeNodeNextOptions? : models.FileListFromComputeNodeNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeFileListResult>): void;
    listFromComputeNodeNext(nextPageLink: string, callback: ServiceCallback<models.NodeFileListResult>): void;
}

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

    /**
     * Checks the specified job schedule exists.
     *
     * @param {string} jobScheduleId The id of the job schedule which you want to
     * check.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleExistsOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.jobScheduleExistsOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.jobScheduleExistsOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobScheduleExistsOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobScheduleExistsOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.jobScheduleExistsOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.jobScheduleExistsOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobScheduleExistsOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.jobScheduleExistsOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    exists(jobScheduleId: string, options: { jobScheduleExistsOptions? : models.JobScheduleExistsOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<boolean>): void;
    exists(jobScheduleId: string, callback: ServiceCallback<boolean>): void;

    /**
     * Deletes a job schedule from the specified account.
     *
     * @param {string} jobScheduleId The id of the job schedule to delete.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleDeleteMethodOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.jobScheduleDeleteMethodOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string} [options.jobScheduleDeleteMethodOptions.clientRequestId]
     * The caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.jobScheduleDeleteMethodOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobScheduleDeleteMethodOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.jobScheduleDeleteMethodOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.jobScheduleDeleteMethodOptions.ifNoneMatch] An
     * ETag is specified. Specify this header to perform the operation only if
     * the resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobScheduleDeleteMethodOptions.ifModifiedSince]
     * Specify this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.jobScheduleDeleteMethodOptions.ifUnmodifiedSince]
     * Specify this header to perform the operation only if the resource has not
     * been modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(jobScheduleId: string, options: { jobScheduleDeleteMethodOptions? : models.JobScheduleDeleteMethodOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(jobScheduleId: string, callback: ServiceCallback<void>): void;

    /**
     * Gets information about the specified job schedule.
     *
     * @param {string} jobScheduleId The id of the job schedule to get.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleGetOptions] Additional parameters for
     * the operation
     * 
     * @param {string} [options.jobScheduleGetOptions.select] An OData $select
     * clause.
     * 
     * @param {string} [options.jobScheduleGetOptions.expand] An OData $expand
     * clause.
     * 
     * @param {number} [options.jobScheduleGetOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.jobScheduleGetOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobScheduleGetOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobScheduleGetOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {string} [options.jobScheduleGetOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.jobScheduleGetOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobScheduleGetOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.jobScheduleGetOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(jobScheduleId: string, options: { jobScheduleGetOptions? : models.JobScheduleGetOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJobSchedule>): void;
    get(jobScheduleId: string, callback: ServiceCallback<models.CloudJobSchedule>): void;

    /**
     * Updates the properties of the specified job schedule.
     *
     * @param {string} jobScheduleId The id of the job schedule to update.
     * 
     * @param {object} jobSchedulePatchParameter The parameters for the request.
     * 
     * @param {object} [jobSchedulePatchParameter.schedule] The schedule according
     * to which jobs will be created. If you do not specify this element, the
     * existing schedule is not modified.
     * 
     * @param {date} [jobSchedulePatchParameter.schedule.doNotRunUntil] The
     * earliest time at which any job may be created under this job schedule. If
     * you do not specify a doNotRunUntil time, the schedule becomes ready to
     * create jobs immediately.
     * 
     * @param {date} [jobSchedulePatchParameter.schedule.doNotRunAfter] A time
     * after which no job will be created under this job schedule. The schedule
     * will move to the completed state as soon as this deadline is past and
     * there is no active job under this job schedule.
     * 
     * @param {moment.duration} [jobSchedulePatchParameter.schedule.startWindow]
     * The time interval, starting from the time at which the schedule indicates
     * a job should be created, within which a job must be created. If a job is
     * not created within the startWindow interval, then the 'opportunity' is
     * lost; no job will be created until the next recurrence of the schedule.
     * 
     * @param {moment.duration}
     * [jobSchedulePatchParameter.schedule.recurrenceInterval] The time interval
     * between the start times of two successive jobs under the job schedule. A
     * job schedule can have at most one active job under it at any given time.
     * 
     * @param {object} [jobSchedulePatchParameter.jobSpecification] The details of
     * the jobs to be created on this schedule.
     * 
     * @param {number} [jobSchedulePatchParameter.jobSpecification.priority] The
     * priority of jobs created under this schedule. Priority values can range
     * from -1000 to 1000, with -1000 being the lowest priority and 1000 being
     * the highest priority. The default value is 0.
     * 
     * @param {string} [jobSchedulePatchParameter.jobSpecification.displayName]
     * The display name for jobs created under this schedule. It need not be
     * unique and can contain any Unicode characters up to a maximum length of
     * 1024.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.usesTaskDependencies] The flag
     * that determines if this job will use tasks with dependencies.
     * 
     * @param {object} [jobSchedulePatchParameter.jobSpecification.constraints]
     * The execution constraints for jobs created under this schedule.
     * 
     * @param {moment.duration}
     * [jobSchedulePatchParameter.jobSpecification.constraints.maxWallClockTime]
     * The maximum elapsed time that the job may run, measured from the time the
     * job starts. If the job does not complete within the time limit, the Batch
     * service terminates it and any tasks that are still running.
     * 
     * @param {number}
     * [jobSchedulePatchParameter.jobSpecification.constraints.maxTaskRetryCount]
     * The maximum number of times each task may be retried. The Batch service
     * retries a task if its exit code is nonzero.
     * 
     * @param {object} [jobSchedulePatchParameter.jobSpecification.jobManagerTask]
     * The details of a Job Manager task to be launched when a job is started
     * under this schedule.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.jobManagerTask.id] A string
     * that uniquely identifies the Job Manager task. A GUID is recommended.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.jobManagerTask.displayName]
     * The display name of the Job Manager task.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.jobManagerTask.commandLine]
     * The command line of the Job Manager task.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.jobManagerTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.jobManagerTask.environmentSettings]
     * A list of environment variable settings for the Job Manager task.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.jobManagerTask.constraints]
     * Constraints that apply to the Job Manager task.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.jobManagerTask.killJobOnCompletion]
     * Whether completion of the Job Manager task signifies completion of the
     * entire job.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.jobManagerTask.runElevated]
     * Whether to run the Job Manager task in elevated mode. The default value is
     * false.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.jobManagerTask.runExclusive]
     * Whether the Job Manager task requires exclusive use of the compute node
     * where it runs. If true, no other tasks will run on the same compute node
     * for as long as the Job Manager is running. If false, other tasks can run
     * simultaneously with the Job Manager on a compute node. (The Job Manager
     * task counts normally against the node’s concurrent task limit, so this is
     * only relevant if the node allows multiple concurrent tasks.)
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask] The Job
     * Preparation task for jobs created under this schedule.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.id] A
     * string that uniquely identifies the job preparation task within the job.
     * The id can contain any combination of alphanumeric characters including
     * hyphens and underscores and cannot contain more than 64 characters.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.commandLine]
     * The command line of the Job Preparation task.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.environmentSettings]
     * A list of environment variable settings for the Job Preparation task.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.constraints]
     * Constraints that apply to the Job Preparation task.
     * 
     * @param {moment.duration}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.constraints.maxWallClockTime]
     * The maximum elapsed time that the task may run, measured from the time the
     * task starts. If the task does not complete within the time limit, the
     * Batch service terminates it.
     * 
     * @param {moment.duration}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.constraints.retentionTime]
     * The minimum time to retain the working directory for the task on the
     * compute node where it ran, from the time it completes execution. After
     * this time, the Batch service may delete the working directory and all its
     * contents. The default is infinite.
     * 
     * @param {number}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.constraints.maxTaskRetryCount]
     * The maximum number of times the task may be retried. The Batch service
     * retries a task if its exit code is nonzero.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.waitForSuccess]
     * Whether the Batch service should wait for the Job Preparation task to
     * complete successfully before scheduling any other tasks of the job on the
     * compute node.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.runElevated]
     * Whether to run the Job Preparation task in elevated mode. The default
     * value is false.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.jobPreparationTask.rerunOnNodeRebootAfterSuccess]
     * Whether the Batch service should rerun the Job Preparation task after a
     * compute node reboots. Note that the Job Preparation task should still be
     * written to be idempotent because it can be rerun if the compute node is
     * rebooted while Job Preparation task is still running. The default value is
     * true.
     * 
     * @param {object} [jobSchedulePatchParameter.jobSpecification.jobReleaseTask]
     * The Job Release task for jobs created under this schedule.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.jobReleaseTask.id] A string
     * that uniquely identifies the Job Release task within the job. The id can
     * contain any combination of alphanumeric characters including hyphens and
     * underscores and cannot contain more than 64 characters.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.jobReleaseTask.commandLine]
     * The command line of the Job Release task.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.jobReleaseTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.jobReleaseTask.environmentSettings]
     * A list of environment variable settings for the Job Release task.
     * 
     * @param {moment.duration}
     * [jobSchedulePatchParameter.jobSpecification.jobReleaseTask.maxWallClockTime]
     * The maximum elapsed time that the Job Release task may run on a given
     * compute node, measured from the time the task starts. If the task does not
     * complete within the time limit, the Batch service terminates it. The
     * default value is 15 minutes.
     * 
     * @param {moment.duration}
     * [jobSchedulePatchParameter.jobSpecification.jobReleaseTask.retentionTime]
     * The minimum time to retain the working directory for the Job Release task
     * on the compute node. After this time, the Batch service may delete the
     * working directory and all its contents. The default is infinite.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.jobReleaseTask.runElevated]
     * Whether to run the Job Release task in elevated mode. The default value is
     * false.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.commonEnvironmentSettings] A
     * list of common environment variable settings. These environment variables
     * are set for all tasks in jobs created under this schedule (including the
     * Job Manager, Job Preparation and Job Release tasks).
     * 
     * @param {object} [jobSchedulePatchParameter.jobSpecification.poolInfo] The
     * pool on which the Batch service runs the tasks of jobs created under this
     * schedule.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.poolId] The id of an
     * existing pool. All the tasks of the job will run on the specified pool.
     * You must specify either PoolId or AutoPoolSpecification, but not both.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification]
     * Characteristics for a temporary 'auto pool'. The Batch service will create
     * this auto pool and run all of the tasks of the job on it, and will delete
     * the pool once the job has completed. You must specify either PoolId or
     * AutoPoolSpecification, but not both.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.autoPoolIdPrefix]
     * A prefix to be added to the unique identifier when a pool is automatically
     * created. The prefix can be up to 20 characters long.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.poolLifetimeOption]
     * The minimum lifetime of created auto pools, and how multiple jobs on a
     * schedule are assigned to pools. Possible values include: 'jobschedule',
     * 'job', 'unmapped'
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.keepAlive]
     * Whether to keep an auto pool alive after its lifetime expires.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool]
     * The pool specification for the auto pool.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.displayName]
     * The display name for the pool.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.vmSize]
     * The size of the virtual machines in the pool. All virtual machines in a
     * pool are the same size.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration]
     * The cloud service configuration for the pool. This property and
     * VirtualMachineConfiguration are mutually exclusive and one of the
     * properties must be specified.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.osFamily]
     * The Azure Guest OS family to be installed on the virtual machines in the
     * pool.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.targetOSVersion]
     * The Azure Guest OS version to be installed on the virtual machines in the
     * pool. The default value is * which specifies the latest operating system
     * version for the specified OS family.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.currentOSVersion]
     * The Azure Guest OS Version currently installed on the virtual machines in
     * the pool. This may differ from TargetOSVersion if the pool state is
     * Upgrading.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration]
     * The virtual machine configuration for the pool. This property and
     * CloudServiceConfiguration are mutually exclusive and one of the properties
     * must be specified.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference]
     * A reference to the Azure Virtual Machines Marketplace image to use.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.publisher]
     * The publisher of the Azure Virtual Machines Marketplace image. For
     * example, Canonical or MicrosoftWindowsServer.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.offer]
     * The offer type of the Azure Virtual Machines Marketplace image. For
     * example, UbuntuServer or WindowsServer.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.sku]
     * The SKU of the Azure Virtual Machines Marketplace image. For example,
     * 14.04.0-LTS or 2012-R2-Datacenter.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.version]
     * The version of the Azure Virtual Machines Marketplace image. A value of
     * 'latest' can be specified to select the latest version of an image. If
     * omitted, the default is 'latest'.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.nodeAgentSKUId]
     * The SKU of Batch Node Agent to be provisioned on the compute node. The
     * Batch node agent is a program that runs on each node in the pool, and
     * provides the command-and-control interface between the node and the Batch
     * service. There are different implementations of the node agent, known as
     * SKUs, for different operating systems.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration]
     * Windows operating system settings on the virtual machine. This property
     * must not be specified if the ImageReference property specifies a Linux OS
     * image.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates]
     * Whether automatic updates are enabled on the virtual machine. If omitted,
     * the default value is true.
     * 
     * @param {number}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.maxTasksPerNode]
     * The maximum number of tasks that can run concurrently on a single compute
     * node in the pool.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy]
     * How tasks are distributed among compute nodes in the pool.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy.nodeFillType]
     * How tasks should be distributed across compute nodes. Possible values
     * include: 'spread', 'pack', 'unmapped'
     * 
     * @param {moment.duration}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.resizeTimeout]
     * The timeout for allocation of compute nodes to the pool.
     * 
     * @param {number}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.targetDedicated]
     * The desired number of compute nodes in the pool.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.enableAutoScale]
     * Whether the pool size should automatically adjust over time.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.autoScaleFormula]
     * The formula for the desired number of compute nodes in the pool.
     * 
     * @param {moment.duration}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.autoScaleEvaluationInterval]
     * A time interval for the desired AutoScale evaluation period in the pool.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.enableInterNodeCommunication]
     * Whether the pool permits direct communication between nodes.
     * 
     * @param {object}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask]
     * A task to run on each compute node as it joins the pool. The task runs
     * when the node is added to the pool or when the node is restarted.
     * 
     * @param {string}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.commandLine]
     * The command line of the start task.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.environmentSettings]
     * A list of environment variable settings for the start task.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.runElevated]
     * Whether to run the start task in elevated mode. The default value is false.
     * 
     * @param {number}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.maxTaskRetryCount]
     * The maximum number of times the task may be retried.
     * 
     * @param {boolean}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.waitForSuccess]
     * Whether the Batch service should wait for the start task to complete
     * successfully (that is, to exit with exit code 0) before scheduling any
     * tasks on the compute node.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.certificateReferences]
     * A list of certificates to be installed on each compute node in the pool.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.applicationPackageReferences]
     * The list of application packages to be installed on each compute node in
     * the pool.
     * 
     * @param {array}
     * [jobSchedulePatchParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.metadata]
     * A list of name-value pairs associated with the pool as metadata.
     * 
     * @param {array} [jobSchedulePatchParameter.jobSpecification.metadata] A list
     * of name-value pairs associated with each job created under this schedule
     * as metadata.
     * 
     * @param {array} [jobSchedulePatchParameter.metadata] A list of name-value
     * pairs associated with the job schedule as metadata.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobSchedulePatchOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.jobSchedulePatchOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.jobSchedulePatchOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobSchedulePatchOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobSchedulePatchOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.jobSchedulePatchOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.jobSchedulePatchOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobSchedulePatchOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.jobSchedulePatchOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    patch(jobScheduleId: string, jobSchedulePatchParameter: models.JobSchedulePatchParameter, options: { jobSchedulePatchOptions? : models.JobSchedulePatchOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    patch(jobScheduleId: string, jobSchedulePatchParameter: models.JobSchedulePatchParameter, callback: ServiceCallback<void>): void;

    /**
     * Updates the properties of the specified job schedule.
     *
     * @param {string} jobScheduleId The id of the job schedule to update.
     * 
     * @param {object} jobScheduleUpdateParameter The parameters for the request.
     * 
     * @param {object} [jobScheduleUpdateParameter.schedule] The schedule
     * according to which jobs will be created. If you do not specify this
     * element, it is equivalent to passing the default schedule: that is, a
     * single job scheduled to run immediately.
     * 
     * @param {date} [jobScheduleUpdateParameter.schedule.doNotRunUntil] The
     * earliest time at which any job may be created under this job schedule. If
     * you do not specify a doNotRunUntil time, the schedule becomes ready to
     * create jobs immediately.
     * 
     * @param {date} [jobScheduleUpdateParameter.schedule.doNotRunAfter] A time
     * after which no job will be created under this job schedule. The schedule
     * will move to the completed state as soon as this deadline is past and
     * there is no active job under this job schedule.
     * 
     * @param {moment.duration} [jobScheduleUpdateParameter.schedule.startWindow]
     * The time interval, starting from the time at which the schedule indicates
     * a job should be created, within which a job must be created. If a job is
     * not created within the startWindow interval, then the 'opportunity' is
     * lost; no job will be created until the next recurrence of the schedule.
     * 
     * @param {moment.duration}
     * [jobScheduleUpdateParameter.schedule.recurrenceInterval] The time interval
     * between the start times of two successive jobs under the job schedule. A
     * job schedule can have at most one active job under it at any given time.
     * 
     * @param {object} [jobScheduleUpdateParameter.jobSpecification] Details of
     * the jobs to be created on this schedule.
     * 
     * @param {number} [jobScheduleUpdateParameter.jobSpecification.priority] The
     * priority of jobs created under this schedule. Priority values can range
     * from -1000 to 1000, with -1000 being the lowest priority and 1000 being
     * the highest priority. The default value is 0.
     * 
     * @param {string} [jobScheduleUpdateParameter.jobSpecification.displayName]
     * The display name for jobs created under this schedule. It need not be
     * unique and can contain any Unicode characters up to a maximum length of
     * 1024.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.usesTaskDependencies] The
     * flag that determines if this job will use tasks with dependencies.
     * 
     * @param {object} [jobScheduleUpdateParameter.jobSpecification.constraints]
     * The execution constraints for jobs created under this schedule.
     * 
     * @param {moment.duration}
     * [jobScheduleUpdateParameter.jobSpecification.constraints.maxWallClockTime]
     * The maximum elapsed time that the job may run, measured from the time the
     * job starts. If the job does not complete within the time limit, the Batch
     * service terminates it and any tasks that are still running.
     * 
     * @param {number}
     * [jobScheduleUpdateParameter.jobSpecification.constraints.maxTaskRetryCount]
     * The maximum number of times each task may be retried. The Batch service
     * retries a task if its exit code is nonzero.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask] The details
     * of a Job Manager task to be launched when a job is started under this
     * schedule.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask.id] A string
     * that uniquely identifies the Job Manager task. A GUID is recommended.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask.displayName]
     * The display name of the Job Manager task.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask.commandLine]
     * The command line of the Job Manager task.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask.environmentSettings]
     * A list of environment variable settings for the Job Manager task.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask.constraints]
     * Constraints that apply to the Job Manager task.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask.killJobOnCompletion]
     * Whether completion of the Job Manager task signifies completion of the
     * entire job.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask.runElevated]
     * Whether to run the Job Manager task in elevated mode. The default value is
     * false.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.jobManagerTask.runExclusive]
     * Whether the Job Manager task requires exclusive use of the compute node
     * where it runs. If true, no other tasks will run on the same compute node
     * for as long as the Job Manager is running. If false, other tasks can run
     * simultaneously with the Job Manager on a compute node. (The Job Manager
     * task counts normally against the node’s concurrent task limit, so this is
     * only relevant if the node allows multiple concurrent tasks.)
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask] The Job
     * Preparation task for jobs created under this schedule.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.id] A
     * string that uniquely identifies the job preparation task within the job.
     * The id can contain any combination of alphanumeric characters including
     * hyphens and underscores and cannot contain more than 64 characters.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.commandLine]
     * The command line of the Job Preparation task.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.environmentSettings]
     * A list of environment variable settings for the Job Preparation task.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.constraints]
     * Constraints that apply to the Job Preparation task.
     * 
     * @param {moment.duration}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.constraints.maxWallClockTime]
     * The maximum elapsed time that the task may run, measured from the time the
     * task starts. If the task does not complete within the time limit, the
     * Batch service terminates it.
     * 
     * @param {moment.duration}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.constraints.retentionTime]
     * The minimum time to retain the working directory for the task on the
     * compute node where it ran, from the time it completes execution. After
     * this time, the Batch service may delete the working directory and all its
     * contents. The default is infinite.
     * 
     * @param {number}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.constraints.maxTaskRetryCount]
     * The maximum number of times the task may be retried. The Batch service
     * retries a task if its exit code is nonzero.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.waitForSuccess]
     * Whether the Batch service should wait for the Job Preparation task to
     * complete successfully before scheduling any other tasks of the job on the
     * compute node.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.runElevated]
     * Whether to run the Job Preparation task in elevated mode. The default
     * value is false.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.jobPreparationTask.rerunOnNodeRebootAfterSuccess]
     * Whether the Batch service should rerun the Job Preparation task after a
     * compute node reboots. Note that the Job Preparation task should still be
     * written to be idempotent because it can be rerun if the compute node is
     * rebooted while Job Preparation task is still running. The default value is
     * true.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.jobReleaseTask] The Job
     * Release task for jobs created under this schedule.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.jobReleaseTask.id] A string
     * that uniquely identifies the Job Release task within the job. The id can
     * contain any combination of alphanumeric characters including hyphens and
     * underscores and cannot contain more than 64 characters.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.jobReleaseTask.commandLine]
     * The command line of the Job Release task.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.jobReleaseTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.jobReleaseTask.environmentSettings]
     * A list of environment variable settings for the Job Release task.
     * 
     * @param {moment.duration}
     * [jobScheduleUpdateParameter.jobSpecification.jobReleaseTask.maxWallClockTime]
     * The maximum elapsed time that the Job Release task may run on a given
     * compute node, measured from the time the task starts. If the task does not
     * complete within the time limit, the Batch service terminates it. The
     * default value is 15 minutes.
     * 
     * @param {moment.duration}
     * [jobScheduleUpdateParameter.jobSpecification.jobReleaseTask.retentionTime]
     * The minimum time to retain the working directory for the Job Release task
     * on the compute node. After this time, the Batch service may delete the
     * working directory and all its contents. The default is infinite.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.jobReleaseTask.runElevated]
     * Whether to run the Job Release task in elevated mode. The default value is
     * false.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.commonEnvironmentSettings] A
     * list of common environment variable settings. These environment variables
     * are set for all tasks in jobs created under this schedule (including the
     * Job Manager, Job Preparation and Job Release tasks).
     * 
     * @param {object} [jobScheduleUpdateParameter.jobSpecification.poolInfo] The
     * pool on which the Batch service runs the tasks of jobs created under this
     * schedule.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.poolId] The id of an
     * existing pool. All the tasks of the job will run on the specified pool.
     * You must specify either PoolId or AutoPoolSpecification, but not both.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification]
     * Characteristics for a temporary 'auto pool'. The Batch service will create
     * this auto pool and run all of the tasks of the job on it, and will delete
     * the pool once the job has completed. You must specify either PoolId or
     * AutoPoolSpecification, but not both.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.autoPoolIdPrefix]
     * A prefix to be added to the unique identifier when a pool is automatically
     * created. The prefix can be up to 20 characters long.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.poolLifetimeOption]
     * The minimum lifetime of created auto pools, and how multiple jobs on a
     * schedule are assigned to pools. Possible values include: 'jobschedule',
     * 'job', 'unmapped'
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.keepAlive]
     * Whether to keep an auto pool alive after its lifetime expires.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool]
     * The pool specification for the auto pool.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.displayName]
     * The display name for the pool.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.vmSize]
     * The size of the virtual machines in the pool. All virtual machines in a
     * pool are the same size.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration]
     * The cloud service configuration for the pool. This property and
     * VirtualMachineConfiguration are mutually exclusive and one of the
     * properties must be specified.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.osFamily]
     * The Azure Guest OS family to be installed on the virtual machines in the
     * pool.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.targetOSVersion]
     * The Azure Guest OS version to be installed on the virtual machines in the
     * pool. The default value is * which specifies the latest operating system
     * version for the specified OS family.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.currentOSVersion]
     * The Azure Guest OS Version currently installed on the virtual machines in
     * the pool. This may differ from TargetOSVersion if the pool state is
     * Upgrading.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration]
     * The virtual machine configuration for the pool. This property and
     * CloudServiceConfiguration are mutually exclusive and one of the properties
     * must be specified.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference]
     * A reference to the Azure Virtual Machines Marketplace image to use.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.publisher]
     * The publisher of the Azure Virtual Machines Marketplace image. For
     * example, Canonical or MicrosoftWindowsServer.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.offer]
     * The offer type of the Azure Virtual Machines Marketplace image. For
     * example, UbuntuServer or WindowsServer.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.sku]
     * The SKU of the Azure Virtual Machines Marketplace image. For example,
     * 14.04.0-LTS or 2012-R2-Datacenter.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.version]
     * The version of the Azure Virtual Machines Marketplace image. A value of
     * 'latest' can be specified to select the latest version of an image. If
     * omitted, the default is 'latest'.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.nodeAgentSKUId]
     * The SKU of Batch Node Agent to be provisioned on the compute node. The
     * Batch node agent is a program that runs on each node in the pool, and
     * provides the command-and-control interface between the node and the Batch
     * service. There are different implementations of the node agent, known as
     * SKUs, for different operating systems.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration]
     * Windows operating system settings on the virtual machine. This property
     * must not be specified if the ImageReference property specifies a Linux OS
     * image.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates]
     * Whether automatic updates are enabled on the virtual machine. If omitted,
     * the default value is true.
     * 
     * @param {number}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.maxTasksPerNode]
     * The maximum number of tasks that can run concurrently on a single compute
     * node in the pool.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy]
     * How tasks are distributed among compute nodes in the pool.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy.nodeFillType]
     * How tasks should be distributed across compute nodes. Possible values
     * include: 'spread', 'pack', 'unmapped'
     * 
     * @param {moment.duration}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.resizeTimeout]
     * The timeout for allocation of compute nodes to the pool.
     * 
     * @param {number}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.targetDedicated]
     * The desired number of compute nodes in the pool.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.enableAutoScale]
     * Whether the pool size should automatically adjust over time.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.autoScaleFormula]
     * The formula for the desired number of compute nodes in the pool.
     * 
     * @param {moment.duration}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.autoScaleEvaluationInterval]
     * A time interval for the desired AutoScale evaluation period in the pool.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.enableInterNodeCommunication]
     * Whether the pool permits direct communication between nodes.
     * 
     * @param {object}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask]
     * A task to run on each compute node as it joins the pool. The task runs
     * when the node is added to the pool or when the node is restarted.
     * 
     * @param {string}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.commandLine]
     * The command line of the start task.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.environmentSettings]
     * A list of environment variable settings for the start task.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.runElevated]
     * Whether to run the start task in elevated mode. The default value is false.
     * 
     * @param {number}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.maxTaskRetryCount]
     * The maximum number of times the task may be retried.
     * 
     * @param {boolean}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.waitForSuccess]
     * Whether the Batch service should wait for the start task to complete
     * successfully (that is, to exit with exit code 0) before scheduling any
     * tasks on the compute node.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.certificateReferences]
     * A list of certificates to be installed on each compute node in the pool.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.applicationPackageReferences]
     * The list of application packages to be installed on each compute node in
     * the pool.
     * 
     * @param {array}
     * [jobScheduleUpdateParameter.jobSpecification.poolInfo.autoPoolSpecification.pool.metadata]
     * A list of name-value pairs associated with the pool as metadata.
     * 
     * @param {array} [jobScheduleUpdateParameter.jobSpecification.metadata] A
     * list of name-value pairs associated with each job created under this
     * schedule as metadata.
     * 
     * @param {array} [jobScheduleUpdateParameter.metadata] A list of name-value
     * pairs associated with the job schedule as metadata. If you do not specify
     * this element, it takes the default value of an empty list; in effect, any
     * existing metadata is deleted.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleUpdateOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.jobScheduleUpdateOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.jobScheduleUpdateOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobScheduleUpdateOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobScheduleUpdateOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.jobScheduleUpdateOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.jobScheduleUpdateOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobScheduleUpdateOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.jobScheduleUpdateOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    update(jobScheduleId: string, jobScheduleUpdateParameter: models.JobScheduleUpdateParameter, options: { jobScheduleUpdateOptions? : models.JobScheduleUpdateOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    update(jobScheduleId: string, jobScheduleUpdateParameter: models.JobScheduleUpdateParameter, callback: ServiceCallback<void>): void;

    /**
     * Disables a job schedule.
     *
     * @param {string} jobScheduleId The id of the job schedule to disable.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleDisableOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.jobScheduleDisableOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.jobScheduleDisableOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobScheduleDisableOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobScheduleDisableOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.jobScheduleDisableOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.jobScheduleDisableOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobScheduleDisableOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.jobScheduleDisableOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    disable(jobScheduleId: string, options: { jobScheduleDisableOptions? : models.JobScheduleDisableOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    disable(jobScheduleId: string, callback: ServiceCallback<void>): void;

    /**
     * Enables a job schedule.
     *
     * @param {string} jobScheduleId The id of the job schedule to enable.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleEnableOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.jobScheduleEnableOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.jobScheduleEnableOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobScheduleEnableOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobScheduleEnableOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.jobScheduleEnableOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.jobScheduleEnableOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobScheduleEnableOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.jobScheduleEnableOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    enable(jobScheduleId: string, options: { jobScheduleEnableOptions? : models.JobScheduleEnableOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    enable(jobScheduleId: string, callback: ServiceCallback<void>): void;

    /**
     * Terminates a job schedule.
     *
     * @param {string} jobScheduleId The id of the job schedule to terminates.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleTerminateOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.jobScheduleTerminateOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.jobScheduleTerminateOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.jobScheduleTerminateOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.jobScheduleTerminateOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.jobScheduleTerminateOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.jobScheduleTerminateOptions.ifNoneMatch] An ETag
     * is specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.jobScheduleTerminateOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.jobScheduleTerminateOptions.ifUnmodifiedSince]
     * Specify this header to perform the operation only if the resource has not
     * been modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    terminate(jobScheduleId: string, options: { jobScheduleTerminateOptions? : models.JobScheduleTerminateOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    terminate(jobScheduleId: string, callback: ServiceCallback<void>): void;

    /**
     * Adds a job schedule to the specified account.
     *
     * @param {object} cloudJobSchedule The job schedule to be added.
     * 
     * @param {string} [cloudJobSchedule.id] A string that uniquely identifies the
     * schedule within the account. A GUID is recommended.
     * 
     * @param {string} [cloudJobSchedule.displayName] The display name for the
     * schedule.
     * 
     * @param {object} [cloudJobSchedule.schedule] The schedule according to which
     * jobs will be created.
     * 
     * @param {date} [cloudJobSchedule.schedule.doNotRunUntil] The earliest time
     * at which any job may be created under this job schedule. If you do not
     * specify a doNotRunUntil time, the schedule becomes ready to create jobs
     * immediately.
     * 
     * @param {date} [cloudJobSchedule.schedule.doNotRunAfter] A time after which
     * no job will be created under this job schedule. The schedule will move to
     * the completed state as soon as this deadline is past and there is no
     * active job under this job schedule.
     * 
     * @param {moment.duration} [cloudJobSchedule.schedule.startWindow] The time
     * interval, starting from the time at which the schedule indicates a job
     * should be created, within which a job must be created. If a job is not
     * created within the startWindow interval, then the 'opportunity' is lost;
     * no job will be created until the next recurrence of the schedule.
     * 
     * @param {moment.duration} [cloudJobSchedule.schedule.recurrenceInterval] The
     * time interval between the start times of two successive jobs under the job
     * schedule. A job schedule can have at most one active job under it at any
     * given time.
     * 
     * @param {object} [cloudJobSchedule.jobSpecification] The details of the jobs
     * to be created on this schedule.
     * 
     * @param {number} [cloudJobSchedule.jobSpecification.priority] The priority
     * of jobs created under this schedule. Priority values can range from -1000
     * to 1000, with -1000 being the lowest priority and 1000 being the highest
     * priority. The default value is 0.
     * 
     * @param {string} [cloudJobSchedule.jobSpecification.displayName] The display
     * name for jobs created under this schedule. It need not be unique and can
     * contain any Unicode characters up to a maximum length of 1024.
     * 
     * @param {boolean} [cloudJobSchedule.jobSpecification.usesTaskDependencies]
     * The flag that determines if this job will use tasks with dependencies.
     * 
     * @param {object} [cloudJobSchedule.jobSpecification.constraints] The
     * execution constraints for jobs created under this schedule.
     * 
     * @param {moment.duration}
     * [cloudJobSchedule.jobSpecification.constraints.maxWallClockTime] The
     * maximum elapsed time that the job may run, measured from the time the job
     * starts. If the job does not complete within the time limit, the Batch
     * service terminates it and any tasks that are still running.
     * 
     * @param {number}
     * [cloudJobSchedule.jobSpecification.constraints.maxTaskRetryCount] The
     * maximum number of times each task may be retried. The Batch service
     * retries a task if its exit code is nonzero.
     * 
     * @param {object} [cloudJobSchedule.jobSpecification.jobManagerTask] The
     * details of a Job Manager task to be launched when a job is started under
     * this schedule.
     * 
     * @param {string} [cloudJobSchedule.jobSpecification.jobManagerTask.id] A
     * string that uniquely identifies the Job Manager task. A GUID is
     * recommended.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.jobManagerTask.displayName] The display
     * name of the Job Manager task.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.jobManagerTask.commandLine] The command
     * line of the Job Manager task.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.jobManagerTask.resourceFiles] A list of
     * files that the Batch service will download to the compute node before
     * running the command line.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.jobManagerTask.environmentSettings] A
     * list of environment variable settings for the Job Manager task.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.jobManagerTask.constraints] Constraints
     * that apply to the Job Manager task.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.jobManagerTask.killJobOnCompletion]
     * Whether completion of the Job Manager task signifies completion of the
     * entire job.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.jobManagerTask.runElevated] Whether to
     * run the Job Manager task in elevated mode. The default value is false.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.jobManagerTask.runExclusive] Whether
     * the Job Manager task requires exclusive use of the compute node where it
     * runs. If true, no other tasks will run on the same compute node for as
     * long as the Job Manager is running. If false, other tasks can run
     * simultaneously with the Job Manager on a compute node. (The Job Manager
     * task counts normally against the node’s concurrent task limit, so this is
     * only relevant if the node allows multiple concurrent tasks.)
     * 
     * @param {object} [cloudJobSchedule.jobSpecification.jobPreparationTask] The
     * Job Preparation task for jobs created under this schedule.
     * 
     * @param {string} [cloudJobSchedule.jobSpecification.jobPreparationTask.id] A
     * string that uniquely identifies the job preparation task within the job.
     * The id can contain any combination of alphanumeric characters including
     * hyphens and underscores and cannot contain more than 64 characters.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.commandLine] The
     * command line of the Job Preparation task.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.resourceFiles] A
     * list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.environmentSettings]
     * A list of environment variable settings for the Job Preparation task.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.constraints]
     * Constraints that apply to the Job Preparation task.
     * 
     * @param {moment.duration}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.constraints.maxWallClockTime]
     * The maximum elapsed time that the task may run, measured from the time the
     * task starts. If the task does not complete within the time limit, the
     * Batch service terminates it.
     * 
     * @param {moment.duration}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.constraints.retentionTime]
     * The minimum time to retain the working directory for the task on the
     * compute node where it ran, from the time it completes execution. After
     * this time, the Batch service may delete the working directory and all its
     * contents. The default is infinite.
     * 
     * @param {number}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.constraints.maxTaskRetryCount]
     * The maximum number of times the task may be retried. The Batch service
     * retries a task if its exit code is nonzero.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.waitForSuccess]
     * Whether the Batch service should wait for the Job Preparation task to
     * complete successfully before scheduling any other tasks of the job on the
     * compute node.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.runElevated] Whether
     * to run the Job Preparation task in elevated mode. The default value is
     * false.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.jobPreparationTask.rerunOnNodeRebootAfterSuccess]
     * Whether the Batch service should rerun the Job Preparation task after a
     * compute node reboots. Note that the Job Preparation task should still be
     * written to be idempotent because it can be rerun if the compute node is
     * rebooted while Job Preparation task is still running. The default value is
     * true.
     * 
     * @param {object} [cloudJobSchedule.jobSpecification.jobReleaseTask] The Job
     * Release task for jobs created under this schedule.
     * 
     * @param {string} [cloudJobSchedule.jobSpecification.jobReleaseTask.id] A
     * string that uniquely identifies the Job Release task within the job. The
     * id can contain any combination of alphanumeric characters including
     * hyphens and underscores and cannot contain more than 64 characters.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.jobReleaseTask.commandLine] The command
     * line of the Job Release task.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.jobReleaseTask.resourceFiles] A list of
     * files that the Batch service will download to the compute node before
     * running the command line.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.jobReleaseTask.environmentSettings] A
     * list of environment variable settings for the Job Release task.
     * 
     * @param {moment.duration}
     * [cloudJobSchedule.jobSpecification.jobReleaseTask.maxWallClockTime] The
     * maximum elapsed time that the Job Release task may run on a given compute
     * node, measured from the time the task starts. If the task does not
     * complete within the time limit, the Batch service terminates it. The
     * default value is 15 minutes.
     * 
     * @param {moment.duration}
     * [cloudJobSchedule.jobSpecification.jobReleaseTask.retentionTime] The
     * minimum time to retain the working directory for the Job Release task on
     * the compute node. After this time, the Batch service may delete the
     * working directory and all its contents. The default is infinite.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.jobReleaseTask.runElevated] Whether to
     * run the Job Release task in elevated mode. The default value is false.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.commonEnvironmentSettings] A list of
     * common environment variable settings. These environment variables are set
     * for all tasks in jobs created under this schedule (including the Job
     * Manager, Job Preparation and Job Release tasks).
     * 
     * @param {object} [cloudJobSchedule.jobSpecification.poolInfo] The pool on
     * which the Batch service runs the tasks of jobs created under this schedule.
     * 
     * @param {string} [cloudJobSchedule.jobSpecification.poolInfo.poolId] The id
     * of an existing pool. All the tasks of the job will run on the specified
     * pool. You must specify either PoolId or AutoPoolSpecification, but not
     * both.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification]
     * Characteristics for a temporary 'auto pool'. The Batch service will create
     * this auto pool and run all of the tasks of the job on it, and will delete
     * the pool once the job has completed. You must specify either PoolId or
     * AutoPoolSpecification, but not both.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.autoPoolIdPrefix]
     * A prefix to be added to the unique identifier when a pool is automatically
     * created. The prefix can be up to 20 characters long.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.poolLifetimeOption]
     * The minimum lifetime of created auto pools, and how multiple jobs on a
     * schedule are assigned to pools. Possible values include: 'jobschedule',
     * 'job', 'unmapped'
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.keepAlive]
     * Whether to keep an auto pool alive after its lifetime expires.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool]
     * The pool specification for the auto pool.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.displayName]
     * The display name for the pool.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.vmSize]
     * The size of the virtual machines in the pool. All virtual machines in a
     * pool are the same size.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration]
     * The cloud service configuration for the pool. This property and
     * VirtualMachineConfiguration are mutually exclusive and one of the
     * properties must be specified.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.osFamily]
     * The Azure Guest OS family to be installed on the virtual machines in the
     * pool.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.targetOSVersion]
     * The Azure Guest OS version to be installed on the virtual machines in the
     * pool. The default value is * which specifies the latest operating system
     * version for the specified OS family.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.cloudServiceConfiguration.currentOSVersion]
     * The Azure Guest OS Version currently installed on the virtual machines in
     * the pool. This may differ from TargetOSVersion if the pool state is
     * Upgrading.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration]
     * The virtual machine configuration for the pool. This property and
     * CloudServiceConfiguration are mutually exclusive and one of the properties
     * must be specified.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference]
     * A reference to the Azure Virtual Machines Marketplace image to use.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.publisher]
     * The publisher of the Azure Virtual Machines Marketplace image. For
     * example, Canonical or MicrosoftWindowsServer.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.offer]
     * The offer type of the Azure Virtual Machines Marketplace image. For
     * example, UbuntuServer or WindowsServer.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.sku]
     * The SKU of the Azure Virtual Machines Marketplace image. For example,
     * 14.04.0-LTS or 2012-R2-Datacenter.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.imageReference.version]
     * The version of the Azure Virtual Machines Marketplace image. A value of
     * 'latest' can be specified to select the latest version of an image. If
     * omitted, the default is 'latest'.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.nodeAgentSKUId]
     * The SKU of Batch Node Agent to be provisioned on the compute node. The
     * Batch node agent is a program that runs on each node in the pool, and
     * provides the command-and-control interface between the node and the Batch
     * service. There are different implementations of the node agent, known as
     * SKUs, for different operating systems.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration]
     * Windows operating system settings on the virtual machine. This property
     * must not be specified if the ImageReference property specifies a Linux OS
     * image.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates]
     * Whether automatic updates are enabled on the virtual machine. If omitted,
     * the default value is true.
     * 
     * @param {number}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.maxTasksPerNode]
     * The maximum number of tasks that can run concurrently on a single compute
     * node in the pool.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy]
     * How tasks are distributed among compute nodes in the pool.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.taskSchedulingPolicy.nodeFillType]
     * How tasks should be distributed across compute nodes. Possible values
     * include: 'spread', 'pack', 'unmapped'
     * 
     * @param {moment.duration}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.resizeTimeout]
     * The timeout for allocation of compute nodes to the pool.
     * 
     * @param {number}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.targetDedicated]
     * The desired number of compute nodes in the pool.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.enableAutoScale]
     * Whether the pool size should automatically adjust over time.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.autoScaleFormula]
     * The formula for the desired number of compute nodes in the pool.
     * 
     * @param {moment.duration}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.autoScaleEvaluationInterval]
     * A time interval for the desired AutoScale evaluation period in the pool.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.enableInterNodeCommunication]
     * Whether the pool permits direct communication between nodes.
     * 
     * @param {object}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask]
     * A task to run on each compute node as it joins the pool. The task runs
     * when the node is added to the pool or when the node is restarted.
     * 
     * @param {string}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.commandLine]
     * The command line of the start task.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.resourceFiles]
     * A list of files that the Batch service will download to the compute node
     * before running the command line.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.environmentSettings]
     * A list of environment variable settings for the start task.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.runElevated]
     * Whether to run the start task in elevated mode. The default value is false.
     * 
     * @param {number}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.maxTaskRetryCount]
     * The maximum number of times the task may be retried.
     * 
     * @param {boolean}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.startTask.waitForSuccess]
     * Whether the Batch service should wait for the start task to complete
     * successfully (that is, to exit with exit code 0) before scheduling any
     * tasks on the compute node.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.certificateReferences]
     * A list of certificates to be installed on each compute node in the pool.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.applicationPackageReferences]
     * The list of application packages to be installed on each compute node in
     * the pool.
     * 
     * @param {array}
     * [cloudJobSchedule.jobSpecification.poolInfo.autoPoolSpecification.pool.metadata]
     * A list of name-value pairs associated with the pool as metadata.
     * 
     * @param {array} [cloudJobSchedule.jobSpecification.metadata] A list of
     * name-value pairs associated with each job created under this schedule as
     * metadata.
     * 
     * @param {array} [cloudJobSchedule.metadata] A list of name-value pairs
     * associated with the schedule as metadata.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleAddOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.jobScheduleAddOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.jobScheduleAddOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobScheduleAddOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobScheduleAddOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    add(cloudJobSchedule: models.JobScheduleAddParameter, options: { jobScheduleAddOptions? : models.JobScheduleAddOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    add(cloudJobSchedule: models.JobScheduleAddParameter, callback: ServiceCallback<void>): void;

    /**
     * Lists all of the job schedules in the specified account.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleListOptions] Additional parameters for
     * the operation
     * 
     * @param {string} [options.jobScheduleListOptions.filter] An OData $filter
     * clause.
     * 
     * @param {string} [options.jobScheduleListOptions.select] An OData $select
     * clause.
     * 
     * @param {string} [options.jobScheduleListOptions.expand] An OData $expand
     * clause.
     * 
     * @param {number} [options.jobScheduleListOptions.maxResults] The maximum
     * number of items to return in the response.
     * 
     * @param {number} [options.jobScheduleListOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.jobScheduleListOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobScheduleListOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobScheduleListOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(options: { jobScheduleListOptions? : models.JobScheduleListOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJobScheduleListResult>): void;
    list(callback: ServiceCallback<models.CloudJobScheduleListResult>): void;

    /**
     * Lists all of the job schedules in the specified account.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.jobScheduleListNextOptions] Additional parameters
     * for the operation
     * 
     * @param {string} [options.jobScheduleListNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.jobScheduleListNextOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.jobScheduleListNextOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] 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: { jobScheduleListNextOptions? : models.JobScheduleListNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudJobScheduleListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.CloudJobScheduleListResult>): void;
}

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

    /**
     * Adds a task to the specified job.
     *
     * @param {string} jobId The id of the job to which the task is to be added.
     * 
     * @param {object} task The task to be added.
     * 
     * @param {string} [task.id] A string that uniquely identifies the task within
     * the job. The id can contain any combination of alphanumeric characters
     * including hyphens and underscores, and cannot contain more than 64
     * characters.
     * 
     * @param {string} [task.displayName] A display name for the task.
     * 
     * @param {string} [task.commandLine] The command line of the task. For
     * multi-instance tasks, the command line is executed on the primary subtask
     * after all the subtasks have finished executing the coordianation command
     * line.
     * 
     * @param {array} [task.resourceFiles] A list of files that the Batch service
     * will download to the compute node before running the command line. For
     * multi-instance tasks, the resource files will only be downloaded to the
     * compute node on which the primary subtask is executed.
     * 
     * @param {array} [task.environmentSettings] A list of environment variable
     * settings for the task.
     * 
     * @param {object} [task.affinityInfo] A locality hint that can be used by the
     * Batch service to select a compute node on which to start the new task.
     * 
     * @param {string} [task.affinityInfo.affinityId] An opaque string
     * representing the location of a compute node or a task that has run
     * previously. You can pass the AffinityId of a compute node or task to
     * indicate that this task needs to be placed close to the node or task.
     * 
     * @param {object} [task.constraints] The execution constraints that apply to
     * this task.
     * 
     * @param {moment.duration} [task.constraints.maxWallClockTime] The maximum
     * elapsed time that the task may run, measured from the time the task
     * starts. If the task does not complete within the time limit, the Batch
     * service terminates it.
     * 
     * @param {moment.duration} [task.constraints.retentionTime] The minimum time
     * to retain the working directory for the task on the compute node where it
     * ran, from the time it completes execution. After this time, the Batch
     * service may delete the working directory and all its contents. The default
     * is infinite.
     * 
     * @param {number} [task.constraints.maxTaskRetryCount] The maximum number of
     * times the task may be retried. The Batch service retries a task if its
     * exit code is nonzero.
     * 
     * @param {boolean} [task.runElevated] Whether to run the task in elevated
     * mode.
     * 
     * @param {object} [task.multiInstanceSettings] Information about how to run
     * the multi-instance task.
     * 
     * @param {number} [task.multiInstanceSettings.numberOfInstances] The number
     * of compute nodes required by the multi-instance task.
     * 
     * @param {string} [task.multiInstanceSettings.coordinationCommandLine] The
     * command to run on the compute node instances for coordinating among the
     * subtasks.
     * 
     * @param {array} [task.multiInstanceSettings.commonResourceFiles] A list of
     * files that the Batch service will download before running the coordination
     * command line. The difference between common resource files and task
     * resource files is that common resource files are downloaded for all
     * subtasks including the primary, whereas task resource files are downloaded
     * only for the primary.
     * 
     * @param {object} [task.dependsOn] Any other tasks that this task depends on.
     * 
     * @param {array} [task.dependsOn.taskIds] The list of task ids that must
     * complete before this task can be scheduled.
     * 
     * @param {array} [task.dependsOn.taskIdRanges] The list of task ranges that
     * must complete before this task can be scheduled.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.taskAddOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.taskAddOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.taskAddOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.taskAddOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.taskAddOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    add(jobId: string, task: models.TaskAddParameter, options: { taskAddOptions? : models.TaskAddOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    add(jobId: string, task: models.TaskAddParameter, callback: ServiceCallback<void>): void;

    /**
     * Lists all of the tasks that are associated with the specified job.
     *
     * @param {string} jobId The id of the job.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.taskListOptions] Additional parameters for the
     * operation
     * 
     * @param {string} [options.taskListOptions.filter] An OData $filter clause.
     * 
     * @param {string} [options.taskListOptions.select] An OData $select clause.
     * 
     * @param {string} [options.taskListOptions.expand] An OData $expand clause.
     * 
     * @param {number} [options.taskListOptions.maxResults] The maximum number of
     * items to return in the response.
     * 
     * @param {number} [options.taskListOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.taskListOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.taskListOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.taskListOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {object} [options.customHeaders] 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(jobId: string, options: { taskListOptions? : models.TaskListOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudTaskListResult>): void;
    list(jobId: string, callback: ServiceCallback<models.CloudTaskListResult>): void;

    /**
     * Adds a collection of tasks to the specified job.
     *
     * @param {string} jobId The id of the job to which the task collection is to
     * be added.
     * 
     * @param {array} value The collection of tasks to add.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.taskAddCollectionOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.taskAddCollectionOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.taskAddCollectionOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.taskAddCollectionOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.taskAddCollectionOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    addCollection(jobId: string, value: models.TaskAddParameter[], options: { taskAddCollectionOptions? : models.TaskAddCollectionOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TaskAddCollectionResult>): void;
    addCollection(jobId: string, value: models.TaskAddParameter[], callback: ServiceCallback<models.TaskAddCollectionResult>): void;

    /**
     * Deletes a task from the specified job.
     *
     * @param {string} jobId The id of the job from which to delete the task.
     * 
     * @param {string} taskId The id of the task to delete.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.taskDeleteMethodOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.taskDeleteMethodOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.taskDeleteMethodOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.taskDeleteMethodOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.taskDeleteMethodOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {string} [options.taskDeleteMethodOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.taskDeleteMethodOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.taskDeleteMethodOptions.ifModifiedSince] Specify
     * this header to perform the operation only if the resource has been
     * modified since the specified date/time.
     * 
     * @param {date} [options.taskDeleteMethodOptions.ifUnmodifiedSince] Specify
     * this header to perform the operation only if the resource has not been
     * modified since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(jobId: string, taskId: string, options: { taskDeleteMethodOptions? : models.TaskDeleteMethodOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(jobId: string, taskId: string, callback: ServiceCallback<void>): void;

    /**
     * Gets information about the specified task.
     *
     * @param {string} jobId The id of the job that contains the task.
     * 
     * @param {string} taskId The id of the task to get information about.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.taskGetOptions] Additional parameters for the
     * operation
     * 
     * @param {string} [options.taskGetOptions.select] An OData $select clause.
     * 
     * @param {string} [options.taskGetOptions.expand] An OData $expand clause.
     * 
     * @param {number} [options.taskGetOptions.timeout] The maximum time that the
     * server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.taskGetOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.taskGetOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.taskGetOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.taskGetOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.taskGetOptions.ifNoneMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * does not match the specified ETag.
     * 
     * @param {date} [options.taskGetOptions.ifModifiedSince] Specify this header
     * to perform the operation only if the resource has been modified since the
     * specified date/time.
     * 
     * @param {date} [options.taskGetOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(jobId: string, taskId: string, options: { taskGetOptions? : models.TaskGetOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudTask>): void;
    get(jobId: string, taskId: string, callback: ServiceCallback<models.CloudTask>): void;

    /**
     * Updates the properties of the specified task.
     *
     * @param {string} jobId The id of the job containing the task.
     * 
     * @param {string} taskId The id of the task to update.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.constraints] Constraints that apply to this task.
     * If omitted, the task is given the default constraints.
     * 
     * @param {moment.duration} [options.constraints.maxWallClockTime] The maximum
     * elapsed time that the task may run, measured from the time the task
     * starts. If the task does not complete within the time limit, the Batch
     * service terminates it.
     * 
     * @param {moment.duration} [options.constraints.retentionTime] The minimum
     * time to retain the working directory for the task on the compute node
     * where it ran, from the time it completes execution. After this time, the
     * Batch service may delete the working directory and all its contents. The
     * default is infinite.
     * 
     * @param {number} [options.constraints.maxTaskRetryCount] The maximum number
     * of times the task may be retried. The Batch service retries a task if its
     * exit code is nonzero.
     * 
     * @param {object} [options.taskUpdateOptions] Additional parameters for the
     * operation
     * 
     * @param {number} [options.taskUpdateOptions.timeout] The maximum time that
     * the server can spend processing the request, in seconds. The default is 30
     * seconds.
     * 
     * @param {string} [options.taskUpdateOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.taskUpdateOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.taskUpdateOptions.ocpDate] The time the request was
     * issued. If not specified, this header will be automatically populated with
     * the current system clock time.
     * 
     * @param {string} [options.taskUpdateOptions.ifMatch] An ETag is specified.
     * Specify this header to perform the operation only if the resource's ETag
     * is an exact match as specified.
     * 
     * @param {string} [options.taskUpdateOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.taskUpdateOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.taskUpdateOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    update(jobId: string, taskId: string, options: { constraints? : models.TaskConstraints, taskUpdateOptions? : models.TaskUpdateOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    update(jobId: string, taskId: string, callback: ServiceCallback<void>): void;

    /**
     * Lists all of the subtasks that are associated with the specified
     * multi-instance task.
     *
     * @param {string} jobId The id of the job.
     * 
     * @param {string} taskId The id of the task.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.taskListSubtasksOptions] Additional parameters for
     * the operation
     * 
     * @param {string} [options.taskListSubtasksOptions.select] An OData $select
     * clause.
     * 
     * @param {number} [options.taskListSubtasksOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.taskListSubtasksOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.taskListSubtasksOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.taskListSubtasksOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listSubtasks(jobId: string, taskId: string, options: { taskListSubtasksOptions? : models.TaskListSubtasksOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudTaskListSubtasksResult>): void;
    listSubtasks(jobId: string, taskId: string, callback: ServiceCallback<models.CloudTaskListSubtasksResult>): void;

    /**
     * Terminates the specified task.
     *
     * @param {string} jobId The id of the job containing the task.
     * 
     * @param {string} taskId The id of the task to terminate.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.taskTerminateOptions] Additional parameters for
     * the operation
     * 
     * @param {number} [options.taskTerminateOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.taskTerminateOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.taskTerminateOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.taskTerminateOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {string} [options.taskTerminateOptions.ifMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag is an exact match as specified.
     * 
     * @param {string} [options.taskTerminateOptions.ifNoneMatch] An ETag is
     * specified. Specify this header to perform the operation only if the
     * resource's ETag does not match the specified ETag.
     * 
     * @param {date} [options.taskTerminateOptions.ifModifiedSince] Specify this
     * header to perform the operation only if the resource has been modified
     * since the specified date/time.
     * 
     * @param {date} [options.taskTerminateOptions.ifUnmodifiedSince] Specify this
     * header to perform the operation only if the resource has not been modified
     * since the specified date/time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    terminate(jobId: string, taskId: string, options: { taskTerminateOptions? : models.TaskTerminateOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    terminate(jobId: string, taskId: string, callback: ServiceCallback<void>): void;

    /**
     * Lists all of the tasks that are associated with the specified job.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.taskListNextOptions] Additional parameters for the
     * operation
     * 
     * @param {string} [options.taskListNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.taskListNextOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.taskListNextOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] 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: { taskListNextOptions? : models.TaskListNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CloudTaskListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.CloudTaskListResult>): void;
}

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

    /**
     * Adds a user account to the specified compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the machine on which you want to create a
     * user account.
     * 
     * @param {object} user The user account to be created.
     * 
     * @param {string} [user.name] The user name of the account.
     * 
     * @param {boolean} [user.isAdmin] Whether the account should be an
     * administrator on the compute node.
     * 
     * @param {date} [user.expiryTime] The time at which the account should
     * expire. If omitted, the default is 1 day from the current time.
     * 
     * @param {string} [user.password] The password of the account.
     * 
     * @param {string} [user.sshPublicKey] The SSH public key that can be used for
     * remote login to the compute node.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.computeNodeAddUserOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.computeNodeAddUserOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.computeNodeAddUserOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.computeNodeAddUserOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.computeNodeAddUserOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    addUser(poolId: string, nodeId: string, user: models.ComputeNodeUser, options: { computeNodeAddUserOptions? : models.ComputeNodeAddUserOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    addUser(poolId: string, nodeId: string, user: models.ComputeNodeUser, callback: ServiceCallback<void>): void;

    /**
     * Deletes a user account from the specified compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the machine on which you want to delete a
     * user account.
     * 
     * @param {string} userName The name of the user account to delete.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.computeNodeDeleteUserOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.computeNodeDeleteUserOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.computeNodeDeleteUserOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.computeNodeDeleteUserOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.computeNodeDeleteUserOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteUser(poolId: string, nodeId: string, userName: string, options: { computeNodeDeleteUserOptions? : models.ComputeNodeDeleteUserOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteUser(poolId: string, nodeId: string, userName: string, callback: ServiceCallback<void>): void;

    /**
     * Updates the password or expiration time of a user account on the specified
     * compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the machine on which you want to update a
     * user account.
     * 
     * @param {string} userName The name of the user account to update.
     * 
     * @param {object} nodeUpdateUserParameter The parameters for the request.
     * 
     * @param {string} [nodeUpdateUserParameter.password] The password of the
     * account.
     * 
     * @param {date} [nodeUpdateUserParameter.expiryTime] The time at which the
     * account should expire. If omitted, the default is 1 day from the current
     * time.
     * 
     * @param {string} [nodeUpdateUserParameter.sshPublicKey] The SSH public key
     * that can be used for remote login to the compute node.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.computeNodeUpdateUserOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.computeNodeUpdateUserOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.computeNodeUpdateUserOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.computeNodeUpdateUserOptions.returnClientRequestId] Whether the
     * server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.computeNodeUpdateUserOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    updateUser(poolId: string, nodeId: string, userName: string, nodeUpdateUserParameter: models.NodeUpdateUserParameter, options: { computeNodeUpdateUserOptions? : models.ComputeNodeUpdateUserOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    updateUser(poolId: string, nodeId: string, userName: string, nodeUpdateUserParameter: models.NodeUpdateUserParameter, callback: ServiceCallback<void>): void;

    /**
     * Gets information about the specified compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node that you want to get
     * information about.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.computeNodeGetOptions] Additional parameters for
     * the operation
     * 
     * @param {string} [options.computeNodeGetOptions.select] An OData $select
     * clause.
     * 
     * @param {number} [options.computeNodeGetOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.computeNodeGetOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.computeNodeGetOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.computeNodeGetOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(poolId: string, nodeId: string, options: { computeNodeGetOptions? : models.ComputeNodeGetOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ComputeNode>): void;
    get(poolId: string, nodeId: string, callback: ServiceCallback<models.ComputeNode>): void;

    /**
     * Restarts the specified compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node that you want to restart.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.nodeRebootOption] When to reboot the compute node
     * and what to do with currently running tasks. The default value is requeue.
     * Possible values include: 'requeue', 'terminate', 'taskcompletion',
     * 'retaineddata'
     * 
     * @param {object} [options.computeNodeRebootOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.computeNodeRebootOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.computeNodeRebootOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.computeNodeRebootOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.computeNodeRebootOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    reboot(poolId: string, nodeId: string, options: { nodeRebootOption? : string, computeNodeRebootOptions? : models.ComputeNodeRebootOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    reboot(poolId: string, nodeId: string, callback: ServiceCallback<void>): void;

    /**
     * Reinstalls the operating system on the specified compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node that you want to restart.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.nodeReimageOption] When to reimage the compute
     * node and what to do with currently running tasks. The default value is
     * requeue. Possible values include: 'requeue', 'terminate',
     * 'taskcompletion', 'retaineddata'
     * 
     * @param {object} [options.computeNodeReimageOptions] Additional parameters
     * for the operation
     * 
     * @param {number} [options.computeNodeReimageOptions.timeout] The maximum
     * time that the server can spend processing the request, in seconds. The
     * default is 30 seconds.
     * 
     * @param {string} [options.computeNodeReimageOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.computeNodeReimageOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.computeNodeReimageOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    reimage(poolId: string, nodeId: string, options: { nodeReimageOption? : string, computeNodeReimageOptions? : models.ComputeNodeReimageOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    reimage(poolId: string, nodeId: string, callback: ServiceCallback<void>): void;

    /**
     * Disable task scheduling of the specified compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node that you want to disable
     * task scheduling.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.nodeDisableSchedulingOption] What to do with
     * currently running tasks when disable task scheduling on the compute node.
     * The default value is requeue. Possible values include: 'requeue',
     * 'terminate', 'taskcompletion'
     * 
     * @param {object} [options.computeNodeDisableSchedulingOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.computeNodeDisableSchedulingOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string}
     * [options.computeNodeDisableSchedulingOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.computeNodeDisableSchedulingOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.computeNodeDisableSchedulingOptions.ocpDate] The
     * time the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    disableScheduling(poolId: string, nodeId: string, options: { nodeDisableSchedulingOption? : string, computeNodeDisableSchedulingOptions? : models.ComputeNodeDisableSchedulingOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    disableScheduling(poolId: string, nodeId: string, callback: ServiceCallback<void>): void;

    /**
     * Enable task scheduling of the specified compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node that you want to enable
     * task scheduling.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.computeNodeEnableSchedulingOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.computeNodeEnableSchedulingOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string}
     * [options.computeNodeEnableSchedulingOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.computeNodeEnableSchedulingOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.computeNodeEnableSchedulingOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    enableScheduling(poolId: string, nodeId: string, options: { computeNodeEnableSchedulingOptions? : models.ComputeNodeEnableSchedulingOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    enableScheduling(poolId: string, nodeId: string, callback: ServiceCallback<void>): void;

    /**
     * Gets the settings required for remote login to a compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node for which to obtain the
     * remote login settings.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.computeNodeGetRemoteLoginSettingsOptions]
     * Additional parameters for the operation
     * 
     * @param {number} [options.computeNodeGetRemoteLoginSettingsOptions.timeout]
     * The maximum time that the server can spend processing the request, in
     * seconds. The default is 30 seconds.
     * 
     * @param {string}
     * [options.computeNodeGetRemoteLoginSettingsOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.computeNodeGetRemoteLoginSettingsOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.computeNodeGetRemoteLoginSettingsOptions.ocpDate]
     * The time the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getRemoteLoginSettings(poolId: string, nodeId: string, options: { computeNodeGetRemoteLoginSettingsOptions? : models.ComputeNodeGetRemoteLoginSettingsOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ComputeNodeGetRemoteLoginSettingsResult>): void;
    getRemoteLoginSettings(poolId: string, nodeId: string, callback: ServiceCallback<models.ComputeNodeGetRemoteLoginSettingsResult>): void;

    /**
     * Gets the Remote Desktop Protocol file for the specified compute node.
     *
     * @param {string} poolId The id of the pool that contains the compute node.
     * 
     * @param {string} nodeId The id of the compute node for which you want to get
     * the Remote Desktop Protocol file.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.computeNodeGetRemoteDesktopOptions] Additional
     * parameters for the operation
     * 
     * @param {number} [options.computeNodeGetRemoteDesktopOptions.timeout] The
     * maximum time that the server can spend processing the request, in seconds.
     * The default is 30 seconds.
     * 
     * @param {string}
     * [options.computeNodeGetRemoteDesktopOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean}
     * [options.computeNodeGetRemoteDesktopOptions.returnClientRequestId] Whether
     * the server should return the client-request-id identifier in the response.
     * 
     * @param {date} [options.computeNodeGetRemoteDesktopOptions.ocpDate] The time
     * the request was issued. If not specified, this header will be
     * automatically populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getRemoteDesktop(poolId: string, nodeId: string, options: { computeNodeGetRemoteDesktopOptions? : models.ComputeNodeGetRemoteDesktopOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<stream.Readable>): void;
    getRemoteDesktop(poolId: string, nodeId: string, callback: ServiceCallback<stream.Readable>): void;

    /**
     * Lists the compute nodes in the specified pool.
     *
     * @param {string} poolId The id of the pool from which you want to list nodes.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.computeNodeListOptions] Additional parameters for
     * the operation
     * 
     * @param {string} [options.computeNodeListOptions.filter] An OData $filter
     * clause.
     * 
     * @param {string} [options.computeNodeListOptions.select] An OData $select
     * clause.
     * 
     * @param {number} [options.computeNodeListOptions.maxResults] The maximum
     * number of items to return in the response.
     * 
     * @param {number} [options.computeNodeListOptions.timeout] The maximum time
     * that the server can spend processing the request, in seconds. The default
     * is 30 seconds.
     * 
     * @param {string} [options.computeNodeListOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.computeNodeListOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.computeNodeListOptions.ocpDate] The time the request
     * was issued. If not specified, this header will be automatically populated
     * with the current system clock time.
     * 
     * @param {object} [options.customHeaders] 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(poolId: string, options: { computeNodeListOptions? : models.ComputeNodeListOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ComputeNodeListResult>): void;
    list(poolId: string, callback: ServiceCallback<models.ComputeNodeListResult>): void;

    /**
     * Lists the compute nodes in the specified pool.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.computeNodeListNextOptions] Additional parameters
     * for the operation
     * 
     * @param {string} [options.computeNodeListNextOptions.clientRequestId] The
     * caller-generated request identity, in the form of a GUID with no
     * decoration such as curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0.
     * 
     * @param {boolean} [options.computeNodeListNextOptions.returnClientRequestId]
     * Whether the server should return the client-request-id identifier in the
     * response.
     * 
     * @param {date} [options.computeNodeListNextOptions.ocpDate] The time the
     * request was issued. If not specified, this header will be automatically
     * populated with the current system clock time.
     * 
     * @param {object} [options.customHeaders] 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: { computeNodeListNextOptions? : models.ComputeNodeListNextOptions, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ComputeNodeListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ComputeNodeListResult>): void;
}
