/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 * 
 * Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
*/

import { ServiceClientOptions, RequestOptions, ServiceCallback } from 'ms-rest';
import * as models from '../models';


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

    /**
     * Creates or updates a ManagementService gateway.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.location] location of the resource
     * 
     * @param {object} [options.tags] resource tags
     * 
     * @param {string} [options.autoUpgrade] The autoUpgrade property gives the
     * flexibility to gateway to auto upgrade itself. If properties value not
     * specified, then we assume autoUpgrade = Off. Possible values include:
     * 'On', 'Off'
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    create(resourceGroupName: string, gatewayName: string, options: { location? : string, tags? : any, autoUpgrade? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayResource>): void;
    create(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<models.GatewayResource>): void;

    /**
     * Creates or updates a ManagementService gateway.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.location] location of the resource
     * 
     * @param {object} [options.tags] resource tags
     * 
     * @param {string} [options.autoUpgrade] The autoUpgrade property gives the
     * flexibility to gateway to auto upgrade itself. If properties value not
     * specified, then we assume autoUpgrade = Off. Possible values include:
     * 'On', 'Off'
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreate(resourceGroupName: string, gatewayName: string, options: { location? : string, tags? : any, autoUpgrade? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayResource>): void;
    beginCreate(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<models.GatewayResource>): void;

    /**
     * Updates a gateway belonging to a resource group.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.location] location of the resource
     * 
     * @param {object} [options.tags] resource tags
     * 
     * @param {string} [options.autoUpgrade] The autoUpgrade property gives the
     * flexibility to gateway to auto upgrade itself. If properties value not
     * specified, then we assume autoUpgrade = Off. Possible values include:
     * 'On', 'Off'
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    update(resourceGroupName: string, gatewayName: string, options: { location? : string, tags? : any, autoUpgrade? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayResource>): void;
    update(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<models.GatewayResource>): void;

    /**
     * Updates a gateway belonging to a resource group.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.location] location of the resource
     * 
     * @param {object} [options.tags] resource tags
     * 
     * @param {string} [options.autoUpgrade] The autoUpgrade property gives the
     * flexibility to gateway to auto upgrade itself. If properties value not
     * specified, then we assume autoUpgrade = Off. Possible values include:
     * 'On', 'Off'
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginUpdate(resourceGroupName: string, gatewayName: string, options: { location? : string, tags? : any, autoUpgrade? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayResource>): void;
    beginUpdate(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<models.GatewayResource>): void;

    /**
     * Deletes a gateway from a resource group.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(resourceGroupName: string, gatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * Returns a gateway
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum)
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] Gets subscription credentials which
     * uniquely identify Microsoft Azure subscription. The subscription ID forms
     * part of the URI for every service call. Possible values include: 'status'
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(resourceGroupName: string, gatewayName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayResource>): void;
    get(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<models.GatewayResource>): void;

    /**
     * Returns gateways in a subscription
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayResources>): void;
    list(callback: ServiceCallback<models.GatewayResources>): void;

    /**
     * Returns gateways in a resource group
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listForResourceGroup(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayResources>): void;
    listForResourceGroup(resourceGroupName: string, callback: ServiceCallback<models.GatewayResources>): void;

    /**
     * Upgrade a gateway
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    upgrade(resourceGroupName: string, gatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    upgrade(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * Upgrade a gateway
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginUpgrade(resourceGroupName: string, gatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginUpgrade(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * Regenerate a gateway's profile
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    regenerateProfile(resourceGroupName: string, gatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    regenerateProfile(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * Regenerate a gateway's profile
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginRegenerateProfile(resourceGroupName: string, gatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginRegenerateProfile(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * Gets a gateway profile
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getProfile(resourceGroupName: string, gatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayProfile>): void;
    getProfile(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<models.GatewayProfile>): void;

    /**
     * Gets a gateway profile
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} gatewayName The gateway name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginGetProfile(resourceGroupName: string, gatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayProfile>): void;
    beginGetProfile(resourceGroupName: string, gatewayName: string, callback: ServiceCallback<models.GatewayProfile>): void;

    /**
     * Returns gateways in a subscription
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayResources>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.GatewayResources>): void;

    /**
     * Returns gateways in a resource group
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listForResourceGroupNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GatewayResources>): void;
    listForResourceGroupNext(nextPageLink: string, callback: ServiceCallback<models.GatewayResources>): void;
}

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

    /**
     * Creates or updates a management node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.location] location of the resource?
     * 
     * @param {object} [options.tags] resource tags
     * 
     * @param {string} [options.gatewayId] Gateway id which will manage this node
     * 
     * @param {string} [options.connectionName] myhost.domain.com
     * 
     * @param {string} [options.userName] User name to be used to connect to node
     * 
     * @param {string} [options.password] Password associated with user name
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    create(resourceGroupName: string, nodeName: string, options: { location? : string, tags? : any, gatewayId? : string, connectionName? : string, userName? : string, password? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeResource>): void;
    create(resourceGroupName: string, nodeName: string, callback: ServiceCallback<models.NodeResource>): void;

    /**
     * Creates or updates a management node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.location] location of the resource?
     * 
     * @param {object} [options.tags] resource tags
     * 
     * @param {string} [options.gatewayId] Gateway id which will manage this node
     * 
     * @param {string} [options.connectionName] myhost.domain.com
     * 
     * @param {string} [options.userName] User name to be used to connect to node
     * 
     * @param {string} [options.password] Password associated with user name
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreate(resourceGroupName: string, nodeName: string, options: { location? : string, tags? : any, gatewayId? : string, connectionName? : string, userName? : string, password? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeResource>): void;
    beginCreate(resourceGroupName: string, nodeName: string, callback: ServiceCallback<models.NodeResource>): void;

    /**
     * Updates a management node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.location] location of the resource?
     * 
     * @param {object} [options.tags] resource tags
     * 
     * @param {string} [options.gatewayId] Gateway id which will manage this node
     * 
     * @param {string} [options.connectionName] myhost.domain.com
     * 
     * @param {string} [options.userName] User name to be used to connect to node
     * 
     * @param {string} [options.password] Password associated with user name
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    update(resourceGroupName: string, nodeName: string, options: { location? : string, tags? : any, gatewayId? : string, connectionName? : string, userName? : string, password? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeResource>): void;
    update(resourceGroupName: string, nodeName: string, callback: ServiceCallback<models.NodeResource>): void;

    /**
     * Updates a management node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.location] location of the resource?
     * 
     * @param {object} [options.tags] resource tags
     * 
     * @param {string} [options.gatewayId] Gateway id which will manage this node
     * 
     * @param {string} [options.connectionName] myhost.domain.com
     * 
     * @param {string} [options.userName] User name to be used to connect to node
     * 
     * @param {string} [options.password] Password associated with user name
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginUpdate(resourceGroupName: string, nodeName: string, options: { location? : string, tags? : any, gatewayId? : string, connectionName? : string, userName? : string, password? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeResource>): void;
    beginUpdate(resourceGroupName: string, nodeName: string, callback: ServiceCallback<models.NodeResource>): void;

    /**
     * deletes a management node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(resourceGroupName: string, nodeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, nodeName: string, callback: ServiceCallback<void>): void;

    /**
     * gets a management node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(resourceGroupName: string, nodeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeResource>): void;
    get(resourceGroupName: string, nodeName: string, callback: ServiceCallback<models.NodeResource>): void;

    /**
     * Returns nodes in a subscription
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeResources>): void;
    list(callback: ServiceCallback<models.NodeResources>): void;

    /**
     * Returns nodes in a resource group
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listForResourceGroup(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeResources>): void;
    listForResourceGroup(resourceGroupName: string, callback: ServiceCallback<models.NodeResources>): void;

    /**
     * Returns nodes in a subscription
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeResources>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.NodeResources>): void;

    /**
     * Returns nodes in a resource group
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listForResourceGroupNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NodeResources>): void;
    listForResourceGroupNext(nextPageLink: string, callback: ServiceCallback<models.NodeResources>): void;
}

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

    /**
     * Creates a session for a node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.userName] User name to be used to connect to node
     * 
     * @param {string} [options.password] Password associated with user name
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    create(resourceGroupName: string, nodeName: string, session: string, options: { userName? : string, password? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SessionResource>): void;
    create(resourceGroupName: string, nodeName: string, session: string, callback: ServiceCallback<models.SessionResource>): void;

    /**
     * Creates a session for a node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.userName] User name to be used to connect to node
     * 
     * @param {string} [options.password] Password associated with user name
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreate(resourceGroupName: string, nodeName: string, session: string, options: { userName? : string, password? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SessionResource>): void;
    beginCreate(resourceGroupName: string, nodeName: string, session: string, callback: ServiceCallback<models.SessionResource>): void;

    /**
     * Deletes a session for a node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(resourceGroupName: string, nodeName: string, session: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, nodeName: string, session: string, callback: ServiceCallback<void>): void;

    /**
     * Gets a session for a node
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(resourceGroupName: string, nodeName: string, session: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SessionResource>): void;
    get(resourceGroupName: string, nodeName: string, session: string, callback: ServiceCallback<models.SessionResource>): void;
}

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

    /**
     * Gets a list of the active sessions.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listSession(resourceGroupName: string, nodeName: string, session: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellSessionResources>): void;
    listSession(resourceGroupName: string, nodeName: string, session: string, callback: ServiceCallback<models.PowerShellSessionResources>): void;

    /**
     * Creates a PowerShell session
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createSession(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellSessionResource>): void;
    createSession(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellSessionResource>): void;

    /**
     * Creates a PowerShell session
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateSession(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellSessionResource>): void;
    beginCreateSession(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellSessionResource>): void;

    /**
     * Gets the status of a command.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] Gets current output from an ongoing call.
     * Possible values include: 'output'
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getCommandStatus(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellCommandStatus>): void;
    getCommandStatus(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellCommandStatus>): void;

    /**
     * updates a running PowerShell command with more data.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    updateCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellCommandResults>): void;
    updateCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellCommandResults>): void;

    /**
     * updates a running PowerShell command with more data.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginUpdateCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellCommandResults>): void;
    beginUpdateCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellCommandResults>): void;

    /**
     * Creates a PowerShell script and invokes it.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.command] Script to execute
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    invokeCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { command? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellCommandResults>): void;
    invokeCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellCommandResults>): void;

    /**
     * Creates a PowerShell script and invokes it.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.command] Script to execute
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginInvokeCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { command? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellCommandResults>): void;
    beginInvokeCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellCommandResults>): void;

    /**
     * Cancels a PowerShell command.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    cancelCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellCommandResults>): void;
    cancelCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellCommandResults>): void;

    /**
     * Cancels a PowerShell command.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCancelCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellCommandResults>): void;
    beginCancelCommand(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellCommandResults>): void;

    /**
     * gets tab completion values for a command.
     *
     * @param {string} resourceGroupName The resource group name uniquely
     * identifies the resource group within the user subscriptionId.
     * 
     * @param {string} nodeName The node name (256 characters maximum).
     * 
     * @param {string} session The sessionId from the user
     * 
     * @param {string} pssession The PowerShell sessionId from the user
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.command] Command to get tab completion for.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    tabCompletion(resourceGroupName: string, nodeName: string, session: string, pssession: string, options: { command? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PowerShellTabCompletionResults>): void;
    tabCompletion(resourceGroupName: string, nodeName: string, session: string, pssession: string, callback: ServiceCallback<models.PowerShellTabCompletionResults>): void;
}
