import * as pulumi from "@pulumi/pulumi";
/**
 * Provides a Alikafka Sasl Acl resource.
 *
 * Kafka access control.
 *
 * For information about Alikafka Sasl Acl and how to use it, see [What is Sasl Acl](https://next.api.alibabacloud.com/document/alikafka/2019-09-16/CreateAcl).
 *
 * > **NOTE:** Available since v1.66.0.
 *
 * ## Example Usage
 *
 * Basic Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as alicloud from "@pulumi/alicloud";
 * import * as random from "@pulumi/random";
 *
 * const config = new pulumi.Config();
 * const name = config.get("name") || "tf_example";
 * const defaultInteger = new random.index.Integer("default", {
 *     min: 10000,
 *     max: 99999,
 * });
 * const _default = alicloud.getZones({
 *     availableResourceCreation: "VSwitch",
 * });
 * const defaultNetwork = new alicloud.vpc.Network("default", {
 *     vpcName: name,
 *     cidrBlock: "10.4.0.0/16",
 * });
 * const defaultSwitch = new alicloud.vpc.Switch("default", {
 *     vswitchName: name,
 *     cidrBlock: "10.4.0.0/24",
 *     vpcId: defaultNetwork.id,
 *     zoneId: _default.then(_default => _default.zones?.[0]?.id),
 * });
 * const defaultSecurityGroup = new alicloud.ecs.SecurityGroup("default", {vpcId: defaultNetwork.id});
 * const defaultInstance = new alicloud.alikafka.Instance("default", {
 *     name: `${name}-${defaultInteger.result}`,
 *     partitionNum: 50,
 *     diskType: 1,
 *     diskSize: 500,
 *     deployType: 5,
 *     ioMax: 20,
 *     specType: "professional",
 *     serviceVersion: "2.2.0",
 *     config: "{\"enable.acl\":\"true\"}",
 *     vswitchId: defaultSwitch.id,
 *     securityGroup: defaultSecurityGroup.id,
 * });
 * const defaultTopic = new alicloud.alikafka.Topic("default", {
 *     instanceId: defaultInstance.id,
 *     topic: "example-topic",
 *     remark: "topic-remark",
 * });
 * const defaultSaslUser = new alicloud.alikafka.SaslUser("default", {
 *     instanceId: defaultInstance.id,
 *     username: name,
 *     password: "tf_example123",
 * });
 * const defaultSaslAcl = new alicloud.alikafka.SaslAcl("default", {
 *     instanceId: defaultInstance.id,
 *     username: defaultSaslUser.username,
 *     aclResourceType: "Topic",
 *     aclResourceName: defaultTopic.topic,
 *     aclResourcePatternType: "LITERAL",
 *     aclOperationType: "Write",
 * });
 * ```
 *
 * 📚 Need more examples? VIEW MORE EXAMPLES
 *
 * ## Import
 *
 * Alikafka Sasl Acl can be imported using the id, e.g.
 *
 * ```sh
 * $ pulumi import alicloud:alikafka/saslAcl:SaslAcl example <instance_id>:<username>:<acl_resource_type>:<acl_resource_name>:<acl_resource_pattern_type>:<acl_operation_type>
 * ```
 */
