import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Manages a Policy Set Definition for a Management Group.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 *
 * const example = new azure.management.Group("example", {displayName: "Example"});
 * const exampleGroupPolicySetDefinition = new azure.management.GroupPolicySetDefinition("example", {
 *     name: "example",
 *     policyType: "Custom",
 *     displayName: "Example",
 *     managementGroupId: example.id,
 *     parameters: `   {
 *        \\"allowedLocations\\": {
 *            \\"type\\": \\"Array\\",
 *            \\"metadata\\": {
 *                \\"description\\": \\"The list of allowed locations for resources.\\",
 *                \\"displayName\\": \\"Allowed locations\\",
 *                \\"strongType\\": \\"location\\"
 *            }
 *        }
 *    }
 * `,
 *     policyDefinitionReferences: [{
 *         version: "1.0.*",
 *         policyDefinitionId: "/providers/Microsoft.Authorization/policyDefinitions/e765b5de-1225-4ba3-bd56-1ac6695af988",
 *         parameterValues: `   {
 *      \\"listOfAllowedLocations\\": {\\"value\\": \\"[parameters('allowedLocations')]\\"}
 *    }
 * `,
 *     }],
 * });
 * ```
 *
 * ## API Providers
 *
 * <!-- This section is generated, changes will be overwritten -->
 * This resource uses the following Azure API Providers:
 *
 * * `Microsoft.Management` - 2025-01-01
 *
 * ## Import
 *
 * Policy Set Definitions can be imported using the `resource id`, e.g.
 *
 * ```sh
 * $ pulumi import azure:management/groupPolicySetDefinition:GroupPolicySetDefinition example /providers/Microsoft.Management/managementGroups/0000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/policySetDefinitions/policySetDefinitionName
 * ```
 */
export declare class GroupPolicySetDefinition extends pulumi.CustomResource {
    /**
     * Get an existing GroupPolicySetDefinition resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: GroupPolicySetDefinitionState, opts?: pulumi.CustomResourceOptions): GroupPolicySetDefinition;
    /**
     * Returns true if the given object is an instance of GroupPolicySetDefinition.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is GroupPolicySetDefinition;
    /**
     * The description of this Policy Set Definition.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * The display name of this Policy Set Definition.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * The ID of the Management Group where this Policy Set Definition should be created. Changing this forces a new Policy Set Definition to be created.
     */
    readonly managementGroupId: pulumi.Output<string>;
    /**
     * The metadata for the Policy Set Definition in JSON format.
     */
    readonly metadata: pulumi.Output<string>;
    /**
     * The name which should be used for this Policy Set Definition. Changing this forces a new Policy Set Definition to be created.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The parameters for the Policy Set Definition in JSON format. Reducing the number of parameters forces a new resource to be created.
     */
    readonly parameters: pulumi.Output<string | undefined>;
    /**
     * One or more `policyDefinitionGroup` blocks as defined below.
     */
    readonly policyDefinitionGroups: pulumi.Output<outputs.management.GroupPolicySetDefinitionPolicyDefinitionGroup[] | undefined>;
    /**
     * One or more `policyDefinitionReference` blocks as defined below.
     */
    readonly policyDefinitionReferences: pulumi.Output<outputs.management.GroupPolicySetDefinitionPolicyDefinitionReference[]>;
    /**
     * The Policy Set Definition type. Possible values are `BuiltIn`, `Custom`, `NotSpecified`, and `Static`. Changing this forces a new Policy Set Definition to be created.
     */
    readonly policyType: pulumi.Output<string>;
    /**
     * Create a GroupPolicySetDefinition resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: GroupPolicySetDefinitionArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering GroupPolicySetDefinition resources.
 */
export interface GroupPolicySetDefinitionState {
    /**
     * The description of this Policy Set Definition.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * The display name of this Policy Set Definition.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * The ID of the Management Group where this Policy Set Definition should be created. Changing this forces a new Policy Set Definition to be created.
     */
    managementGroupId?: pulumi.Input<string | undefined>;
    /**
     * The metadata for the Policy Set Definition in JSON format.
     */
    metadata?: pulumi.Input<string | undefined>;
    /**
     * The name which should be used for this Policy Set Definition. Changing this forces a new Policy Set Definition to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The parameters for the Policy Set Definition in JSON format. Reducing the number of parameters forces a new resource to be created.
     */
    parameters?: pulumi.Input<string | undefined>;
    /**
     * One or more `policyDefinitionGroup` blocks as defined below.
     */
    policyDefinitionGroups?: pulumi.Input<pulumi.Input<inputs.management.GroupPolicySetDefinitionPolicyDefinitionGroup>[] | undefined>;
    /**
     * One or more `policyDefinitionReference` blocks as defined below.
     */
    policyDefinitionReferences?: pulumi.Input<pulumi.Input<inputs.management.GroupPolicySetDefinitionPolicyDefinitionReference>[] | undefined>;
    /**
     * The Policy Set Definition type. Possible values are `BuiltIn`, `Custom`, `NotSpecified`, and `Static`. Changing this forces a new Policy Set Definition to be created.
     */
    policyType?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a GroupPolicySetDefinition resource.
 */
export interface GroupPolicySetDefinitionArgs {
    /**
     * The description of this Policy Set Definition.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * The display name of this Policy Set Definition.
     */
    displayName: pulumi.Input<string>;
    /**
     * The ID of the Management Group where this Policy Set Definition should be created. Changing this forces a new Policy Set Definition to be created.
     */
    managementGroupId: pulumi.Input<string>;
    /**
     * The metadata for the Policy Set Definition in JSON format.
     */
    metadata?: pulumi.Input<string | undefined>;
    /**
     * The name which should be used for this Policy Set Definition. Changing this forces a new Policy Set Definition to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The parameters for the Policy Set Definition in JSON format. Reducing the number of parameters forces a new resource to be created.
     */
    parameters?: pulumi.Input<string | undefined>;
    /**
     * One or more `policyDefinitionGroup` blocks as defined below.
     */
    policyDefinitionGroups?: pulumi.Input<pulumi.Input<inputs.management.GroupPolicySetDefinitionPolicyDefinitionGroup>[] | undefined>;
    /**
     * One or more `policyDefinitionReference` blocks as defined below.
     */
    policyDefinitionReferences: pulumi.Input<pulumi.Input<inputs.management.GroupPolicySetDefinitionPolicyDefinitionReference>[]>;
    /**
     * The Policy Set Definition type. Possible values are `BuiltIn`, `Custom`, `NotSpecified`, and `Static`. Changing this forces a new Policy Set Definition to be created.
     */
    policyType: pulumi.Input<string>;
}
//# sourceMappingURL=groupPolicySetDefinition.d.ts.map