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

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

    /**
     * The delete applicationgateway operation deletes the specified
     * applicationgateway.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} applicationGatewayName The name of the applicationgateway.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, applicationGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, applicationGatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get applicationgateway operation retreives information about the
     * specified applicationgateway.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} applicationGatewayName The name of the applicationgateway.
     * 
     * @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, applicationGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationGateway>): void;
    get(resourceGroupName: string, applicationGatewayName: string, callback: ServiceCallback<models.ApplicationGateway>): void;

    /**
     * The Put ApplicationGateway operation creates/updates a ApplicationGateway
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} applicationGatewayName The name of the ApplicationGateway.
     * 
     * @param {object} parameters Parameters supplied to the create/delete
     * ApplicationGateway operation
     * 
     * @param {object} [parameters.sku] Gets or sets sku of application gateway
     * resource
     * 
     * @param {string} [parameters.sku.name] Gets or sets name of application
     * gateway SKU. Possible values include: 'Standard_Small', 'Standard_Medium',
     * 'Standard_Large'
     * 
     * @param {string} [parameters.sku.tier] Gets or sets tier of application
     * gateway. Possible values include: 'Standard'
     * 
     * @param {number} [parameters.sku.capacity] Gets or sets capacity (instance
     * count) of application gateway
     * 
     * @param {array} [parameters.gatewayIPConfigurations] Gets or sets subnets of
     * application gateway resource
     * 
     * @param {array} [parameters.sslCertificates] Gets or sets ssl certificates
     * of application gateway resource
     * 
     * @param {array} [parameters.frontendIPConfigurations] Gets or sets frontend
     * IP addresses of application gateway resource
     * 
     * @param {array} [parameters.frontendPorts] Gets or sets frontend ports of
     * application gateway resource
     * 
     * @param {array} [parameters.probes] Gets or sets probes of application
     * gateway resource
     * 
     * @param {array} [parameters.backendAddressPools] Gets or sets backend
     * address pool of application gateway resource
     * 
     * @param {array} [parameters.backendHttpSettingsCollection] Gets or sets
     * backend http settings of application gateway resource
     * 
     * @param {array} [parameters.httpListeners] Gets or sets HTTP listeners of
     * application gateway resource
     * 
     * @param {array} [parameters.urlPathMaps] Gets or sets URL path map of
     * application gateway resource
     * 
     * @param {array} [parameters.requestRoutingRules] Gets or sets request
     * routing rules of application gateway resource
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the ApplicationGateway resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the ApplicationGateway resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, applicationGatewayName: string, parameters: models.ApplicationGateway, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationGateway>): void;
    createOrUpdate(resourceGroupName: string, applicationGatewayName: string, parameters: models.ApplicationGateway, callback: ServiceCallback<models.ApplicationGateway>): void;

    /**
     * The Put ApplicationGateway operation creates/updates a ApplicationGateway
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} applicationGatewayName The name of the ApplicationGateway.
     * 
     * @param {object} parameters Parameters supplied to the create/delete
     * ApplicationGateway operation
     * 
     * @param {object} [parameters.sku] Gets or sets sku of application gateway
     * resource
     * 
     * @param {string} [parameters.sku.name] Gets or sets name of application
     * gateway SKU. Possible values include: 'Standard_Small', 'Standard_Medium',
     * 'Standard_Large'
     * 
     * @param {string} [parameters.sku.tier] Gets or sets tier of application
     * gateway. Possible values include: 'Standard'
     * 
     * @param {number} [parameters.sku.capacity] Gets or sets capacity (instance
     * count) of application gateway
     * 
     * @param {array} [parameters.gatewayIPConfigurations] Gets or sets subnets of
     * application gateway resource
     * 
     * @param {array} [parameters.sslCertificates] Gets or sets ssl certificates
     * of application gateway resource
     * 
     * @param {array} [parameters.frontendIPConfigurations] Gets or sets frontend
     * IP addresses of application gateway resource
     * 
     * @param {array} [parameters.frontendPorts] Gets or sets frontend ports of
     * application gateway resource
     * 
     * @param {array} [parameters.probes] Gets or sets probes of application
     * gateway resource
     * 
     * @param {array} [parameters.backendAddressPools] Gets or sets backend
     * address pool of application gateway resource
     * 
     * @param {array} [parameters.backendHttpSettingsCollection] Gets or sets
     * backend http settings of application gateway resource
     * 
     * @param {array} [parameters.httpListeners] Gets or sets HTTP listeners of
     * application gateway resource
     * 
     * @param {array} [parameters.urlPathMaps] Gets or sets URL path map of
     * application gateway resource
     * 
     * @param {array} [parameters.requestRoutingRules] Gets or sets request
     * routing rules of application gateway resource
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the ApplicationGateway resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the ApplicationGateway resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, applicationGatewayName: string, parameters: models.ApplicationGateway, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationGateway>): void;
    beginCreateOrUpdate(resourceGroupName: string, applicationGatewayName: string, parameters: models.ApplicationGateway, callback: ServiceCallback<models.ApplicationGateway>): void;

    /**
     * The List ApplicationGateway opertion retrieves all the applicationgateways
     * in a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationGatewayListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.ApplicationGatewayListResult>): void;

    /**
     * The List applicationgateway opertion retrieves all the applicationgateways
     * 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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationGatewayListResult>): void;
    listAll(callback: ServiceCallback<models.ApplicationGatewayListResult>): void;

    /**
     * The Start ApplicationGateway operation starts application gatewayin the
     * specified resource group through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} applicationGatewayName The name of the application gateway.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    start(resourceGroupName: string, applicationGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    start(resourceGroupName: string, applicationGatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * The Start ApplicationGateway operation starts application gatewayin the
     * specified resource group through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} applicationGatewayName The name of the application gateway.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginStart(resourceGroupName: string, applicationGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginStart(resourceGroupName: string, applicationGatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * The STOP ApplicationGateway operation stops application gatewayin the
     * specified resource group through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} applicationGatewayName The name of the application gateway.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    stop(resourceGroupName: string, applicationGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    stop(resourceGroupName: string, applicationGatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * The STOP ApplicationGateway operation stops application gatewayin the
     * specified resource group through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} applicationGatewayName The name of the application gateway.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginStop(resourceGroupName: string, applicationGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginStop(resourceGroupName: string, applicationGatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * The List ApplicationGateway opertion retrieves all the applicationgateways
     * 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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationGatewayListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ApplicationGatewayListResult>): void;

    /**
     * The List applicationgateway opertion retrieves all the applicationgateways
     * 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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ApplicationGatewayListResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.ApplicationGatewayListResult>): void;
}

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

    /**
     * The delete authorization operation deletes the specified authorization from
     * the specified ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} authorizationName The name of the authorization.
     * 
     * @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, circuitName: string, authorizationName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, circuitName: string, authorizationName: string, callback: ServiceCallback<void>): void;

    /**
     * The delete authorization operation deletes the specified authorization from
     * the specified ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} authorizationName The name of the authorization.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, circuitName: string, authorizationName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, circuitName: string, authorizationName: string, callback: ServiceCallback<void>): void;

    /**
     * The GET authorization operation retrieves the specified authorization from
     * the specified ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} authorizationName The name of the authorization.
     * 
     * @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, circuitName: string, authorizationName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitAuthorization>): void;
    get(resourceGroupName: string, circuitName: string, authorizationName: string, callback: ServiceCallback<models.ExpressRouteCircuitAuthorization>): void;

    /**
     * The Put Authorization operation creates/updates an authorization in
     * thespecified ExpressRouteCircuits
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} authorizationName The name of the authorization.
     * 
     * @param {object} authorizationParameters Parameters supplied to the
     * create/update ExpressRouteCircuitAuthorization operation
     * 
     * @param {string} [authorizationParameters.authorizationKey] Gets or sets the
     * authorization key
     * 
     * @param {string} [authorizationParameters.authorizationUseStatus] Gets or
     * sets AuthorizationUseStatus. Possible values include: 'Available', 'InUse'
     * 
     * @param {string} [authorizationParameters.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [authorizationParameters.name] Gets name of the resource
     * that is unique within a resource group. This name can be used to access
     * the resource
     * 
     * @param {string} [authorizationParameters.etag] A unique read-only string
     * that changes whenever the resource is updated
     * 
     * @param {string} [authorizationParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, circuitName: string, authorizationName: string, authorizationParameters: models.ExpressRouteCircuitAuthorization, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitAuthorization>): void;
    createOrUpdate(resourceGroupName: string, circuitName: string, authorizationName: string, authorizationParameters: models.ExpressRouteCircuitAuthorization, callback: ServiceCallback<models.ExpressRouteCircuitAuthorization>): void;

    /**
     * The Put Authorization operation creates/updates an authorization in
     * thespecified ExpressRouteCircuits
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} authorizationName The name of the authorization.
     * 
     * @param {object} authorizationParameters Parameters supplied to the
     * create/update ExpressRouteCircuitAuthorization operation
     * 
     * @param {string} [authorizationParameters.authorizationKey] Gets or sets the
     * authorization key
     * 
     * @param {string} [authorizationParameters.authorizationUseStatus] Gets or
     * sets AuthorizationUseStatus. Possible values include: 'Available', 'InUse'
     * 
     * @param {string} [authorizationParameters.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [authorizationParameters.name] Gets name of the resource
     * that is unique within a resource group. This name can be used to access
     * the resource
     * 
     * @param {string} [authorizationParameters.etag] A unique read-only string
     * that changes whenever the resource is updated
     * 
     * @param {string} [authorizationParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, circuitName: string, authorizationName: string, authorizationParameters: models.ExpressRouteCircuitAuthorization, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitAuthorization>): void;
    beginCreateOrUpdate(resourceGroupName: string, circuitName: string, authorizationName: string, authorizationParameters: models.ExpressRouteCircuitAuthorization, callback: ServiceCallback<models.ExpressRouteCircuitAuthorization>): void;

    /**
     * The List authorization operation retrieves all the authorizations in an
     * ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the curcuit.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, circuitName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AuthorizationListResult>): void;
    list(resourceGroupName: string, circuitName: string, callback: ServiceCallback<models.AuthorizationListResult>): void;

    /**
     * The List authorization operation retrieves all the authorizations in an
     * ExpressRouteCircuit.
     *
     * @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.AuthorizationListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.AuthorizationListResult>): void;
}

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

    /**
     * The delete peering operation deletes the specified peering from the
     * ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @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, circuitName: string, peeringName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, circuitName: string, peeringName: string, callback: ServiceCallback<void>): void;

    /**
     * The delete peering operation deletes the specified peering from the
     * ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, circuitName: string, peeringName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, circuitName: string, peeringName: string, callback: ServiceCallback<void>): void;

    /**
     * The GET peering operation retrieves the specified authorization from the
     * ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @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, circuitName: string, peeringName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitPeering>): void;
    get(resourceGroupName: string, circuitName: string, peeringName: string, callback: ServiceCallback<models.ExpressRouteCircuitPeering>): void;

    /**
     * The Put Pering operation creates/updates an peering in the specified
     * ExpressRouteCircuits
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @param {object} peeringParameters Parameters supplied to the create/update
     * ExpressRouteCircuit Peering operation
     * 
     * @param {string} [peeringParameters.peeringType] Gets or sets PeeringType.
     * Possible values include: 'AzurePublicPeering', 'AzurePrivatePeering',
     * 'MicrosoftPeering'
     * 
     * @param {string} [peeringParameters.state] Gets or sets state of Peering.
     * Possible values include: 'Disabled', 'Enabled'
     * 
     * @param {number} [peeringParameters.azureASN] Gets or sets the azure ASN
     * 
     * @param {number} [peeringParameters.peerASN] Gets or sets the peer ASN
     * 
     * @param {string} [peeringParameters.primaryPeerAddressPrefix] Gets or sets
     * the primary address prefix
     * 
     * @param {string} [peeringParameters.secondaryPeerAddressPrefix] Gets or sets
     * the secondary address prefix
     * 
     * @param {string} [peeringParameters.primaryAzurePort] Gets or sets the
     * primary port
     * 
     * @param {string} [peeringParameters.secondaryAzurePort] Gets or sets the
     * secondary port
     * 
     * @param {string} [peeringParameters.sharedKey] Gets or sets the shared key
     * 
     * @param {number} [peeringParameters.vlanId] Gets or sets the vlan id
     * 
     * @param {object} [peeringParameters.microsoftPeeringConfig] Gets or sets the
     * mircosoft peering config
     * 
     * @param {array}
     * [peeringParameters.microsoftPeeringConfig.advertisedPublicPrefixes] Gets
     * or sets the reference of AdvertisedPublicPrefixes
     * 
     * @param {string}
     * [peeringParameters.microsoftPeeringConfig.advertisedPublicPrefixesState]
     * Gets or sets AdvertisedPublicPrefixState of the Peering resource .
     * Possible values include: 'NotConfigured', 'Configuring', 'Configured',
     * 'ValidationNeeded'
     * 
     * @param {number} [peeringParameters.microsoftPeeringConfig.customerASN] Gets
     * or Sets CustomerAsn of the peering.
     * 
     * @param {string}
     * [peeringParameters.microsoftPeeringConfig.routingRegistryName] Gets or
     * Sets RoutingRegistryName of the config.
     * 
     * @param {object} [peeringParameters.stats] Gets or peering stats
     * 
     * @param {number} [peeringParameters.stats.primarybytesIn] Gets BytesIn of
     * the peering.
     * 
     * @param {number} [peeringParameters.stats.primarybytesOut] Gets BytesOut of
     * the peering.
     * 
     * @param {number} [peeringParameters.stats.secondarybytesIn] Gets BytesIn of
     * the peering.
     * 
     * @param {number} [peeringParameters.stats.secondarybytesOut] Gets BytesOut
     * of the peering.
     * 
     * @param {string} [peeringParameters.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [peeringParameters.name] Gets name of the resource that is
     * unique within a resource group. This name can be used to access the
     * resource
     * 
     * @param {string} [peeringParameters.etag] A unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [peeringParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, circuitName: string, peeringName: string, peeringParameters: models.ExpressRouteCircuitPeering, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitPeering>): void;
    createOrUpdate(resourceGroupName: string, circuitName: string, peeringName: string, peeringParameters: models.ExpressRouteCircuitPeering, callback: ServiceCallback<models.ExpressRouteCircuitPeering>): void;

    /**
     * The Put Pering operation creates/updates an peering in the specified
     * ExpressRouteCircuits
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @param {object} peeringParameters Parameters supplied to the create/update
     * ExpressRouteCircuit Peering operation
     * 
     * @param {string} [peeringParameters.peeringType] Gets or sets PeeringType.
     * Possible values include: 'AzurePublicPeering', 'AzurePrivatePeering',
     * 'MicrosoftPeering'
     * 
     * @param {string} [peeringParameters.state] Gets or sets state of Peering.
     * Possible values include: 'Disabled', 'Enabled'
     * 
     * @param {number} [peeringParameters.azureASN] Gets or sets the azure ASN
     * 
     * @param {number} [peeringParameters.peerASN] Gets or sets the peer ASN
     * 
     * @param {string} [peeringParameters.primaryPeerAddressPrefix] Gets or sets
     * the primary address prefix
     * 
     * @param {string} [peeringParameters.secondaryPeerAddressPrefix] Gets or sets
     * the secondary address prefix
     * 
     * @param {string} [peeringParameters.primaryAzurePort] Gets or sets the
     * primary port
     * 
     * @param {string} [peeringParameters.secondaryAzurePort] Gets or sets the
     * secondary port
     * 
     * @param {string} [peeringParameters.sharedKey] Gets or sets the shared key
     * 
     * @param {number} [peeringParameters.vlanId] Gets or sets the vlan id
     * 
     * @param {object} [peeringParameters.microsoftPeeringConfig] Gets or sets the
     * mircosoft peering config
     * 
     * @param {array}
     * [peeringParameters.microsoftPeeringConfig.advertisedPublicPrefixes] Gets
     * or sets the reference of AdvertisedPublicPrefixes
     * 
     * @param {string}
     * [peeringParameters.microsoftPeeringConfig.advertisedPublicPrefixesState]
     * Gets or sets AdvertisedPublicPrefixState of the Peering resource .
     * Possible values include: 'NotConfigured', 'Configuring', 'Configured',
     * 'ValidationNeeded'
     * 
     * @param {number} [peeringParameters.microsoftPeeringConfig.customerASN] Gets
     * or Sets CustomerAsn of the peering.
     * 
     * @param {string}
     * [peeringParameters.microsoftPeeringConfig.routingRegistryName] Gets or
     * Sets RoutingRegistryName of the config.
     * 
     * @param {object} [peeringParameters.stats] Gets or peering stats
     * 
     * @param {number} [peeringParameters.stats.primarybytesIn] Gets BytesIn of
     * the peering.
     * 
     * @param {number} [peeringParameters.stats.primarybytesOut] Gets BytesOut of
     * the peering.
     * 
     * @param {number} [peeringParameters.stats.secondarybytesIn] Gets BytesIn of
     * the peering.
     * 
     * @param {number} [peeringParameters.stats.secondarybytesOut] Gets BytesOut
     * of the peering.
     * 
     * @param {string} [peeringParameters.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [peeringParameters.name] Gets name of the resource that is
     * unique within a resource group. This name can be used to access the
     * resource
     * 
     * @param {string} [peeringParameters.etag] A unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [peeringParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, circuitName: string, peeringName: string, peeringParameters: models.ExpressRouteCircuitPeering, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitPeering>): void;
    beginCreateOrUpdate(resourceGroupName: string, circuitName: string, peeringName: string, peeringParameters: models.ExpressRouteCircuitPeering, callback: ServiceCallback<models.ExpressRouteCircuitPeering>): void;

    /**
     * The List peering operation retrieves all the peerings in an
     * ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the curcuit.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, circuitName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitPeeringListResult>): void;
    list(resourceGroupName: string, circuitName: string, callback: ServiceCallback<models.ExpressRouteCircuitPeeringListResult>): void;

    /**
     * The List peering operation retrieves all the peerings in an
     * ExpressRouteCircuit.
     *
     * @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.ExpressRouteCircuitPeeringListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ExpressRouteCircuitPeeringListResult>): void;
}

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

    /**
     * The delete ExpressRouteCircuit operation deletes the specified
     * ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route Circuit.
     * 
     * @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, circuitName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, circuitName: string, callback: ServiceCallback<void>): void;

    /**
     * The delete ExpressRouteCircuit operation deletes the specified
     * ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the express route Circuit.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, circuitName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, circuitName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get ExpressRouteCircuit operation retreives information about the
     * specified ExpressRouteCircuit.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @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, circuitName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuit>): void;
    get(resourceGroupName: string, circuitName: string, callback: ServiceCallback<models.ExpressRouteCircuit>): void;

    /**
     * The Put ExpressRouteCircuit operation creates/updates a ExpressRouteCircuit
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @param {object} parameters Parameters supplied to the create/delete
     * ExpressRouteCircuit operation
     * 
     * @param {object} [parameters.sku] Gets or sets sku
     * 
     * @param {string} [parameters.sku.name] Gets or sets name of the sku.
     * 
     * @param {string} [parameters.sku.tier] Gets or sets tier of the sku.
     * Possible values include: 'Standard', 'Premium'
     * 
     * @param {string} [parameters.sku.family] Gets or sets family of the sku.
     * Possible values include: 'UnlimitedData', 'MeteredData'
     * 
     * @param {boolean} [parameters.allowClassicOperations] allow classic
     * operations
     * 
     * @param {string} [parameters.circuitProvisioningState] Gets or sets
     * CircuitProvisioningState state of the resource
     * 
     * @param {string} [parameters.serviceProviderProvisioningState] Gets or sets
     * ServiceProviderProvisioningState state of the resource . Possible values
     * include: 'NotProvisioned', 'Provisioning', 'Provisioned', 'Deprovisioning'
     * 
     * @param {array} [parameters.authorizations] Gets or sets list of
     * authorizations
     * 
     * @param {array} [parameters.peerings] Gets or sets list of peerings
     * 
     * @param {string} [parameters.serviceKey] Gets or sets ServiceKey
     * 
     * @param {string} [parameters.serviceProviderNotes] Gets or sets
     * ServiceProviderNotes
     * 
     * @param {object} [parameters.serviceProviderProperties] Gets or sets
     * ServiceProviderProperties
     * 
     * @param {string} [parameters.serviceProviderProperties.serviceProviderName]
     * Gets or sets serviceProviderName.
     * 
     * @param {string} [parameters.serviceProviderProperties.peeringLocation] Gets
     * or sets peering location.
     * 
     * @param {number} [parameters.serviceProviderProperties.bandwidthInMbps] Gets
     * or sets BandwidthInMbps.
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, circuitName: string, parameters: models.ExpressRouteCircuit, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuit>): void;
    createOrUpdate(resourceGroupName: string, circuitName: string, parameters: models.ExpressRouteCircuit, callback: ServiceCallback<models.ExpressRouteCircuit>): void;

    /**
     * The Put ExpressRouteCircuit operation creates/updates a ExpressRouteCircuit
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @param {object} parameters Parameters supplied to the create/delete
     * ExpressRouteCircuit operation
     * 
     * @param {object} [parameters.sku] Gets or sets sku
     * 
     * @param {string} [parameters.sku.name] Gets or sets name of the sku.
     * 
     * @param {string} [parameters.sku.tier] Gets or sets tier of the sku.
     * Possible values include: 'Standard', 'Premium'
     * 
     * @param {string} [parameters.sku.family] Gets or sets family of the sku.
     * Possible values include: 'UnlimitedData', 'MeteredData'
     * 
     * @param {boolean} [parameters.allowClassicOperations] allow classic
     * operations
     * 
     * @param {string} [parameters.circuitProvisioningState] Gets or sets
     * CircuitProvisioningState state of the resource
     * 
     * @param {string} [parameters.serviceProviderProvisioningState] Gets or sets
     * ServiceProviderProvisioningState state of the resource . Possible values
     * include: 'NotProvisioned', 'Provisioning', 'Provisioned', 'Deprovisioning'
     * 
     * @param {array} [parameters.authorizations] Gets or sets list of
     * authorizations
     * 
     * @param {array} [parameters.peerings] Gets or sets list of peerings
     * 
     * @param {string} [parameters.serviceKey] Gets or sets ServiceKey
     * 
     * @param {string} [parameters.serviceProviderNotes] Gets or sets
     * ServiceProviderNotes
     * 
     * @param {object} [parameters.serviceProviderProperties] Gets or sets
     * ServiceProviderProperties
     * 
     * @param {string} [parameters.serviceProviderProperties.serviceProviderName]
     * Gets or sets serviceProviderName.
     * 
     * @param {string} [parameters.serviceProviderProperties.peeringLocation] Gets
     * or sets peering location.
     * 
     * @param {number} [parameters.serviceProviderProperties.bandwidthInMbps] Gets
     * or sets BandwidthInMbps.
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, circuitName: string, parameters: models.ExpressRouteCircuit, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuit>): void;
    beginCreateOrUpdate(resourceGroupName: string, circuitName: string, parameters: models.ExpressRouteCircuit, callback: ServiceCallback<models.ExpressRouteCircuit>): void;

    /**
     * The ListArpTable from ExpressRouteCircuit opertion retrieves the currently
     * advertised arp table associated with the ExpressRouteCircuits in a
     * resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @param {string} devicePath The path of the device.
     * 
     * @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
     */
    listArpTable(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitsArpTableListResult>): void;
    listArpTable(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, callback: ServiceCallback<models.ExpressRouteCircuitsArpTableListResult>): void;

    /**
     * The ListArpTable from ExpressRouteCircuit opertion retrieves the currently
     * advertised arp table associated with the ExpressRouteCircuits in a
     * resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @param {string} devicePath The path of the device.
     * 
     * @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
     */
    beginListArpTable(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitsArpTableListResult>): void;
    beginListArpTable(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, callback: ServiceCallback<models.ExpressRouteCircuitsArpTableListResult>): void;

    /**
     * The ListRoutesTable from ExpressRouteCircuit opertion retrieves the
     * currently advertised routes table associated with the ExpressRouteCircuits
     * in a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @param {string} devicePath The path of the device.
     * 
     * @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
     */
    listRoutesTable(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitsRoutesTableListResult>): void;
    listRoutesTable(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, callback: ServiceCallback<models.ExpressRouteCircuitsRoutesTableListResult>): void;

    /**
     * The ListRoutesTable from ExpressRouteCircuit opertion retrieves the
     * currently advertised routes table associated with the ExpressRouteCircuits
     * in a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @param {string} devicePath The path of the device.
     * 
     * @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
     */
    beginListRoutesTable(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitsRoutesTableListResult>): void;
    beginListRoutesTable(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, callback: ServiceCallback<models.ExpressRouteCircuitsRoutesTableListResult>): void;

    /**
     * The ListRoutesTable from ExpressRouteCircuit opertion retrieves the
     * currently advertised routes table associated with the ExpressRouteCircuits
     * in a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @param {string} devicePath The path of the device.
     * 
     * @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
     */
    listRoutesTableSummary(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitsRoutesTableSummaryListResult>): void;
    listRoutesTableSummary(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, callback: ServiceCallback<models.ExpressRouteCircuitsRoutesTableSummaryListResult>): void;

    /**
     * The ListRoutesTable from ExpressRouteCircuit opertion retrieves the
     * currently advertised routes table associated with the ExpressRouteCircuits
     * in a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @param {string} devicePath The path of the device.
     * 
     * @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
     */
    beginListRoutesTableSummary(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitsRoutesTableSummaryListResult>): void;
    beginListRoutesTableSummary(resourceGroupName: string, circuitName: string, peeringName: string, devicePath: string, callback: ServiceCallback<models.ExpressRouteCircuitsRoutesTableSummaryListResult>): void;

    /**
     * The Liststats ExpressRouteCircuit opertion retrieves all the stats from a
     * ExpressRouteCircuits in a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @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
     */
    getStats(resourceGroupName: string, circuitName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitStats>): void;
    getStats(resourceGroupName: string, circuitName: string, callback: ServiceCallback<models.ExpressRouteCircuitStats>): void;

    /**
     * The Liststats ExpressRouteCircuit opertion retrieves all the stats from a
     * ExpressRouteCircuits in a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} circuitName The name of the circuit.
     * 
     * @param {string} peeringName The name of the peering.
     * 
     * @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
     */
    getPeeringStats(resourceGroupName: string, circuitName: string, peeringName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitStats>): void;
    getPeeringStats(resourceGroupName: string, circuitName: string, peeringName: string, callback: ServiceCallback<models.ExpressRouteCircuitStats>): void;

    /**
     * The List ExpressRouteCircuit opertion retrieves all the
     * ExpressRouteCircuits in a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.ExpressRouteCircuitListResult>): void;

    /**
     * The List ExpressRouteCircuit opertion retrieves all the
     * ExpressRouteCircuits 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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitListResult>): void;
    listAll(callback: ServiceCallback<models.ExpressRouteCircuitListResult>): void;

    /**
     * The List ExpressRouteCircuit opertion retrieves all the
     * ExpressRouteCircuits 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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ExpressRouteCircuitListResult>): void;

    /**
     * The List ExpressRouteCircuit opertion retrieves all the
     * ExpressRouteCircuits 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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExpressRouteCircuitListResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.ExpressRouteCircuitListResult>): void;
}

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

    /**
     * The List ExpressRouteServiceProvider opertion retrieves all the available
     * ExpressRouteServiceProviders.
     *
     * @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.ExpressRouteServiceProviderListResult>): void;
    list(callback: ServiceCallback<models.ExpressRouteServiceProviderListResult>): void;

    /**
     * The List ExpressRouteServiceProvider opertion retrieves all the available
     * ExpressRouteServiceProviders.
     *
     * @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.ExpressRouteServiceProviderListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.ExpressRouteServiceProviderListResult>): void;
}

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

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

    /**
     * The delete loadbalancer operation deletes the specified loadbalancer.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} loadBalancerName The name of the loadBalancer.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, loadBalancerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, loadBalancerName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get ntework interface operation retreives information about the
     * specified network interface.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} loadBalancerName The name of the loadBalancer.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] expand references resources.
     * 
     * @param {object} [options.customHeaders] 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, loadBalancerName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LoadBalancer>): void;
    get(resourceGroupName: string, loadBalancerName: string, callback: ServiceCallback<models.LoadBalancer>): void;

    /**
     * The Put LoadBalancer operation creates/updates a LoadBalancer
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} loadBalancerName The name of the loadBalancer.
     * 
     * @param {object} parameters Parameters supplied to the create/delete
     * LoadBalancer operation
     * 
     * @param {array} [parameters.frontendIPConfigurations] Gets or sets frontend
     * IP addresses of the load balancer
     * 
     * @param {array} [parameters.backendAddressPools] Gets or sets Pools of
     * backend IP addresseses
     * 
     * @param {array} [parameters.loadBalancingRules] Gets or sets loadbalancing
     * rules
     * 
     * @param {array} [parameters.probes] Gets or sets list of Load balancer probes
     * 
     * @param {array} [parameters.inboundNatRules] Gets or sets list of inbound
     * rules
     * 
     * @param {array} [parameters.inboundNatPools] Gets or sets inbound NAT pools
     * 
     * @param {array} [parameters.outboundNatRules] Gets or sets outbound NAT rules
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the Load balancer resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, loadBalancerName: string, parameters: models.LoadBalancer, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LoadBalancer>): void;
    createOrUpdate(resourceGroupName: string, loadBalancerName: string, parameters: models.LoadBalancer, callback: ServiceCallback<models.LoadBalancer>): void;

    /**
     * The Put LoadBalancer operation creates/updates a LoadBalancer
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} loadBalancerName The name of the loadBalancer.
     * 
     * @param {object} parameters Parameters supplied to the create/delete
     * LoadBalancer operation
     * 
     * @param {array} [parameters.frontendIPConfigurations] Gets or sets frontend
     * IP addresses of the load balancer
     * 
     * @param {array} [parameters.backendAddressPools] Gets or sets Pools of
     * backend IP addresseses
     * 
     * @param {array} [parameters.loadBalancingRules] Gets or sets loadbalancing
     * rules
     * 
     * @param {array} [parameters.probes] Gets or sets list of Load balancer probes
     * 
     * @param {array} [parameters.inboundNatRules] Gets or sets list of inbound
     * rules
     * 
     * @param {array} [parameters.inboundNatPools] Gets or sets inbound NAT pools
     * 
     * @param {array} [parameters.outboundNatRules] Gets or sets outbound NAT rules
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the Load balancer resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, loadBalancerName: string, parameters: models.LoadBalancer, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LoadBalancer>): void;
    beginCreateOrUpdate(resourceGroupName: string, loadBalancerName: string, parameters: models.LoadBalancer, callback: ServiceCallback<models.LoadBalancer>): void;

    /**
     * The List loadBalancer opertion retrieves all the loadbalancers 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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LoadBalancerListResult>): void;
    listAll(callback: ServiceCallback<models.LoadBalancerListResult>): void;

    /**
     * The List loadBalancer opertion retrieves all the loadbalancers in a
     * resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LoadBalancerListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.LoadBalancerListResult>): void;

    /**
     * The List loadBalancer opertion retrieves all the loadbalancers 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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LoadBalancerListResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.LoadBalancerListResult>): void;

    /**
     * The List loadBalancer opertion retrieves all the loadbalancers 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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LoadBalancerListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.LoadBalancerListResult>): void;
}

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

    /**
     * The Put LocalNetworkGateway operation creates/updates a local network
     * gateway in the specified resource group through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} localNetworkGatewayName The name of the local network
     * gateway.
     * 
     * @param {object} parameters Parameters supplied to the Begin Create or
     * update Local Network Gateway operation through Network resource provider.
     * 
     * @param {object} [parameters.localNetworkAddressSpace] Local network site
     * Address space
     * 
     * @param {array} [parameters.localNetworkAddressSpace.addressPrefixes] Gets
     * or sets List of address blocks reserved for this virtual network in CIDR
     * notation
     * 
     * @param {string} [parameters.gatewayIpAddress] IP address of local network
     * gateway.
     * 
     * @param {object} [parameters.bgpSettings] Local network gateway's BGP
     * speaker settings
     * 
     * @param {number} [parameters.bgpSettings.asn] Gets or sets this BGP
     * speaker's ASN
     * 
     * @param {string} [parameters.bgpSettings.bgpPeeringAddress] Gets or sets the
     * BGP peering address and BGP identifier of this BGP speaker
     * 
     * @param {number} [parameters.bgpSettings.peerWeight] Gets or sets the weight
     * added to routes learned from this BGP speaker
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the LocalNetworkGateway resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the LocalNetworkGateway resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, localNetworkGatewayName: string, parameters: models.LocalNetworkGateway, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LocalNetworkGateway>): void;
    createOrUpdate(resourceGroupName: string, localNetworkGatewayName: string, parameters: models.LocalNetworkGateway, callback: ServiceCallback<models.LocalNetworkGateway>): void;

    /**
     * The Put LocalNetworkGateway operation creates/updates a local network
     * gateway in the specified resource group through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} localNetworkGatewayName The name of the local network
     * gateway.
     * 
     * @param {object} parameters Parameters supplied to the Begin Create or
     * update Local Network Gateway operation through Network resource provider.
     * 
     * @param {object} [parameters.localNetworkAddressSpace] Local network site
     * Address space
     * 
     * @param {array} [parameters.localNetworkAddressSpace.addressPrefixes] Gets
     * or sets List of address blocks reserved for this virtual network in CIDR
     * notation
     * 
     * @param {string} [parameters.gatewayIpAddress] IP address of local network
     * gateway.
     * 
     * @param {object} [parameters.bgpSettings] Local network gateway's BGP
     * speaker settings
     * 
     * @param {number} [parameters.bgpSettings.asn] Gets or sets this BGP
     * speaker's ASN
     * 
     * @param {string} [parameters.bgpSettings.bgpPeeringAddress] Gets or sets the
     * BGP peering address and BGP identifier of this BGP speaker
     * 
     * @param {number} [parameters.bgpSettings.peerWeight] Gets or sets the weight
     * added to routes learned from this BGP speaker
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the LocalNetworkGateway resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the LocalNetworkGateway resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, localNetworkGatewayName: string, parameters: models.LocalNetworkGateway, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LocalNetworkGateway>): void;
    beginCreateOrUpdate(resourceGroupName: string, localNetworkGatewayName: string, parameters: models.LocalNetworkGateway, callback: ServiceCallback<models.LocalNetworkGateway>): void;

    /**
     * The Get LocalNetworkGateway operation retrieves information about the
     * specified local network gateway through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} localNetworkGatewayName The name of the local network
     * gateway.
     * 
     * @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, localNetworkGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LocalNetworkGateway>): void;
    get(resourceGroupName: string, localNetworkGatewayName: string, callback: ServiceCallback<models.LocalNetworkGateway>): void;

    /**
     * The Delete LocalNetworkGateway operation deletes the specifed local network
     * Gateway through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} localNetworkGatewayName The name of the local network
     * gateway.
     * 
     * @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, localNetworkGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, localNetworkGatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * The Delete LocalNetworkGateway operation deletes the specifed local network
     * Gateway through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} localNetworkGatewayName The name of the local network
     * gateway.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, localNetworkGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, localNetworkGatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * The List LocalNetworkGateways opertion retrieves all the local network
     * gateways stored.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LocalNetworkGatewayListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.LocalNetworkGatewayListResult>): void;

    /**
     * The List LocalNetworkGateways opertion retrieves all the local network
     * gateways stored.
     *
     * @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.LocalNetworkGatewayListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.LocalNetworkGatewayListResult>): void;
}

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

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

    /**
     * The delete netwokInterface operation deletes the specified netwokInterface.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkInterfaceName The name of the network interface.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, networkInterfaceName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, networkInterfaceName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get ntework interface operation retreives information about the
     * specified network interface.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkInterfaceName The name of the network interface.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] expand references resources.
     * 
     * @param {object} [options.customHeaders] 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, networkInterfaceName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterface>): void;
    get(resourceGroupName: string, networkInterfaceName: string, callback: ServiceCallback<models.NetworkInterface>): void;

    /**
     * The Put NetworkInterface operation creates/updates a networkInterface
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkInterfaceName The name of the network interface.
     * 
     * @param {object} parameters Parameters supplied to the create/update
     * NetworkInterface operation
     * 
     * @param {object} [parameters.virtualMachine] Gets or sets the reference of a
     * VirtualMachine
     * 
     * @param {string} [parameters.virtualMachine.id] Resource Id
     * 
     * @param {object} [parameters.networkSecurityGroup] Gets or sets the
     * reference of the NetworkSecurityGroup resource
     * 
     * @param {array} [parameters.networkSecurityGroup.securityRules] Gets or sets
     * Security rules of network security group
     * 
     * @param {array} [parameters.networkSecurityGroup.defaultSecurityRules] Gets
     * or sets Default security rules of network security group
     * 
     * @param {array} [parameters.networkSecurityGroup.networkInterfaces] Gets
     * collection of references to Network Interfaces
     * 
     * @param {array} [parameters.networkSecurityGroup.subnets] Gets collection of
     * references to subnets
     * 
     * @param {string} [parameters.networkSecurityGroup.resourceGuid] Gets or sets
     * resource guid property of the network security group resource
     * 
     * @param {string} [parameters.networkSecurityGroup.provisioningState] Gets or
     * sets Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.networkSecurityGroup.etag] Gets a unique
     * read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.networkSecurityGroup.id] Resource Id
     * 
     * @param {string} [parameters.networkSecurityGroup.location] Resource location
     * 
     * @param {object} [parameters.networkSecurityGroup.tags] Resource tags
     * 
     * @param {array} [parameters.ipConfigurations] Gets or sets list of
     * IPConfigurations of the NetworkInterface
     * 
     * @param {object} [parameters.dnsSettings] Gets or sets DNS Settings in
     * NetworkInterface
     * 
     * @param {array} [parameters.dnsSettings.dnsServers] Gets or sets list of DNS
     * servers IP addresses
     * 
     * @param {array} [parameters.dnsSettings.appliedDnsServers] Gets or sets list
     * of Applied DNS servers IP addresses
     * 
     * @param {string} [parameters.dnsSettings.internalDnsNameLabel] Gets or sets
     * the Internal DNS name
     * 
     * @param {string} [parameters.dnsSettings.internalFqdn] Gets or sets the
     * internal fqdn.
     * 
     * @param {string} [parameters.dnsSettings.internalDomainNameSuffix] Gets or
     * sets internal domain name suffix of the NIC.
     * 
     * @param {string} [parameters.macAddress] Gets the MAC Address of the network
     * interface
     * 
     * @param {boolean} [parameters.primary] Gets whether this is a primary NIC on
     * a virtual machine
     * 
     * @param {boolean} [parameters.enableIPForwarding] Gets or sets whether
     * IPForwarding is enabled on the NIC
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the network interface resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, networkInterfaceName: string, parameters: models.NetworkInterface, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterface>): void;
    createOrUpdate(resourceGroupName: string, networkInterfaceName: string, parameters: models.NetworkInterface, callback: ServiceCallback<models.NetworkInterface>): void;

    /**
     * The Put NetworkInterface operation creates/updates a networkInterface
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkInterfaceName The name of the network interface.
     * 
     * @param {object} parameters Parameters supplied to the create/update
     * NetworkInterface operation
     * 
     * @param {object} [parameters.virtualMachine] Gets or sets the reference of a
     * VirtualMachine
     * 
     * @param {string} [parameters.virtualMachine.id] Resource Id
     * 
     * @param {object} [parameters.networkSecurityGroup] Gets or sets the
     * reference of the NetworkSecurityGroup resource
     * 
     * @param {array} [parameters.networkSecurityGroup.securityRules] Gets or sets
     * Security rules of network security group
     * 
     * @param {array} [parameters.networkSecurityGroup.defaultSecurityRules] Gets
     * or sets Default security rules of network security group
     * 
     * @param {array} [parameters.networkSecurityGroup.networkInterfaces] Gets
     * collection of references to Network Interfaces
     * 
     * @param {array} [parameters.networkSecurityGroup.subnets] Gets collection of
     * references to subnets
     * 
     * @param {string} [parameters.networkSecurityGroup.resourceGuid] Gets or sets
     * resource guid property of the network security group resource
     * 
     * @param {string} [parameters.networkSecurityGroup.provisioningState] Gets or
     * sets Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.networkSecurityGroup.etag] Gets a unique
     * read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.networkSecurityGroup.id] Resource Id
     * 
     * @param {string} [parameters.networkSecurityGroup.location] Resource location
     * 
     * @param {object} [parameters.networkSecurityGroup.tags] Resource tags
     * 
     * @param {array} [parameters.ipConfigurations] Gets or sets list of
     * IPConfigurations of the NetworkInterface
     * 
     * @param {object} [parameters.dnsSettings] Gets or sets DNS Settings in
     * NetworkInterface
     * 
     * @param {array} [parameters.dnsSettings.dnsServers] Gets or sets list of DNS
     * servers IP addresses
     * 
     * @param {array} [parameters.dnsSettings.appliedDnsServers] Gets or sets list
     * of Applied DNS servers IP addresses
     * 
     * @param {string} [parameters.dnsSettings.internalDnsNameLabel] Gets or sets
     * the Internal DNS name
     * 
     * @param {string} [parameters.dnsSettings.internalFqdn] Gets or sets the
     * internal fqdn.
     * 
     * @param {string} [parameters.dnsSettings.internalDomainNameSuffix] Gets or
     * sets internal domain name suffix of the NIC.
     * 
     * @param {string} [parameters.macAddress] Gets the MAC Address of the network
     * interface
     * 
     * @param {boolean} [parameters.primary] Gets whether this is a primary NIC on
     * a virtual machine
     * 
     * @param {boolean} [parameters.enableIPForwarding] Gets or sets whether
     * IPForwarding is enabled on the NIC
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the network interface resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, networkInterfaceName: string, parameters: models.NetworkInterface, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterface>): void;
    beginCreateOrUpdate(resourceGroupName: string, networkInterfaceName: string, parameters: models.NetworkInterface, callback: ServiceCallback<models.NetworkInterface>): void;

    /**
     * The list network interface operation retrieves information about all
     * network interfaces in a virtual machine from a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualMachineScaleSetName The name of the virtual machine
     * scale set.
     * 
     * @param {string} virtualmachineIndex The virtual machine index.
     * 
     * @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
     */
    listVirtualMachineScaleSetVMNetworkInterfaces(resourceGroupName: string, virtualMachineScaleSetName: string, virtualmachineIndex: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;
    listVirtualMachineScaleSetVMNetworkInterfaces(resourceGroupName: string, virtualMachineScaleSetName: string, virtualmachineIndex: string, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;

    /**
     * The list network interface operation retrieves information about all
     * network interfaces in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualMachineScaleSetName The name of the virtual machine
     * scale set.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listVirtualMachineScaleSetNetworkInterfaces(resourceGroupName: string, virtualMachineScaleSetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;
    listVirtualMachineScaleSetNetworkInterfaces(resourceGroupName: string, virtualMachineScaleSetName: string, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;

    /**
     * The Get ntework interface operation retreives information about the
     * specified network interface in a virtual machine scale set.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualMachineScaleSetName The name of the virtual machine
     * scale set.
     * 
     * @param {string} virtualmachineIndex The virtual machine index.
     * 
     * @param {string} networkInterfaceName The name of the network interface.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] expand references resources.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    getVirtualMachineScaleSetNetworkInterface(resourceGroupName: string, virtualMachineScaleSetName: string, virtualmachineIndex: string, networkInterfaceName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterface>): void;
    getVirtualMachineScaleSetNetworkInterface(resourceGroupName: string, virtualMachineScaleSetName: string, virtualmachineIndex: string, networkInterfaceName: string, callback: ServiceCallback<models.NetworkInterface>): void;

    /**
     * The List networkInterfaces opertion retrieves all the networkInterfaces 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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;
    listAll(callback: ServiceCallback<models.NetworkInterfaceListResult>): void;

    /**
     * The List networkInterfaces opertion retrieves all the networkInterfaces in
     * a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;

    /**
     * The list network interface operation retrieves information about all
     * network interfaces in a virtual machine from a virtual machine scale set.
     *
     * @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
     */
    listVirtualMachineScaleSetVMNetworkInterfacesNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;
    listVirtualMachineScaleSetVMNetworkInterfacesNext(nextPageLink: string, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;

    /**
     * The list network interface operation retrieves information about all
     * network interfaces in a virtual machine scale set.
     *
     * @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
     */
    listVirtualMachineScaleSetNetworkInterfacesNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;
    listVirtualMachineScaleSetNetworkInterfacesNext(nextPageLink: string, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;

    /**
     * The List networkInterfaces opertion retrieves all the networkInterfaces 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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.NetworkInterfaceListResult>): void;

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

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

    /**
     * The Delete NetworkSecurityGroup operation deletes the specifed network
     * security group
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(resourceGroupName: string, networkSecurityGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, networkSecurityGroupName: string, callback: ServiceCallback<void>): void;

    /**
     * The Delete NetworkSecurityGroup operation deletes the specifed network
     * security group
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, networkSecurityGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, networkSecurityGroupName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get NetworkSecurityGroups operation retrieves information about the
     * specified network security group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] expand references resources.
     * 
     * @param {object} [options.customHeaders] 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, networkSecurityGroupName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkSecurityGroup>): void;
    get(resourceGroupName: string, networkSecurityGroupName: string, callback: ServiceCallback<models.NetworkSecurityGroup>): void;

    /**
     * The Put NetworkSecurityGroup operation creates/updates a network security
     * groupin the specified resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {object} parameters Parameters supplied to the create/update Network
     * Security Group operation
     * 
     * @param {array} [parameters.securityRules] Gets or sets Security rules of
     * network security group
     * 
     * @param {array} [parameters.defaultSecurityRules] Gets or sets Default
     * security rules of network security group
     * 
     * @param {array} [parameters.networkInterfaces] Gets collection of references
     * to Network Interfaces
     * 
     * @param {array} [parameters.subnets] Gets collection of references to subnets
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the network security group resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, networkSecurityGroupName: string, parameters: models.NetworkSecurityGroup, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkSecurityGroup>): void;
    createOrUpdate(resourceGroupName: string, networkSecurityGroupName: string, parameters: models.NetworkSecurityGroup, callback: ServiceCallback<models.NetworkSecurityGroup>): void;

    /**
     * The Put NetworkSecurityGroup operation creates/updates a network security
     * groupin the specified resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {object} parameters Parameters supplied to the create/update Network
     * Security Group operation
     * 
     * @param {array} [parameters.securityRules] Gets or sets Security rules of
     * network security group
     * 
     * @param {array} [parameters.defaultSecurityRules] Gets or sets Default
     * security rules of network security group
     * 
     * @param {array} [parameters.networkInterfaces] Gets collection of references
     * to Network Interfaces
     * 
     * @param {array} [parameters.subnets] Gets collection of references to subnets
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the network security group resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, networkSecurityGroupName: string, parameters: models.NetworkSecurityGroup, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkSecurityGroup>): void;
    beginCreateOrUpdate(resourceGroupName: string, networkSecurityGroupName: string, parameters: models.NetworkSecurityGroup, callback: ServiceCallback<models.NetworkSecurityGroup>): void;

    /**
     * The list NetworkSecurityGroups returns all network security groups 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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkSecurityGroupListResult>): void;
    listAll(callback: ServiceCallback<models.NetworkSecurityGroupListResult>): void;

    /**
     * The list NetworkSecurityGroups returns all network security groups in a
     * resource group
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkSecurityGroupListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.NetworkSecurityGroupListResult>): void;

    /**
     * The list NetworkSecurityGroups returns all network security groups 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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkSecurityGroupListResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.NetworkSecurityGroupListResult>): void;

    /**
     * The list NetworkSecurityGroups returns all network security groups 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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NetworkSecurityGroupListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.NetworkSecurityGroupListResult>): void;
}

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

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

    /**
     * The delete publicIpAddress operation deletes the specified publicIpAddress.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} publicIpAddressName The name of the subnet.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, publicIpAddressName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, publicIpAddressName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get publicIpAddress operation retreives information about the specified
     * pubicIpAddress
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} publicIpAddressName The name of the subnet.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] expand references resources.
     * 
     * @param {object} [options.customHeaders] 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, publicIpAddressName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PublicIPAddress>): void;
    get(resourceGroupName: string, publicIpAddressName: string, callback: ServiceCallback<models.PublicIPAddress>): void;

    /**
     * The Put PublicIPAddress operation creates/updates a stable/dynamic PublicIP
     * address
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} publicIpAddressName The name of the publicIpAddress.
     * 
     * @param {object} parameters Parameters supplied to the create/update
     * PublicIPAddress operation
     * 
     * @param {string} [parameters.publicIPAllocationMethod] Gets or sets PublicIP
     * allocation method (Static/Dynamic). Possible values include: 'Static',
     * 'Dynamic'
     * 
     * @param {string} [parameters.publicIPAddressVersion] Gets or sets PublicIP
     * address version (IPv4/IPv6). Possible values include: 'IPv4', 'IPv6'
     * 
     * @param {object} [parameters.ipConfiguration]
     * 
     * @param {string} [parameters.ipConfiguration.privateIPAddress] Gets or sets
     * the privateIPAddress of the IP Configuration
     * 
     * @param {string} [parameters.ipConfiguration.privateIPAllocationMethod] Gets
     * or sets PrivateIP allocation method (Static/Dynamic). Possible values
     * include: 'Static', 'Dynamic'
     * 
     * @param {object} [parameters.ipConfiguration.subnet] Gets or sets the
     * reference of the subnet resource
     * 
     * @param {string} [parameters.ipConfiguration.subnet.addressPrefix] Gets or
     * sets Address prefix for the subnet.
     * 
     * @param {object} [parameters.ipConfiguration.subnet.networkSecurityGroup]
     * Gets or sets the reference of the NetworkSecurityGroup resource
     * 
     * @param {array}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.securityRules]
     * Gets or sets Security rules of network security group
     * 
     * @param {array}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.defaultSecurityRules]
     * Gets or sets Default security rules of network security group
     * 
     * @param {array}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.networkInterfaces]
     * Gets collection of references to Network Interfaces
     * 
     * @param {array}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.subnets] Gets
     * collection of references to subnets
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.resourceGuid] Gets
     * or sets resource guid property of the network security group resource
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.provisioningState]
     * Gets or sets Provisioning state of the PublicIP resource
     * Updating/Deleting/Failed
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.etag] Gets a
     * unique read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.ipConfiguration.subnet.networkSecurityGroup.id]
     * Resource Id
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.location] Resource
     * location
     * 
     * @param {object}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.tags] Resource tags
     * 
     * @param {object} [parameters.ipConfiguration.subnet.routeTable] Gets or sets
     * the reference of the RouteTable resource
     * 
     * @param {array} [parameters.ipConfiguration.subnet.routeTable.routes] Gets
     * or sets Routes in a Route Table
     * 
     * @param {array} [parameters.ipConfiguration.subnet.routeTable.subnets] Gets
     * collection of references to subnets
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.routeTable.provisioningState] Gets or
     * sets Provisioning state of the resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.ipConfiguration.subnet.routeTable.etag] Gets a
     * unique read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.ipConfiguration.subnet.routeTable.id] Resource
     * Id
     * 
     * @param {string} [parameters.ipConfiguration.subnet.routeTable.location]
     * Resource location
     * 
     * @param {object} [parameters.ipConfiguration.subnet.routeTable.tags]
     * Resource tags
     * 
     * @param {array} [parameters.ipConfiguration.subnet.ipConfigurations] Gets
     * array of references to the network interface IP configurations using subnet
     * 
     * @param {string} [parameters.ipConfiguration.subnet.provisioningState] Gets
     * or sets Provisioning state of the PublicIP resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [parameters.ipConfiguration.subnet.name] Gets name of the
     * resource that is unique within a resource group. This name can be used to
     * access the resource
     * 
     * @param {string} [parameters.ipConfiguration.subnet.etag] A unique read-only
     * string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.ipConfiguration.subnet.id] Resource Id
     * 
     * @param {object} [parameters.ipConfiguration.publicIPAddress] Gets or sets
     * the reference of the PublicIP resource
     * 
     * @param {string} [parameters.ipConfiguration.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.ipConfiguration.name] Gets name of the resource
     * that is unique within a resource group. This name can be used to access
     * the resource
     * 
     * @param {string} [parameters.ipConfiguration.etag] A unique read-only string
     * that changes whenever the resource is updated
     * 
     * @param {string} [parameters.ipConfiguration.id] Resource Id
     * 
     * @param {object} [parameters.dnsSettings] Gets or sets FQDN of the DNS
     * record associated with the public IP address
     * 
     * @param {string} [parameters.dnsSettings.domainNameLabel] Gets or sets the
     * Domain name label.The concatenation of the domain name label and the
     * regionalized DNS zone make up the fully qualified domain name associated
     * with the public IP address. If a domain name label is specified, an A DNS
     * record is created for the public IP in the Microsoft Azure DNS system.
     * 
     * @param {string} [parameters.dnsSettings.fqdn] Gets the FQDN, Fully
     * qualified domain name of the A DNS record associated with the public IP.
     * This is the concatenation of the domainNameLabel and the regionalized DNS
     * zone.
     * 
     * @param {string} [parameters.dnsSettings.reverseFqdn] Gets or Sests the
     * Reverse FQDN. A user-visible, fully qualified domain name that resolves to
     * this public IP address. If the reverseFqdn is specified, then a PTR DNS
     * record is created pointing from the IP address in the in-addr.arpa domain
     * to the reverse FQDN.
     * 
     * @param {string} [parameters.ipAddress]
     * 
     * @param {number} [parameters.idleTimeoutInMinutes] Gets or sets the
     * Idletimeout of the public IP address
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the PublicIP resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, publicIpAddressName: string, parameters: models.PublicIPAddress, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PublicIPAddress>): void;
    createOrUpdate(resourceGroupName: string, publicIpAddressName: string, parameters: models.PublicIPAddress, callback: ServiceCallback<models.PublicIPAddress>): void;

    /**
     * The Put PublicIPAddress operation creates/updates a stable/dynamic PublicIP
     * address
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} publicIpAddressName The name of the publicIpAddress.
     * 
     * @param {object} parameters Parameters supplied to the create/update
     * PublicIPAddress operation
     * 
     * @param {string} [parameters.publicIPAllocationMethod] Gets or sets PublicIP
     * allocation method (Static/Dynamic). Possible values include: 'Static',
     * 'Dynamic'
     * 
     * @param {string} [parameters.publicIPAddressVersion] Gets or sets PublicIP
     * address version (IPv4/IPv6). Possible values include: 'IPv4', 'IPv6'
     * 
     * @param {object} [parameters.ipConfiguration]
     * 
     * @param {string} [parameters.ipConfiguration.privateIPAddress] Gets or sets
     * the privateIPAddress of the IP Configuration
     * 
     * @param {string} [parameters.ipConfiguration.privateIPAllocationMethod] Gets
     * or sets PrivateIP allocation method (Static/Dynamic). Possible values
     * include: 'Static', 'Dynamic'
     * 
     * @param {object} [parameters.ipConfiguration.subnet] Gets or sets the
     * reference of the subnet resource
     * 
     * @param {string} [parameters.ipConfiguration.subnet.addressPrefix] Gets or
     * sets Address prefix for the subnet.
     * 
     * @param {object} [parameters.ipConfiguration.subnet.networkSecurityGroup]
     * Gets or sets the reference of the NetworkSecurityGroup resource
     * 
     * @param {array}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.securityRules]
     * Gets or sets Security rules of network security group
     * 
     * @param {array}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.defaultSecurityRules]
     * Gets or sets Default security rules of network security group
     * 
     * @param {array}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.networkInterfaces]
     * Gets collection of references to Network Interfaces
     * 
     * @param {array}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.subnets] Gets
     * collection of references to subnets
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.resourceGuid] Gets
     * or sets resource guid property of the network security group resource
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.provisioningState]
     * Gets or sets Provisioning state of the PublicIP resource
     * Updating/Deleting/Failed
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.etag] Gets a
     * unique read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.ipConfiguration.subnet.networkSecurityGroup.id]
     * Resource Id
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.location] Resource
     * location
     * 
     * @param {object}
     * [parameters.ipConfiguration.subnet.networkSecurityGroup.tags] Resource tags
     * 
     * @param {object} [parameters.ipConfiguration.subnet.routeTable] Gets or sets
     * the reference of the RouteTable resource
     * 
     * @param {array} [parameters.ipConfiguration.subnet.routeTable.routes] Gets
     * or sets Routes in a Route Table
     * 
     * @param {array} [parameters.ipConfiguration.subnet.routeTable.subnets] Gets
     * collection of references to subnets
     * 
     * @param {string}
     * [parameters.ipConfiguration.subnet.routeTable.provisioningState] Gets or
     * sets Provisioning state of the resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.ipConfiguration.subnet.routeTable.etag] Gets a
     * unique read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.ipConfiguration.subnet.routeTable.id] Resource
     * Id
     * 
     * @param {string} [parameters.ipConfiguration.subnet.routeTable.location]
     * Resource location
     * 
     * @param {object} [parameters.ipConfiguration.subnet.routeTable.tags]
     * Resource tags
     * 
     * @param {array} [parameters.ipConfiguration.subnet.ipConfigurations] Gets
     * array of references to the network interface IP configurations using subnet
     * 
     * @param {string} [parameters.ipConfiguration.subnet.provisioningState] Gets
     * or sets Provisioning state of the PublicIP resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [parameters.ipConfiguration.subnet.name] Gets name of the
     * resource that is unique within a resource group. This name can be used to
     * access the resource
     * 
     * @param {string} [parameters.ipConfiguration.subnet.etag] A unique read-only
     * string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.ipConfiguration.subnet.id] Resource Id
     * 
     * @param {object} [parameters.ipConfiguration.publicIPAddress] Gets or sets
     * the reference of the PublicIP resource
     * 
     * @param {string} [parameters.ipConfiguration.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.ipConfiguration.name] Gets name of the resource
     * that is unique within a resource group. This name can be used to access
     * the resource
     * 
     * @param {string} [parameters.ipConfiguration.etag] A unique read-only string
     * that changes whenever the resource is updated
     * 
     * @param {string} [parameters.ipConfiguration.id] Resource Id
     * 
     * @param {object} [parameters.dnsSettings] Gets or sets FQDN of the DNS
     * record associated with the public IP address
     * 
     * @param {string} [parameters.dnsSettings.domainNameLabel] Gets or sets the
     * Domain name label.The concatenation of the domain name label and the
     * regionalized DNS zone make up the fully qualified domain name associated
     * with the public IP address. If a domain name label is specified, an A DNS
     * record is created for the public IP in the Microsoft Azure DNS system.
     * 
     * @param {string} [parameters.dnsSettings.fqdn] Gets the FQDN, Fully
     * qualified domain name of the A DNS record associated with the public IP.
     * This is the concatenation of the domainNameLabel and the regionalized DNS
     * zone.
     * 
     * @param {string} [parameters.dnsSettings.reverseFqdn] Gets or Sests the
     * Reverse FQDN. A user-visible, fully qualified domain name that resolves to
     * this public IP address. If the reverseFqdn is specified, then a PTR DNS
     * record is created pointing from the IP address in the in-addr.arpa domain
     * to the reverse FQDN.
     * 
     * @param {string} [parameters.ipAddress]
     * 
     * @param {number} [parameters.idleTimeoutInMinutes] Gets or sets the
     * Idletimeout of the public IP address
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the PublicIP resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, publicIpAddressName: string, parameters: models.PublicIPAddress, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PublicIPAddress>): void;
    beginCreateOrUpdate(resourceGroupName: string, publicIpAddressName: string, parameters: models.PublicIPAddress, callback: ServiceCallback<models.PublicIPAddress>): void;

    /**
     * The List publicIpAddress opertion retrieves all the publicIpAddresses 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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PublicIPAddressListResult>): void;
    listAll(callback: ServiceCallback<models.PublicIPAddressListResult>): void;

    /**
     * The List publicIpAddress opertion retrieves all the publicIpAddresses in a
     * resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PublicIPAddressListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.PublicIPAddressListResult>): void;

    /**
     * The List publicIpAddress opertion retrieves all the publicIpAddresses 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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PublicIPAddressListResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.PublicIPAddressListResult>): void;

    /**
     * The List publicIpAddress opertion retrieves all the publicIpAddresses 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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PublicIPAddressListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.PublicIPAddressListResult>): void;
}

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

    /**
     * The Delete RouteTable operation deletes the specifed Route Table
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @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, routeTableName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, routeTableName: string, callback: ServiceCallback<void>): void;

    /**
     * The Delete RouteTable operation deletes the specifed Route Table
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, routeTableName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, routeTableName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get RouteTables operation retrieves information about the specified
     * route table.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] expand references resources.
     * 
     * @param {object} [options.customHeaders] 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, routeTableName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RouteTable>): void;
    get(resourceGroupName: string, routeTableName: string, callback: ServiceCallback<models.RouteTable>): void;

    /**
     * The Put RouteTable operation creates/updates a route tablein the specified
     * resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {object} parameters Parameters supplied to the create/update Route
     * Table operation
     * 
     * @param {array} [parameters.routes] Gets or sets Routes in a Route Table
     * 
     * @param {array} [parameters.subnets] Gets collection of references to subnets
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, routeTableName: string, parameters: models.RouteTable, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RouteTable>): void;
    createOrUpdate(resourceGroupName: string, routeTableName: string, parameters: models.RouteTable, callback: ServiceCallback<models.RouteTable>): void;

    /**
     * The Put RouteTable operation creates/updates a route tablein the specified
     * resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {object} parameters Parameters supplied to the create/update Route
     * Table operation
     * 
     * @param {array} [parameters.routes] Gets or sets Routes in a Route Table
     * 
     * @param {array} [parameters.subnets] Gets collection of references to subnets
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, routeTableName: string, parameters: models.RouteTable, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RouteTable>): void;
    beginCreateOrUpdate(resourceGroupName: string, routeTableName: string, parameters: models.RouteTable, callback: ServiceCallback<models.RouteTable>): void;

    /**
     * The list RouteTables returns all route tables in a resource group
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RouteTableListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.RouteTableListResult>): void;

    /**
     * The list RouteTables returns all route tables 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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RouteTableListResult>): void;
    listAll(callback: ServiceCallback<models.RouteTableListResult>): void;

    /**
     * The list RouteTables returns all route tables 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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RouteTableListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.RouteTableListResult>): void;

    /**
     * The list RouteTables returns all route tables 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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RouteTableListResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.RouteTableListResult>): void;
}

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

    /**
     * The delete route operation deletes the specified route from a route table.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {string} routeName The name of the route.
     * 
     * @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, routeTableName: string, routeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, routeTableName: string, routeName: string, callback: ServiceCallback<void>): void;

    /**
     * The delete route operation deletes the specified route from a route table.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {string} routeName The name of the route.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, routeTableName: string, routeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, routeTableName: string, routeName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get route operation retreives information about the specified route
     * from the route table.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {string} routeName The name of the route.
     * 
     * @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, routeTableName: string, routeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Route>): void;
    get(resourceGroupName: string, routeTableName: string, routeName: string, callback: ServiceCallback<models.Route>): void;

    /**
     * The Put route operation creates/updates a route in the specified route table
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {string} routeName The name of the route.
     * 
     * @param {object} routeParameters Parameters supplied to the create/update
     * routeoperation
     * 
     * @param {string} [routeParameters.addressPrefix] Gets or sets the
     * destination CIDR to which the route applies.
     * 
     * @param {string} [routeParameters.nextHopType] Gets or sets the type of
     * Azure hop the packet should be sent to. Possible values include:
     * 'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance',
     * 'None'
     * 
     * @param {string} [routeParameters.nextHopIpAddress] Gets or sets the IP
     * address packets should be forwarded to. Next hop values are only allowed
     * in routes where the next hop type is VirtualAppliance.
     * 
     * @param {string} [routeParameters.provisioningState] Gets or sets
     * Provisioning state of the resource Updating/Deleting/Failed
     * 
     * @param {string} [routeParameters.name] Gets name of the resource that is
     * unique within a resource group. This name can be used to access the
     * resource
     * 
     * @param {string} [routeParameters.etag] A unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [routeParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, routeTableName: string, routeName: string, routeParameters: models.Route, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Route>): void;
    createOrUpdate(resourceGroupName: string, routeTableName: string, routeName: string, routeParameters: models.Route, callback: ServiceCallback<models.Route>): void;

    /**
     * The Put route operation creates/updates a route in the specified route table
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {string} routeName The name of the route.
     * 
     * @param {object} routeParameters Parameters supplied to the create/update
     * routeoperation
     * 
     * @param {string} [routeParameters.addressPrefix] Gets or sets the
     * destination CIDR to which the route applies.
     * 
     * @param {string} [routeParameters.nextHopType] Gets or sets the type of
     * Azure hop the packet should be sent to. Possible values include:
     * 'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance',
     * 'None'
     * 
     * @param {string} [routeParameters.nextHopIpAddress] Gets or sets the IP
     * address packets should be forwarded to. Next hop values are only allowed
     * in routes where the next hop type is VirtualAppliance.
     * 
     * @param {string} [routeParameters.provisioningState] Gets or sets
     * Provisioning state of the resource Updating/Deleting/Failed
     * 
     * @param {string} [routeParameters.name] Gets name of the resource that is
     * unique within a resource group. This name can be used to access the
     * resource
     * 
     * @param {string} [routeParameters.etag] A unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [routeParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, routeTableName: string, routeName: string, routeParameters: models.Route, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Route>): void;
    beginCreateOrUpdate(resourceGroupName: string, routeTableName: string, routeName: string, routeParameters: models.Route, callback: ServiceCallback<models.Route>): void;

    /**
     * The List network security rule opertion retrieves all the routes in a route
     * table.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} routeTableName The name of the route table.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, routeTableName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RouteListResult>): void;
    list(resourceGroupName: string, routeTableName: string, callback: ServiceCallback<models.RouteListResult>): void;

    /**
     * The List network security rule opertion retrieves all the routes in a route
     * table.
     *
     * @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.RouteListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.RouteListResult>): void;
}

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

    /**
     * The delete network security rule operation deletes the specified network
     * security rule.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {string} securityRuleName The name of the security rule.
     * 
     * @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, networkSecurityGroupName: string, securityRuleName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, networkSecurityGroupName: string, securityRuleName: string, callback: ServiceCallback<void>): void;

    /**
     * The delete network security rule operation deletes the specified network
     * security rule.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {string} securityRuleName The name of the security rule.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, networkSecurityGroupName: string, securityRuleName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, networkSecurityGroupName: string, securityRuleName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get NetworkSecurityRule operation retreives information about the
     * specified network security rule.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {string} securityRuleName The name of the security rule.
     * 
     * @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, networkSecurityGroupName: string, securityRuleName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SecurityRule>): void;
    get(resourceGroupName: string, networkSecurityGroupName: string, securityRuleName: string, callback: ServiceCallback<models.SecurityRule>): void;

    /**
     * The Put network security rule operation creates/updates a security rule in
     * the specified network security group
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {string} securityRuleName The name of the security rule.
     * 
     * @param {object} securityRuleParameters Parameters supplied to the
     * create/update network security rule operation
     * 
     * @param {string} [securityRuleParameters.description] Gets or sets a
     * description for this rule. Restricted to 140 chars.
     * 
     * @param {string} [securityRuleParameters.protocol] Gets or sets Network
     * protocol this rule applies to. Can be Tcp, Udp or All(*). Possible values
     * include: 'Tcp', 'Udp', '*'
     * 
     * @param {string} [securityRuleParameters.sourcePortRange] Gets or sets
     * Source Port or Range. Integer or range between 0 and 65535. Asterix '*'
     * can also be used to match all ports.
     * 
     * @param {string} [securityRuleParameters.destinationPortRange] Gets or sets
     * Destination Port or Range. Integer or range between 0 and 65535. Asterix
     * '*' can also be used to match all ports.
     * 
     * @param {string} [securityRuleParameters.sourceAddressPrefix] Gets or sets
     * source address prefix. CIDR or source IP range. Asterix '*' can also be
     * used to match all source IPs. Default tags such as 'VirtualNetwork',
     * 'AzureLoadBalancer' and 'Internet' can also be used. If this is an ingress
     * rule, specifies where network traffic originates from.
     * 
     * @param {string} [securityRuleParameters.destinationAddressPrefix] Gets or
     * sets destination address prefix. CIDR or source IP range. Asterix '*' can
     * also be used to match all source IPs. Default tags such as
     * 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
     * 
     * @param {string} [securityRuleParameters.access] Gets or sets network
     * traffic is allowed or denied. Possible values are 'Allow' and 'Deny'.
     * Possible values include: 'Allow', 'Deny'
     * 
     * @param {number} [securityRuleParameters.priority] Gets or sets the priority
     * of the rule. The value can be between 100 and 4096. The priority number
     * must be unique for each rule in the collection. The lower the priority
     * number, the higher the priority of the rule.
     * 
     * @param {string} [securityRuleParameters.direction] Gets or sets the
     * direction of the rule.InBound or Outbound. The direction specifies if rule
     * will be evaluated on incoming or outcoming traffic. Possible values
     * include: 'Inbound', 'Outbound'
     * 
     * @param {string} [securityRuleParameters.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [securityRuleParameters.name] Gets name of the resource
     * that is unique within a resource group. This name can be used to access
     * the resource
     * 
     * @param {string} [securityRuleParameters.etag] A unique read-only string
     * that changes whenever the resource is updated
     * 
     * @param {string} [securityRuleParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, networkSecurityGroupName: string, securityRuleName: string, securityRuleParameters: models.SecurityRule, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SecurityRule>): void;
    createOrUpdate(resourceGroupName: string, networkSecurityGroupName: string, securityRuleName: string, securityRuleParameters: models.SecurityRule, callback: ServiceCallback<models.SecurityRule>): void;

    /**
     * The Put network security rule operation creates/updates a security rule in
     * the specified network security group
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {string} securityRuleName The name of the security rule.
     * 
     * @param {object} securityRuleParameters Parameters supplied to the
     * create/update network security rule operation
     * 
     * @param {string} [securityRuleParameters.description] Gets or sets a
     * description for this rule. Restricted to 140 chars.
     * 
     * @param {string} [securityRuleParameters.protocol] Gets or sets Network
     * protocol this rule applies to. Can be Tcp, Udp or All(*). Possible values
     * include: 'Tcp', 'Udp', '*'
     * 
     * @param {string} [securityRuleParameters.sourcePortRange] Gets or sets
     * Source Port or Range. Integer or range between 0 and 65535. Asterix '*'
     * can also be used to match all ports.
     * 
     * @param {string} [securityRuleParameters.destinationPortRange] Gets or sets
     * Destination Port or Range. Integer or range between 0 and 65535. Asterix
     * '*' can also be used to match all ports.
     * 
     * @param {string} [securityRuleParameters.sourceAddressPrefix] Gets or sets
     * source address prefix. CIDR or source IP range. Asterix '*' can also be
     * used to match all source IPs. Default tags such as 'VirtualNetwork',
     * 'AzureLoadBalancer' and 'Internet' can also be used. If this is an ingress
     * rule, specifies where network traffic originates from.
     * 
     * @param {string} [securityRuleParameters.destinationAddressPrefix] Gets or
     * sets destination address prefix. CIDR or source IP range. Asterix '*' can
     * also be used to match all source IPs. Default tags such as
     * 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
     * 
     * @param {string} [securityRuleParameters.access] Gets or sets network
     * traffic is allowed or denied. Possible values are 'Allow' and 'Deny'.
     * Possible values include: 'Allow', 'Deny'
     * 
     * @param {number} [securityRuleParameters.priority] Gets or sets the priority
     * of the rule. The value can be between 100 and 4096. The priority number
     * must be unique for each rule in the collection. The lower the priority
     * number, the higher the priority of the rule.
     * 
     * @param {string} [securityRuleParameters.direction] Gets or sets the
     * direction of the rule.InBound or Outbound. The direction specifies if rule
     * will be evaluated on incoming or outcoming traffic. Possible values
     * include: 'Inbound', 'Outbound'
     * 
     * @param {string} [securityRuleParameters.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [securityRuleParameters.name] Gets name of the resource
     * that is unique within a resource group. This name can be used to access
     * the resource
     * 
     * @param {string} [securityRuleParameters.etag] A unique read-only string
     * that changes whenever the resource is updated
     * 
     * @param {string} [securityRuleParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, networkSecurityGroupName: string, securityRuleName: string, securityRuleParameters: models.SecurityRule, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SecurityRule>): void;
    beginCreateOrUpdate(resourceGroupName: string, networkSecurityGroupName: string, securityRuleName: string, securityRuleParameters: models.SecurityRule, callback: ServiceCallback<models.SecurityRule>): void;

    /**
     * The List network security rule opertion retrieves all the security rules in
     * a network security group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} networkSecurityGroupName The name of the network security
     * group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, networkSecurityGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SecurityRuleListResult>): void;
    list(resourceGroupName: string, networkSecurityGroupName: string, callback: ServiceCallback<models.SecurityRuleListResult>): void;

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

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

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

    /**
     * The delete subnet operation deletes the specified subnet.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {string} subnetName The name of the subnet.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, virtualNetworkName: string, subnetName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, virtualNetworkName: string, subnetName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get subnet operation retreives information about the specified subnet.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {string} subnetName The name of the subnet.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] expand references resources.
     * 
     * @param {object} [options.customHeaders] 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, virtualNetworkName: string, subnetName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Subnet>): void;
    get(resourceGroupName: string, virtualNetworkName: string, subnetName: string, callback: ServiceCallback<models.Subnet>): void;

    /**
     * The Put Subnet operation creates/updates a subnet in thespecified virtual
     * network
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {string} subnetName The name of the subnet.
     * 
     * @param {object} subnetParameters Parameters supplied to the create/update
     * Subnet operation
     * 
     * @param {string} [subnetParameters.addressPrefix] Gets or sets Address
     * prefix for the subnet.
     * 
     * @param {object} [subnetParameters.networkSecurityGroup] Gets or sets the
     * reference of the NetworkSecurityGroup resource
     * 
     * @param {array} [subnetParameters.networkSecurityGroup.securityRules] Gets
     * or sets Security rules of network security group
     * 
     * @param {array} [subnetParameters.networkSecurityGroup.defaultSecurityRules]
     * Gets or sets Default security rules of network security group
     * 
     * @param {array} [subnetParameters.networkSecurityGroup.networkInterfaces]
     * Gets collection of references to Network Interfaces
     * 
     * @param {array} [subnetParameters.networkSecurityGroup.subnets] Gets
     * collection of references to subnets
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.resourceGuid] Gets
     * or sets resource guid property of the network security group resource
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.provisioningState]
     * Gets or sets Provisioning state of the PublicIP resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.etag] Gets a unique
     * read-only string that changes whenever the resource is updated
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.id] Resource Id
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.location] Resource
     * location
     * 
     * @param {object} [subnetParameters.networkSecurityGroup.tags] Resource tags
     * 
     * @param {object} [subnetParameters.routeTable] Gets or sets the reference of
     * the RouteTable resource
     * 
     * @param {array} [subnetParameters.routeTable.routes] Gets or sets Routes in
     * a Route Table
     * 
     * @param {array} [subnetParameters.routeTable.subnets] Gets collection of
     * references to subnets
     * 
     * @param {string} [subnetParameters.routeTable.provisioningState] Gets or
     * sets Provisioning state of the resource Updating/Deleting/Failed
     * 
     * @param {string} [subnetParameters.routeTable.etag] Gets a unique read-only
     * string that changes whenever the resource is updated
     * 
     * @param {string} [subnetParameters.routeTable.id] Resource Id
     * 
     * @param {string} [subnetParameters.routeTable.location] Resource location
     * 
     * @param {object} [subnetParameters.routeTable.tags] Resource tags
     * 
     * @param {array} [subnetParameters.ipConfigurations] Gets array of references
     * to the network interface IP configurations using subnet
     * 
     * @param {string} [subnetParameters.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [subnetParameters.name] Gets name of the resource that is
     * unique within a resource group. This name can be used to access the
     * resource
     * 
     * @param {string} [subnetParameters.etag] A unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [subnetParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, virtualNetworkName: string, subnetName: string, subnetParameters: models.Subnet, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Subnet>): void;
    createOrUpdate(resourceGroupName: string, virtualNetworkName: string, subnetName: string, subnetParameters: models.Subnet, callback: ServiceCallback<models.Subnet>): void;

    /**
     * The Put Subnet operation creates/updates a subnet in thespecified virtual
     * network
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {string} subnetName The name of the subnet.
     * 
     * @param {object} subnetParameters Parameters supplied to the create/update
     * Subnet operation
     * 
     * @param {string} [subnetParameters.addressPrefix] Gets or sets Address
     * prefix for the subnet.
     * 
     * @param {object} [subnetParameters.networkSecurityGroup] Gets or sets the
     * reference of the NetworkSecurityGroup resource
     * 
     * @param {array} [subnetParameters.networkSecurityGroup.securityRules] Gets
     * or sets Security rules of network security group
     * 
     * @param {array} [subnetParameters.networkSecurityGroup.defaultSecurityRules]
     * Gets or sets Default security rules of network security group
     * 
     * @param {array} [subnetParameters.networkSecurityGroup.networkInterfaces]
     * Gets collection of references to Network Interfaces
     * 
     * @param {array} [subnetParameters.networkSecurityGroup.subnets] Gets
     * collection of references to subnets
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.resourceGuid] Gets
     * or sets resource guid property of the network security group resource
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.provisioningState]
     * Gets or sets Provisioning state of the PublicIP resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.etag] Gets a unique
     * read-only string that changes whenever the resource is updated
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.id] Resource Id
     * 
     * @param {string} [subnetParameters.networkSecurityGroup.location] Resource
     * location
     * 
     * @param {object} [subnetParameters.networkSecurityGroup.tags] Resource tags
     * 
     * @param {object} [subnetParameters.routeTable] Gets or sets the reference of
     * the RouteTable resource
     * 
     * @param {array} [subnetParameters.routeTable.routes] Gets or sets Routes in
     * a Route Table
     * 
     * @param {array} [subnetParameters.routeTable.subnets] Gets collection of
     * references to subnets
     * 
     * @param {string} [subnetParameters.routeTable.provisioningState] Gets or
     * sets Provisioning state of the resource Updating/Deleting/Failed
     * 
     * @param {string} [subnetParameters.routeTable.etag] Gets a unique read-only
     * string that changes whenever the resource is updated
     * 
     * @param {string} [subnetParameters.routeTable.id] Resource Id
     * 
     * @param {string} [subnetParameters.routeTable.location] Resource location
     * 
     * @param {object} [subnetParameters.routeTable.tags] Resource tags
     * 
     * @param {array} [subnetParameters.ipConfigurations] Gets array of references
     * to the network interface IP configurations using subnet
     * 
     * @param {string} [subnetParameters.provisioningState] Gets or sets
     * Provisioning state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [subnetParameters.name] Gets name of the resource that is
     * unique within a resource group. This name can be used to access the
     * resource
     * 
     * @param {string} [subnetParameters.etag] A unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [subnetParameters.id] Resource Id
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, virtualNetworkName: string, subnetName: string, subnetParameters: models.Subnet, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Subnet>): void;
    beginCreateOrUpdate(resourceGroupName: string, virtualNetworkName: string, subnetName: string, subnetParameters: models.Subnet, callback: ServiceCallback<models.Subnet>): void;

    /**
     * The List subnets opertion retrieves all the subnets in a virtual network.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, virtualNetworkName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SubnetListResult>): void;
    list(resourceGroupName: string, virtualNetworkName: string, callback: ServiceCallback<models.SubnetListResult>): void;

    /**
     * The List subnets opertion retrieves all the subnets in a virtual network.
     *
     * @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.SubnetListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.SubnetListResult>): void;
}

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

    /**
     * Lists compute usages for a subscription.
     *
     * @param {string} location The location upon which resource usage is queried.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(location: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.UsagesListResult>): void;
    list(location: string, callback: ServiceCallback<models.UsagesListResult>): void;

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

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

    /**
     * The Put VirtualNetworkGatewayConnection operation creates/updates a virtual
     * network gateway connection in the specified resource group through Network
     * resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayConnectionName The name of the virtual
     * network gateway conenction.
     * 
     * @param {object} parameters Parameters supplied to the Begin Create or
     * update Virtual Network Gateway connection operation through Network
     * resource provider.
     * 
     * @param {string} [parameters.authorizationKey] The authorizationKey.
     * 
     * @param {object} [parameters.virtualNetworkGateway1]
     * 
     * @param {object} [parameters.virtualNetworkGateway2]
     * 
     * @param {array} [parameters.virtualNetworkGateway2.ipConfigurations]
     * IpConfigurations for Virtual network gateway.
     * 
     * @param {string} [parameters.virtualNetworkGateway2.gatewayType] The type of
     * this virtual network gateway. Possible values include: 'Vpn',
     * 'ExpressRoute'
     * 
     * @param {string} [parameters.virtualNetworkGateway2.vpnType] The type of
     * this virtual network gateway. Possible values include: 'PolicyBased',
     * 'RouteBased'
     * 
     * @param {boolean} [parameters.virtualNetworkGateway2.enableBgp] EnableBgp
     * Flag
     * 
     * @param {object} [parameters.virtualNetworkGateway2.gatewayDefaultSite] Gets
     * or sets the reference of the LocalNetworkGateway resource which represents
     * Local network site having default routes. Assign Null value in case of
     * removing existing default site setting.
     * 
     * @param {object} [parameters.virtualNetworkGateway2.sku] Gets or sets the
     * reference of the VirtualNetworkGatewaySku resource which represents the
     * sku selected for Virtual network gateway.
     * 
     * @param {string} [parameters.virtualNetworkGateway2.sku.name] Gateway sku
     * name -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {string} [parameters.virtualNetworkGateway2.sku.tier] Gateway sku
     * tier -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {number} [parameters.virtualNetworkGateway2.sku.capacity] The
     * capacity
     * 
     * @param {object} [parameters.virtualNetworkGateway2.vpnClientConfiguration]
     * Gets or sets the reference of the VpnClientConfiguration resource which
     * represents the P2S VpnClient configurations.
     * 
     * @param {object}
     * [parameters.virtualNetworkGateway2.vpnClientConfiguration.vpnClientAddressPool]
     * Gets or sets the reference of the Address space resource which represents
     * Address space for P2S VpnClient.
     * 
     * @param {array}
     * [parameters.virtualNetworkGateway2.vpnClientConfiguration.vpnClientRootCertificates]
     * VpnClientRootCertificate for Virtual network gateway.
     * 
     * @param {array}
     * [parameters.virtualNetworkGateway2.vpnClientConfiguration.vpnClientRevokedCertificates]
     * VpnClientRevokedCertificate for Virtual network gateway.
     * 
     * @param {object} [parameters.virtualNetworkGateway2.bgpSettings] Virtual
     * network gateway's BGP speaker settings
     * 
     * @param {string} [parameters.virtualNetworkGateway2.resourceGuid] Gets or
     * sets resource guid property of the VirtualNetworkGateway resource
     * 
     * @param {string} [parameters.virtualNetworkGateway2.provisioningState] Gets
     * or sets Provisioning state of the VirtualNetworkGateway resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [parameters.virtualNetworkGateway2.etag] Gets a unique
     * read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.virtualNetworkGateway2.id] Resource Id
     * 
     * @param {string} [parameters.virtualNetworkGateway2.location] Resource
     * location
     * 
     * @param {object} [parameters.virtualNetworkGateway2.tags] Resource tags
     * 
     * @param {object} [parameters.localNetworkGateway2]
     * 
     * @param {object} [parameters.localNetworkGateway2.localNetworkAddressSpace]
     * Local network site Address space
     * 
     * @param {array}
     * [parameters.localNetworkGateway2.localNetworkAddressSpace.addressPrefixes]
     * Gets or sets List of address blocks reserved for this virtual network in
     * CIDR notation
     * 
     * @param {string} [parameters.localNetworkGateway2.gatewayIpAddress] IP
     * address of local network gateway.
     * 
     * @param {object} [parameters.localNetworkGateway2.bgpSettings] Local network
     * gateway's BGP speaker settings
     * 
     * @param {number} [parameters.localNetworkGateway2.bgpSettings.asn] Gets or
     * sets this BGP speaker's ASN
     * 
     * @param {string}
     * [parameters.localNetworkGateway2.bgpSettings.bgpPeeringAddress] Gets or
     * sets the BGP peering address and BGP identifier of this BGP speaker
     * 
     * @param {number} [parameters.localNetworkGateway2.bgpSettings.peerWeight]
     * Gets or sets the weight added to routes learned from this BGP speaker
     * 
     * @param {string} [parameters.localNetworkGateway2.resourceGuid] Gets or sets
     * resource guid property of the LocalNetworkGateway resource
     * 
     * @param {string} [parameters.localNetworkGateway2.provisioningState] Gets or
     * sets Provisioning state of the LocalNetworkGateway resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [parameters.localNetworkGateway2.etag] Gets a unique
     * read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.localNetworkGateway2.id] Resource Id
     * 
     * @param {string} [parameters.localNetworkGateway2.location] Resource location
     * 
     * @param {object} [parameters.localNetworkGateway2.tags] Resource tags
     * 
     * @param {string} [parameters.connectionType] Gateway connection type
     * -Ipsec/Dedicated/VpnClient/Vnet2Vnet. Possible values include: 'IPsec',
     * 'Vnet2Vnet', 'ExpressRoute', 'VPNClient'
     * 
     * @param {number} [parameters.routingWeight] The Routing weight.
     * 
     * @param {string} [parameters.sharedKey] The Ipsec share key.
     * 
     * @param {string} [parameters.connectionStatus] Virtual network Gateway
     * connection status. Possible values include: 'Unknown', 'Connecting',
     * 'Connected', 'NotConnected'
     * 
     * @param {number} [parameters.egressBytesTransferred] The Egress Bytes
     * Transferred in this connection
     * 
     * @param {number} [parameters.ingressBytesTransferred] The Ingress Bytes
     * Transferred in this connection
     * 
     * @param {object} [parameters.peer] The reference to peerings resource.
     * 
     * @param {string} [parameters.peer.id] Resource Id
     * 
     * @param {boolean} [parameters.enableBgp] EnableBgp Flag
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the VirtualNetworkGatewayConnection resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the VirtualNetworkGatewayConnection resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, parameters: models.VirtualNetworkGatewayConnection, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGatewayConnection>): void;
    createOrUpdate(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, parameters: models.VirtualNetworkGatewayConnection, callback: ServiceCallback<models.VirtualNetworkGatewayConnection>): void;

    /**
     * The Put VirtualNetworkGatewayConnection operation creates/updates a virtual
     * network gateway connection in the specified resource group through Network
     * resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayConnectionName The name of the virtual
     * network gateway conenction.
     * 
     * @param {object} parameters Parameters supplied to the Begin Create or
     * update Virtual Network Gateway connection operation through Network
     * resource provider.
     * 
     * @param {string} [parameters.authorizationKey] The authorizationKey.
     * 
     * @param {object} [parameters.virtualNetworkGateway1]
     * 
     * @param {object} [parameters.virtualNetworkGateway2]
     * 
     * @param {array} [parameters.virtualNetworkGateway2.ipConfigurations]
     * IpConfigurations for Virtual network gateway.
     * 
     * @param {string} [parameters.virtualNetworkGateway2.gatewayType] The type of
     * this virtual network gateway. Possible values include: 'Vpn',
     * 'ExpressRoute'
     * 
     * @param {string} [parameters.virtualNetworkGateway2.vpnType] The type of
     * this virtual network gateway. Possible values include: 'PolicyBased',
     * 'RouteBased'
     * 
     * @param {boolean} [parameters.virtualNetworkGateway2.enableBgp] EnableBgp
     * Flag
     * 
     * @param {object} [parameters.virtualNetworkGateway2.gatewayDefaultSite] Gets
     * or sets the reference of the LocalNetworkGateway resource which represents
     * Local network site having default routes. Assign Null value in case of
     * removing existing default site setting.
     * 
     * @param {object} [parameters.virtualNetworkGateway2.sku] Gets or sets the
     * reference of the VirtualNetworkGatewaySku resource which represents the
     * sku selected for Virtual network gateway.
     * 
     * @param {string} [parameters.virtualNetworkGateway2.sku.name] Gateway sku
     * name -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {string} [parameters.virtualNetworkGateway2.sku.tier] Gateway sku
     * tier -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {number} [parameters.virtualNetworkGateway2.sku.capacity] The
     * capacity
     * 
     * @param {object} [parameters.virtualNetworkGateway2.vpnClientConfiguration]
     * Gets or sets the reference of the VpnClientConfiguration resource which
     * represents the P2S VpnClient configurations.
     * 
     * @param {object}
     * [parameters.virtualNetworkGateway2.vpnClientConfiguration.vpnClientAddressPool]
     * Gets or sets the reference of the Address space resource which represents
     * Address space for P2S VpnClient.
     * 
     * @param {array}
     * [parameters.virtualNetworkGateway2.vpnClientConfiguration.vpnClientRootCertificates]
     * VpnClientRootCertificate for Virtual network gateway.
     * 
     * @param {array}
     * [parameters.virtualNetworkGateway2.vpnClientConfiguration.vpnClientRevokedCertificates]
     * VpnClientRevokedCertificate for Virtual network gateway.
     * 
     * @param {object} [parameters.virtualNetworkGateway2.bgpSettings] Virtual
     * network gateway's BGP speaker settings
     * 
     * @param {string} [parameters.virtualNetworkGateway2.resourceGuid] Gets or
     * sets resource guid property of the VirtualNetworkGateway resource
     * 
     * @param {string} [parameters.virtualNetworkGateway2.provisioningState] Gets
     * or sets Provisioning state of the VirtualNetworkGateway resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [parameters.virtualNetworkGateway2.etag] Gets a unique
     * read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.virtualNetworkGateway2.id] Resource Id
     * 
     * @param {string} [parameters.virtualNetworkGateway2.location] Resource
     * location
     * 
     * @param {object} [parameters.virtualNetworkGateway2.tags] Resource tags
     * 
     * @param {object} [parameters.localNetworkGateway2]
     * 
     * @param {object} [parameters.localNetworkGateway2.localNetworkAddressSpace]
     * Local network site Address space
     * 
     * @param {array}
     * [parameters.localNetworkGateway2.localNetworkAddressSpace.addressPrefixes]
     * Gets or sets List of address blocks reserved for this virtual network in
     * CIDR notation
     * 
     * @param {string} [parameters.localNetworkGateway2.gatewayIpAddress] IP
     * address of local network gateway.
     * 
     * @param {object} [parameters.localNetworkGateway2.bgpSettings] Local network
     * gateway's BGP speaker settings
     * 
     * @param {number} [parameters.localNetworkGateway2.bgpSettings.asn] Gets or
     * sets this BGP speaker's ASN
     * 
     * @param {string}
     * [parameters.localNetworkGateway2.bgpSettings.bgpPeeringAddress] Gets or
     * sets the BGP peering address and BGP identifier of this BGP speaker
     * 
     * @param {number} [parameters.localNetworkGateway2.bgpSettings.peerWeight]
     * Gets or sets the weight added to routes learned from this BGP speaker
     * 
     * @param {string} [parameters.localNetworkGateway2.resourceGuid] Gets or sets
     * resource guid property of the LocalNetworkGateway resource
     * 
     * @param {string} [parameters.localNetworkGateway2.provisioningState] Gets or
     * sets Provisioning state of the LocalNetworkGateway resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [parameters.localNetworkGateway2.etag] Gets a unique
     * read-only string that changes whenever the resource is updated
     * 
     * @param {string} [parameters.localNetworkGateway2.id] Resource Id
     * 
     * @param {string} [parameters.localNetworkGateway2.location] Resource location
     * 
     * @param {object} [parameters.localNetworkGateway2.tags] Resource tags
     * 
     * @param {string} [parameters.connectionType] Gateway connection type
     * -Ipsec/Dedicated/VpnClient/Vnet2Vnet. Possible values include: 'IPsec',
     * 'Vnet2Vnet', 'ExpressRoute', 'VPNClient'
     * 
     * @param {number} [parameters.routingWeight] The Routing weight.
     * 
     * @param {string} [parameters.sharedKey] The Ipsec share key.
     * 
     * @param {string} [parameters.connectionStatus] Virtual network Gateway
     * connection status. Possible values include: 'Unknown', 'Connecting',
     * 'Connected', 'NotConnected'
     * 
     * @param {number} [parameters.egressBytesTransferred] The Egress Bytes
     * Transferred in this connection
     * 
     * @param {number} [parameters.ingressBytesTransferred] The Ingress Bytes
     * Transferred in this connection
     * 
     * @param {object} [parameters.peer] The reference to peerings resource.
     * 
     * @param {string} [parameters.peer.id] Resource Id
     * 
     * @param {boolean} [parameters.enableBgp] EnableBgp Flag
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the VirtualNetworkGatewayConnection resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the VirtualNetworkGatewayConnection resource
     * Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, parameters: models.VirtualNetworkGatewayConnection, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGatewayConnection>): void;
    beginCreateOrUpdate(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, parameters: models.VirtualNetworkGatewayConnection, callback: ServiceCallback<models.VirtualNetworkGatewayConnection>): void;

    /**
     * The Get VirtualNetworkGatewayConnection operation retrieves information
     * about the specified virtual network gateway connection through Network
     * resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayConnectionName The name of the virtual
     * network gateway connection.
     * 
     * @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, virtualNetworkGatewayConnectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGatewayConnection>): void;
    get(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, callback: ServiceCallback<models.VirtualNetworkGatewayConnection>): void;

    /**
     * The Delete VirtualNetworkGatewayConnection operation deletes the specifed
     * virtual network Gateway connection through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayConnectionName The name of the virtual
     * network gateway connection.
     * 
     * @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, virtualNetworkGatewayConnectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, callback: ServiceCallback<void>): void;

    /**
     * The Delete VirtualNetworkGatewayConnection operation deletes the specifed
     * virtual network Gateway connection through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayConnectionName The name of the virtual
     * network gateway connection.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get VirtualNetworkGatewayConnectionSharedKey operation retrieves
     * information about the specified virtual network gateway connection shared
     * key through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} connectionSharedKeyName The virtual network gateway
     * connection shared key name.
     * 
     * @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
     */
    getSharedKey(resourceGroupName: string, connectionSharedKeyName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ConnectionSharedKeyResult>): void;
    getSharedKey(resourceGroupName: string, connectionSharedKeyName: string, callback: ServiceCallback<models.ConnectionSharedKeyResult>): void;

    /**
     * The List VirtualNetworkGatewayConnections operation retrieves all the
     * virtual network gateways connections created.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGatewayConnectionListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.VirtualNetworkGatewayConnectionListResult>): void;

    /**
     * The VirtualNetworkGatewayConnectionResetSharedKey operation resets the
     * virtual network gateway connection shared key for passed virtual network
     * gateway connection in the specified resource group through Network
     * resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayConnectionName The virtual network
     * gateway connection reset shared key Name.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {number} [options.keyLength] The virtual network connection reset
     * shared key length
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    resetSharedKey(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, options: { keyLength? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ConnectionResetSharedKey>): void;
    resetSharedKey(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, callback: ServiceCallback<models.ConnectionResetSharedKey>): void;

    /**
     * The VirtualNetworkGatewayConnectionResetSharedKey operation resets the
     * virtual network gateway connection shared key for passed virtual network
     * gateway connection in the specified resource group through Network
     * resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayConnectionName The virtual network
     * gateway connection reset shared key Name.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {number} [options.keyLength] The virtual network connection reset
     * shared key length
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginResetSharedKey(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, options: { keyLength? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ConnectionResetSharedKey>): void;
    beginResetSharedKey(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, callback: ServiceCallback<models.ConnectionResetSharedKey>): void;

    /**
     * The Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual
     * network gateway connection shared key for passed virtual network gateway
     * connection in the specified resource group through Network resource
     * provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayConnectionName The virtual network
     * gateway connection name.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.value] The virtual network connection shared key
     * value
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    setSharedKey(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, options: { value? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ConnectionSharedKey>): void;
    setSharedKey(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, callback: ServiceCallback<models.ConnectionSharedKey>): void;

    /**
     * The Put VirtualNetworkGatewayConnectionSharedKey operation sets the virtual
     * network gateway connection shared key for passed virtual network gateway
     * connection in the specified resource group through Network resource
     * provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayConnectionName The virtual network
     * gateway connection name.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.value] The virtual network connection shared key
     * value
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginSetSharedKey(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, options: { value? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ConnectionSharedKey>): void;
    beginSetSharedKey(resourceGroupName: string, virtualNetworkGatewayConnectionName: string, callback: ServiceCallback<models.ConnectionSharedKey>): void;

    /**
     * The List VirtualNetworkGatewayConnections operation retrieves all the
     * virtual network gateways connections created.
     *
     * @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.VirtualNetworkGatewayConnectionListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.VirtualNetworkGatewayConnectionListResult>): void;
}

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

    /**
     * The Put VirtualNetworkGateway operation creates/updates a virtual network
     * gateway in the specified resource group through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayName The name of the virtual network
     * gateway.
     * 
     * @param {object} parameters Parameters supplied to the Begin Create or
     * update Virtual Network Gateway operation through Network resource provider.
     * 
     * @param {array} [parameters.ipConfigurations] IpConfigurations for Virtual
     * network gateway.
     * 
     * @param {string} [parameters.gatewayType] The type of this virtual network
     * gateway. Possible values include: 'Vpn', 'ExpressRoute'
     * 
     * @param {string} [parameters.vpnType] The type of this virtual network
     * gateway. Possible values include: 'PolicyBased', 'RouteBased'
     * 
     * @param {boolean} [parameters.enableBgp] EnableBgp Flag
     * 
     * @param {object} [parameters.gatewayDefaultSite] Gets or sets the reference
     * of the LocalNetworkGateway resource which represents Local network site
     * having default routes. Assign Null value in case of removing existing
     * default site setting.
     * 
     * @param {string} [parameters.gatewayDefaultSite.id] Resource Id
     * 
     * @param {object} [parameters.sku] Gets or sets the reference of the
     * VirtualNetworkGatewaySku resource which represents the sku selected for
     * Virtual network gateway.
     * 
     * @param {string} [parameters.sku.name] Gateway sku name
     * -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {string} [parameters.sku.tier] Gateway sku tier
     * -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {number} [parameters.sku.capacity] The capacity
     * 
     * @param {object} [parameters.vpnClientConfiguration] Gets or sets the
     * reference of the VpnClientConfiguration resource which represents the P2S
     * VpnClient configurations.
     * 
     * @param {object} [parameters.vpnClientConfiguration.vpnClientAddressPool]
     * Gets or sets the reference of the Address space resource which represents
     * Address space for P2S VpnClient.
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientAddressPool.addressPrefixes]
     * Gets or sets List of address blocks reserved for this virtual network in
     * CIDR notation
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientRootCertificates] VpnClientRootCertificate
     * for Virtual network gateway.
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientRevokedCertificates]
     * VpnClientRevokedCertificate for Virtual network gateway.
     * 
     * @param {object} [parameters.bgpSettings] Virtual network gateway's BGP
     * speaker settings
     * 
     * @param {number} [parameters.bgpSettings.asn] Gets or sets this BGP
     * speaker's ASN
     * 
     * @param {string} [parameters.bgpSettings.bgpPeeringAddress] Gets or sets the
     * BGP peering address and BGP identifier of this BGP speaker
     * 
     * @param {number} [parameters.bgpSettings.peerWeight] Gets or sets the weight
     * added to routes learned from this BGP speaker
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the VirtualNetworkGateway resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the VirtualNetworkGateway resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, virtualNetworkGatewayName: string, parameters: models.VirtualNetworkGateway, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGateway>): void;
    createOrUpdate(resourceGroupName: string, virtualNetworkGatewayName: string, parameters: models.VirtualNetworkGateway, callback: ServiceCallback<models.VirtualNetworkGateway>): void;

    /**
     * The Put VirtualNetworkGateway operation creates/updates a virtual network
     * gateway in the specified resource group through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayName The name of the virtual network
     * gateway.
     * 
     * @param {object} parameters Parameters supplied to the Begin Create or
     * update Virtual Network Gateway operation through Network resource provider.
     * 
     * @param {array} [parameters.ipConfigurations] IpConfigurations for Virtual
     * network gateway.
     * 
     * @param {string} [parameters.gatewayType] The type of this virtual network
     * gateway. Possible values include: 'Vpn', 'ExpressRoute'
     * 
     * @param {string} [parameters.vpnType] The type of this virtual network
     * gateway. Possible values include: 'PolicyBased', 'RouteBased'
     * 
     * @param {boolean} [parameters.enableBgp] EnableBgp Flag
     * 
     * @param {object} [parameters.gatewayDefaultSite] Gets or sets the reference
     * of the LocalNetworkGateway resource which represents Local network site
     * having default routes. Assign Null value in case of removing existing
     * default site setting.
     * 
     * @param {string} [parameters.gatewayDefaultSite.id] Resource Id
     * 
     * @param {object} [parameters.sku] Gets or sets the reference of the
     * VirtualNetworkGatewaySku resource which represents the sku selected for
     * Virtual network gateway.
     * 
     * @param {string} [parameters.sku.name] Gateway sku name
     * -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {string} [parameters.sku.tier] Gateway sku tier
     * -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {number} [parameters.sku.capacity] The capacity
     * 
     * @param {object} [parameters.vpnClientConfiguration] Gets or sets the
     * reference of the VpnClientConfiguration resource which represents the P2S
     * VpnClient configurations.
     * 
     * @param {object} [parameters.vpnClientConfiguration.vpnClientAddressPool]
     * Gets or sets the reference of the Address space resource which represents
     * Address space for P2S VpnClient.
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientAddressPool.addressPrefixes]
     * Gets or sets List of address blocks reserved for this virtual network in
     * CIDR notation
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientRootCertificates] VpnClientRootCertificate
     * for Virtual network gateway.
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientRevokedCertificates]
     * VpnClientRevokedCertificate for Virtual network gateway.
     * 
     * @param {object} [parameters.bgpSettings] Virtual network gateway's BGP
     * speaker settings
     * 
     * @param {number} [parameters.bgpSettings.asn] Gets or sets this BGP
     * speaker's ASN
     * 
     * @param {string} [parameters.bgpSettings.bgpPeeringAddress] Gets or sets the
     * BGP peering address and BGP identifier of this BGP speaker
     * 
     * @param {number} [parameters.bgpSettings.peerWeight] Gets or sets the weight
     * added to routes learned from this BGP speaker
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the VirtualNetworkGateway resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the VirtualNetworkGateway resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, virtualNetworkGatewayName: string, parameters: models.VirtualNetworkGateway, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGateway>): void;
    beginCreateOrUpdate(resourceGroupName: string, virtualNetworkGatewayName: string, parameters: models.VirtualNetworkGateway, callback: ServiceCallback<models.VirtualNetworkGateway>): void;

    /**
     * The Get VirtualNetworkGateway operation retrieves information about the
     * specified virtual network gateway through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayName The name of the virtual network
     * gateway.
     * 
     * @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, virtualNetworkGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGateway>): void;
    get(resourceGroupName: string, virtualNetworkGatewayName: string, callback: ServiceCallback<models.VirtualNetworkGateway>): void;

    /**
     * The Delete VirtualNetworkGateway operation deletes the specifed virtual
     * network Gateway through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayName The name of the virtual network
     * gateway.
     * 
     * @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, virtualNetworkGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, virtualNetworkGatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * The Delete VirtualNetworkGateway operation deletes the specifed virtual
     * network Gateway through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayName The name of the virtual network
     * gateway.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, virtualNetworkGatewayName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, virtualNetworkGatewayName: string, callback: ServiceCallback<void>): void;

    /**
     * The List VirtualNetworkGateways opertion retrieves all the virtual network
     * gateways stored.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGatewayListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.VirtualNetworkGatewayListResult>): void;

    /**
     * The Reset VirtualNetworkGateway operation resets the primary of the virtual
     * network gateway in the specified resource group through Network resource
     * provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayName The name of the virtual network
     * gateway.
     * 
     * @param {object} parameters Parameters supplied to the Begin Reset Virtual
     * Network Gateway operation through Network resource provider.
     * 
     * @param {array} [parameters.ipConfigurations] IpConfigurations for Virtual
     * network gateway.
     * 
     * @param {string} [parameters.gatewayType] The type of this virtual network
     * gateway. Possible values include: 'Vpn', 'ExpressRoute'
     * 
     * @param {string} [parameters.vpnType] The type of this virtual network
     * gateway. Possible values include: 'PolicyBased', 'RouteBased'
     * 
     * @param {boolean} [parameters.enableBgp] EnableBgp Flag
     * 
     * @param {object} [parameters.gatewayDefaultSite] Gets or sets the reference
     * of the LocalNetworkGateway resource which represents Local network site
     * having default routes. Assign Null value in case of removing existing
     * default site setting.
     * 
     * @param {string} [parameters.gatewayDefaultSite.id] Resource Id
     * 
     * @param {object} [parameters.sku] Gets or sets the reference of the
     * VirtualNetworkGatewaySku resource which represents the sku selected for
     * Virtual network gateway.
     * 
     * @param {string} [parameters.sku.name] Gateway sku name
     * -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {string} [parameters.sku.tier] Gateway sku tier
     * -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {number} [parameters.sku.capacity] The capacity
     * 
     * @param {object} [parameters.vpnClientConfiguration] Gets or sets the
     * reference of the VpnClientConfiguration resource which represents the P2S
     * VpnClient configurations.
     * 
     * @param {object} [parameters.vpnClientConfiguration.vpnClientAddressPool]
     * Gets or sets the reference of the Address space resource which represents
     * Address space for P2S VpnClient.
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientAddressPool.addressPrefixes]
     * Gets or sets List of address blocks reserved for this virtual network in
     * CIDR notation
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientRootCertificates] VpnClientRootCertificate
     * for Virtual network gateway.
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientRevokedCertificates]
     * VpnClientRevokedCertificate for Virtual network gateway.
     * 
     * @param {object} [parameters.bgpSettings] Virtual network gateway's BGP
     * speaker settings
     * 
     * @param {number} [parameters.bgpSettings.asn] Gets or sets this BGP
     * speaker's ASN
     * 
     * @param {string} [parameters.bgpSettings.bgpPeeringAddress] Gets or sets the
     * BGP peering address and BGP identifier of this BGP speaker
     * 
     * @param {number} [parameters.bgpSettings.peerWeight] Gets or sets the weight
     * added to routes learned from this BGP speaker
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the VirtualNetworkGateway resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the VirtualNetworkGateway resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    reset(resourceGroupName: string, virtualNetworkGatewayName: string, parameters: models.VirtualNetworkGateway, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGateway>): void;
    reset(resourceGroupName: string, virtualNetworkGatewayName: string, parameters: models.VirtualNetworkGateway, callback: ServiceCallback<models.VirtualNetworkGateway>): void;

    /**
     * The Reset VirtualNetworkGateway operation resets the primary of the virtual
     * network gateway in the specified resource group through Network resource
     * provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayName The name of the virtual network
     * gateway.
     * 
     * @param {object} parameters Parameters supplied to the Begin Reset Virtual
     * Network Gateway operation through Network resource provider.
     * 
     * @param {array} [parameters.ipConfigurations] IpConfigurations for Virtual
     * network gateway.
     * 
     * @param {string} [parameters.gatewayType] The type of this virtual network
     * gateway. Possible values include: 'Vpn', 'ExpressRoute'
     * 
     * @param {string} [parameters.vpnType] The type of this virtual network
     * gateway. Possible values include: 'PolicyBased', 'RouteBased'
     * 
     * @param {boolean} [parameters.enableBgp] EnableBgp Flag
     * 
     * @param {object} [parameters.gatewayDefaultSite] Gets or sets the reference
     * of the LocalNetworkGateway resource which represents Local network site
     * having default routes. Assign Null value in case of removing existing
     * default site setting.
     * 
     * @param {string} [parameters.gatewayDefaultSite.id] Resource Id
     * 
     * @param {object} [parameters.sku] Gets or sets the reference of the
     * VirtualNetworkGatewaySku resource which represents the sku selected for
     * Virtual network gateway.
     * 
     * @param {string} [parameters.sku.name] Gateway sku name
     * -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {string} [parameters.sku.tier] Gateway sku tier
     * -Basic/HighPerformance/Standard. Possible values include: 'Basic',
     * 'HighPerformance', 'Standard'
     * 
     * @param {number} [parameters.sku.capacity] The capacity
     * 
     * @param {object} [parameters.vpnClientConfiguration] Gets or sets the
     * reference of the VpnClientConfiguration resource which represents the P2S
     * VpnClient configurations.
     * 
     * @param {object} [parameters.vpnClientConfiguration.vpnClientAddressPool]
     * Gets or sets the reference of the Address space resource which represents
     * Address space for P2S VpnClient.
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientAddressPool.addressPrefixes]
     * Gets or sets List of address blocks reserved for this virtual network in
     * CIDR notation
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientRootCertificates] VpnClientRootCertificate
     * for Virtual network gateway.
     * 
     * @param {array}
     * [parameters.vpnClientConfiguration.vpnClientRevokedCertificates]
     * VpnClientRevokedCertificate for Virtual network gateway.
     * 
     * @param {object} [parameters.bgpSettings] Virtual network gateway's BGP
     * speaker settings
     * 
     * @param {number} [parameters.bgpSettings.asn] Gets or sets this BGP
     * speaker's ASN
     * 
     * @param {string} [parameters.bgpSettings.bgpPeeringAddress] Gets or sets the
     * BGP peering address and BGP identifier of this BGP speaker
     * 
     * @param {number} [parameters.bgpSettings.peerWeight] Gets or sets the weight
     * added to routes learned from this BGP speaker
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the VirtualNetworkGateway resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the VirtualNetworkGateway resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginReset(resourceGroupName: string, virtualNetworkGatewayName: string, parameters: models.VirtualNetworkGateway, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkGateway>): void;
    beginReset(resourceGroupName: string, virtualNetworkGatewayName: string, parameters: models.VirtualNetworkGateway, callback: ServiceCallback<models.VirtualNetworkGateway>): void;

    /**
     * The Generatevpnclientpackage operation generates Vpn client package for P2S
     * client of the virtual network gateway in the specified resource group
     * through Network resource provider.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkGatewayName The name of the virtual network
     * gateway.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.processorArchitecture] VPN client Processor
     * Architecture -Amd64/X86. Possible values include: 'Amd64', 'X86'
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    generatevpnclientpackage(resourceGroupName: string, virtualNetworkGatewayName: string, options: { processorArchitecture? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<string>): void;
    generatevpnclientpackage(resourceGroupName: string, virtualNetworkGatewayName: string, callback: ServiceCallback<string>): void;

    /**
     * The List VirtualNetworkGateways opertion retrieves all the virtual network
     * gateways stored.
     *
     * @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.VirtualNetworkGatewayListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.VirtualNetworkGatewayListResult>): void;
}

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

    /**
     * The Delete VirtualNetwork operation deletes the specifed virtual network
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(resourceGroupName: string, virtualNetworkName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, virtualNetworkName: string, callback: ServiceCallback<void>): void;

    /**
     * The Delete VirtualNetwork operation deletes the specifed virtual network
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginDeleteMethod(resourceGroupName: string, virtualNetworkName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    beginDeleteMethod(resourceGroupName: string, virtualNetworkName: string, callback: ServiceCallback<void>): void;

    /**
     * The Get VirtualNetwork operation retrieves information about the specified
     * virtual network.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.expand] expand references resources.
     * 
     * @param {object} [options.customHeaders] 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, virtualNetworkName: string, options: { expand? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetwork>): void;
    get(resourceGroupName: string, virtualNetworkName: string, callback: ServiceCallback<models.VirtualNetwork>): void;

    /**
     * The Put VirtualNetwork operation creates/updates a virtual network in the
     * specified resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {object} parameters Parameters supplied to the create/update Virtual
     * Network operation
     * 
     * @param {object} [parameters.addressSpace] Gets or sets AddressSpace that
     * contains an array of IP address ranges that can be used by subnets
     * 
     * @param {array} [parameters.addressSpace.addressPrefixes] Gets or sets List
     * of address blocks reserved for this virtual network in CIDR notation
     * 
     * @param {object} [parameters.dhcpOptions] Gets or sets DHCPOptions that
     * contains an array of DNS servers available to VMs deployed in the virtual
     * network
     * 
     * @param {array} [parameters.dhcpOptions.dnsServers] Gets or sets list of DNS
     * servers IP addresses
     * 
     * @param {array} [parameters.subnets] Gets or sets List of subnets in a
     * VirtualNetwork
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the VirtualNetwork resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, virtualNetworkName: string, parameters: models.VirtualNetwork, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetwork>): void;
    createOrUpdate(resourceGroupName: string, virtualNetworkName: string, parameters: models.VirtualNetwork, callback: ServiceCallback<models.VirtualNetwork>): void;

    /**
     * The Put VirtualNetwork operation creates/updates a virtual network in the
     * specified resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} virtualNetworkName The name of the virtual network.
     * 
     * @param {object} parameters Parameters supplied to the create/update Virtual
     * Network operation
     * 
     * @param {object} [parameters.addressSpace] Gets or sets AddressSpace that
     * contains an array of IP address ranges that can be used by subnets
     * 
     * @param {array} [parameters.addressSpace.addressPrefixes] Gets or sets List
     * of address blocks reserved for this virtual network in CIDR notation
     * 
     * @param {object} [parameters.dhcpOptions] Gets or sets DHCPOptions that
     * contains an array of DNS servers available to VMs deployed in the virtual
     * network
     * 
     * @param {array} [parameters.dhcpOptions.dnsServers] Gets or sets list of DNS
     * servers IP addresses
     * 
     * @param {array} [parameters.subnets] Gets or sets List of subnets in a
     * VirtualNetwork
     * 
     * @param {string} [parameters.resourceGuid] Gets or sets resource guid
     * property of the VirtualNetwork resource
     * 
     * @param {string} [parameters.provisioningState] Gets or sets Provisioning
     * state of the PublicIP resource Updating/Deleting/Failed
     * 
     * @param {string} [parameters.etag] Gets a unique read-only string that
     * changes whenever the resource is updated
     * 
     * @param {string} [parameters.id] Resource Id
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    beginCreateOrUpdate(resourceGroupName: string, virtualNetworkName: string, parameters: models.VirtualNetwork, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetwork>): void;
    beginCreateOrUpdate(resourceGroupName: string, virtualNetworkName: string, parameters: models.VirtualNetwork, callback: ServiceCallback<models.VirtualNetwork>): void;

    /**
     * The list VirtualNetwork returns all Virtual Networks 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
     */
    listAll(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkListResult>): void;
    listAll(callback: ServiceCallback<models.VirtualNetworkListResult>): void;

    /**
     * The list VirtualNetwork returns all Virtual Networks in a resource group
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkListResult>): void;
    list(resourceGroupName: string, callback: ServiceCallback<models.VirtualNetworkListResult>): void;

    /**
     * The list VirtualNetwork returns all Virtual Networks 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
     */
    listAllNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkListResult>): void;
    listAllNext(nextPageLink: string, callback: ServiceCallback<models.VirtualNetworkListResult>): void;

    /**
     * The list VirtualNetwork returns all Virtual Networks 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
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.VirtualNetworkListResult>): void;
}