export declare class SaslAcl extends pulumi.CustomResource {
    /**
     * Get an existing SaslAcl 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?: SaslAclState, opts?: pulumi.CustomResourceOptions): SaslAcl;
    /**
     * Returns true if the given object is an instance of SaslAcl.  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 SaslAcl;
    /**
     * Operation type. Valid values:
     * - `Write`: write
     * - `Read`: read
     * - `Describe`: read TransactionalId
     * - `IdempotentWrite`: idempotent write to Cluster
     * - `IDEMPOTENT_WRITE`: idempotent write to Cluster, only available for Serverless instances.
     * - `DESCRIBE_CONFIGS`: query configuration, only available for Serverless instances.
     */
    readonly aclOperationType: pulumi.Output<string>;
    /**
     * Batch authorization operation types. Multiple operations are separated by commas (,). Valid values:
     * - `Write`: write
     * - `Read`: read
     * - `Describe`: read TransactionalId
     * - `IdempotentWrite`: idempotent write to Cluster
     * - `IDEMPOTENT_WRITE`: idempotent write to Cluster, only available for Serverless instances.
     * - `DESCRIBE_CONFIGS`: query configuration, only available for Serverless instances.
     * > **NOTE:**  `aclOperationTypes` is only supported for Serverless instances.
     */
    readonly aclOperationTypes: pulumi.Output<string | undefined>;
    /**
     * Authorization method. Value:
     * - `DENY`: deny.
     * - `ALLOW`: allow.
     * > **NOTE:**  `aclPermissionType` is only supported for Serverless instances.
     */
    readonly aclPermissionType: pulumi.Output<string>;
    /**
     * The resource name.
     * - The name of the resource, which can be a topic name, Group ID, cluster name, or transaction ID.
     * - You can use an asterisk (*) to represent all resources of this type.
     */
    readonly aclResourceName: pulumi.Output<string>;
    /**
     * Match the pattern. Valid values:
     * - `LITERAL`: exact match
     * - `PREFIXED`: prefix matching
     */
    readonly aclResourcePatternType: pulumi.Output<string>;
    /**
     * The resource type. Valid values:
     * - `Topic`: the message Topic.
     * - `Group`: consumer Group.
     * - `Cluster`: the instance.
     * - `TransactionalId`: transaction ID.
     */
    readonly aclResourceType: pulumi.Output<string>;
    /**
     * The host of the acl.
     * > **NOTE:** From version 1.270.0, `host` can be set.
     */
    readonly host: pulumi.Output<string>;
    /**
     * The instance ID.
     */
    readonly instanceId: pulumi.Output<string>;
    /**
     * The user name.
     */
    readonly username: pulumi.Output<string>;
    /**
     * Create a SaslAcl 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: SaslAclArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering SaslAcl resources.
 */
export interface SaslAclState {
    /**
     * Operation type. Valid values:
     * - `Write`: write
     * - `Read`: read
     * - `Describe`: read TransactionalId
     * - `IdempotentWrite`: idempotent write to Cluster
     * - `IDEMPOTENT_WRITE`: idempotent write to Cluster, only available for Serverless instances.
     * - `DESCRIBE_CONFIGS`: query configuration, only available for Serverless instances.
     */
    aclOperationType?: pulumi.Input<string | undefined>;
    /**
     * Batch authorization operation types. Multiple operations are separated by commas (,). Valid values:
     * - `Write`: write
     * - `Read`: read
     * - `Describe`: read TransactionalId
     * - `IdempotentWrite`: idempotent write to Cluster
     * - `IDEMPOTENT_WRITE`: idempotent write to Cluster, only available for Serverless instances.
     * - `DESCRIBE_CONFIGS`: query configuration, only available for Serverless instances.
     * > **NOTE:**  `aclOperationTypes` is only supported for Serverless instances.
     */
    aclOperationTypes?: pulumi.Input<string | undefined>;
    /**
     * Authorization method. Value:
     * - `DENY`: deny.
     * - `ALLOW`: allow.
     * > **NOTE:**  `aclPermissionType` is only supported for Serverless instances.
     */
    aclPermissionType?: pulumi.Input<string | undefined>;
    /**
     * The resource name.
     * - The name of the resource, which can be a topic name, Group ID, cluster name, or transaction ID.
     * - You can use an asterisk (*) to represent all resources of this type.
     */
    aclResourceName?: pulumi.Input<string | undefined>;
    /**
     * Match the pattern. Valid values:
     * - `LITERAL`: exact match
     * - `PREFIXED`: prefix matching
     */
    aclResourcePatternType?: pulumi.Input<string | undefined>;
    /**
     * The resource type. Valid values:
     * - `Topic`: the message Topic.
     * - `Group`: consumer Group.
     * - `Cluster`: the instance.
     * - `TransactionalId`: transaction ID.
     */
    aclResourceType?: pulumi.Input<string | undefined>;
    /**
     * The host of the acl.
     * > **NOTE:** From version 1.270.0, `host` can be set.
     */
    host?: pulumi.Input<string | undefined>;
    /**
     * The instance ID.
     */
    instanceId?: pulumi.Input<string | undefined>;
    /**
     * The user name.
     */
    username?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a SaslAcl resource.
 */
export interface SaslAclArgs {
    /**
     * Operation type. Valid values:
     * - `Write`: write
     * - `Read`: read
     * - `Describe`: read TransactionalId
     * - `IdempotentWrite`: idempotent write to Cluster
     * - `IDEMPOTENT_WRITE`: idempotent write to Cluster, only available for Serverless instances.
     * - `DESCRIBE_CONFIGS`: query configuration, only available for Serverless instances.
     */
    aclOperationType: pulumi.Input<string>;
    /**
     * Batch authorization operation types. Multiple operations are separated by commas (,). Valid values:
     * - `Write`: write
     * - `Read`: read
     * - `Describe`: read TransactionalId
     * - `IdempotentWrite`: idempotent write to Cluster
     * - `IDEMPOTENT_WRITE`: idempotent write to Cluster, only available for Serverless instances.
     * - `DESCRIBE_CONFIGS`: query configuration, only available for Serverless instances.
     * > **NOTE:**  `aclOperationTypes` is only supported for Serverless instances.
     */
    aclOperationTypes?: pulumi.Input<string | undefined>;
    /**
     * Authorization method. Value:
     * - `DENY`: deny.
     * - `ALLOW`: allow.
     * > **NOTE:**  `aclPermissionType` is only supported for Serverless instances.
     */
    aclPermissionType?: pulumi.Input<string | undefined>;
    /**
     * The resource name.
     * - The name of the resource, which can be a topic name, Group ID, cluster name, or transaction ID.
     * - You can use an asterisk (*) to represent all resources of this type.
     */
    aclResourceName: pulumi.Input<string>;
    /**
     * Match the pattern. Valid values:
     * - `LITERAL`: exact match
     * - `PREFIXED`: prefix matching
     */
    aclResourcePatternType: pulumi.Input<string>;
    /**
     * The resource type. Valid values:
     * - `Topic`: the message Topic.
     * - `Group`: consumer Group.
     * - `Cluster`: the instance.
     * - `TransactionalId`: transaction ID.
     */
    aclResourceType: pulumi.Input<string>;
    /**
     * The host of the acl.
     * > **NOTE:** From version 1.270.0, `host` can be set.
     */
    host?: pulumi.Input<string | undefined>;
    /**
     * The instance ID.
     */
    instanceId: pulumi.Input<string>;
    /**
     * The user name.
     */
    username: pulumi.Input<string>;
}
//# sourceMappingURL=saslAcl.d.ts.map