export interface MultiRegionProperties {
    /** The Region that serves as the witness region for a multi-Region cluster. The witness Region helps maintain cluster consistency and quorum. */
    witnessRegion?: string;
    /** The set of peered clusters that form the multi-Region cluster configuration. Each peered cluster represents a database instance in a different Region. */
    clusters?: string[];
}
export interface CreateClusterInput {
    /** An optional field that controls whether to bypass the lockout prevention check. When set to true, this parameter allows you to apply a policy that might lock you out of the cluster. Use with caution. */
    bypassPolicyLockoutSafetyCheck?: boolean;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
    /** If enabled, you can't delete your cluster. You must first disable this property before you can delete your cluster. */
    deletionProtectionEnabled?: boolean;
    /** The KMS key that encrypts and protects the data on your cluster. You can specify the ARN, ID, or alias of an existing key or have Amazon Web Services create a default key for you. */
    kmsEncryptionKey?: string;
    /** The configuration settings when creating a multi-Region cluster, including the witness region and linked cluster properties. */
    multiRegionProperties?: MultiRegionProperties;
    /** An optional resource-based policy document in JSON format that defines access permissions for the cluster. */
    policy?: string;
    /** A map of key and value pairs to use to tag your cluster. */
    tags?: Record<string, string>;
}
export interface DeleteClusterInput {
    /** The ID of the cluster to delete. */
    identifier: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
}
export interface DeleteClusterPolicyInput {
    identifier: string;
    clientToken?: string;
    /** The expected version of the policy to delete. This parameter ensures that you're deleting the correct version of the policy and helps prevent accidental deletions. */
    expectedPolicyVersion?: string;
}
export interface GetClusterInput {
    /** The ID of the cluster to retrieve. */
    identifier: string;
}
export interface GetClusterPolicyInput {
    /** The ID of the cluster to retrieve the policy from. */
    identifier: string;
}
export interface GetVpcEndpointServiceNameInput {
    /** The ID of the cluster to retrieve. */
    identifier: string;
}
export interface ListClustersInput {
    /** An optional parameter that specifies the maximum number of results to return. You can use nextToken to display the next page of results. */
    maxResults?: number;
    /** If your initial ListClusters operation returns a nextToken, you can include the returned nextToken in following ListClusters operations, which returns results in the next page. */
    nextToken?: string;
}
export interface ListTagsForResourceInput {
    /** The ARN of the resource for which you want to list the tags. */
    resourceArn: string;
}
export interface PutClusterPolicyInput {
    identifier: string;
    /** The resource-based policy document to attach to the cluster. This should be a valid JSON policy document that defines permissions and conditions. */
    policy: string;
    /** A flag that allows you to bypass the policy lockout safety check. When set to true, this parameter allows you to apply a policy that might lock you out of the cluster. Use with caution. */
    bypassPolicyLockoutSafetyCheck?: boolean;
    clientToken?: string;
    /** The expected version of the current policy. This parameter ensures that you're updating the correct version of the policy and helps prevent concurrent modification conflicts. */
    expectedPolicyVersion?: string;
}
export interface TagResourceInput {
    /** The ARN of the resource that you want to tag. */
    resourceArn: string;
    /** A map of key and value pairs to use to tag your resource. */
    tags: Record<string, string>;
}
export interface UntagResourceInput {
    /** The ARN of the resource from which to remove tags. */
    resourceArn: string;
    /** The array of keys of the tags that you want to remove. */
    tagKeys: string[];
}
export interface UpdateClusterInput {
    /** The ID of the cluster you want to update. */
    identifier: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    clientToken?: string;
    /** Specifies whether to enable deletion protection in your cluster. */
    deletionProtectionEnabled?: boolean;
    /** The KMS key that encrypts and protects the data on your cluster. You can specify the ARN, ID, or alias of an existing key or have Amazon Web Services create a default key for you. */
    kmsEncryptionKey?: string;
    /** The new multi-Region cluster configuration settings to be applied during an update operation. */
    multiRegionProperties?: MultiRegionProperties;
}
/** DSQL service binding for Step Functions SDK integrations. */
export declare class DSQL {
    constructor();
    createCluster<T>(params: CreateClusterInput): Promise<T>;
    deleteCluster<T>(params: DeleteClusterInput): Promise<T>;
    deleteClusterPolicy<T>(params: DeleteClusterPolicyInput): Promise<T>;
    getCluster<T>(params: GetClusterInput): Promise<T>;
    getClusterPolicy<T>(params: GetClusterPolicyInput): Promise<T>;
    getVpcEndpointServiceName<T>(params: GetVpcEndpointServiceNameInput): Promise<T>;
    listClusters<T>(params: ListClustersInput): Promise<T>;
    listTagsForResource<T>(params: ListTagsForResourceInput): Promise<T>;
    putClusterPolicy<T>(params: PutClusterPolicyInput): Promise<T>;
    tagResource<T>(params: TagResourceInput): Promise<T>;
    untagResource<T>(params: UntagResourceInput): Promise<T>;
    updateCluster<T>(params: UpdateClusterInput): Promise<T>;
}
//# sourceMappingURL=DSQL.d.ts.map