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

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


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


    /**
     * Lists the Data Lake Store accounts within the subscription. The response
     * includes a link to the next page of results, if any.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] OData filter. Optional.
     *
     * @param {number} [options.top] The number of items to return. Optional.
     *
     * @param {number} [options.skip] The number of items to skip over before
     * returning elements. Optional.
     *
     * @param {string} [options.select] OData Select statement. Limits the
     * properties on each entry to just those requested, e.g.
     * Categories?$select=CategoryName,Description. Optional.
     *
     * @param {string} [options.orderby] OrderBy clause. One or more
     * comma-separated expressions with an optional "asc" (the default) or "desc"
     * depending on the order you'd like the values sorted, e.g.
     * Categories?$orderby=CategoryName desc. Optional.
     *
     * @param {boolean} [options.count] The Boolean value of true or false to
     * request a count of the matching resources included with the resources in the
     * response, e.g. Categories?$count=true. Optional.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DataLakeStoreAccountListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(options?: { filter? : string, top? : number, skip? : number, select? : string, orderby? : string, count? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DataLakeStoreAccountListResult>>;

    /**
     * Lists the Data Lake Store accounts within the subscription. The response
     * includes a link to the next page of results, if any.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] OData filter. Optional.
     *
     * @param {number} [options.top] The number of items to return. Optional.
     *
     * @param {number} [options.skip] The number of items to skip over before
     * returning elements. Optional.
     *
     * @param {string} [options.select] OData Select statement. Limits the
     * properties on each entry to just those requested, e.g.
     * Categories?$select=CategoryName,Description. Optional.
     *
     * @param {string} [options.orderby] OrderBy clause. One or more
     * comma-separated expressions with an optional "asc" (the default) or "desc"
     * depending on the order you'd like the values sorted, e.g.
     * Categories?$orderby=CategoryName desc. Optional.
     *
     * @param {boolean} [options.count] The Boolean value of true or false to
     * request a count of the matching resources included with the resources in the
     * response, e.g. Categories?$count=true. Optional.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DataLakeStoreAccountListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DataLakeStoreAccountListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DataLakeStoreAccountListResult} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(options?: { filter? : string, top? : number, skip? : number, select? : string, orderby? : string, count? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<models.DataLakeStoreAccountListResult>;
    list(callback: ServiceCallback<models.DataLakeStoreAccountListResult>): void;
    list(options: { filter? : string, top? : number, skip? : number, select? : string, orderby? : string, count? : boolean, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DataLakeStoreAccountListResult>): void;


    /**
     * Lists the Data Lake Store accounts within a specific resource group. The
     * response includes a link to the next page of results, if any.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] OData filter. Optional.
     *
     * @param {number} [options.top] The number of items to return. Optional.
     *
     * @param {number} [options.skip] The number of items to skip over before
     * returning elements. Optional.
     *
     * @param {string} [options.select] OData Select statement. Limits the
     * properties on each entry to just those requested, e.g.
     * Categories?$select=CategoryName,Description. Optional.
     *
     * @param {string} [options.orderby] OrderBy clause. One or more
     * comma-separated expressions with an optional "asc" (the default) or "desc"
     * depending on the order you'd like the values sorted, e.g.
     * Categories?$orderby=CategoryName desc. Optional.
     *
     * @param {boolean} [options.count] A Boolean value of true or false to request
     * a count of the matching resources included with the resources in the
     * response, e.g. Categories?$count=true. Optional.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DataLakeStoreAccountListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByResourceGroupWithHttpOperationResponse(resourceGroupName: string, options?: { filter? : string, top? : number, skip? : number, select? : string, orderby? : string, count? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DataLakeStoreAccountListResult>>;

    /**
     * Lists the Data Lake Store accounts within a specific resource group. The
     * response includes a link to the next page of results, if any.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] OData filter. Optional.
     *
     * @param {number} [options.top] The number of items to return. Optional.
     *
     * @param {number} [options.skip] The number of items to skip over before
     * returning elements. Optional.
     *
     * @param {string} [options.select] OData Select statement. Limits the
     * properties on each entry to just those requested, e.g.
     * Categories?$select=CategoryName,Description. Optional.
     *
     * @param {string} [options.orderby] OrderBy clause. One or more
     * comma-separated expressions with an optional "asc" (the default) or "desc"
     * depending on the order you'd like the values sorted, e.g.
     * Categories?$orderby=CategoryName desc. Optional.
     *
     * @param {boolean} [options.count] A Boolean value of true or false to request
     * a count of the matching resources included with the resources in the
     * response, e.g. Categories?$count=true. Optional.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DataLakeStoreAccountListResult} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DataLakeStoreAccountListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DataLakeStoreAccountListResult} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listByResourceGroup(resourceGroupName: string, options?: { filter? : string, top? : number, skip? : number, select? : string, orderby? : string, count? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<models.DataLakeStoreAccountListResult>;
    listByResourceGroup(resourceGroupName: string, callback: ServiceCallback<models.DataLakeStoreAccountListResult>): void;
    listByResourceGroup(resourceGroupName: string, options: { filter? : string, top? : number, skip? : number, select? : string, orderby? : string, count? : boolean, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DataLakeStoreAccountListResult>): void;


    /**
     * Creates the specified Data Lake Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} parameters Parameters supplied to create the Data Lake Store
     * account.
     *
     * @param {string} parameters.location The resource location.
     *
     * @param {object} [parameters.tags] The resource tags.
     *
     * @param {object} [parameters.identity] The Key Vault encryption identity, if
     * any.
     *
     * @param {string} [parameters.defaultGroup] The default owner group for all
     * new folders and files created in the Data Lake Store account.
     *
     * @param {object} [parameters.encryptionConfig] The Key Vault encryption
     * configuration.
     *
     * @param {string} parameters.encryptionConfig.type The type of encryption
     * configuration being used. Currently the only supported types are
     * 'UserManaged' and 'ServiceManaged'. Possible values include: 'UserManaged',
     * 'ServiceManaged'
     *
     * @param {object} [parameters.encryptionConfig.keyVaultMetaInfo] The Key Vault
     * information for connecting to user managed encryption keys.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.keyVaultResourceId The resource
     * identifier for the user managed Key Vault being used to encrypt.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyName The name of
     * the user managed encryption key.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyVersion The
     * version of the user managed encryption key.
     *
     * @param {string} [parameters.encryptionState] The current state of encryption
     * for this Data Lake Store account. Possible values include: 'Enabled',
     * 'Disabled'
     *
     * @param {array} [parameters.firewallRules] The list of firewall rules
     * associated with this Data Lake Store account.
     *
     * @param {array} [parameters.virtualNetworkRules] The list of virtual network
     * rules associated with this Data Lake Store account.
     *
     * @param {string} [parameters.firewallState] The current state of the IP
     * address firewall for this Data Lake Store account. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.firewallAllowAzureIps] The current state of
     * allowing or disallowing IPs originating within Azure through the firewall.
     * If the firewall is disabled, this is not enforced. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {array} [parameters.trustedIdProviders] The list of trusted identity
     * providers associated with this Data Lake Store account.
     *
     * @param {string} [parameters.trustedIdProviderState] The current state of the
     * trusted identity provider feature for this Data Lake Store account. Possible
     * values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.newTier] The commitment tier to use for next
     * month. Possible values include: 'Consumption', 'Commitment_1TB',
     * 'Commitment_10TB', 'Commitment_100TB', 'Commitment_500TB', 'Commitment_1PB',
     * 'Commitment_5PB'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DataLakeStoreAccount>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(resourceGroupName: string, accountName: string, parameters: models.CreateDataLakeStoreAccountParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DataLakeStoreAccount>>;

    /**
     * Creates the specified Data Lake Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} parameters Parameters supplied to create the Data Lake Store
     * account.
     *
     * @param {string} parameters.location The resource location.
     *
     * @param {object} [parameters.tags] The resource tags.
     *
     * @param {object} [parameters.identity] The Key Vault encryption identity, if
     * any.
     *
     * @param {string} [parameters.defaultGroup] The default owner group for all
     * new folders and files created in the Data Lake Store account.
     *
     * @param {object} [parameters.encryptionConfig] The Key Vault encryption
     * configuration.
     *
     * @param {string} parameters.encryptionConfig.type The type of encryption
     * configuration being used. Currently the only supported types are
     * 'UserManaged' and 'ServiceManaged'. Possible values include: 'UserManaged',
     * 'ServiceManaged'
     *
     * @param {object} [parameters.encryptionConfig.keyVaultMetaInfo] The Key Vault
     * information for connecting to user managed encryption keys.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.keyVaultResourceId The resource
     * identifier for the user managed Key Vault being used to encrypt.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyName The name of
     * the user managed encryption key.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyVersion The
     * version of the user managed encryption key.
     *
     * @param {string} [parameters.encryptionState] The current state of encryption
     * for this Data Lake Store account. Possible values include: 'Enabled',
     * 'Disabled'
     *
     * @param {array} [parameters.firewallRules] The list of firewall rules
     * associated with this Data Lake Store account.
     *
     * @param {array} [parameters.virtualNetworkRules] The list of virtual network
     * rules associated with this Data Lake Store account.
     *
     * @param {string} [parameters.firewallState] The current state of the IP
     * address firewall for this Data Lake Store account. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.firewallAllowAzureIps] The current state of
     * allowing or disallowing IPs originating within Azure through the firewall.
     * If the firewall is disabled, this is not enforced. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {array} [parameters.trustedIdProviders] The list of trusted identity
     * providers associated with this Data Lake Store account.
     *
     * @param {string} [parameters.trustedIdProviderState] The current state of the
     * trusted identity provider feature for this Data Lake Store account. Possible
     * values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.newTier] The commitment tier to use for next
     * month. Possible values include: 'Consumption', 'Commitment_1TB',
     * 'Commitment_10TB', 'Commitment_100TB', 'Commitment_500TB', 'Commitment_1PB',
     * 'Commitment_5PB'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DataLakeStoreAccount} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DataLakeStoreAccount} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DataLakeStoreAccount} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    create(resourceGroupName: string, accountName: string, parameters: models.CreateDataLakeStoreAccountParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DataLakeStoreAccount>;
    create(resourceGroupName: string, accountName: string, parameters: models.CreateDataLakeStoreAccountParameters, callback: ServiceCallback<models.DataLakeStoreAccount>): void;
    create(resourceGroupName: string, accountName: string, parameters: models.CreateDataLakeStoreAccountParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DataLakeStoreAccount>): void;


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

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


    /**
     * Updates the specified Data Lake Store account information.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} parameters Parameters supplied to update the Data Lake Store
     * account.
     *
     * @param {object} [parameters.tags] Resource tags
     *
     * @param {string} [parameters.defaultGroup] The default owner group for all
     * new folders and files created in the Data Lake Store account.
     *
     * @param {object} [parameters.encryptionConfig] Used for rotation of user
     * managed Key Vault keys. Can only be used to rotate a user managed encryption
     * Key Vault key.
     *
     * @param {object} [parameters.encryptionConfig.keyVaultMetaInfo] The updated
     * Key Vault key to use in user managed key rotation.
     *
     * @param {string}
     * [parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyVersion] The
     * version of the user managed encryption key to update through a key rotation.
     *
     * @param {array} [parameters.firewallRules] The list of firewall rules
     * associated with this Data Lake Store account.
     *
     * @param {array} [parameters.virtualNetworkRules] The list of virtual network
     * rules associated with this Data Lake Store account.
     *
     * @param {string} [parameters.firewallState] The current state of the IP
     * address firewall for this Data Lake Store account. Disabling the firewall
     * does not remove existing rules, they will just be ignored until the firewall
     * is re-enabled. Possible values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.firewallAllowAzureIps] The current state of
     * allowing or disallowing IPs originating within Azure through the firewall.
     * If the firewall is disabled, this is not enforced. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {array} [parameters.trustedIdProviders] The list of trusted identity
     * providers associated with this Data Lake Store account.
     *
     * @param {string} [parameters.trustedIdProviderState] The current state of the
     * trusted identity provider feature for this Data Lake Store account.
     * Disabling trusted identity provider functionality does not remove the
     * providers, they will just be ignored until this feature is re-enabled.
     * Possible values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.newTier] The commitment tier to use for next
     * month. Possible values include: 'Consumption', 'Commitment_1TB',
     * 'Commitment_10TB', 'Commitment_100TB', 'Commitment_500TB', 'Commitment_1PB',
     * 'Commitment_5PB'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DataLakeStoreAccount>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(resourceGroupName: string, accountName: string, parameters: models.UpdateDataLakeStoreAccountParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DataLakeStoreAccount>>;

    /**
     * Updates the specified Data Lake Store account information.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} parameters Parameters supplied to update the Data Lake Store
     * account.
     *
     * @param {object} [parameters.tags] Resource tags
     *
     * @param {string} [parameters.defaultGroup] The default owner group for all
     * new folders and files created in the Data Lake Store account.
     *
     * @param {object} [parameters.encryptionConfig] Used for rotation of user
     * managed Key Vault keys. Can only be used to rotate a user managed encryption
     * Key Vault key.
     *
     * @param {object} [parameters.encryptionConfig.keyVaultMetaInfo] The updated
     * Key Vault key to use in user managed key rotation.
     *
     * @param {string}
     * [parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyVersion] The
     * version of the user managed encryption key to update through a key rotation.
     *
     * @param {array} [parameters.firewallRules] The list of firewall rules
     * associated with this Data Lake Store account.
     *
     * @param {array} [parameters.virtualNetworkRules] The list of virtual network
     * rules associated with this Data Lake Store account.
     *
     * @param {string} [parameters.firewallState] The current state of the IP
     * address firewall for this Data Lake Store account. Disabling the firewall
     * does not remove existing rules, they will just be ignored until the firewall
     * is re-enabled. Possible values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.firewallAllowAzureIps] The current state of
     * allowing or disallowing IPs originating within Azure through the firewall.
     * If the firewall is disabled, this is not enforced. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {array} [parameters.trustedIdProviders] The list of trusted identity
     * providers associated with this Data Lake Store account.
     *
     * @param {string} [parameters.trustedIdProviderState] The current state of the
     * trusted identity provider feature for this Data Lake Store account.
     * Disabling trusted identity provider functionality does not remove the
     * providers, they will just be ignored until this feature is re-enabled.
     * Possible values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.newTier] The commitment tier to use for next
     * month. Possible values include: 'Consumption', 'Commitment_1TB',
     * 'Commitment_10TB', 'Commitment_100TB', 'Commitment_500TB', 'Commitment_1PB',
     * 'Commitment_5PB'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DataLakeStoreAccount} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DataLakeStoreAccount} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DataLakeStoreAccount} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(resourceGroupName: string, accountName: string, parameters: models.UpdateDataLakeStoreAccountParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DataLakeStoreAccount>;
    update(resourceGroupName: string, accountName: string, parameters: models.UpdateDataLakeStoreAccountParameters, callback: ServiceCallback<models.DataLakeStoreAccount>): void;
    update(resourceGroupName: string, accountName: string, parameters: models.UpdateDataLakeStoreAccountParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DataLakeStoreAccount>): void;


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

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


    /**
     * Attempts to enable a user managed Key Vault for encryption of the specified
     * Data Lake Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    enableKeyVaultWithHttpOperationResponse(resourceGroupName: string, accountName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Attempts to enable a user managed Key Vault for encryption of the specified
     * Data Lake Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {null} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {null} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    enableKeyVault(resourceGroupName: string, accountName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    enableKeyVault(resourceGroupName: string, accountName: string, callback: ServiceCallback<void>): void;
    enableKeyVault(resourceGroupName: string, accountName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Checks whether the specified account name is available or taken.
     *
     * @param {string} location The resource location without whitespace.
     *
     * @param {object} parameters Parameters supplied to check the Data Lake Store
     * account name availability.
     *
     * @param {string} parameters.name The Data Lake Store name to check
     * availability for.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<NameAvailabilityInformation>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    checkNameAvailabilityWithHttpOperationResponse(location: string, parameters: models.CheckNameAvailabilityParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.NameAvailabilityInformation>>;

    /**
     * Checks whether the specified account name is available or taken.
     *
     * @param {string} location The resource location without whitespace.
     *
     * @param {object} parameters Parameters supplied to check the Data Lake Store
     * account name availability.
     *
     * @param {string} parameters.name The Data Lake Store name to check
     * availability for.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {NameAvailabilityInformation} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {NameAvailabilityInformation} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link NameAvailabilityInformation} for more
     *                      information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    checkNameAvailability(location: string, parameters: models.CheckNameAvailabilityParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.NameAvailabilityInformation>;
    checkNameAvailability(location: string, parameters: models.CheckNameAvailabilityParameters, callback: ServiceCallback<models.NameAvailabilityInformation>): void;
    checkNameAvailability(location: string, parameters: models.CheckNameAvailabilityParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.NameAvailabilityInformation>): void;


    /**
     * Creates the specified Data Lake Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} parameters Parameters supplied to create the Data Lake Store
     * account.
     *
     * @param {string} parameters.location The resource location.
     *
     * @param {object} [parameters.tags] The resource tags.
     *
     * @param {object} [parameters.identity] The Key Vault encryption identity, if
     * any.
     *
     * @param {string} [parameters.defaultGroup] The default owner group for all
     * new folders and files created in the Data Lake Store account.
     *
     * @param {object} [parameters.encryptionConfig] The Key Vault encryption
     * configuration.
     *
     * @param {string} parameters.encryptionConfig.type The type of encryption
     * configuration being used. Currently the only supported types are
     * 'UserManaged' and 'ServiceManaged'. Possible values include: 'UserManaged',
     * 'ServiceManaged'
     *
     * @param {object} [parameters.encryptionConfig.keyVaultMetaInfo] The Key Vault
     * information for connecting to user managed encryption keys.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.keyVaultResourceId The resource
     * identifier for the user managed Key Vault being used to encrypt.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyName The name of
     * the user managed encryption key.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyVersion The
     * version of the user managed encryption key.
     *
     * @param {string} [parameters.encryptionState] The current state of encryption
     * for this Data Lake Store account. Possible values include: 'Enabled',
     * 'Disabled'
     *
     * @param {array} [parameters.firewallRules] The list of firewall rules
     * associated with this Data Lake Store account.
     *
     * @param {array} [parameters.virtualNetworkRules] The list of virtual network
     * rules associated with this Data Lake Store account.
     *
     * @param {string} [parameters.firewallState] The current state of the IP
     * address firewall for this Data Lake Store account. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.firewallAllowAzureIps] The current state of
     * allowing or disallowing IPs originating within Azure through the firewall.
     * If the firewall is disabled, this is not enforced. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {array} [parameters.trustedIdProviders] The list of trusted identity
     * providers associated with this Data Lake Store account.
     *
     * @param {string} [parameters.trustedIdProviderState] The current state of the
     * trusted identity provider feature for this Data Lake Store account. Possible
     * values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.newTier] The commitment tier to use for next
     * month. Possible values include: 'Consumption', 'Commitment_1TB',
     * 'Commitment_10TB', 'Commitment_100TB', 'Commitment_500TB', 'Commitment_1PB',
     * 'Commitment_5PB'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DataLakeStoreAccount>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    beginCreateWithHttpOperationResponse(resourceGroupName: string, accountName: string, parameters: models.CreateDataLakeStoreAccountParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DataLakeStoreAccount>>;

    /**
     * Creates the specified Data Lake Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} parameters Parameters supplied to create the Data Lake Store
     * account.
     *
     * @param {string} parameters.location The resource location.
     *
     * @param {object} [parameters.tags] The resource tags.
     *
     * @param {object} [parameters.identity] The Key Vault encryption identity, if
     * any.
     *
     * @param {string} [parameters.defaultGroup] The default owner group for all
     * new folders and files created in the Data Lake Store account.
     *
     * @param {object} [parameters.encryptionConfig] The Key Vault encryption
     * configuration.
     *
     * @param {string} parameters.encryptionConfig.type The type of encryption
     * configuration being used. Currently the only supported types are
     * 'UserManaged' and 'ServiceManaged'. Possible values include: 'UserManaged',
     * 'ServiceManaged'
     *
     * @param {object} [parameters.encryptionConfig.keyVaultMetaInfo] The Key Vault
     * information for connecting to user managed encryption keys.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.keyVaultResourceId The resource
     * identifier for the user managed Key Vault being used to encrypt.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyName The name of
     * the user managed encryption key.
     *
     * @param {string}
     * parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyVersion The
     * version of the user managed encryption key.
     *
     * @param {string} [parameters.encryptionState] The current state of encryption
     * for this Data Lake Store account. Possible values include: 'Enabled',
     * 'Disabled'
     *
     * @param {array} [parameters.firewallRules] The list of firewall rules
     * associated with this Data Lake Store account.
     *
     * @param {array} [parameters.virtualNetworkRules] The list of virtual network
     * rules associated with this Data Lake Store account.
     *
     * @param {string} [parameters.firewallState] The current state of the IP
     * address firewall for this Data Lake Store account. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.firewallAllowAzureIps] The current state of
     * allowing or disallowing IPs originating within Azure through the firewall.
     * If the firewall is disabled, this is not enforced. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {array} [parameters.trustedIdProviders] The list of trusted identity
     * providers associated with this Data Lake Store account.
     *
     * @param {string} [parameters.trustedIdProviderState] The current state of the
     * trusted identity provider feature for this Data Lake Store account. Possible
     * values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.newTier] The commitment tier to use for next
     * month. Possible values include: 'Consumption', 'Commitment_1TB',
     * 'Commitment_10TB', 'Commitment_100TB', 'Commitment_500TB', 'Commitment_1PB',
     * 'Commitment_5PB'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DataLakeStoreAccount} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DataLakeStoreAccount} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DataLakeStoreAccount} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    beginCreate(resourceGroupName: string, accountName: string, parameters: models.CreateDataLakeStoreAccountParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DataLakeStoreAccount>;
    beginCreate(resourceGroupName: string, accountName: string, parameters: models.CreateDataLakeStoreAccountParameters, callback: ServiceCallback<models.DataLakeStoreAccount>): void;
    beginCreate(resourceGroupName: string, accountName: string, parameters: models.CreateDataLakeStoreAccountParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DataLakeStoreAccount>): void;


    /**
     * Updates the specified Data Lake Store account information.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} parameters Parameters supplied to update the Data Lake Store
     * account.
     *
     * @param {object} [parameters.tags] Resource tags
     *
     * @param {string} [parameters.defaultGroup] The default owner group for all
     * new folders and files created in the Data Lake Store account.
     *
     * @param {object} [parameters.encryptionConfig] Used for rotation of user
     * managed Key Vault keys. Can only be used to rotate a user managed encryption
     * Key Vault key.
     *
     * @param {object} [parameters.encryptionConfig.keyVaultMetaInfo] The updated
     * Key Vault key to use in user managed key rotation.
     *
     * @param {string}
     * [parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyVersion] The
     * version of the user managed encryption key to update through a key rotation.
     *
     * @param {array} [parameters.firewallRules] The list of firewall rules
     * associated with this Data Lake Store account.
     *
     * @param {array} [parameters.virtualNetworkRules] The list of virtual network
     * rules associated with this Data Lake Store account.
     *
     * @param {string} [parameters.firewallState] The current state of the IP
     * address firewall for this Data Lake Store account. Disabling the firewall
     * does not remove existing rules, they will just be ignored until the firewall
     * is re-enabled. Possible values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.firewallAllowAzureIps] The current state of
     * allowing or disallowing IPs originating within Azure through the firewall.
     * If the firewall is disabled, this is not enforced. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {array} [parameters.trustedIdProviders] The list of trusted identity
     * providers associated with this Data Lake Store account.
     *
     * @param {string} [parameters.trustedIdProviderState] The current state of the
     * trusted identity provider feature for this Data Lake Store account.
     * Disabling trusted identity provider functionality does not remove the
     * providers, they will just be ignored until this feature is re-enabled.
     * Possible values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.newTier] The commitment tier to use for next
     * month. Possible values include: 'Consumption', 'Commitment_1TB',
     * 'Commitment_10TB', 'Commitment_100TB', 'Commitment_500TB', 'Commitment_1PB',
     * 'Commitment_5PB'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DataLakeStoreAccount>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    beginUpdateWithHttpOperationResponse(resourceGroupName: string, accountName: string, parameters: models.UpdateDataLakeStoreAccountParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DataLakeStoreAccount>>;

    /**
     * Updates the specified Data Lake Store account information.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} parameters Parameters supplied to update the Data Lake Store
     * account.
     *
     * @param {object} [parameters.tags] Resource tags
     *
     * @param {string} [parameters.defaultGroup] The default owner group for all
     * new folders and files created in the Data Lake Store account.
     *
     * @param {object} [parameters.encryptionConfig] Used for rotation of user
     * managed Key Vault keys. Can only be used to rotate a user managed encryption
     * Key Vault key.
     *
     * @param {object} [parameters.encryptionConfig.keyVaultMetaInfo] The updated
     * Key Vault key to use in user managed key rotation.
     *
     * @param {string}
     * [parameters.encryptionConfig.keyVaultMetaInfo.encryptionKeyVersion] The
     * version of the user managed encryption key to update through a key rotation.
     *
     * @param {array} [parameters.firewallRules] The list of firewall rules
     * associated with this Data Lake Store account.
     *
     * @param {array} [parameters.virtualNetworkRules] The list of virtual network
     * rules associated with this Data Lake Store account.
     *
     * @param {string} [parameters.firewallState] The current state of the IP
     * address firewall for this Data Lake Store account. Disabling the firewall
     * does not remove existing rules, they will just be ignored until the firewall
     * is re-enabled. Possible values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.firewallAllowAzureIps] The current state of
     * allowing or disallowing IPs originating within Azure through the firewall.
     * If the firewall is disabled, this is not enforced. Possible values include:
     * 'Enabled', 'Disabled'
     *
     * @param {array} [parameters.trustedIdProviders] The list of trusted identity
     * providers associated with this Data Lake Store account.
     *
     * @param {string} [parameters.trustedIdProviderState] The current state of the
     * trusted identity provider feature for this Data Lake Store account.
     * Disabling trusted identity provider functionality does not remove the
     * providers, they will just be ignored until this feature is re-enabled.
     * Possible values include: 'Enabled', 'Disabled'
     *
     * @param {string} [parameters.newTier] The commitment tier to use for next
     * month. Possible values include: 'Consumption', 'Commitment_1TB',
     * 'Commitment_10TB', 'Commitment_100TB', 'Commitment_500TB', 'Commitment_1PB',
     * 'Commitment_5PB'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DataLakeStoreAccount} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DataLakeStoreAccount} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DataLakeStoreAccount} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    beginUpdate(resourceGroupName: string, accountName: string, parameters: models.UpdateDataLakeStoreAccountParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DataLakeStoreAccount>;
    beginUpdate(resourceGroupName: string, accountName: string, parameters: models.UpdateDataLakeStoreAccountParameters, callback: ServiceCallback<models.DataLakeStoreAccount>): void;
    beginUpdate(resourceGroupName: string, accountName: string, parameters: models.UpdateDataLakeStoreAccountParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DataLakeStoreAccount>): void;


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

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


    /**
     * Lists the Data Lake Store accounts within the subscription. The response
     * includes a link to the next page of results, if any.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DataLakeStoreAccountListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DataLakeStoreAccountListResult>>;

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


    /**
     * Lists the Data Lake Store accounts within a specific resource group. The
     * response includes a link to the next page of results, if any.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DataLakeStoreAccountListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByResourceGroupNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DataLakeStoreAccountListResult>>;

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

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


    /**
     * Lists the Data Lake Store firewall rules within the specified Data Lake
     * Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<FirewallRuleListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByAccountWithHttpOperationResponse(resourceGroupName: string, accountName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.FirewallRuleListResult>>;

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


    /**
     * Creates or updates the specified firewall rule. During update, the firewall
     * rule with the specified name will be replaced with this new firewall rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} firewallRuleName The name of the firewall rule to create or
     * update.
     *
     * @param {object} parameters Parameters supplied to create or update the
     * firewall rule.
     *
     * @param {string} parameters.startIpAddress The start IP address for the
     * firewall rule. This can be either ipv4 or ipv6. Start and End should be in
     * the same protocol.
     *
     * @param {string} parameters.endIpAddress The end IP address for the firewall
     * rule. This can be either ipv4 or ipv6. Start and End should be in the same
     * protocol.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<FirewallRule>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateWithHttpOperationResponse(resourceGroupName: string, accountName: string, firewallRuleName: string, parameters: models.CreateOrUpdateFirewallRuleParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.FirewallRule>>;

    /**
     * Creates or updates the specified firewall rule. During update, the firewall
     * rule with the specified name will be replaced with this new firewall rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} firewallRuleName The name of the firewall rule to create or
     * update.
     *
     * @param {object} parameters Parameters supplied to create or update the
     * firewall rule.
     *
     * @param {string} parameters.startIpAddress The start IP address for the
     * firewall rule. This can be either ipv4 or ipv6. Start and End should be in
     * the same protocol.
     *
     * @param {string} parameters.endIpAddress The end IP address for the firewall
     * rule. This can be either ipv4 or ipv6. Start and End should be in the same
     * protocol.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {FirewallRule} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {FirewallRule} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link FirewallRule} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createOrUpdate(resourceGroupName: string, accountName: string, firewallRuleName: string, parameters: models.CreateOrUpdateFirewallRuleParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.FirewallRule>;
    createOrUpdate(resourceGroupName: string, accountName: string, firewallRuleName: string, parameters: models.CreateOrUpdateFirewallRuleParameters, callback: ServiceCallback<models.FirewallRule>): void;
    createOrUpdate(resourceGroupName: string, accountName: string, firewallRuleName: string, parameters: models.CreateOrUpdateFirewallRuleParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.FirewallRule>): void;


    /**
     * Gets the specified Data Lake Store firewall rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} firewallRuleName The name of the firewall rule to retrieve.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<FirewallRule>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(resourceGroupName: string, accountName: string, firewallRuleName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.FirewallRule>>;

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


    /**
     * Updates the specified firewall rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} firewallRuleName The name of the firewall rule to update.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.parameters] Parameters supplied to update the
     * firewall rule.
     *
     * @param {string} [options.parameters.startIpAddress] The start IP address for
     * the firewall rule. This can be either ipv4 or ipv6. Start and End should be
     * in the same protocol.
     *
     * @param {string} [options.parameters.endIpAddress] The end IP address for the
     * firewall rule. This can be either ipv4 or ipv6. Start and End should be in
     * the same protocol.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<FirewallRule>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(resourceGroupName: string, accountName: string, firewallRuleName: string, options?: { parameters? : models.UpdateFirewallRuleParameters, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.FirewallRule>>;

    /**
     * Updates the specified firewall rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} firewallRuleName The name of the firewall rule to update.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.parameters] Parameters supplied to update the
     * firewall rule.
     *
     * @param {string} [options.parameters.startIpAddress] The start IP address for
     * the firewall rule. This can be either ipv4 or ipv6. Start and End should be
     * in the same protocol.
     *
     * @param {string} [options.parameters.endIpAddress] The end IP address for the
     * firewall rule. This can be either ipv4 or ipv6. Start and End should be in
     * the same protocol.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {FirewallRule} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {FirewallRule} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link FirewallRule} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(resourceGroupName: string, accountName: string, firewallRuleName: string, options?: { parameters? : models.UpdateFirewallRuleParameters, customHeaders? : { [headerName: string]: string; } }): Promise<models.FirewallRule>;
    update(resourceGroupName: string, accountName: string, firewallRuleName: string, callback: ServiceCallback<models.FirewallRule>): void;
    update(resourceGroupName: string, accountName: string, firewallRuleName: string, options: { parameters? : models.UpdateFirewallRuleParameters, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.FirewallRule>): void;


    /**
     * Deletes the specified firewall rule from the specified Data Lake Store
     * account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} firewallRuleName The name of the firewall rule to delete.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(resourceGroupName: string, accountName: string, firewallRuleName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

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


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

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

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


    /**
     * Lists the Data Lake Store virtual network rules within the specified Data
     * Lake Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<VirtualNetworkRuleListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByAccountWithHttpOperationResponse(resourceGroupName: string, accountName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.VirtualNetworkRuleListResult>>;

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


    /**
     * Creates or updates the specified virtual network rule. During update, the
     * virtual network rule with the specified name will be replaced with this new
     * virtual network rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} virtualNetworkRuleName The name of the virtual network rule
     * to create or update.
     *
     * @param {object} parameters Parameters supplied to create or update the
     * virtual network rule.
     *
     * @param {string} parameters.subnetId The resource identifier for the subnet.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<VirtualNetworkRule>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateWithHttpOperationResponse(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, parameters: models.CreateOrUpdateVirtualNetworkRuleParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.VirtualNetworkRule>>;

    /**
     * Creates or updates the specified virtual network rule. During update, the
     * virtual network rule with the specified name will be replaced with this new
     * virtual network rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} virtualNetworkRuleName The name of the virtual network rule
     * to create or update.
     *
     * @param {object} parameters Parameters supplied to create or update the
     * virtual network rule.
     *
     * @param {string} parameters.subnetId The resource identifier for the subnet.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {VirtualNetworkRule} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {VirtualNetworkRule} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link VirtualNetworkRule} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createOrUpdate(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, parameters: models.CreateOrUpdateVirtualNetworkRuleParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.VirtualNetworkRule>;
    createOrUpdate(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, parameters: models.CreateOrUpdateVirtualNetworkRuleParameters, callback: ServiceCallback<models.VirtualNetworkRule>): void;
    createOrUpdate(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, parameters: models.CreateOrUpdateVirtualNetworkRuleParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkRule>): void;


    /**
     * Gets the specified Data Lake Store virtual network rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} virtualNetworkRuleName The name of the virtual network rule
     * to retrieve.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<VirtualNetworkRule>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.VirtualNetworkRule>>;

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


    /**
     * Updates the specified virtual network rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} virtualNetworkRuleName The name of the virtual network rule
     * to update.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.parameters] Parameters supplied to update the
     * virtual network rule.
     *
     * @param {string} [options.parameters.subnetId] The resource identifier for
     * the subnet.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<VirtualNetworkRule>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, options?: { parameters? : models.UpdateVirtualNetworkRuleParameters, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.VirtualNetworkRule>>;

    /**
     * Updates the specified virtual network rule.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} virtualNetworkRuleName The name of the virtual network rule
     * to update.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.parameters] Parameters supplied to update the
     * virtual network rule.
     *
     * @param {string} [options.parameters.subnetId] The resource identifier for
     * the subnet.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {VirtualNetworkRule} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {VirtualNetworkRule} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link VirtualNetworkRule} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, options?: { parameters? : models.UpdateVirtualNetworkRuleParameters, customHeaders? : { [headerName: string]: string; } }): Promise<models.VirtualNetworkRule>;
    update(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, callback: ServiceCallback<models.VirtualNetworkRule>): void;
    update(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, options: { parameters? : models.UpdateVirtualNetworkRuleParameters, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.VirtualNetworkRule>): void;


    /**
     * Deletes the specified virtual network rule from the specified Data Lake
     * Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} virtualNetworkRuleName The name of the virtual network rule
     * to delete.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(resourceGroupName: string, accountName: string, virtualNetworkRuleName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

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


    /**
     * Lists the Data Lake Store virtual network rules within the specified Data
     * Lake Store account.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<VirtualNetworkRuleListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByAccountNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.VirtualNetworkRuleListResult>>;

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

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


    /**
     * Lists the Data Lake Store trusted identity providers within the specified
     * Data Lake Store account.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<TrustedIdProviderListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByAccountWithHttpOperationResponse(resourceGroupName: string, accountName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TrustedIdProviderListResult>>;

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


    /**
     * Creates or updates the specified trusted identity provider. During update,
     * the trusted identity provider with the specified name will be replaced with
     * this new provider
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} trustedIdProviderName The name of the trusted identity
     * provider. This is used for differentiation of providers in the account.
     *
     * @param {object} parameters Parameters supplied to create or replace the
     * trusted identity provider.
     *
     * @param {string} parameters.idProvider The URL of this trusted identity
     * provider.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<TrustedIdProvider>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateWithHttpOperationResponse(resourceGroupName: string, accountName: string, trustedIdProviderName: string, parameters: models.CreateOrUpdateTrustedIdProviderParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TrustedIdProvider>>;

    /**
     * Creates or updates the specified trusted identity provider. During update,
     * the trusted identity provider with the specified name will be replaced with
     * this new provider
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} trustedIdProviderName The name of the trusted identity
     * provider. This is used for differentiation of providers in the account.
     *
     * @param {object} parameters Parameters supplied to create or replace the
     * trusted identity provider.
     *
     * @param {string} parameters.idProvider The URL of this trusted identity
     * provider.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {TrustedIdProvider} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {TrustedIdProvider} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link TrustedIdProvider} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createOrUpdate(resourceGroupName: string, accountName: string, trustedIdProviderName: string, parameters: models.CreateOrUpdateTrustedIdProviderParameters, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.TrustedIdProvider>;
    createOrUpdate(resourceGroupName: string, accountName: string, trustedIdProviderName: string, parameters: models.CreateOrUpdateTrustedIdProviderParameters, callback: ServiceCallback<models.TrustedIdProvider>): void;
    createOrUpdate(resourceGroupName: string, accountName: string, trustedIdProviderName: string, parameters: models.CreateOrUpdateTrustedIdProviderParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TrustedIdProvider>): void;


    /**
     * Gets the specified Data Lake Store trusted identity provider.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} trustedIdProviderName The name of the trusted identity
     * provider to retrieve.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<TrustedIdProvider>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(resourceGroupName: string, accountName: string, trustedIdProviderName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TrustedIdProvider>>;

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


    /**
     * Updates the specified trusted identity provider.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} trustedIdProviderName The name of the trusted identity
     * provider. This is used for differentiation of providers in the account.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.parameters] Parameters supplied to update the
     * trusted identity provider.
     *
     * @param {string} [options.parameters.idProvider] The URL of this trusted
     * identity provider.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<TrustedIdProvider>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(resourceGroupName: string, accountName: string, trustedIdProviderName: string, options?: { parameters? : models.UpdateTrustedIdProviderParameters, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TrustedIdProvider>>;

    /**
     * Updates the specified trusted identity provider.
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} trustedIdProviderName The name of the trusted identity
     * provider. This is used for differentiation of providers in the account.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.parameters] Parameters supplied to update the
     * trusted identity provider.
     *
     * @param {string} [options.parameters.idProvider] The URL of this trusted
     * identity provider.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {TrustedIdProvider} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {TrustedIdProvider} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link TrustedIdProvider} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(resourceGroupName: string, accountName: string, trustedIdProviderName: string, options?: { parameters? : models.UpdateTrustedIdProviderParameters, customHeaders? : { [headerName: string]: string; } }): Promise<models.TrustedIdProvider>;
    update(resourceGroupName: string, accountName: string, trustedIdProviderName: string, callback: ServiceCallback<models.TrustedIdProvider>): void;
    update(resourceGroupName: string, accountName: string, trustedIdProviderName: string, options: { parameters? : models.UpdateTrustedIdProviderParameters, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TrustedIdProvider>): void;


    /**
     * Deletes the specified trusted identity provider from the specified Data Lake
     * Store account
     *
     * @param {string} resourceGroupName The name of the Azure resource group.
     *
     * @param {string} accountName The name of the Data Lake Store account.
     *
     * @param {string} trustedIdProviderName The name of the trusted identity
     * provider to delete.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(resourceGroupName: string, accountName: string, trustedIdProviderName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

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


    /**
     * Lists the Data Lake Store trusted identity providers within the specified
     * Data Lake Store account.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<TrustedIdProviderListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByAccountNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TrustedIdProviderListResult>>;

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

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


    /**
     * Lists all of the available Data Lake Store REST API operations.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<OperationListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.OperationListResult>>;

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

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


    /**
     * Gets subscription-level properties and limits for Data Lake Store specified
     * by resource location.
     *
     * @param {string} location The resource location without whitespace.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<CapabilityInformation>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getCapabilityWithHttpOperationResponse(location: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.CapabilityInformation>>;

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