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

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

declare class NetworkManagementClient {
    /**
     * @class
     * Initializes a new instance of the NetworkManagementClient class.
     * @constructor
     *
     * @param {credentials} credentials - Gets Azure subscription credentials.
     *
     * @param {string} subscriptionId - Gets subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.
     *
     * @param {string} [baseUri] - The base URI of the service.
     *
     * @param {object} [options] - The parameter options
     *
     * @param {Array} [options.filters] - Filters to be added to the request pipeline
     *
     * @param {object} [options.requestOptions] - Options for the underlying request object
     * {@link https://github.com/request/request#requestoptions-callback Options doc}
     *
     * @param {boolean} [options.noRetryPolicy] - If set to true, turn off default retry policy
     *
     * @param {string} [options.apiVersion] - Client Api Version.
     *
     * @param {string} [options.acceptLanguage] - Gets or sets the preferred language for the response.
     *
     * @param {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30.
     *
     * @param {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true.
     *
     */
    constructor(credentials: ServiceClientCredentials, subscriptionId: string, baseUri: string, options: ServiceClientOptions);

    credentials: ServiceClientCredentials;

    subscriptionId: string;

    apiVersion: string;

    acceptLanguage: string;

    longRunningOperationRetryTimeout: number;

    generateClientRequestId: boolean;

    // Operation groups
    applicationGateways: operations.ApplicationGateways;
    expressRouteCircuitAuthorizations: operations.ExpressRouteCircuitAuthorizations;
    expressRouteCircuitPeerings: operations.ExpressRouteCircuitPeerings;
    expressRouteCircuits: operations.ExpressRouteCircuits;
    expressRouteServiceProviders: operations.ExpressRouteServiceProviders;
    loadBalancers: operations.LoadBalancers;
    localNetworkGateways: operations.LocalNetworkGateways;
    networkInterfaces: operations.NetworkInterfaces;
    networkSecurityGroups: operations.NetworkSecurityGroups;
    publicIPAddresses: operations.PublicIPAddresses;
    routeTables: operations.RouteTables;
    routes: operations.Routes;
    securityRules: operations.SecurityRules;
    subnets: operations.Subnets;
    usages: operations.Usages;
    virtualNetworkGatewayConnections: operations.VirtualNetworkGatewayConnections;
    virtualNetworkGateways: operations.VirtualNetworkGateways;
    virtualNetworks: operations.VirtualNetworks;

            /**
         * Checks whether a domain name in the cloudapp.net zone is available for use.
         *
         * @param {string} location The location of the domain name
         * 
         * @param {object} [options] Optional Parameters.
         * 
         * @param {string} [options.domainNameLabel] The domain name to be verified.
         * It must conform to the following regular expression:
         * ^[a-z][a-z0-9-]{1,61}[a-z0-9]$.
         * 
         * @param {object} [options.customHeaders] Headers that will be added to the
         * request
         * 
         * @param {ServiceCallback} [callback] callback function; see ServiceCallback
         * doc in ms-rest index.d.ts for details
         */
        checkDnsNameAvailability(location: string, options: { domainNameLabel? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DnsNameAvailabilityResult>): void;
        checkDnsNameAvailability(location: string, callback: ServiceCallback<models.DnsNameAvailabilityResult>): void;
}

export = NetworkManagementClient;
