import * as pulumi from "@pulumi/pulumi";
/**
 * The `consul.AclTokenRoleAttachment` resource links a Consul Token and an ACL
 * role. The link is implemented through an update to the Consul ACL token.
 *
 * > **NOTE:** This resource is only useful to attach roles to an ACL token
 * that has been created outside the current Terraform configuration, like the
 * anonymous or the master token. If the token you need to attach a policy to has
 * been created in the current Terraform configuration and will only be used in it,
 * you should use the `roles` attribute of [`consul.AclToken`](https://www.terraform.io/docs/providers/consul/r/acl_token.html).
 *
 * ## Example Usage
 *
 * ### Attach a role to the anonymous token
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as consul from "@pulumi/consul";
 *
 * const role = new consul.AclRole("role", {
 *     name: "foo",
 *     description: "Foo",
 *     serviceIdentities: [{
 *         serviceName: "foo",
 *     }],
 * });
 * const attachment = new consul.AclTokenRoleAttachment("attachment", {
 *     tokenId: "00000000-0000-0000-0000-000000000002",
 *     roleId: role.id,
 * });
 * ```
 *
 * ### Attach a policy to a token created in another Terraform configuration
 *
 * ### In `first_configuration/main.tf`
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as consul from "@pulumi/consul";
 *
 * const test = new consul.AclToken("test", {
 *     accessorId: "5914ee49-eb8d-4837-9767-9299ec155000",
 *     description: "my test token",
 *     local: true,
 * });
 * ```
 *
 * ### In `second_configuration/main.tf`
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as consul from "@pulumi/consul";
 *
 * const role = new consul.AclRole("role", {
 *     name: "foo",
 *     description: "Foo",
 *     serviceIdentities: [{
 *         serviceName: "foo",
 *     }],
 * });
 * const attachment = new consul.AclTokenRoleAttachment("attachment", {
 *     tokenId: "00000000-0000-0000-0000-000000000002",
 *     roleId: role.id,
 * });
 * ```
 * **NOTE**: `consul.AclToken` would attempt to enforce an empty set of roles,
 * because its `roles` attribute is empty. For this reason it is necessary to add
 * the lifecycle clause to prevent Terraform from attempting to clear the set of
 * roles associated to the token.
 *
 * ## Import
 *
 * `consul.AclTokenRoleAttachment` can be imported. This is especially useful to manage the
 * policies attached to the anonymous and the master tokens with Terraform:
 *
 * ```sh
 * $ pulumi import consul:index/aclTokenRoleAttachment:AclTokenRoleAttachment anonymous token_id:role_id
 * ```
 */
export declare class AclTokenRoleAttachment extends pulumi.CustomResource {
    /**
     * Get an existing AclTokenRoleAttachment 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?: AclTokenRoleAttachmentState, opts?: pulumi.CustomResourceOptions): AclTokenRoleAttachment;
    /**
     * Returns true if the given object is an instance of AclTokenRoleAttachment.  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 AclTokenRoleAttachment;
    /**
     * The role name.
     */
    readonly role: pulumi.Output<string>;
    /**
     * The id of the token.
     */
    readonly tokenId: pulumi.Output<string>;
    /**
     * Create a AclTokenRoleAttachment 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: AclTokenRoleAttachmentArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering AclTokenRoleAttachment resources.
 */
export interface AclTokenRoleAttachmentState {
    /**
     * The role name.
     */
    role?: pulumi.Input<string>;
    /**
     * The id of the token.
     */
    tokenId?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a AclTokenRoleAttachment resource.
 */
export interface AclTokenRoleAttachmentArgs {
    /**
     * The role name.
     */
    role: pulumi.Input<string>;
    /**
     * The id of the token.
     */
    tokenId: pulumi.Input<string>;
}
