/*
 * 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, HttpOperationResponse } from 'ms-rest';
import * as models from '../models';


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


    /**
     * Gets all job collections under specified subscription.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobCollectionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listBySubscriptionWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobCollectionListResult>>;

    /**
     * Gets all job collections under specified subscription.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobCollectionListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobCollectionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobCollectionListResult} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listBySubscription(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobCollectionListResult>;
    listBySubscription(callback: ServiceCallback<models.JobCollectionListResult>): void;
    listBySubscription(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobCollectionListResult>): void;


    /**
     * Gets all job collections under specified resource group.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobCollectionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByResourceGroupWithHttpOperationResponse(resourceGroupName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobCollectionListResult>>;

    /**
     * Gets all job collections under specified resource group.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobCollectionListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobCollectionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobCollectionListResult} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listByResourceGroup(resourceGroupName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobCollectionListResult>;
    listByResourceGroup(resourceGroupName: string, callback: ServiceCallback<models.JobCollectionListResult>): void;
    listByResourceGroup(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobCollectionListResult>): void;


    /**
     * Gets a job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobCollectionDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobCollectionDefinition>>;

    /**
     * Gets a job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobCollectionDefinition} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobCollectionDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobCollectionDefinition} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    get(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobCollectionDefinition>;
    get(resourceGroupName: string, jobCollectionName: string, callback: ServiceCallback<models.JobCollectionDefinition>): void;
    get(resourceGroupName: string, jobCollectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobCollectionDefinition>): void;


    /**
     * Provisions a new job collection or updates an existing job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} jobCollection The job collection definition.
     *
     * @param {string} [jobCollection.name] Gets or sets the job collection
     * resource name.
     *
     * @param {string} [jobCollection.location] Gets or sets the storage account
     * location.
     *
     * @param {object} [jobCollection.tags] Gets or sets the tags.
     *
     * @param {object} [jobCollection.properties] Gets or sets the job collection
     * properties.
     *
     * @param {object} [jobCollection.properties.sku] Gets or sets the SKU.
     *
     * @param {string} [jobCollection.properties.sku.name] Gets or set the SKU.
     * Possible values include: 'Standard', 'Free', 'P10Premium', 'P20Premium'
     *
     * @param {string} [jobCollection.properties.state] Gets or sets the state.
     * Possible values include: 'Enabled', 'Disabled', 'Suspended', 'Deleted'
     *
     * @param {object} [jobCollection.properties.quota] Gets or sets the job
     * collection quota.
     *
     * @param {number} [jobCollection.properties.quota.maxJobCount] Gets or set the
     * maximum job count.
     *
     * @param {number} [jobCollection.properties.quota.maxJobOccurrence] Gets or
     * sets the maximum job occurrence.
     *
     * @param {object} [jobCollection.properties.quota.maxRecurrence] Gets or set
     * the maximum recurrence.
     *
     * @param {string} [jobCollection.properties.quota.maxRecurrence.frequency]
     * Gets or sets the frequency of recurrence (second, minute, hour, day, week,
     * month). Possible values include: 'Minute', 'Hour', 'Day', 'Week', 'Month'
     *
     * @param {number} [jobCollection.properties.quota.maxRecurrence.interval] Gets
     * or sets the interval between retries.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobCollectionDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, jobCollection: models.JobCollectionDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobCollectionDefinition>>;

    /**
     * Provisions a new job collection or updates an existing job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} jobCollection The job collection definition.
     *
     * @param {string} [jobCollection.name] Gets or sets the job collection
     * resource name.
     *
     * @param {string} [jobCollection.location] Gets or sets the storage account
     * location.
     *
     * @param {object} [jobCollection.tags] Gets or sets the tags.
     *
     * @param {object} [jobCollection.properties] Gets or sets the job collection
     * properties.
     *
     * @param {object} [jobCollection.properties.sku] Gets or sets the SKU.
     *
     * @param {string} [jobCollection.properties.sku.name] Gets or set the SKU.
     * Possible values include: 'Standard', 'Free', 'P10Premium', 'P20Premium'
     *
     * @param {string} [jobCollection.properties.state] Gets or sets the state.
     * Possible values include: 'Enabled', 'Disabled', 'Suspended', 'Deleted'
     *
     * @param {object} [jobCollection.properties.quota] Gets or sets the job
     * collection quota.
     *
     * @param {number} [jobCollection.properties.quota.maxJobCount] Gets or set the
     * maximum job count.
     *
     * @param {number} [jobCollection.properties.quota.maxJobOccurrence] Gets or
     * sets the maximum job occurrence.
     *
     * @param {object} [jobCollection.properties.quota.maxRecurrence] Gets or set
     * the maximum recurrence.
     *
     * @param {string} [jobCollection.properties.quota.maxRecurrence.frequency]
     * Gets or sets the frequency of recurrence (second, minute, hour, day, week,
     * month). Possible values include: 'Minute', 'Hour', 'Day', 'Week', 'Month'
     *
     * @param {number} [jobCollection.properties.quota.maxRecurrence.interval] Gets
     * or sets the interval between retries.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobCollectionDefinition} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobCollectionDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobCollectionDefinition} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createOrUpdate(resourceGroupName: string, jobCollectionName: string, jobCollection: models.JobCollectionDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobCollectionDefinition>;
    createOrUpdate(resourceGroupName: string, jobCollectionName: string, jobCollection: models.JobCollectionDefinition, callback: ServiceCallback<models.JobCollectionDefinition>): void;
    createOrUpdate(resourceGroupName: string, jobCollectionName: string, jobCollection: models.JobCollectionDefinition, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobCollectionDefinition>): void;


    /**
     * Patches an existing job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} jobCollection The job collection definition.
     *
     * @param {string} [jobCollection.name] Gets or sets the job collection
     * resource name.
     *
     * @param {string} [jobCollection.location] Gets or sets the storage account
     * location.
     *
     * @param {object} [jobCollection.tags] Gets or sets the tags.
     *
     * @param {object} [jobCollection.properties] Gets or sets the job collection
     * properties.
     *
     * @param {object} [jobCollection.properties.sku] Gets or sets the SKU.
     *
     * @param {string} [jobCollection.properties.sku.name] Gets or set the SKU.
     * Possible values include: 'Standard', 'Free', 'P10Premium', 'P20Premium'
     *
     * @param {string} [jobCollection.properties.state] Gets or sets the state.
     * Possible values include: 'Enabled', 'Disabled', 'Suspended', 'Deleted'
     *
     * @param {object} [jobCollection.properties.quota] Gets or sets the job
     * collection quota.
     *
     * @param {number} [jobCollection.properties.quota.maxJobCount] Gets or set the
     * maximum job count.
     *
     * @param {number} [jobCollection.properties.quota.maxJobOccurrence] Gets or
     * sets the maximum job occurrence.
     *
     * @param {object} [jobCollection.properties.quota.maxRecurrence] Gets or set
     * the maximum recurrence.
     *
     * @param {string} [jobCollection.properties.quota.maxRecurrence.frequency]
     * Gets or sets the frequency of recurrence (second, minute, hour, day, week,
     * month). Possible values include: 'Minute', 'Hour', 'Day', 'Week', 'Month'
     *
     * @param {number} [jobCollection.properties.quota.maxRecurrence.interval] Gets
     * or sets the interval between retries.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobCollectionDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    patchWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, jobCollection: models.JobCollectionDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobCollectionDefinition>>;

    /**
     * Patches an existing job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} jobCollection The job collection definition.
     *
     * @param {string} [jobCollection.name] Gets or sets the job collection
     * resource name.
     *
     * @param {string} [jobCollection.location] Gets or sets the storage account
     * location.
     *
     * @param {object} [jobCollection.tags] Gets or sets the tags.
     *
     * @param {object} [jobCollection.properties] Gets or sets the job collection
     * properties.
     *
     * @param {object} [jobCollection.properties.sku] Gets or sets the SKU.
     *
     * @param {string} [jobCollection.properties.sku.name] Gets or set the SKU.
     * Possible values include: 'Standard', 'Free', 'P10Premium', 'P20Premium'
     *
     * @param {string} [jobCollection.properties.state] Gets or sets the state.
     * Possible values include: 'Enabled', 'Disabled', 'Suspended', 'Deleted'
     *
     * @param {object} [jobCollection.properties.quota] Gets or sets the job
     * collection quota.
     *
     * @param {number} [jobCollection.properties.quota.maxJobCount] Gets or set the
     * maximum job count.
     *
     * @param {number} [jobCollection.properties.quota.maxJobOccurrence] Gets or
     * sets the maximum job occurrence.
     *
     * @param {object} [jobCollection.properties.quota.maxRecurrence] Gets or set
     * the maximum recurrence.
     *
     * @param {string} [jobCollection.properties.quota.maxRecurrence.frequency]
     * Gets or sets the frequency of recurrence (second, minute, hour, day, week,
     * month). Possible values include: 'Minute', 'Hour', 'Day', 'Week', 'Month'
     *
     * @param {number} [jobCollection.properties.quota.maxRecurrence.interval] Gets
     * or sets the interval between retries.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobCollectionDefinition} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobCollectionDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobCollectionDefinition} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    patch(resourceGroupName: string, jobCollectionName: string, jobCollection: models.JobCollectionDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobCollectionDefinition>;
    patch(resourceGroupName: string, jobCollectionName: string, jobCollection: models.JobCollectionDefinition, callback: ServiceCallback<models.JobCollectionDefinition>): void;
    patch(resourceGroupName: string, jobCollectionName: string, jobCollection: models.JobCollectionDefinition, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobCollectionDefinition>): void;


    /**
     * Deletes a job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Deletes a job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(resourceGroupName: string, jobCollectionName: string, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, jobCollectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Enables all of the jobs in the job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    enableWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Enables all of the jobs in the job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    enable(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    enable(resourceGroupName: string, jobCollectionName: string, callback: ServiceCallback<void>): void;
    enable(resourceGroupName: string, jobCollectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Disables all of the jobs in the job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    disableWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Disables all of the jobs in the job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    disable(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    disable(resourceGroupName: string, jobCollectionName: string, callback: ServiceCallback<void>): void;
    disable(resourceGroupName: string, jobCollectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Deletes a job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    beginDeleteMethodWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Deletes a job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    beginDeleteMethod(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    beginDeleteMethod(resourceGroupName: string, jobCollectionName: string, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, jobCollectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Enables all of the jobs in the job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    beginEnableWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Enables all of the jobs in the job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    beginEnable(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    beginEnable(resourceGroupName: string, jobCollectionName: string, callback: ServiceCallback<void>): void;
    beginEnable(resourceGroupName: string, jobCollectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Disables all of the jobs in the job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    beginDisableWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Disables all of the jobs in the job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    beginDisable(resourceGroupName: string, jobCollectionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    beginDisable(resourceGroupName: string, jobCollectionName: string, callback: ServiceCallback<void>): void;
    beginDisable(resourceGroupName: string, jobCollectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Gets all job collections under specified subscription.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobCollectionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listBySubscriptionNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobCollectionListResult>>;

    /**
     * Gets all job collections under specified subscription.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobCollectionListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobCollectionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobCollectionListResult} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listBySubscriptionNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobCollectionListResult>;
    listBySubscriptionNext(nextPageLink: string, callback: ServiceCallback<models.JobCollectionListResult>): void;
    listBySubscriptionNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobCollectionListResult>): void;


    /**
     * Gets all job collections under specified resource group.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobCollectionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByResourceGroupNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobCollectionListResult>>;

    /**
     * Gets all job collections under specified resource group.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobCollectionListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobCollectionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobCollectionListResult} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listByResourceGroupNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobCollectionListResult>;
    listByResourceGroupNext(nextPageLink: string, callback: ServiceCallback<models.JobCollectionListResult>): void;
    listByResourceGroupNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobCollectionListResult>): void;
}

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


    /**
     * Gets a job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, jobName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobDefinition>>;

    /**
     * Gets a job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobDefinition} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobDefinition} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    get(resourceGroupName: string, jobCollectionName: string, jobName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobDefinition>;
    get(resourceGroupName: string, jobCollectionName: string, jobName: string, callback: ServiceCallback<models.JobDefinition>): void;
    get(resourceGroupName: string, jobCollectionName: string, jobName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobDefinition>): void;


    /**
     * Provisions a new job or updates an existing job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} job The job definition.
     *
     * @param {object} [job.properties] Gets or sets the job properties.
     *
     * @param {date} [job.properties.startTime] Gets or sets the job start time.
     *
     * @param {object} [job.properties.action] Gets or sets the job action.
     *
     * @param {string} [job.properties.action.type] Gets or sets the job action
     * type. Possible values include: 'Http', 'Https', 'StorageQueue',
     * 'ServiceBusQueue', 'ServiceBusTopic'
     *
     * @param {object} [job.properties.action.request] Gets or sets the http
     * requests.
     *
     * @param {object} [job.properties.action.queueMessage] Gets or sets the
     * storage queue message.
     *
     * @param {object} [job.properties.action.serviceBusQueueMessage] Gets or sets
     * the service bus queue message.
     *
     * @param {object} [job.properties.action.serviceBusTopicMessage] Gets or sets
     * the service bus topic message.
     *
     * @param {object} [job.properties.action.retryPolicy] Gets or sets the retry
     * policy.
     *
     * @param {object} [job.properties.action.errorAction] Gets or sets the error
     * action.
     *
     * @param {string} [job.properties.action.errorAction.type] Gets or sets the
     * job error action type. Possible values include: 'Http', 'Https',
     * 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic'
     *
     * @param {object} [job.properties.action.errorAction.request] Gets or sets the
     * http requests.
     *
     * @param {object} [job.properties.action.errorAction.request.authentication]
     * Gets or sets the authentication method of the request.
     *
     * @param {string}
     * job.properties.action.errorAction.request.authentication.type Polymorphic
     * Discriminator
     *
     * @param {string} [job.properties.action.errorAction.request.uri] Gets or sets
     * the URI of the request.
     *
     * @param {string} [job.properties.action.errorAction.request.method] Gets or
     * sets the method of the request.
     *
     * @param {string} [job.properties.action.errorAction.request.body] Gets or
     * sets the request body.
     *
     * @param {object} [job.properties.action.errorAction.request.headers] Gets or
     * sets the headers.
     *
     * @param {object} [job.properties.action.errorAction.queueMessage] Gets or
     * sets the storage queue message.
     *
     * @param {string}
     * [job.properties.action.errorAction.queueMessage.storageAccount] Gets or sets
     * the storage account name.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.queueName]
     * Gets or sets the queue name.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.sasToken]
     * Gets or sets the SAS key.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.message]
     * Gets or sets the message.
     *
     * @param {object} [job.properties.action.errorAction.serviceBusQueueMessage]
     * Gets or sets the service bus queue message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.queueName] Gets or
     * sets the queue name.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.authentication]
     * Gets or sets the Service Bus authentication.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.brokeredMessageProperties]
     * Gets or sets the brokered message properties.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.customMessageProperties]
     * Gets or sets the custom message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.message] Gets or
     * sets the message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.namespace] Gets or
     * sets the namespace.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.transportType]
     * Gets or sets the transport type. Possible values include: 'NotSpecified',
     * 'NetMessaging', 'AMQP'
     *
     * @param {object} [job.properties.action.errorAction.serviceBusTopicMessage]
     * Gets or sets the service bus topic message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.topicPath] Gets or
     * sets the topic path.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication]
     * Gets or sets the Service Bus authentication.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.sasKey]
     * Gets or sets the SAS key.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.sasKeyName]
     * Gets or sets the SAS key name.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.type]
     * Gets or sets the authentication type. Possible values include:
     * 'NotSpecified', 'SharedAccessKey'
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties]
     * Gets or sets the brokered message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.contentType]
     * Gets or sets the content type.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.correlationId]
     * Gets or sets the correlation ID.
     *
     * @param {boolean}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.forcePersistence]
     * Gets or sets the force persistence.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.label]
     * Gets or sets the label.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.messageId]
     * Gets or sets the message ID.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.partitionKey]
     * Gets or sets the partition key.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.replyTo]
     * Gets or sets the reply to.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.replyToSessionId]
     * Gets or sets the reply to session ID.
     *
     * @param {date}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.scheduledEnqueueTimeUtc]
     * Gets or sets the scheduled enqueue time UTC.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.sessionId]
     * Gets or sets the session ID.
     *
     * @param {moment.duration}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.timeToLive]
     * Gets or sets the time to live.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.to]
     * Gets or sets the to.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.viaPartitionKey]
     * Gets or sets the via partition key.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.customMessageProperties]
     * Gets or sets the custom message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.message] Gets or
     * sets the message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.namespace] Gets or
     * sets the namespace.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.transportType]
     * Gets or sets the transport type. Possible values include: 'NotSpecified',
     * 'NetMessaging', 'AMQP'
     *
     * @param {object} [job.properties.action.errorAction.retryPolicy] Gets or sets
     * the retry policy.
     *
     * @param {string} [job.properties.action.errorAction.retryPolicy.retryType]
     * Gets or sets the retry strategy to be used. Possible values include: 'None',
     * 'Fixed'
     *
     * @param {moment.duration}
     * [job.properties.action.errorAction.retryPolicy.retryInterval] Gets or sets
     * the retry interval between retries, specify duration in ISO 8601 format.
     *
     * @param {number} [job.properties.action.errorAction.retryPolicy.retryCount]
     * Gets or sets the number of times a retry should be attempted.
     *
     * @param {object} [job.properties.recurrence] Gets or sets the job recurrence.
     *
     * @param {string} [job.properties.recurrence.frequency] Gets or sets the
     * frequency of recurrence (second, minute, hour, day, week, month). Possible
     * values include: 'Minute', 'Hour', 'Day', 'Week', 'Month'
     *
     * @param {number} [job.properties.recurrence.interval] Gets or sets the
     * interval between retries.
     *
     * @param {number} [job.properties.recurrence.count] Gets or sets the maximum
     * number of times that the job should run.
     *
     * @param {date} [job.properties.recurrence.endTime] Gets or sets the time at
     * which the job will complete.
     *
     * @param {object} [job.properties.recurrence.schedule]
     *
     * @param {array} [job.properties.recurrence.schedule.weekDays] Gets or sets
     * the days of the week that the job should execute on.
     *
     * @param {array} [job.properties.recurrence.schedule.hours] Gets or sets the
     * hours of the day that the job should execute at.
     *
     * @param {array} [job.properties.recurrence.schedule.minutes] Gets or sets the
     * minutes of the hour that the job should execute at.
     *
     * @param {array} [job.properties.recurrence.schedule.monthDays] Gets or sets
     * the days of the month that the job should execute on. Must be between 1 and
     * 31.
     *
     * @param {array} [job.properties.recurrence.schedule.monthlyOccurrences] Gets
     * or sets the occurrences of days within a month.
     *
     * @param {string} [job.properties.state] Gets or set the job state. Possible
     * values include: 'Enabled', 'Disabled', 'Faulted', 'Completed'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, jobName: string, job: models.JobDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobDefinition>>;

    /**
     * Provisions a new job or updates an existing job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} job The job definition.
     *
     * @param {object} [job.properties] Gets or sets the job properties.
     *
     * @param {date} [job.properties.startTime] Gets or sets the job start time.
     *
     * @param {object} [job.properties.action] Gets or sets the job action.
     *
     * @param {string} [job.properties.action.type] Gets or sets the job action
     * type. Possible values include: 'Http', 'Https', 'StorageQueue',
     * 'ServiceBusQueue', 'ServiceBusTopic'
     *
     * @param {object} [job.properties.action.request] Gets or sets the http
     * requests.
     *
     * @param {object} [job.properties.action.queueMessage] Gets or sets the
     * storage queue message.
     *
     * @param {object} [job.properties.action.serviceBusQueueMessage] Gets or sets
     * the service bus queue message.
     *
     * @param {object} [job.properties.action.serviceBusTopicMessage] Gets or sets
     * the service bus topic message.
     *
     * @param {object} [job.properties.action.retryPolicy] Gets or sets the retry
     * policy.
     *
     * @param {object} [job.properties.action.errorAction] Gets or sets the error
     * action.
     *
     * @param {string} [job.properties.action.errorAction.type] Gets or sets the
     * job error action type. Possible values include: 'Http', 'Https',
     * 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic'
     *
     * @param {object} [job.properties.action.errorAction.request] Gets or sets the
     * http requests.
     *
     * @param {object} [job.properties.action.errorAction.request.authentication]
     * Gets or sets the authentication method of the request.
     *
     * @param {string}
     * job.properties.action.errorAction.request.authentication.type Polymorphic
     * Discriminator
     *
     * @param {string} [job.properties.action.errorAction.request.uri] Gets or sets
     * the URI of the request.
     *
     * @param {string} [job.properties.action.errorAction.request.method] Gets or
     * sets the method of the request.
     *
     * @param {string} [job.properties.action.errorAction.request.body] Gets or
     * sets the request body.
     *
     * @param {object} [job.properties.action.errorAction.request.headers] Gets or
     * sets the headers.
     *
     * @param {object} [job.properties.action.errorAction.queueMessage] Gets or
     * sets the storage queue message.
     *
     * @param {string}
     * [job.properties.action.errorAction.queueMessage.storageAccount] Gets or sets
     * the storage account name.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.queueName]
     * Gets or sets the queue name.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.sasToken]
     * Gets or sets the SAS key.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.message]
     * Gets or sets the message.
     *
     * @param {object} [job.properties.action.errorAction.serviceBusQueueMessage]
     * Gets or sets the service bus queue message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.queueName] Gets or
     * sets the queue name.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.authentication]
     * Gets or sets the Service Bus authentication.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.brokeredMessageProperties]
     * Gets or sets the brokered message properties.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.customMessageProperties]
     * Gets or sets the custom message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.message] Gets or
     * sets the message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.namespace] Gets or
     * sets the namespace.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.transportType]
     * Gets or sets the transport type. Possible values include: 'NotSpecified',
     * 'NetMessaging', 'AMQP'
     *
     * @param {object} [job.properties.action.errorAction.serviceBusTopicMessage]
     * Gets or sets the service bus topic message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.topicPath] Gets or
     * sets the topic path.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication]
     * Gets or sets the Service Bus authentication.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.sasKey]
     * Gets or sets the SAS key.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.sasKeyName]
     * Gets or sets the SAS key name.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.type]
     * Gets or sets the authentication type. Possible values include:
     * 'NotSpecified', 'SharedAccessKey'
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties]
     * Gets or sets the brokered message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.contentType]
     * Gets or sets the content type.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.correlationId]
     * Gets or sets the correlation ID.
     *
     * @param {boolean}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.forcePersistence]
     * Gets or sets the force persistence.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.label]
     * Gets or sets the label.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.messageId]
     * Gets or sets the message ID.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.partitionKey]
     * Gets or sets the partition key.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.replyTo]
     * Gets or sets the reply to.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.replyToSessionId]
     * Gets or sets the reply to session ID.
     *
     * @param {date}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.scheduledEnqueueTimeUtc]
     * Gets or sets the scheduled enqueue time UTC.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.sessionId]
     * Gets or sets the session ID.
     *
     * @param {moment.duration}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.timeToLive]
     * Gets or sets the time to live.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.to]
     * Gets or sets the to.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.viaPartitionKey]
     * Gets or sets the via partition key.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.customMessageProperties]
     * Gets or sets the custom message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.message] Gets or
     * sets the message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.namespace] Gets or
     * sets the namespace.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.transportType]
     * Gets or sets the transport type. Possible values include: 'NotSpecified',
     * 'NetMessaging', 'AMQP'
     *
     * @param {object} [job.properties.action.errorAction.retryPolicy] Gets or sets
     * the retry policy.
     *
     * @param {string} [job.properties.action.errorAction.retryPolicy.retryType]
     * Gets or sets the retry strategy to be used. Possible values include: 'None',
     * 'Fixed'
     *
     * @param {moment.duration}
     * [job.properties.action.errorAction.retryPolicy.retryInterval] Gets or sets
     * the retry interval between retries, specify duration in ISO 8601 format.
     *
     * @param {number} [job.properties.action.errorAction.retryPolicy.retryCount]
     * Gets or sets the number of times a retry should be attempted.
     *
     * @param {object} [job.properties.recurrence] Gets or sets the job recurrence.
     *
     * @param {string} [job.properties.recurrence.frequency] Gets or sets the
     * frequency of recurrence (second, minute, hour, day, week, month). Possible
     * values include: 'Minute', 'Hour', 'Day', 'Week', 'Month'
     *
     * @param {number} [job.properties.recurrence.interval] Gets or sets the
     * interval between retries.
     *
     * @param {number} [job.properties.recurrence.count] Gets or sets the maximum
     * number of times that the job should run.
     *
     * @param {date} [job.properties.recurrence.endTime] Gets or sets the time at
     * which the job will complete.
     *
     * @param {object} [job.properties.recurrence.schedule]
     *
     * @param {array} [job.properties.recurrence.schedule.weekDays] Gets or sets
     * the days of the week that the job should execute on.
     *
     * @param {array} [job.properties.recurrence.schedule.hours] Gets or sets the
     * hours of the day that the job should execute at.
     *
     * @param {array} [job.properties.recurrence.schedule.minutes] Gets or sets the
     * minutes of the hour that the job should execute at.
     *
     * @param {array} [job.properties.recurrence.schedule.monthDays] Gets or sets
     * the days of the month that the job should execute on. Must be between 1 and
     * 31.
     *
     * @param {array} [job.properties.recurrence.schedule.monthlyOccurrences] Gets
     * or sets the occurrences of days within a month.
     *
     * @param {string} [job.properties.state] Gets or set the job state. Possible
     * values include: 'Enabled', 'Disabled', 'Faulted', 'Completed'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobDefinition} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobDefinition} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createOrUpdate(resourceGroupName: string, jobCollectionName: string, jobName: string, job: models.JobDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobDefinition>;
    createOrUpdate(resourceGroupName: string, jobCollectionName: string, jobName: string, job: models.JobDefinition, callback: ServiceCallback<models.JobDefinition>): void;
    createOrUpdate(resourceGroupName: string, jobCollectionName: string, jobName: string, job: models.JobDefinition, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobDefinition>): void;


    /**
     * Patches an existing job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} job The job definition.
     *
     * @param {object} [job.properties] Gets or sets the job properties.
     *
     * @param {date} [job.properties.startTime] Gets or sets the job start time.
     *
     * @param {object} [job.properties.action] Gets or sets the job action.
     *
     * @param {string} [job.properties.action.type] Gets or sets the job action
     * type. Possible values include: 'Http', 'Https', 'StorageQueue',
     * 'ServiceBusQueue', 'ServiceBusTopic'
     *
     * @param {object} [job.properties.action.request] Gets or sets the http
     * requests.
     *
     * @param {object} [job.properties.action.queueMessage] Gets or sets the
     * storage queue message.
     *
     * @param {object} [job.properties.action.serviceBusQueueMessage] Gets or sets
     * the service bus queue message.
     *
     * @param {object} [job.properties.action.serviceBusTopicMessage] Gets or sets
     * the service bus topic message.
     *
     * @param {object} [job.properties.action.retryPolicy] Gets or sets the retry
     * policy.
     *
     * @param {object} [job.properties.action.errorAction] Gets or sets the error
     * action.
     *
     * @param {string} [job.properties.action.errorAction.type] Gets or sets the
     * job error action type. Possible values include: 'Http', 'Https',
     * 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic'
     *
     * @param {object} [job.properties.action.errorAction.request] Gets or sets the
     * http requests.
     *
     * @param {object} [job.properties.action.errorAction.request.authentication]
     * Gets or sets the authentication method of the request.
     *
     * @param {string}
     * job.properties.action.errorAction.request.authentication.type Polymorphic
     * Discriminator
     *
     * @param {string} [job.properties.action.errorAction.request.uri] Gets or sets
     * the URI of the request.
     *
     * @param {string} [job.properties.action.errorAction.request.method] Gets or
     * sets the method of the request.
     *
     * @param {string} [job.properties.action.errorAction.request.body] Gets or
     * sets the request body.
     *
     * @param {object} [job.properties.action.errorAction.request.headers] Gets or
     * sets the headers.
     *
     * @param {object} [job.properties.action.errorAction.queueMessage] Gets or
     * sets the storage queue message.
     *
     * @param {string}
     * [job.properties.action.errorAction.queueMessage.storageAccount] Gets or sets
     * the storage account name.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.queueName]
     * Gets or sets the queue name.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.sasToken]
     * Gets or sets the SAS key.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.message]
     * Gets or sets the message.
     *
     * @param {object} [job.properties.action.errorAction.serviceBusQueueMessage]
     * Gets or sets the service bus queue message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.queueName] Gets or
     * sets the queue name.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.authentication]
     * Gets or sets the Service Bus authentication.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.brokeredMessageProperties]
     * Gets or sets the brokered message properties.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.customMessageProperties]
     * Gets or sets the custom message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.message] Gets or
     * sets the message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.namespace] Gets or
     * sets the namespace.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.transportType]
     * Gets or sets the transport type. Possible values include: 'NotSpecified',
     * 'NetMessaging', 'AMQP'
     *
     * @param {object} [job.properties.action.errorAction.serviceBusTopicMessage]
     * Gets or sets the service bus topic message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.topicPath] Gets or
     * sets the topic path.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication]
     * Gets or sets the Service Bus authentication.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.sasKey]
     * Gets or sets the SAS key.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.sasKeyName]
     * Gets or sets the SAS key name.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.type]
     * Gets or sets the authentication type. Possible values include:
     * 'NotSpecified', 'SharedAccessKey'
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties]
     * Gets or sets the brokered message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.contentType]
     * Gets or sets the content type.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.correlationId]
     * Gets or sets the correlation ID.
     *
     * @param {boolean}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.forcePersistence]
     * Gets or sets the force persistence.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.label]
     * Gets or sets the label.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.messageId]
     * Gets or sets the message ID.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.partitionKey]
     * Gets or sets the partition key.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.replyTo]
     * Gets or sets the reply to.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.replyToSessionId]
     * Gets or sets the reply to session ID.
     *
     * @param {date}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.scheduledEnqueueTimeUtc]
     * Gets or sets the scheduled enqueue time UTC.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.sessionId]
     * Gets or sets the session ID.
     *
     * @param {moment.duration}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.timeToLive]
     * Gets or sets the time to live.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.to]
     * Gets or sets the to.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.viaPartitionKey]
     * Gets or sets the via partition key.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.customMessageProperties]
     * Gets or sets the custom message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.message] Gets or
     * sets the message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.namespace] Gets or
     * sets the namespace.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.transportType]
     * Gets or sets the transport type. Possible values include: 'NotSpecified',
     * 'NetMessaging', 'AMQP'
     *
     * @param {object} [job.properties.action.errorAction.retryPolicy] Gets or sets
     * the retry policy.
     *
     * @param {string} [job.properties.action.errorAction.retryPolicy.retryType]
     * Gets or sets the retry strategy to be used. Possible values include: 'None',
     * 'Fixed'
     *
     * @param {moment.duration}
     * [job.properties.action.errorAction.retryPolicy.retryInterval] Gets or sets
     * the retry interval between retries, specify duration in ISO 8601 format.
     *
     * @param {number} [job.properties.action.errorAction.retryPolicy.retryCount]
     * Gets or sets the number of times a retry should be attempted.
     *
     * @param {object} [job.properties.recurrence] Gets or sets the job recurrence.
     *
     * @param {string} [job.properties.recurrence.frequency] Gets or sets the
     * frequency of recurrence (second, minute, hour, day, week, month). Possible
     * values include: 'Minute', 'Hour', 'Day', 'Week', 'Month'
     *
     * @param {number} [job.properties.recurrence.interval] Gets or sets the
     * interval between retries.
     *
     * @param {number} [job.properties.recurrence.count] Gets or sets the maximum
     * number of times that the job should run.
     *
     * @param {date} [job.properties.recurrence.endTime] Gets or sets the time at
     * which the job will complete.
     *
     * @param {object} [job.properties.recurrence.schedule]
     *
     * @param {array} [job.properties.recurrence.schedule.weekDays] Gets or sets
     * the days of the week that the job should execute on.
     *
     * @param {array} [job.properties.recurrence.schedule.hours] Gets or sets the
     * hours of the day that the job should execute at.
     *
     * @param {array} [job.properties.recurrence.schedule.minutes] Gets or sets the
     * minutes of the hour that the job should execute at.
     *
     * @param {array} [job.properties.recurrence.schedule.monthDays] Gets or sets
     * the days of the month that the job should execute on. Must be between 1 and
     * 31.
     *
     * @param {array} [job.properties.recurrence.schedule.monthlyOccurrences] Gets
     * or sets the occurrences of days within a month.
     *
     * @param {string} [job.properties.state] Gets or set the job state. Possible
     * values include: 'Enabled', 'Disabled', 'Faulted', 'Completed'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    patchWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, jobName: string, job: models.JobDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobDefinition>>;

    /**
     * Patches an existing job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} job The job definition.
     *
     * @param {object} [job.properties] Gets or sets the job properties.
     *
     * @param {date} [job.properties.startTime] Gets or sets the job start time.
     *
     * @param {object} [job.properties.action] Gets or sets the job action.
     *
     * @param {string} [job.properties.action.type] Gets or sets the job action
     * type. Possible values include: 'Http', 'Https', 'StorageQueue',
     * 'ServiceBusQueue', 'ServiceBusTopic'
     *
     * @param {object} [job.properties.action.request] Gets or sets the http
     * requests.
     *
     * @param {object} [job.properties.action.queueMessage] Gets or sets the
     * storage queue message.
     *
     * @param {object} [job.properties.action.serviceBusQueueMessage] Gets or sets
     * the service bus queue message.
     *
     * @param {object} [job.properties.action.serviceBusTopicMessage] Gets or sets
     * the service bus topic message.
     *
     * @param {object} [job.properties.action.retryPolicy] Gets or sets the retry
     * policy.
     *
     * @param {object} [job.properties.action.errorAction] Gets or sets the error
     * action.
     *
     * @param {string} [job.properties.action.errorAction.type] Gets or sets the
     * job error action type. Possible values include: 'Http', 'Https',
     * 'StorageQueue', 'ServiceBusQueue', 'ServiceBusTopic'
     *
     * @param {object} [job.properties.action.errorAction.request] Gets or sets the
     * http requests.
     *
     * @param {object} [job.properties.action.errorAction.request.authentication]
     * Gets or sets the authentication method of the request.
     *
     * @param {string}
     * job.properties.action.errorAction.request.authentication.type Polymorphic
     * Discriminator
     *
     * @param {string} [job.properties.action.errorAction.request.uri] Gets or sets
     * the URI of the request.
     *
     * @param {string} [job.properties.action.errorAction.request.method] Gets or
     * sets the method of the request.
     *
     * @param {string} [job.properties.action.errorAction.request.body] Gets or
     * sets the request body.
     *
     * @param {object} [job.properties.action.errorAction.request.headers] Gets or
     * sets the headers.
     *
     * @param {object} [job.properties.action.errorAction.queueMessage] Gets or
     * sets the storage queue message.
     *
     * @param {string}
     * [job.properties.action.errorAction.queueMessage.storageAccount] Gets or sets
     * the storage account name.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.queueName]
     * Gets or sets the queue name.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.sasToken]
     * Gets or sets the SAS key.
     *
     * @param {string} [job.properties.action.errorAction.queueMessage.message]
     * Gets or sets the message.
     *
     * @param {object} [job.properties.action.errorAction.serviceBusQueueMessage]
     * Gets or sets the service bus queue message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.queueName] Gets or
     * sets the queue name.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.authentication]
     * Gets or sets the Service Bus authentication.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.brokeredMessageProperties]
     * Gets or sets the brokered message properties.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusQueueMessage.customMessageProperties]
     * Gets or sets the custom message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.message] Gets or
     * sets the message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.namespace] Gets or
     * sets the namespace.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusQueueMessage.transportType]
     * Gets or sets the transport type. Possible values include: 'NotSpecified',
     * 'NetMessaging', 'AMQP'
     *
     * @param {object} [job.properties.action.errorAction.serviceBusTopicMessage]
     * Gets or sets the service bus topic message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.topicPath] Gets or
     * sets the topic path.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication]
     * Gets or sets the Service Bus authentication.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.sasKey]
     * Gets or sets the SAS key.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.sasKeyName]
     * Gets or sets the SAS key name.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.authentication.type]
     * Gets or sets the authentication type. Possible values include:
     * 'NotSpecified', 'SharedAccessKey'
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties]
     * Gets or sets the brokered message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.contentType]
     * Gets or sets the content type.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.correlationId]
     * Gets or sets the correlation ID.
     *
     * @param {boolean}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.forcePersistence]
     * Gets or sets the force persistence.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.label]
     * Gets or sets the label.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.messageId]
     * Gets or sets the message ID.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.partitionKey]
     * Gets or sets the partition key.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.replyTo]
     * Gets or sets the reply to.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.replyToSessionId]
     * Gets or sets the reply to session ID.
     *
     * @param {date}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.scheduledEnqueueTimeUtc]
     * Gets or sets the scheduled enqueue time UTC.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.sessionId]
     * Gets or sets the session ID.
     *
     * @param {moment.duration}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.timeToLive]
     * Gets or sets the time to live.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.to]
     * Gets or sets the to.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.brokeredMessageProperties.viaPartitionKey]
     * Gets or sets the via partition key.
     *
     * @param {object}
     * [job.properties.action.errorAction.serviceBusTopicMessage.customMessageProperties]
     * Gets or sets the custom message properties.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.message] Gets or
     * sets the message.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.namespace] Gets or
     * sets the namespace.
     *
     * @param {string}
     * [job.properties.action.errorAction.serviceBusTopicMessage.transportType]
     * Gets or sets the transport type. Possible values include: 'NotSpecified',
     * 'NetMessaging', 'AMQP'
     *
     * @param {object} [job.properties.action.errorAction.retryPolicy] Gets or sets
     * the retry policy.
     *
     * @param {string} [job.properties.action.errorAction.retryPolicy.retryType]
     * Gets or sets the retry strategy to be used. Possible values include: 'None',
     * 'Fixed'
     *
     * @param {moment.duration}
     * [job.properties.action.errorAction.retryPolicy.retryInterval] Gets or sets
     * the retry interval between retries, specify duration in ISO 8601 format.
     *
     * @param {number} [job.properties.action.errorAction.retryPolicy.retryCount]
     * Gets or sets the number of times a retry should be attempted.
     *
     * @param {object} [job.properties.recurrence] Gets or sets the job recurrence.
     *
     * @param {string} [job.properties.recurrence.frequency] Gets or sets the
     * frequency of recurrence (second, minute, hour, day, week, month). Possible
     * values include: 'Minute', 'Hour', 'Day', 'Week', 'Month'
     *
     * @param {number} [job.properties.recurrence.interval] Gets or sets the
     * interval between retries.
     *
     * @param {number} [job.properties.recurrence.count] Gets or sets the maximum
     * number of times that the job should run.
     *
     * @param {date} [job.properties.recurrence.endTime] Gets or sets the time at
     * which the job will complete.
     *
     * @param {object} [job.properties.recurrence.schedule]
     *
     * @param {array} [job.properties.recurrence.schedule.weekDays] Gets or sets
     * the days of the week that the job should execute on.
     *
     * @param {array} [job.properties.recurrence.schedule.hours] Gets or sets the
     * hours of the day that the job should execute at.
     *
     * @param {array} [job.properties.recurrence.schedule.minutes] Gets or sets the
     * minutes of the hour that the job should execute at.
     *
     * @param {array} [job.properties.recurrence.schedule.monthDays] Gets or sets
     * the days of the month that the job should execute on. Must be between 1 and
     * 31.
     *
     * @param {array} [job.properties.recurrence.schedule.monthlyOccurrences] Gets
     * or sets the occurrences of days within a month.
     *
     * @param {string} [job.properties.state] Gets or set the job state. Possible
     * values include: 'Enabled', 'Disabled', 'Faulted', 'Completed'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobDefinition} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobDefinition} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    patch(resourceGroupName: string, jobCollectionName: string, jobName: string, job: models.JobDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobDefinition>;
    patch(resourceGroupName: string, jobCollectionName: string, jobName: string, job: models.JobDefinition, callback: ServiceCallback<models.JobDefinition>): void;
    patch(resourceGroupName: string, jobCollectionName: string, jobName: string, job: models.JobDefinition, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobDefinition>): void;


    /**
     * Deletes a job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, jobName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Deletes a job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(resourceGroupName: string, jobCollectionName: string, jobName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(resourceGroupName: string, jobCollectionName: string, jobName: string, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, jobCollectionName: string, jobName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Runs a job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    runWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, jobName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Runs a job.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    run(resourceGroupName: string, jobCollectionName: string, jobName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    run(resourceGroupName: string, jobCollectionName: string, jobName: string, callback: ServiceCallback<void>): void;
    run(resourceGroupName: string, jobCollectionName: string, jobName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Lists all jobs under the specified job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The number of jobs to request, in the of range
     * of [1..100].
     *
     * @param {number} [options.skip] The (0-based) index of the job history list
     * from which to begin requesting entries.
     *
     * @param {string} [options.filter] The filter to apply on the job state.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, options?: { top? : number, skip? : number, filter? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobListResult>>;

    /**
     * Lists all jobs under the specified job collection.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The number of jobs to request, in the of range
     * of [1..100].
     *
     * @param {number} [options.skip] The (0-based) index of the job history list
     * from which to begin requesting entries.
     *
     * @param {string} [options.filter] The filter to apply on the job state.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobListResult} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(resourceGroupName: string, jobCollectionName: string, options?: { top? : number, skip? : number, filter? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.JobListResult>;
    list(resourceGroupName: string, jobCollectionName: string, callback: ServiceCallback<models.JobListResult>): void;
    list(resourceGroupName: string, jobCollectionName: string, options: { top? : number, skip? : number, filter? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobListResult>): void;


    /**
     * Lists job history.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] the number of job history to request, in the
     * of range of [1..100].
     *
     * @param {number} [options.skip] The (0-based) index of the job history list
     * from which to begin requesting entries.
     *
     * @param {string} [options.filter] The filter to apply on the job state.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobHistoryListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listJobHistoryWithHttpOperationResponse(resourceGroupName: string, jobCollectionName: string, jobName: string, options?: { top? : number, skip? : number, filter? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobHistoryListResult>>;

    /**
     * Lists job history.
     *
     * @param {string} resourceGroupName The resource group name.
     *
     * @param {string} jobCollectionName The job collection name.
     *
     * @param {string} jobName The job name.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] the number of job history to request, in the
     * of range of [1..100].
     *
     * @param {number} [options.skip] The (0-based) index of the job history list
     * from which to begin requesting entries.
     *
     * @param {string} [options.filter] The filter to apply on the job state.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobHistoryListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobHistoryListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobHistoryListResult} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listJobHistory(resourceGroupName: string, jobCollectionName: string, jobName: string, options?: { top? : number, skip? : number, filter? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.JobHistoryListResult>;
    listJobHistory(resourceGroupName: string, jobCollectionName: string, jobName: string, callback: ServiceCallback<models.JobHistoryListResult>): void;
    listJobHistory(resourceGroupName: string, jobCollectionName: string, jobName: string, options: { top? : number, skip? : number, filter? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobHistoryListResult>): void;


    /**
     * Lists all jobs under the specified job collection.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobListResult>>;

    /**
     * Lists all jobs under the specified job collection.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobListResult} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobListResult>;
    listNext(nextPageLink: string, callback: ServiceCallback<models.JobListResult>): void;
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobListResult>): void;


    /**
     * Lists job history.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<JobHistoryListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listJobHistoryNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.JobHistoryListResult>>;

    /**
     * Lists job history.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {JobHistoryListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {JobHistoryListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link JobHistoryListResult} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listJobHistoryNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.JobHistoryListResult>;
    listJobHistoryNext(nextPageLink: string, callback: ServiceCallback<models.JobHistoryListResult>): void;
    listJobHistoryNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.JobHistoryListResult>): void;
}
