

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


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


    /**
     * @summary Deletes a policy assignment.
     *
     * This operation deletes a policy assignment, given its name and the scope it
     * was created in. The scope of a policy assignment is the part of its ID
     * preceding
     * '/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     *
     * @param {string} scope The scope of the policy assignment. Valid scopes are:
     * management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'
     *
     * @param {string} policyAssignmentName The name of the policy assignment 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<PolicyAssignment>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(scope: string, policyAssignmentName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignment>>;

    /**
     * @summary Deletes a policy assignment.
     *
     * This operation deletes a policy assignment, given its name and the scope it
     * was created in. The scope of a policy assignment is the part of its ID
     * preceding
     * '/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     *
     * @param {string} scope The scope of the policy assignment. Valid scopes are:
     * management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'
     *
     * @param {string} policyAssignmentName The name of the policy assignment 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 {PolicyAssignment} - 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.
     *
     *                      {PolicyAssignment} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignment} 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.
     */
    deleteMethod(scope: string, policyAssignmentName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignment>;
    deleteMethod(scope: string, policyAssignmentName: string, callback: ServiceCallback<models.PolicyAssignment>): void;
    deleteMethod(scope: string, policyAssignmentName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignment>): void;


    /**
     * @summary Creates or updates a policy assignment.
     *
     * This operation creates or updates a policy assignment with the given scope
     * and name. Policy assignments apply to all resources contained within their
     * scope. For example, when you assign a policy at resource group scope, that
     * policy applies to all resources in the group.
     *
     * @param {string} scope The scope of the policy assignment. Valid scopes are:
     * management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'
     *
     * @param {string} policyAssignmentName The name of the policy assignment.
     *
     * @param {object} parameters Parameters for the policy assignment.
     *
     * @param {string} [parameters.displayName] The display name of the policy
     * assignment.
     *
     * @param {string} [parameters.policyDefinitionId] The ID of the policy
     * definition or policy set definition being assigned.
     *
     * @param {string} [parameters.scope] The scope for the policy assignment.
     *
     * @param {array} [parameters.notScopes] The policy's excluded scopes.
     *
     * @param {object} [parameters.parameters] Required if a parameter is used in
     * policy rule.
     *
     * @param {string} [parameters.description] This message will be part of
     * response in case of policy violation.
     *
     * @param {object} [parameters.metadata] The policy assignment metadata.
     *
     * @param {object} [parameters.sku] The policy sku. This property is optional,
     * obsolete, and will be ignored.
     *
     * @param {string} parameters.sku.name The name of the policy sku. Possible
     * values are A0 and A1.
     *
     * @param {string} [parameters.sku.tier] The policy sku tier. Possible values
     * are Free and Standard.
     *
     * @param {string} [parameters.location] The location of the policy assignment.
     * Only required when utilizing managed identity.
     *
     * @param {object} [parameters.identity] The managed identity associated with
     * the policy assignment.
     *
     * @param {string} [parameters.identity.type] The identity type. Possible
     * values include: 'SystemAssigned', 'None'
     *
     * @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<PolicyAssignment>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(scope: string, policyAssignmentName: string, parameters: models.PolicyAssignment, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignment>>;

    /**
     * @summary Creates or updates a policy assignment.
     *
     * This operation creates or updates a policy assignment with the given scope
     * and name. Policy assignments apply to all resources contained within their
     * scope. For example, when you assign a policy at resource group scope, that
     * policy applies to all resources in the group.
     *
     * @param {string} scope The scope of the policy assignment. Valid scopes are:
     * management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'
     *
     * @param {string} policyAssignmentName The name of the policy assignment.
     *
     * @param {object} parameters Parameters for the policy assignment.
     *
     * @param {string} [parameters.displayName] The display name of the policy
     * assignment.
     *
     * @param {string} [parameters.policyDefinitionId] The ID of the policy
     * definition or policy set definition being assigned.
     *
     * @param {string} [parameters.scope] The scope for the policy assignment.
     *
     * @param {array} [parameters.notScopes] The policy's excluded scopes.
     *
     * @param {object} [parameters.parameters] Required if a parameter is used in
     * policy rule.
     *
     * @param {string} [parameters.description] This message will be part of
     * response in case of policy violation.
     *
     * @param {object} [parameters.metadata] The policy assignment metadata.
     *
     * @param {object} [parameters.sku] The policy sku. This property is optional,
     * obsolete, and will be ignored.
     *
     * @param {string} parameters.sku.name The name of the policy sku. Possible
     * values are A0 and A1.
     *
     * @param {string} [parameters.sku.tier] The policy sku tier. Possible values
     * are Free and Standard.
     *
     * @param {string} [parameters.location] The location of the policy assignment.
     * Only required when utilizing managed identity.
     *
     * @param {object} [parameters.identity] The managed identity associated with
     * the policy assignment.
     *
     * @param {string} [parameters.identity.type] The identity type. Possible
     * values include: 'SystemAssigned', 'None'
     *
     * @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 {PolicyAssignment} - 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.
     *
     *                      {PolicyAssignment} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignment} 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(scope: string, policyAssignmentName: string, parameters: models.PolicyAssignment, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignment>;
    create(scope: string, policyAssignmentName: string, parameters: models.PolicyAssignment, callback: ServiceCallback<models.PolicyAssignment>): void;
    create(scope: string, policyAssignmentName: string, parameters: models.PolicyAssignment, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignment>): void;


    /**
     * @summary Retrieves a policy assignment.
     *
     * This operation retrieves a single policy assignment, given its name and the
     * scope it was created at.
     *
     * @param {string} scope The scope of the policy assignment. Valid scopes are:
     * management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'
     *
     * @param {string} policyAssignmentName The name of the policy assignment to
     * get.
     *
     * @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<PolicyAssignment>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(scope: string, policyAssignmentName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignment>>;

    /**
     * @summary Retrieves a policy assignment.
     *
     * This operation retrieves a single policy assignment, given its name and the
     * scope it was created at.
     *
     * @param {string} scope The scope of the policy assignment. Valid scopes are:
     * management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'
     *
     * @param {string} policyAssignmentName The name of the policy assignment to
     * get.
     *
     * @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 {PolicyAssignment} - 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.
     *
     *                      {PolicyAssignment} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignment} 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(scope: string, policyAssignmentName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignment>;
    get(scope: string, policyAssignmentName: string, callback: ServiceCallback<models.PolicyAssignment>): void;
    get(scope: string, policyAssignmentName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignment>): void;


    /**
     * @summary Retrieves all policy assignments that apply to a resource group.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the given resource group in the given subscription that match the optional
     * given $filter. Valid values for $filter are: 'atScope()' or
     * 'policyDefinitionId eq '{value}''. If $filter is not provided, the
     * unfiltered list includes all policy assignments associated with the resource
     * group, including those that apply directly or apply from containing scopes,
     * as well as any applied to resources contained within the resource group. If
     * $filter=atScope() is provided, the returned list includes all policy
     * assignments that apply to the resource group, which is everything in the
     * unfiltered list except those applied to resources contained within the
     * resource group. If $filter=policyDefinitionId eq '{value}' is provided, the
     * returned list includes only policy assignments that apply to the resource
     * group and assign the policy definition whose id is {value}.
     *
     * @param {string} resourceGroupName The name of the resource group that
     * contains policy assignments.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] The filter to apply on the operation. Valid
     * values for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, no filtering is performed.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<PolicyAssignmentListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listForResourceGroupWithHttpOperationResponse(resourceGroupName: string, options?: { filter? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignmentListResult>>;

    /**
     * @summary Retrieves all policy assignments that apply to a resource group.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the given resource group in the given subscription that match the optional
     * given $filter. Valid values for $filter are: 'atScope()' or
     * 'policyDefinitionId eq '{value}''. If $filter is not provided, the
     * unfiltered list includes all policy assignments associated with the resource
     * group, including those that apply directly or apply from containing scopes,
     * as well as any applied to resources contained within the resource group. If
     * $filter=atScope() is provided, the returned list includes all policy
     * assignments that apply to the resource group, which is everything in the
     * unfiltered list except those applied to resources contained within the
     * resource group. If $filter=policyDefinitionId eq '{value}' is provided, the
     * returned list includes only policy assignments that apply to the resource
     * group and assign the policy definition whose id is {value}.
     *
     * @param {string} resourceGroupName The name of the resource group that
     * contains policy assignments.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] The filter to apply on the operation. Valid
     * values for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, no filtering is performed.
     *
     * @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 {PolicyAssignmentListResult} - 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.
     *
     *                      {PolicyAssignmentListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignmentListResult} 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.
     */
    listForResourceGroup(resourceGroupName: string, options?: { filter? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignmentListResult>;
    listForResourceGroup(resourceGroupName: string, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;
    listForResourceGroup(resourceGroupName: string, options: { filter? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;


    /**
     * @summary Retrieves all policy assignments that apply to a resource.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the specified resource in the given resource group and subscription that
     * match the optional given $filter. Valid values for $filter are: 'atScope()'
     * or 'policyDefinitionId eq '{value}''. If $filter is not provided, the
     * unfiltered list includes all policy assignments associated with the
     * resource, including those that apply directly or from all containing scopes,
     * as well as any applied to resources contained within the resource. If
     * $filter=atScope() is provided, the returned list includes all policy
     * assignments that apply to the resource, which is everything in the
     * unfiltered list except those applied to resources contained within the
     * resource. If $filter=policyDefinitionId eq '{value}' is provided, the
     * returned list includes only policy assignments that apply to the resource
     * and assign the policy definition whose id is {value}. Three parameters plus
     * the resource name are used to identify a specific resource. If the resource
     * is not part of a parent resource (the more common case), the parent resource
     * path should not be provided (or provided as ''). For example a web app could
     * be specified as ({resourceProviderNamespace} == 'Microsoft.Web',
     * {parentResourcePath} == '', {resourceType} == 'sites', {resourceName} ==
     * 'MyWebApp'). If the resource is part of a parent resource, then all
     * parameters should be provided. For example a virtual machine DNS name could
     * be specified as ({resourceProviderNamespace} == 'Microsoft.Compute',
     * {parentResourcePath} == 'virtualMachines/MyVirtualMachine', {resourceType}
     * == 'domainNames', {resourceName} == 'MyComputerName'). A convenient
     * alternative to providing the namespace and type name separately is to
     * provide both in the {resourceType} parameter, format:
     * ({resourceProviderNamespace} == '', {parentResourcePath} == '',
     * {resourceType} == 'Microsoft.Web/sites', {resourceName} == 'MyWebApp').
     *
     * @param {string} resourceGroupName The name of the resource group containing
     * the resource.
     *
     * @param {string} resourceProviderNamespace The namespace of the resource
     * provider. For example, the namespace of a virtual machine is
     * Microsoft.Compute (from Microsoft.Compute/virtualMachines)
     *
     * @param {string} parentResourcePath The parent resource path. Use empty
     * string if there is none.
     *
     * @param {string} resourceType The resource type name. For example the type
     * name of a web app is 'sites' (from Microsoft.Web/sites).
     *
     * @param {string} resourceName The name of the resource.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] The filter to apply on the operation. Valid
     * values for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, no filtering is performed.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<PolicyAssignmentListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listForResourceWithHttpOperationResponse(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, options?: { filter? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignmentListResult>>;

    /**
     * @summary Retrieves all policy assignments that apply to a resource.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the specified resource in the given resource group and subscription that
     * match the optional given $filter. Valid values for $filter are: 'atScope()'
     * or 'policyDefinitionId eq '{value}''. If $filter is not provided, the
     * unfiltered list includes all policy assignments associated with the
     * resource, including those that apply directly or from all containing scopes,
     * as well as any applied to resources contained within the resource. If
     * $filter=atScope() is provided, the returned list includes all policy
     * assignments that apply to the resource, which is everything in the
     * unfiltered list except those applied to resources contained within the
     * resource. If $filter=policyDefinitionId eq '{value}' is provided, the
     * returned list includes only policy assignments that apply to the resource
     * and assign the policy definition whose id is {value}. Three parameters plus
     * the resource name are used to identify a specific resource. If the resource
     * is not part of a parent resource (the more common case), the parent resource
     * path should not be provided (or provided as ''). For example a web app could
     * be specified as ({resourceProviderNamespace} == 'Microsoft.Web',
     * {parentResourcePath} == '', {resourceType} == 'sites', {resourceName} ==
     * 'MyWebApp'). If the resource is part of a parent resource, then all
     * parameters should be provided. For example a virtual machine DNS name could
     * be specified as ({resourceProviderNamespace} == 'Microsoft.Compute',
     * {parentResourcePath} == 'virtualMachines/MyVirtualMachine', {resourceType}
     * == 'domainNames', {resourceName} == 'MyComputerName'). A convenient
     * alternative to providing the namespace and type name separately is to
     * provide both in the {resourceType} parameter, format:
     * ({resourceProviderNamespace} == '', {parentResourcePath} == '',
     * {resourceType} == 'Microsoft.Web/sites', {resourceName} == 'MyWebApp').
     *
     * @param {string} resourceGroupName The name of the resource group containing
     * the resource.
     *
     * @param {string} resourceProviderNamespace The namespace of the resource
     * provider. For example, the namespace of a virtual machine is
     * Microsoft.Compute (from Microsoft.Compute/virtualMachines)
     *
     * @param {string} parentResourcePath The parent resource path. Use empty
     * string if there is none.
     *
     * @param {string} resourceType The resource type name. For example the type
     * name of a web app is 'sites' (from Microsoft.Web/sites).
     *
     * @param {string} resourceName The name of the resource.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] The filter to apply on the operation. Valid
     * values for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, no filtering is performed.
     *
     * @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 {PolicyAssignmentListResult} - 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.
     *
     *                      {PolicyAssignmentListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignmentListResult} 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.
     */
    listForResource(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, options?: { filter? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignmentListResult>;
    listForResource(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;
    listForResource(resourceGroupName: string, resourceProviderNamespace: string, parentResourcePath: string, resourceType: string, resourceName: string, options: { filter? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;


    /**
     * @summary Retrieves all policy assignments that apply to a subscription.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the given subscription that match the optional given $filter. Valid values
     * for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, the unfiltered list includes all policy assignments
     * associated with the subscription, including those that apply directly or
     * from management groups that contain the given subscription, as well as any
     * applied to objects contained within the subscription. If $filter=atScope()
     * is provided, the returned list includes all policy assignments that apply to
     * the subscription, which is everything in the unfiltered list except those
     * applied to objects contained within the subscription. If
     * $filter=policyDefinitionId eq '{value}' is provided, the returned list
     * includes only policy assignments that apply to the subscription and assign
     * the policy definition whose id is {value}.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] The filter to apply on the operation. Valid
     * values for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, no filtering is performed.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<PolicyAssignmentListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(options?: { filter? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignmentListResult>>;

    /**
     * @summary Retrieves all policy assignments that apply to a subscription.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the given subscription that match the optional given $filter. Valid values
     * for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, the unfiltered list includes all policy assignments
     * associated with the subscription, including those that apply directly or
     * from management groups that contain the given subscription, as well as any
     * applied to objects contained within the subscription. If $filter=atScope()
     * is provided, the returned list includes all policy assignments that apply to
     * the subscription, which is everything in the unfiltered list except those
     * applied to objects contained within the subscription. If
     * $filter=policyDefinitionId eq '{value}' is provided, the returned list
     * includes only policy assignments that apply to the subscription and assign
     * the policy definition whose id is {value}.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.filter] The filter to apply on the operation. Valid
     * values for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, no filtering is performed.
     *
     * @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 {PolicyAssignmentListResult} - 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.
     *
     *                      {PolicyAssignmentListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignmentListResult} 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, customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignmentListResult>;
    list(callback: ServiceCallback<models.PolicyAssignmentListResult>): void;
    list(options: { filter? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;


    /**
     * @summary Deletes a policy assignment.
     *
     * This operation deletes the policy with the given ID. Policy assignment IDs
     * have this format:
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     * Valid formats for {scope} are:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'
     * (management group), '/subscriptions/{subscriptionId}' (subscription),
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'
     * (resource group), or
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'
     * (resource).
     *
     * @param {string} policyAssignmentId The ID of the policy assignment to
     * delete. Use the format
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     *
     * @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<PolicyAssignment>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteByIdWithHttpOperationResponse(policyAssignmentId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignment>>;

    /**
     * @summary Deletes a policy assignment.
     *
     * This operation deletes the policy with the given ID. Policy assignment IDs
     * have this format:
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     * Valid formats for {scope} are:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'
     * (management group), '/subscriptions/{subscriptionId}' (subscription),
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}'
     * (resource group), or
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'
     * (resource).
     *
     * @param {string} policyAssignmentId The ID of the policy assignment to
     * delete. Use the format
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     *
     * @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 {PolicyAssignment} - 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.
     *
     *                      {PolicyAssignment} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignment} 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.
     */
    deleteById(policyAssignmentId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignment>;
    deleteById(policyAssignmentId: string, callback: ServiceCallback<models.PolicyAssignment>): void;
    deleteById(policyAssignmentId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignment>): void;


    /**
     * @summary Creates or updates a policy assignment.
     *
     * This operation creates or updates the policy assignment with the given ID.
     * Policy assignments made on a scope apply to all resources contained in that
     * scope. For example, when you assign a policy to a resource group that policy
     * applies to all resources in the group. Policy assignment IDs have this
     * format:
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     * Valid scopes are: management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'.
     *
     * @param {string} policyAssignmentId The ID of the policy assignment to
     * create. Use the format
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     *
     * @param {object} parameters Parameters for policy assignment.
     *
     * @param {string} [parameters.displayName] The display name of the policy
     * assignment.
     *
     * @param {string} [parameters.policyDefinitionId] The ID of the policy
     * definition or policy set definition being assigned.
     *
     * @param {string} [parameters.scope] The scope for the policy assignment.
     *
     * @param {array} [parameters.notScopes] The policy's excluded scopes.
     *
     * @param {object} [parameters.parameters] Required if a parameter is used in
     * policy rule.
     *
     * @param {string} [parameters.description] This message will be part of
     * response in case of policy violation.
     *
     * @param {object} [parameters.metadata] The policy assignment metadata.
     *
     * @param {object} [parameters.sku] The policy sku. This property is optional,
     * obsolete, and will be ignored.
     *
     * @param {string} parameters.sku.name The name of the policy sku. Possible
     * values are A0 and A1.
     *
     * @param {string} [parameters.sku.tier] The policy sku tier. Possible values
     * are Free and Standard.
     *
     * @param {string} [parameters.location] The location of the policy assignment.
     * Only required when utilizing managed identity.
     *
     * @param {object} [parameters.identity] The managed identity associated with
     * the policy assignment.
     *
     * @param {string} [parameters.identity.type] The identity type. Possible
     * values include: 'SystemAssigned', 'None'
     *
     * @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<PolicyAssignment>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createByIdWithHttpOperationResponse(policyAssignmentId: string, parameters: models.PolicyAssignment, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignment>>;

    /**
     * @summary Creates or updates a policy assignment.
     *
     * This operation creates or updates the policy assignment with the given ID.
     * Policy assignments made on a scope apply to all resources contained in that
     * scope. For example, when you assign a policy to a resource group that policy
     * applies to all resources in the group. Policy assignment IDs have this
     * format:
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     * Valid scopes are: management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'.
     *
     * @param {string} policyAssignmentId The ID of the policy assignment to
     * create. Use the format
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     *
     * @param {object} parameters Parameters for policy assignment.
     *
     * @param {string} [parameters.displayName] The display name of the policy
     * assignment.
     *
     * @param {string} [parameters.policyDefinitionId] The ID of the policy
     * definition or policy set definition being assigned.
     *
     * @param {string} [parameters.scope] The scope for the policy assignment.
     *
     * @param {array} [parameters.notScopes] The policy's excluded scopes.
     *
     * @param {object} [parameters.parameters] Required if a parameter is used in
     * policy rule.
     *
     * @param {string} [parameters.description] This message will be part of
     * response in case of policy violation.
     *
     * @param {object} [parameters.metadata] The policy assignment metadata.
     *
     * @param {object} [parameters.sku] The policy sku. This property is optional,
     * obsolete, and will be ignored.
     *
     * @param {string} parameters.sku.name The name of the policy sku. Possible
     * values are A0 and A1.
     *
     * @param {string} [parameters.sku.tier] The policy sku tier. Possible values
     * are Free and Standard.
     *
     * @param {string} [parameters.location] The location of the policy assignment.
     * Only required when utilizing managed identity.
     *
     * @param {object} [parameters.identity] The managed identity associated with
     * the policy assignment.
     *
     * @param {string} [parameters.identity.type] The identity type. Possible
     * values include: 'SystemAssigned', 'None'
     *
     * @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 {PolicyAssignment} - 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.
     *
     *                      {PolicyAssignment} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignment} 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.
     */
    createById(policyAssignmentId: string, parameters: models.PolicyAssignment, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignment>;
    createById(policyAssignmentId: string, parameters: models.PolicyAssignment, callback: ServiceCallback<models.PolicyAssignment>): void;
    createById(policyAssignmentId: string, parameters: models.PolicyAssignment, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignment>): void;


    /**
     * @summary Retrieves the policy assignment with the given ID.
     *
     * The operation retrieves the policy assignment with the given ID. Policy
     * assignment IDs have this format:
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     * Valid scopes are: management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'.
     *
     * @param {string} policyAssignmentId The ID of the policy assignment to get.
     * Use the format
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     *
     * @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<PolicyAssignment>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getByIdWithHttpOperationResponse(policyAssignmentId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignment>>;

    /**
     * @summary Retrieves the policy assignment with the given ID.
     *
     * The operation retrieves the policy assignment with the given ID. Policy
     * assignment IDs have this format:
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     * Valid scopes are: management group (format:
     * '/providers/Microsoft.Management/managementGroups/{managementGroup}'),
     * subscription (format: '/subscriptions/{subscriptionId}'), resource group
     * (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}', or
     * resource (format:
     * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'.
     *
     * @param {string} policyAssignmentId The ID of the policy assignment to get.
     * Use the format
     * '{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}'.
     *
     * @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 {PolicyAssignment} - 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.
     *
     *                      {PolicyAssignment} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignment} 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.
     */
    getById(policyAssignmentId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignment>;
    getById(policyAssignmentId: string, callback: ServiceCallback<models.PolicyAssignment>): void;
    getById(policyAssignmentId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignment>): void;


    /**
     * @summary Retrieves all policy assignments that apply to a resource group.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the given resource group in the given subscription that match the optional
     * given $filter. Valid values for $filter are: 'atScope()' or
     * 'policyDefinitionId eq '{value}''. If $filter is not provided, the
     * unfiltered list includes all policy assignments associated with the resource
     * group, including those that apply directly or apply from containing scopes,
     * as well as any applied to resources contained within the resource group. If
     * $filter=atScope() is provided, the returned list includes all policy
     * assignments that apply to the resource group, which is everything in the
     * unfiltered list except those applied to resources contained within the
     * resource group. If $filter=policyDefinitionId eq '{value}' is provided, the
     * returned list includes only policy assignments that apply to the resource
     * group and assign the policy definition whose id is {value}.
     *
     * @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<PolicyAssignmentListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listForResourceGroupNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignmentListResult>>;

    /**
     * @summary Retrieves all policy assignments that apply to a resource group.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the given resource group in the given subscription that match the optional
     * given $filter. Valid values for $filter are: 'atScope()' or
     * 'policyDefinitionId eq '{value}''. If $filter is not provided, the
     * unfiltered list includes all policy assignments associated with the resource
     * group, including those that apply directly or apply from containing scopes,
     * as well as any applied to resources contained within the resource group. If
     * $filter=atScope() is provided, the returned list includes all policy
     * assignments that apply to the resource group, which is everything in the
     * unfiltered list except those applied to resources contained within the
     * resource group. If $filter=policyDefinitionId eq '{value}' is provided, the
     * returned list includes only policy assignments that apply to the resource
     * group and assign the policy definition whose id is {value}.
     *
     * @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 {PolicyAssignmentListResult} - 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.
     *
     *                      {PolicyAssignmentListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignmentListResult} 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.
     */
    listForResourceGroupNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignmentListResult>;
    listForResourceGroupNext(nextPageLink: string, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;
    listForResourceGroupNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;


    /**
     * @summary Retrieves all policy assignments that apply to a resource.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the specified resource in the given resource group and subscription that
     * match the optional given $filter. Valid values for $filter are: 'atScope()'
     * or 'policyDefinitionId eq '{value}''. If $filter is not provided, the
     * unfiltered list includes all policy assignments associated with the
     * resource, including those that apply directly or from all containing scopes,
     * as well as any applied to resources contained within the resource. If
     * $filter=atScope() is provided, the returned list includes all policy
     * assignments that apply to the resource, which is everything in the
     * unfiltered list except those applied to resources contained within the
     * resource. If $filter=policyDefinitionId eq '{value}' is provided, the
     * returned list includes only policy assignments that apply to the resource
     * and assign the policy definition whose id is {value}. Three parameters plus
     * the resource name are used to identify a specific resource. If the resource
     * is not part of a parent resource (the more common case), the parent resource
     * path should not be provided (or provided as ''). For example a web app could
     * be specified as ({resourceProviderNamespace} == 'Microsoft.Web',
     * {parentResourcePath} == '', {resourceType} == 'sites', {resourceName} ==
     * 'MyWebApp'). If the resource is part of a parent resource, then all
     * parameters should be provided. For example a virtual machine DNS name could
     * be specified as ({resourceProviderNamespace} == 'Microsoft.Compute',
     * {parentResourcePath} == 'virtualMachines/MyVirtualMachine', {resourceType}
     * == 'domainNames', {resourceName} == 'MyComputerName'). A convenient
     * alternative to providing the namespace and type name separately is to
     * provide both in the {resourceType} parameter, format:
     * ({resourceProviderNamespace} == '', {parentResourcePath} == '',
     * {resourceType} == 'Microsoft.Web/sites', {resourceName} == 'MyWebApp').
     *
     * @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<PolicyAssignmentListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listForResourceNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignmentListResult>>;

    /**
     * @summary Retrieves all policy assignments that apply to a resource.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the specified resource in the given resource group and subscription that
     * match the optional given $filter. Valid values for $filter are: 'atScope()'
     * or 'policyDefinitionId eq '{value}''. If $filter is not provided, the
     * unfiltered list includes all policy assignments associated with the
     * resource, including those that apply directly or from all containing scopes,
     * as well as any applied to resources contained within the resource. If
     * $filter=atScope() is provided, the returned list includes all policy
     * assignments that apply to the resource, which is everything in the
     * unfiltered list except those applied to resources contained within the
     * resource. If $filter=policyDefinitionId eq '{value}' is provided, the
     * returned list includes only policy assignments that apply to the resource
     * and assign the policy definition whose id is {value}. Three parameters plus
     * the resource name are used to identify a specific resource. If the resource
     * is not part of a parent resource (the more common case), the parent resource
     * path should not be provided (or provided as ''). For example a web app could
     * be specified as ({resourceProviderNamespace} == 'Microsoft.Web',
     * {parentResourcePath} == '', {resourceType} == 'sites', {resourceName} ==
     * 'MyWebApp'). If the resource is part of a parent resource, then all
     * parameters should be provided. For example a virtual machine DNS name could
     * be specified as ({resourceProviderNamespace} == 'Microsoft.Compute',
     * {parentResourcePath} == 'virtualMachines/MyVirtualMachine', {resourceType}
     * == 'domainNames', {resourceName} == 'MyComputerName'). A convenient
     * alternative to providing the namespace and type name separately is to
     * provide both in the {resourceType} parameter, format:
     * ({resourceProviderNamespace} == '', {parentResourcePath} == '',
     * {resourceType} == 'Microsoft.Web/sites', {resourceName} == 'MyWebApp').
     *
     * @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 {PolicyAssignmentListResult} - 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.
     *
     *                      {PolicyAssignmentListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignmentListResult} 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.
     */
    listForResourceNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyAssignmentListResult>;
    listForResourceNext(nextPageLink: string, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;
    listForResourceNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;


    /**
     * @summary Retrieves all policy assignments that apply to a subscription.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the given subscription that match the optional given $filter. Valid values
     * for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, the unfiltered list includes all policy assignments
     * associated with the subscription, including those that apply directly or
     * from management groups that contain the given subscription, as well as any
     * applied to objects contained within the subscription. If $filter=atScope()
     * is provided, the returned list includes all policy assignments that apply to
     * the subscription, which is everything in the unfiltered list except those
     * applied to objects contained within the subscription. If
     * $filter=policyDefinitionId eq '{value}' is provided, the returned list
     * includes only policy assignments that apply to the subscription and assign
     * the policy definition whose id is {value}.
     *
     * @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<PolicyAssignmentListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyAssignmentListResult>>;

    /**
     * @summary Retrieves all policy assignments that apply to a subscription.
     *
     * This operation retrieves the list of all policy assignments associated with
     * the given subscription that match the optional given $filter. Valid values
     * for $filter are: 'atScope()' or 'policyDefinitionId eq '{value}''. If
     * $filter is not provided, the unfiltered list includes all policy assignments
     * associated with the subscription, including those that apply directly or
     * from management groups that contain the given subscription, as well as any
     * applied to objects contained within the subscription. If $filter=atScope()
     * is provided, the returned list includes all policy assignments that apply to
     * the subscription, which is everything in the unfiltered list except those
     * applied to objects contained within the subscription. If
     * $filter=policyDefinitionId eq '{value}' is provided, the returned list
     * includes only policy assignments that apply to the subscription and assign
     * the policy definition whose id is {value}.
     *
     * @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 {PolicyAssignmentListResult} - 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.
     *
     *                      {PolicyAssignmentListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyAssignmentListResult} 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.PolicyAssignmentListResult>;
    listNext(nextPageLink: string, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyAssignmentListResult>): void;
}

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


    /**
     * @summary Creates or updates a policy definition in a subscription.
     *
     * This operation creates or updates a policy definition in the given
     * subscription with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * create.
     *
     * @param {object} parameters The policy definition properties.
     *
     * @param {string} [parameters.policyType] The type of policy definition.
     * Possible values are NotSpecified, BuiltIn, and Custom. Possible values
     * include: 'NotSpecified', 'BuiltIn', 'Custom'
     *
     * @param {string} [parameters.mode] The policy definition mode. Possible
     * values are NotSpecified, Indexed, and All. Possible values include:
     * 'NotSpecified', 'Indexed', 'All'
     *
     * @param {string} [parameters.displayName] The display name of the policy
     * definition.
     *
     * @param {string} [parameters.description] The policy definition description.
     *
     * @param {object} [parameters.policyRule] The policy rule.
     *
     * @param {object} [parameters.metadata] The policy definition metadata.
     *
     * @param {object} [parameters.parameters] Required if a parameter is used in
     * policy rule.
     *
     * @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<PolicyDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateWithHttpOperationResponse(policyDefinitionName: string, parameters: models.PolicyDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinition>>;

    /**
     * @summary Creates or updates a policy definition in a subscription.
     *
     * This operation creates or updates a policy definition in the given
     * subscription with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * create.
     *
     * @param {object} parameters The policy definition properties.
     *
     * @param {string} [parameters.policyType] The type of policy definition.
     * Possible values are NotSpecified, BuiltIn, and Custom. Possible values
     * include: 'NotSpecified', 'BuiltIn', 'Custom'
     *
     * @param {string} [parameters.mode] The policy definition mode. Possible
     * values are NotSpecified, Indexed, and All. Possible values include:
     * 'NotSpecified', 'Indexed', 'All'
     *
     * @param {string} [parameters.displayName] The display name of the policy
     * definition.
     *
     * @param {string} [parameters.description] The policy definition description.
     *
     * @param {object} [parameters.policyRule] The policy rule.
     *
     * @param {object} [parameters.metadata] The policy definition metadata.
     *
     * @param {object} [parameters.parameters] Required if a parameter is used in
     * policy rule.
     *
     * @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 {PolicyDefinition} - 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.
     *
     *                      {PolicyDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinition} 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(policyDefinitionName: string, parameters: models.PolicyDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyDefinition>;
    createOrUpdate(policyDefinitionName: string, parameters: models.PolicyDefinition, callback: ServiceCallback<models.PolicyDefinition>): void;
    createOrUpdate(policyDefinitionName: string, parameters: models.PolicyDefinition, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinition>): void;


    /**
     * @summary Deletes a policy definition in a subscription.
     *
     * This operation deletes the policy definition in the given subscription with
     * the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition 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(policyDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * @summary Deletes a policy definition in a subscription.
     *
     * This operation deletes the policy definition in the given subscription with
     * the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition 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(policyDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(policyDefinitionName: string, callback: ServiceCallback<void>): void;
    deleteMethod(policyDefinitionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * @summary Retrieves a policy definition in a subscription.
     *
     * This operation retrieves the policy definition in the given subscription
     * with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * get.
     *
     * @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<PolicyDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(policyDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinition>>;

    /**
     * @summary Retrieves a policy definition in a subscription.
     *
     * This operation retrieves the policy definition in the given subscription
     * with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * get.
     *
     * @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 {PolicyDefinition} - 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.
     *
     *                      {PolicyDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinition} 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(policyDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyDefinition>;
    get(policyDefinitionName: string, callback: ServiceCallback<models.PolicyDefinition>): void;
    get(policyDefinitionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinition>): void;


    /**
     * @summary Retrieves a built-in policy definition.
     *
     * This operation retrieves the built-in policy definition with the given name.
     *
     * @param {string} policyDefinitionName The name of the built-in policy
     * definition to get.
     *
     * @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<PolicyDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getBuiltInWithHttpOperationResponse(policyDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinition>>;

    /**
     * @summary Retrieves a built-in policy definition.
     *
     * This operation retrieves the built-in policy definition with the given name.
     *
     * @param {string} policyDefinitionName The name of the built-in policy
     * definition to get.
     *
     * @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 {PolicyDefinition} - 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.
     *
     *                      {PolicyDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinition} 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.
     */
    getBuiltIn(policyDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyDefinition>;
    getBuiltIn(policyDefinitionName: string, callback: ServiceCallback<models.PolicyDefinition>): void;
    getBuiltIn(policyDefinitionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinition>): void;


    /**
     * @summary Creates or updates a policy definition in a management group.
     *
     * This operation creates or updates a policy definition in the given
     * management group with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * create.
     *
     * @param {object} parameters The policy definition properties.
     *
     * @param {string} [parameters.policyType] The type of policy definition.
     * Possible values are NotSpecified, BuiltIn, and Custom. Possible values
     * include: 'NotSpecified', 'BuiltIn', 'Custom'
     *
     * @param {string} [parameters.mode] The policy definition mode. Possible
     * values are NotSpecified, Indexed, and All. Possible values include:
     * 'NotSpecified', 'Indexed', 'All'
     *
     * @param {string} [parameters.displayName] The display name of the policy
     * definition.
     *
     * @param {string} [parameters.description] The policy definition description.
     *
     * @param {object} [parameters.policyRule] The policy rule.
     *
     * @param {object} [parameters.metadata] The policy definition metadata.
     *
     * @param {object} [parameters.parameters] Required if a parameter is used in
     * policy rule.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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<PolicyDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateAtManagementGroupWithHttpOperationResponse(policyDefinitionName: string, parameters: models.PolicyDefinition, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinition>>;

    /**
     * @summary Creates or updates a policy definition in a management group.
     *
     * This operation creates or updates a policy definition in the given
     * management group with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * create.
     *
     * @param {object} parameters The policy definition properties.
     *
     * @param {string} [parameters.policyType] The type of policy definition.
     * Possible values are NotSpecified, BuiltIn, and Custom. Possible values
     * include: 'NotSpecified', 'BuiltIn', 'Custom'
     *
     * @param {string} [parameters.mode] The policy definition mode. Possible
     * values are NotSpecified, Indexed, and All. Possible values include:
     * 'NotSpecified', 'Indexed', 'All'
     *
     * @param {string} [parameters.displayName] The display name of the policy
     * definition.
     *
     * @param {string} [parameters.description] The policy definition description.
     *
     * @param {object} [parameters.policyRule] The policy rule.
     *
     * @param {object} [parameters.metadata] The policy definition metadata.
     *
     * @param {object} [parameters.parameters] Required if a parameter is used in
     * policy rule.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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 {PolicyDefinition} - 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.
     *
     *                      {PolicyDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinition} 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.
     */
    createOrUpdateAtManagementGroup(policyDefinitionName: string, parameters: models.PolicyDefinition, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyDefinition>;
    createOrUpdateAtManagementGroup(policyDefinitionName: string, parameters: models.PolicyDefinition, managementGroupId: string, callback: ServiceCallback<models.PolicyDefinition>): void;
    createOrUpdateAtManagementGroup(policyDefinitionName: string, parameters: models.PolicyDefinition, managementGroupId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinition>): void;


    /**
     * @summary Deletes a policy definition in a management group.
     *
     * This operation deletes the policy definition in the given management group
     * with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * delete.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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.
     */
    deleteAtManagementGroupWithHttpOperationResponse(policyDefinitionName: string, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * @summary Deletes a policy definition in a management group.
     *
     * This operation deletes the policy definition in the given management group
     * with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * delete.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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.
     */
    deleteAtManagementGroup(policyDefinitionName: string, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteAtManagementGroup(policyDefinitionName: string, managementGroupId: string, callback: ServiceCallback<void>): void;
    deleteAtManagementGroup(policyDefinitionName: string, managementGroupId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * @summary Retrieve a policy definition in a management group.
     *
     * This operation retrieves the policy definition in the given management group
     * with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * get.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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<PolicyDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getAtManagementGroupWithHttpOperationResponse(policyDefinitionName: string, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinition>>;

    /**
     * @summary Retrieve a policy definition in a management group.
     *
     * This operation retrieves the policy definition in the given management group
     * with the given name.
     *
     * @param {string} policyDefinitionName The name of the policy definition to
     * get.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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 {PolicyDefinition} - 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.
     *
     *                      {PolicyDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinition} 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.
     */
    getAtManagementGroup(policyDefinitionName: string, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyDefinition>;
    getAtManagementGroup(policyDefinitionName: string, managementGroupId: string, callback: ServiceCallback<models.PolicyDefinition>): void;
    getAtManagementGroup(policyDefinitionName: string, managementGroupId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinition>): void;


    /**
     * @summary Retrieves policy definitions in a subscription
     *
     * This operation retrieves a list of all the policy definitions in a given
     * subscription.
     *
     * @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<PolicyDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinitionListResult>>;

    /**
     * @summary Retrieves policy definitions in a subscription
     *
     * This operation retrieves a list of all the policy definitions in a given
     * subscription.
     *
     * @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 {PolicyDefinitionListResult} - 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.
     *
     *                      {PolicyDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinitionListResult} 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.PolicyDefinitionListResult>;
    list(callback: ServiceCallback<models.PolicyDefinitionListResult>): void;
    list(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;


    /**
     * @summary Retrieve built-in policy definitions
     *
     * This operation retrieves a list of all the built-in policy definitions.
     *
     * @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<PolicyDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listBuiltInWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinitionListResult>>;

    /**
     * @summary Retrieve built-in policy definitions
     *
     * This operation retrieves a list of all the built-in policy definitions.
     *
     * @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 {PolicyDefinitionListResult} - 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.
     *
     *                      {PolicyDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinitionListResult} 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.
     */
    listBuiltIn(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyDefinitionListResult>;
    listBuiltIn(callback: ServiceCallback<models.PolicyDefinitionListResult>): void;
    listBuiltIn(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;


    /**
     * @summary Retrieve policy definitions in a management group
     *
     * This operation retrieves a list of all the policy definitions in a given
     * management group.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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<PolicyDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByManagementGroupWithHttpOperationResponse(managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinitionListResult>>;

    /**
     * @summary Retrieve policy definitions in a management group
     *
     * This operation retrieves a list of all the policy definitions in a given
     * management group.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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 {PolicyDefinitionListResult} - 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.
     *
     *                      {PolicyDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinitionListResult} 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.
     */
    listByManagementGroup(managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyDefinitionListResult>;
    listByManagementGroup(managementGroupId: string, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;
    listByManagementGroup(managementGroupId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;


    /**
     * @summary Retrieves policy definitions in a subscription
     *
     * This operation retrieves a list of all the policy definitions in a given
     * 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
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<PolicyDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinitionListResult>>;

    /**
     * @summary Retrieves policy definitions in a subscription
     *
     * This operation retrieves a list of all the policy definitions in a given
     * 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} [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 {PolicyDefinitionListResult} - 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.
     *
     *                      {PolicyDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinitionListResult} 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.PolicyDefinitionListResult>;
    listNext(nextPageLink: string, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;


    /**
     * @summary Retrieve built-in policy definitions
     *
     * This operation retrieves a list of all the built-in policy definitions.
     *
     * @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<PolicyDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listBuiltInNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinitionListResult>>;

    /**
     * @summary Retrieve built-in policy definitions
     *
     * This operation retrieves a list of all the built-in policy definitions.
     *
     * @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 {PolicyDefinitionListResult} - 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.
     *
     *                      {PolicyDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinitionListResult} 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.
     */
    listBuiltInNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyDefinitionListResult>;
    listBuiltInNext(nextPageLink: string, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;
    listBuiltInNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;


    /**
     * @summary Retrieve policy definitions in a management group
     *
     * This operation retrieves a list of all the policy definitions in a given
     * management 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
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<PolicyDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByManagementGroupNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicyDefinitionListResult>>;

    /**
     * @summary Retrieve policy definitions in a management group
     *
     * This operation retrieves a list of all the policy definitions in a given
     * management 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} [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 {PolicyDefinitionListResult} - 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.
     *
     *                      {PolicyDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicyDefinitionListResult} 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.
     */
    listByManagementGroupNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicyDefinitionListResult>;
    listByManagementGroupNext(nextPageLink: string, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;
    listByManagementGroupNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicyDefinitionListResult>): void;
}

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


    /**
     * @summary Creates or updates a policy set definition.
     *
     * This operation creates or updates a policy set definition in the given
     * subscription with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to create.
     *
     * @param {object} parameters The policy set definition properties.
     *
     * @param {string} [parameters.policyType] The type of policy definition.
     * Possible values are NotSpecified, BuiltIn, and Custom. Possible values
     * include: 'NotSpecified', 'BuiltIn', 'Custom'
     *
     * @param {string} [parameters.displayName] The display name of the policy set
     * definition.
     *
     * @param {string} [parameters.description] The policy set definition
     * description.
     *
     * @param {object} [parameters.metadata] The policy set definition metadata.
     *
     * @param {object} [parameters.parameters] The policy set definition parameters
     * that can be used in policy definition references.
     *
     * @param {array} parameters.policyDefinitions An array of policy definition
     * references.
     *
     * @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<PolicySetDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateWithHttpOperationResponse(policySetDefinitionName: string, parameters: models.PolicySetDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinition>>;

    /**
     * @summary Creates or updates a policy set definition.
     *
     * This operation creates or updates a policy set definition in the given
     * subscription with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to create.
     *
     * @param {object} parameters The policy set definition properties.
     *
     * @param {string} [parameters.policyType] The type of policy definition.
     * Possible values are NotSpecified, BuiltIn, and Custom. Possible values
     * include: 'NotSpecified', 'BuiltIn', 'Custom'
     *
     * @param {string} [parameters.displayName] The display name of the policy set
     * definition.
     *
     * @param {string} [parameters.description] The policy set definition
     * description.
     *
     * @param {object} [parameters.metadata] The policy set definition metadata.
     *
     * @param {object} [parameters.parameters] The policy set definition parameters
     * that can be used in policy definition references.
     *
     * @param {array} parameters.policyDefinitions An array of policy definition
     * references.
     *
     * @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 {PolicySetDefinition} - 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.
     *
     *                      {PolicySetDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinition} 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(policySetDefinitionName: string, parameters: models.PolicySetDefinition, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicySetDefinition>;
    createOrUpdate(policySetDefinitionName: string, parameters: models.PolicySetDefinition, callback: ServiceCallback<models.PolicySetDefinition>): void;
    createOrUpdate(policySetDefinitionName: string, parameters: models.PolicySetDefinition, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinition>): void;


    /**
     * @summary Deletes a policy set definition.
     *
     * This operation deletes the policy set definition in the given subscription
     * with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition 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(policySetDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * @summary Deletes a policy set definition.
     *
     * This operation deletes the policy set definition in the given subscription
     * with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition 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(policySetDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(policySetDefinitionName: string, callback: ServiceCallback<void>): void;
    deleteMethod(policySetDefinitionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * @summary Retrieves a policy set definition.
     *
     * This operation retrieves the policy set definition in the given subscription
     * with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to get.
     *
     * @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<PolicySetDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(policySetDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinition>>;

    /**
     * @summary Retrieves a policy set definition.
     *
     * This operation retrieves the policy set definition in the given subscription
     * with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to get.
     *
     * @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 {PolicySetDefinition} - 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.
     *
     *                      {PolicySetDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinition} 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(policySetDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicySetDefinition>;
    get(policySetDefinitionName: string, callback: ServiceCallback<models.PolicySetDefinition>): void;
    get(policySetDefinitionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinition>): void;


    /**
     * @summary Retrieves a built in policy set definition.
     *
     * This operation retrieves the built-in policy set definition with the given
     * name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to get.
     *
     * @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<PolicySetDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getBuiltInWithHttpOperationResponse(policySetDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinition>>;

    /**
     * @summary Retrieves a built in policy set definition.
     *
     * This operation retrieves the built-in policy set definition with the given
     * name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to get.
     *
     * @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 {PolicySetDefinition} - 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.
     *
     *                      {PolicySetDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinition} 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.
     */
    getBuiltIn(policySetDefinitionName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicySetDefinition>;
    getBuiltIn(policySetDefinitionName: string, callback: ServiceCallback<models.PolicySetDefinition>): void;
    getBuiltIn(policySetDefinitionName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinition>): void;


    /**
     * @summary Retrieves the policy set definitions for a subscription.
     *
     * This operation retrieves a list of all the policy set definitions in the
     * given subscription.
     *
     * @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<PolicySetDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinitionListResult>>;

    /**
     * @summary Retrieves the policy set definitions for a subscription.
     *
     * This operation retrieves a list of all the policy set definitions in the
     * given subscription.
     *
     * @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 {PolicySetDefinitionListResult} - 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.
     *
     *                      {PolicySetDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinitionListResult} 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.PolicySetDefinitionListResult>;
    list(callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;
    list(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;


    /**
     * @summary Retrieves built-in policy set definitions.
     *
     * This operation retrieves a list of all the built-in policy set definitions.
     *
     * @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<PolicySetDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listBuiltInWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinitionListResult>>;

    /**
     * @summary Retrieves built-in policy set definitions.
     *
     * This operation retrieves a list of all the built-in policy set definitions.
     *
     * @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 {PolicySetDefinitionListResult} - 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.
     *
     *                      {PolicySetDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinitionListResult} 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.
     */
    listBuiltIn(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicySetDefinitionListResult>;
    listBuiltIn(callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;
    listBuiltIn(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;


    /**
     * @summary Creates or updates a policy set definition.
     *
     * This operation creates or updates a policy set definition in the given
     * management group with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to create.
     *
     * @param {object} parameters The policy set definition properties.
     *
     * @param {string} [parameters.policyType] The type of policy definition.
     * Possible values are NotSpecified, BuiltIn, and Custom. Possible values
     * include: 'NotSpecified', 'BuiltIn', 'Custom'
     *
     * @param {string} [parameters.displayName] The display name of the policy set
     * definition.
     *
     * @param {string} [parameters.description] The policy set definition
     * description.
     *
     * @param {object} [parameters.metadata] The policy set definition metadata.
     *
     * @param {object} [parameters.parameters] The policy set definition parameters
     * that can be used in policy definition references.
     *
     * @param {array} parameters.policyDefinitions An array of policy definition
     * references.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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<PolicySetDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateAtManagementGroupWithHttpOperationResponse(policySetDefinitionName: string, parameters: models.PolicySetDefinition, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinition>>;

    /**
     * @summary Creates or updates a policy set definition.
     *
     * This operation creates or updates a policy set definition in the given
     * management group with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to create.
     *
     * @param {object} parameters The policy set definition properties.
     *
     * @param {string} [parameters.policyType] The type of policy definition.
     * Possible values are NotSpecified, BuiltIn, and Custom. Possible values
     * include: 'NotSpecified', 'BuiltIn', 'Custom'
     *
     * @param {string} [parameters.displayName] The display name of the policy set
     * definition.
     *
     * @param {string} [parameters.description] The policy set definition
     * description.
     *
     * @param {object} [parameters.metadata] The policy set definition metadata.
     *
     * @param {object} [parameters.parameters] The policy set definition parameters
     * that can be used in policy definition references.
     *
     * @param {array} parameters.policyDefinitions An array of policy definition
     * references.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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 {PolicySetDefinition} - 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.
     *
     *                      {PolicySetDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinition} 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.
     */
    createOrUpdateAtManagementGroup(policySetDefinitionName: string, parameters: models.PolicySetDefinition, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicySetDefinition>;
    createOrUpdateAtManagementGroup(policySetDefinitionName: string, parameters: models.PolicySetDefinition, managementGroupId: string, callback: ServiceCallback<models.PolicySetDefinition>): void;
    createOrUpdateAtManagementGroup(policySetDefinitionName: string, parameters: models.PolicySetDefinition, managementGroupId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinition>): void;


    /**
     * @summary Deletes a policy set definition.
     *
     * This operation deletes the policy set definition in the given management
     * group with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to delete.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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.
     */
    deleteAtManagementGroupWithHttpOperationResponse(policySetDefinitionName: string, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * @summary Deletes a policy set definition.
     *
     * This operation deletes the policy set definition in the given management
     * group with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to delete.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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.
     */
    deleteAtManagementGroup(policySetDefinitionName: string, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteAtManagementGroup(policySetDefinitionName: string, managementGroupId: string, callback: ServiceCallback<void>): void;
    deleteAtManagementGroup(policySetDefinitionName: string, managementGroupId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * @summary Retrieves a policy set definition.
     *
     * This operation retrieves the policy set definition in the given management
     * group with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to get.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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<PolicySetDefinition>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getAtManagementGroupWithHttpOperationResponse(policySetDefinitionName: string, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinition>>;

    /**
     * @summary Retrieves a policy set definition.
     *
     * This operation retrieves the policy set definition in the given management
     * group with the given name.
     *
     * @param {string} policySetDefinitionName The name of the policy set
     * definition to get.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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 {PolicySetDefinition} - 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.
     *
     *                      {PolicySetDefinition} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinition} 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.
     */
    getAtManagementGroup(policySetDefinitionName: string, managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicySetDefinition>;
    getAtManagementGroup(policySetDefinitionName: string, managementGroupId: string, callback: ServiceCallback<models.PolicySetDefinition>): void;
    getAtManagementGroup(policySetDefinitionName: string, managementGroupId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinition>): void;


    /**
     * @summary Retrieves all policy set definitions in management group.
     *
     * This operation retrieves a list of all the a policy set definition in the
     * given management group.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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<PolicySetDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByManagementGroupWithHttpOperationResponse(managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinitionListResult>>;

    /**
     * @summary Retrieves all policy set definitions in management group.
     *
     * This operation retrieves a list of all the a policy set definition in the
     * given management group.
     *
     * @param {string} managementGroupId The ID of the management group.
     *
     * @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 {PolicySetDefinitionListResult} - 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.
     *
     *                      {PolicySetDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinitionListResult} 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.
     */
    listByManagementGroup(managementGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicySetDefinitionListResult>;
    listByManagementGroup(managementGroupId: string, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;
    listByManagementGroup(managementGroupId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;


    /**
     * @summary Retrieves the policy set definitions for a subscription.
     *
     * This operation retrieves a list of all the policy set definitions in the
     * given 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
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<PolicySetDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinitionListResult>>;

    /**
     * @summary Retrieves the policy set definitions for a subscription.
     *
     * This operation retrieves a list of all the policy set definitions in the
     * given 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} [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 {PolicySetDefinitionListResult} - 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.
     *
     *                      {PolicySetDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinitionListResult} 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.PolicySetDefinitionListResult>;
    listNext(nextPageLink: string, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;


    /**
     * @summary Retrieves built-in policy set definitions.
     *
     * This operation retrieves a list of all the built-in policy set definitions.
     *
     * @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<PolicySetDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listBuiltInNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinitionListResult>>;

    /**
     * @summary Retrieves built-in policy set definitions.
     *
     * This operation retrieves a list of all the built-in policy set definitions.
     *
     * @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 {PolicySetDefinitionListResult} - 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.
     *
     *                      {PolicySetDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinitionListResult} 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.
     */
    listBuiltInNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicySetDefinitionListResult>;
    listBuiltInNext(nextPageLink: string, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;
    listBuiltInNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;


    /**
     * @summary Retrieves all policy set definitions in management group.
     *
     * This operation retrieves a list of all the a policy set definition in the
     * given management 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
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<PolicySetDefinitionListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByManagementGroupNextWithHttpOperationResponse(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.PolicySetDefinitionListResult>>;

    /**
     * @summary Retrieves all policy set definitions in management group.
     *
     * This operation retrieves a list of all the a policy set definition in the
     * given management 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} [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 {PolicySetDefinitionListResult} - 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.
     *
     *                      {PolicySetDefinitionListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link PolicySetDefinitionListResult} 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.
     */
    listByManagementGroupNext(nextPageLink: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.PolicySetDefinitionListResult>;
    listByManagementGroupNext(nextPageLink: string, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;
    listByManagementGroupNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.PolicySetDefinitionListResult>): void;
}
