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

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


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

    /**
     * Create or update a management lock at the resource group level.
     *
     * @param {string} resourceGroupName The resource group name.
     * 
     * @param {string} lockName The lock name.
     * 
     * @param {object} parameters The management lock parameters.
     * 
     * @param {string} [parameters.level] Gets or sets the lock level of the
     * management lock. Possible values include: 'NotSpecified', 'CanNotDelete',
     * 'ReadOnly'
     * 
     * @param {string} [parameters.notes] Gets or sets the notes of the management
     * lock.
     * 
     * @param {string} [parameters.id] Gets or sets the Id of the lock.
     * 
     * @param {string} [parameters.type] Gets or sets the type of the lock.
     * 
     * @param {string} [parameters.name] Gets or sets the name of the lock.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdateAtResourceGroupLevel(resourceGroupName: string, lockName: string, parameters: models.ManagementLockObject, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockObject>): void;
    createOrUpdateAtResourceGroupLevel(resourceGroupName: string, lockName: string, parameters: models.ManagementLockObject, callback: ServiceCallback<models.ManagementLockObject>): void;

    /**
     * Create or update a management lock at the resource level or any level below
     * resource.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} resourceProviderNamespace Resource identity.
     * 
     * @param {string} parentResourcePath Resource identity.
     * 
     * @param {string} resourceType Resource identity.
     * 
     * @param {string} resourceName Resource identity.
     * 
     * @param {string} lockName The name of lock.
     * 
     * @param {object} parameters Create or update management lock parameters.
     * 
     * @param {string} [parameters.level] Gets or sets the lock level of the
     * management lock. Possible values include: 'NotSpecified', 'CanNotDelete',
     * 'ReadOnly'
     * 
     * @param {string} [parameters.notes] Gets or sets the notes of the management
     * lock.
     * 
     * @param {string} [parameters.id] Gets or sets the Id of the lock.
     * 
     * @param {string} [parameters.type] Gets or sets the type of the lock.
     * 
     * @param {string} [parameters.name] Gets or sets the name of the lock.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdateAtResourceLevel(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, lockName: string, parameters: models.ManagementLockObject, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockObject>): void;
    createOrUpdateAtResourceLevel(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, lockName: string, parameters: models.ManagementLockObject, callback: ServiceCallback<models.ManagementLockObject>): void;

    /**
     * Deletes the management lock of a resource or any level below resource.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} resourceProviderNamespace Resource identity.
     * 
     * @param {string} parentResourcePath Resource identity.
     * 
     * @param {string} resourceType Resource identity.
     * 
     * @param {string} resourceName Resource identity.
     * 
     * @param {string} lockName The name of lock.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteAtResourceLevel(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, lockName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteAtResourceLevel(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, lockName: string, callback: ServiceCallback<void>): void;

    /**
     * Create or update a management lock at the subscription level.
     *
     * @param {string} lockName The name of lock.
     * 
     * @param {object} parameters The management lock parameters.
     * 
     * @param {string} [parameters.level] Gets or sets the lock level of the
     * management lock. Possible values include: 'NotSpecified', 'CanNotDelete',
     * 'ReadOnly'
     * 
     * @param {string} [parameters.notes] Gets or sets the notes of the management
     * lock.
     * 
     * @param {string} [parameters.id] Gets or sets the Id of the lock.
     * 
     * @param {string} [parameters.type] Gets or sets the type of the lock.
     * 
     * @param {string} [parameters.name] Gets or sets the name of the lock.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdateAtSubscriptionLevel(lockName: string, parameters: models.ManagementLockObject, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockObject>): void;
    createOrUpdateAtSubscriptionLevel(lockName: string, parameters: models.ManagementLockObject, callback: ServiceCallback<models.ManagementLockObject>): void;

    /**
     * Deletes the management lock of a subscription.
     *
     * @param {string} lockName The name of lock.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteAtSubscriptionLevel(lockName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteAtSubscriptionLevel(lockName: string, callback: ServiceCallback<void>): void;

    /**
     * Gets the management lock of a scope.
     *
     * @param {string} lockName Name of the management lock.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(lockName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockObject>): void;
    get(lockName: string, callback: ServiceCallback<models.ManagementLockObject>): void;

    /**
     * Deletes the management lock of a resource group.
     *
     * @param {string} resourceGroup The resource group names.
     * 
     * @param {string} lockName The name of lock.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteAtResourceGroupLevel(resourceGroup: string, lockName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteAtResourceGroupLevel(resourceGroup: string, lockName: string, callback: ServiceCallback<void>): void;

    /**
     * Gets all the management locks of a resource group.
     *
     * @param {string} resourceGroupName Resource group name.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @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
     */
    listAtResourceGroupLevel(resourceGroupName: string, options: { filter? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockListResult>): void;
    listAtResourceGroupLevel(resourceGroupName: string, callback: ServiceCallback<models.ManagementLockListResult>): void;

    /**
     * Gets all the management locks of a resource or any level below resource.
     *
     * @param {string} resourceGroupName The name of the resource group. The name
     * is case insensitive.
     * 
     * @param {string} resourceProviderNamespace Resource identity.
     * 
     * @param {string} parentResourcePath Resource identity.
     * 
     * @param {string} resourceType Resource identity.
     * 
     * @param {string} resourceName Resource identity.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @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
     */
    listAtResourceLevel(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, options: { filter? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockListResult>): void;
    listAtResourceLevel(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, callback: ServiceCallback<models.ManagementLockListResult>): void;

    /**
     * Get a list of management locks at resource level or below.
     *
     * @param {string} nextLink NextLink from the previous successful call to List
     * operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listNext(nextLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockListResult>): void;
    listNext(nextLink: string, callback: ServiceCallback<models.ManagementLockListResult>): void;

    /**
     * Gets all the management locks of a subscription.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {string} [options.filter] The filter to apply on the operation.
     * 
     * @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
     */
    listAtSubscriptionLevel(options: { filter? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockListResult>): void;
    listAtSubscriptionLevel(callback: ServiceCallback<models.ManagementLockListResult>): void;

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

    /**
     * Gets all the management locks of a resource or any level below resource.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listAtResourceLevelNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockListResult>): void;
    listAtResourceLevelNext(nextPageLink: string, callback: ServiceCallback<models.ManagementLockListResult>): void;

    /**
     * Get a list of management locks at resource level or below.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listNextNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ManagementLockListResult>): void;
    listNextNext(nextPageLink: string, callback: ServiceCallback<models.ManagementLockListResult>): void;

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