import * as core from "@terrascript/core";
export interface UsernameConfigurationArgs extends core.SchemaArgs {
    caseSensitive: boolean | core.BooleanOut;
}
export declare class UsernameConfiguration extends core.Schema<UsernameConfigurationArgs> {
    caseSensitive: boolean | core.BooleanOut;
}
export interface DeviceConfigurationArgs extends core.SchemaArgs {
    challengeRequiredOnNewDevice?: boolean | core.BooleanOut;
    deviceOnlyRememberedOnUserPrompt?: boolean | core.BooleanOut;
}
export declare class DeviceConfiguration extends core.Schema<DeviceConfigurationArgs> {
    challengeRequiredOnNewDevice?: boolean | core.BooleanOut;
    deviceOnlyRememberedOnUserPrompt?: boolean | core.BooleanOut;
}
export interface UserPoolAddOnsArgs extends core.SchemaArgs {
    advancedSecurityMode: string | core.StringOut;
}
export declare class UserPoolAddOns extends core.Schema<UserPoolAddOnsArgs> {
    advancedSecurityMode: string | core.StringOut;
}
export interface SmsConfigurationArgs extends core.SchemaArgs {
    externalId: string | core.StringOut;
    snsCallerArn: string | core.StringOut;
}
export declare class SmsConfiguration extends core.Schema<SmsConfigurationArgs> {
    externalId: string | core.StringOut;
    snsCallerArn: string | core.StringOut;
}
export interface CustomEmailSenderArgs extends core.SchemaArgs {
    lambdaArn: string | core.StringOut;
    lambdaVersion: string | core.StringOut;
}
export declare class CustomEmailSender extends core.Schema<CustomEmailSenderArgs> {
    lambdaArn: string | core.StringOut;
    lambdaVersion: string | core.StringOut;
}
export interface CustomSmsSenderArgs extends core.SchemaArgs {
    lambdaArn: string | core.StringOut;
    lambdaVersion: string | core.StringOut;
}
export declare class CustomSmsSender extends core.Schema<CustomSmsSenderArgs> {
    lambdaArn: string | core.StringOut;
    lambdaVersion: string | core.StringOut;
}
export interface LambdaConfigArgs extends core.SchemaArgs {
    createAuthChallenge?: string | core.StringOut;
    customEmailSender?: CustomEmailSender;
    customMessage?: string | core.StringOut;
    customSmsSender?: CustomSmsSender;
    defineAuthChallenge?: string | core.StringOut;
    kmsKeyId?: string | core.StringOut;
    postAuthentication?: string | core.StringOut;
    postConfirmation?: string | core.StringOut;
    preAuthentication?: string | core.StringOut;
    preSignUp?: string | core.StringOut;
    preTokenGeneration?: string | core.StringOut;
    userMigration?: string | core.StringOut;
    verifyAuthChallengeResponse?: string | core.StringOut;
}
export declare class LambdaConfig extends core.Schema<LambdaConfigArgs> {
    createAuthChallenge?: string | core.StringOut;
    customEmailSender?: CustomEmailSender;
    customMessage?: string | core.StringOut;
    customSmsSender?: CustomSmsSender;
    defineAuthChallenge?: string | core.StringOut;
    kmsKeyId?: string | core.StringOut;
    postAuthentication?: string | core.StringOut;
    postConfirmation?: string | core.StringOut;
    preAuthentication?: string | core.StringOut;
    preSignUp?: string | core.StringOut;
    preTokenGeneration?: string | core.StringOut;
    userMigration?: string | core.StringOut;
    verifyAuthChallengeResponse?: string | core.StringOut;
}
export interface RecoveryMechanismArgs extends core.SchemaArgs {
    name: string | core.StringOut;
    priority: number | core.NumberOut;
}
export declare class RecoveryMechanism extends core.Schema<RecoveryMechanismArgs> {
    name: string | core.StringOut;
    priority: number | core.NumberOut;
}
export interface AccountRecoverySettingArgs extends core.SchemaArgs {
    recoveryMechanism: core.Array<RecoveryMechanism> | core.ArrayOut<RecoveryMechanism>;
}
export declare class AccountRecoverySetting extends core.Schema<AccountRecoverySettingArgs> {
    recoveryMechanism: core.Array<RecoveryMechanism> | core.ArrayOut<RecoveryMechanism>;
}
export interface NumberAttributeConstraintsArgs extends core.SchemaArgs {
    maxValue?: string | core.StringOut;
    minValue?: string | core.StringOut;
}
export declare class NumberAttributeConstraints extends core.Schema<NumberAttributeConstraintsArgs> {
    maxValue?: string | core.StringOut;
    minValue?: string | core.StringOut;
}
export interface StringAttributeConstraintsArgs extends core.SchemaArgs {
    maxLength?: string | core.StringOut;
    minLength?: string | core.StringOut;
}
export declare class StringAttributeConstraints extends core.Schema<StringAttributeConstraintsArgs> {
    maxLength?: string | core.StringOut;
    minLength?: string | core.StringOut;
}
export interface SchemaArgs extends core.SchemaArgs {
    attributeDataType: string | core.StringOut;
    developerOnlyAttribute?: boolean | core.BooleanOut;
    mutable?: boolean | core.BooleanOut;
    name: string | core.StringOut;
    numberAttributeConstraints?: NumberAttributeConstraints;
    required?: boolean | core.BooleanOut;
    stringAttributeConstraints?: StringAttributeConstraints;
}
export declare class Schema extends core.Schema<SchemaArgs> {
    attributeDataType: string | core.StringOut;
    developerOnlyAttribute?: boolean | core.BooleanOut;
    mutable?: boolean | core.BooleanOut;
    name: string | core.StringOut;
    numberAttributeConstraints?: NumberAttributeConstraints;
    required?: boolean | core.BooleanOut;
    stringAttributeConstraints?: StringAttributeConstraints;
}
export interface EmailConfigurationArgs extends core.SchemaArgs {
    configurationSet?: string | core.StringOut;
    emailSendingAccount?: string | core.StringOut;
    fromEmailAddress?: string | core.StringOut;
    replyToEmailAddress?: string | core.StringOut;
    sourceArn?: string | core.StringOut;
}
export declare class EmailConfiguration extends core.Schema<EmailConfigurationArgs> {
    configurationSet?: string | core.StringOut;
    emailSendingAccount?: string | core.StringOut;
    fromEmailAddress?: string | core.StringOut;
    replyToEmailAddress?: string | core.StringOut;
    sourceArn?: string | core.StringOut;
}
export interface SoftwareTokenMfaConfigurationArgs extends core.SchemaArgs {
    enabled: boolean | core.BooleanOut;
}
export declare class SoftwareTokenMfaConfiguration extends core.Schema<SoftwareTokenMfaConfigurationArgs> {
    enabled: boolean | core.BooleanOut;
}
export interface VerificationMessageTemplateArgs extends core.SchemaArgs {
    defaultEmailOption?: string | core.StringOut;
    emailMessage?: string | core.StringOut;
    emailMessageByLink?: string | core.StringOut;
    emailSubject?: string | core.StringOut;
    emailSubjectByLink?: string | core.StringOut;
    smsMessage?: string | core.StringOut;
}
export declare class VerificationMessageTemplate extends core.Schema<VerificationMessageTemplateArgs> {
    defaultEmailOption?: string | core.StringOut;
    emailMessage?: string | core.StringOut;
    emailMessageByLink?: string | core.StringOut;
    emailSubject?: string | core.StringOut;
    emailSubjectByLink?: string | core.StringOut;
    smsMessage?: string | core.StringOut;
}
export interface PasswordPolicyArgs extends core.SchemaArgs {
    minimumLength?: number | core.NumberOut;
    requireLowercase?: boolean | core.BooleanOut;
    requireNumbers?: boolean | core.BooleanOut;
    requireSymbols?: boolean | core.BooleanOut;
    requireUppercase?: boolean | core.BooleanOut;
    temporaryPasswordValidityDays?: number | core.NumberOut;
}
export declare class PasswordPolicy extends core.Schema<PasswordPolicyArgs> {
    minimumLength?: number | core.NumberOut;
    requireLowercase?: boolean | core.BooleanOut;
    requireNumbers?: boolean | core.BooleanOut;
    requireSymbols?: boolean | core.BooleanOut;
    requireUppercase?: boolean | core.BooleanOut;
    temporaryPasswordValidityDays?: number | core.NumberOut;
}
export interface InviteMessageTemplateArgs extends core.SchemaArgs {
    emailMessage?: string | core.StringOut;
    emailSubject?: string | core.StringOut;
    smsMessage?: string | core.StringOut;
}
export declare class InviteMessageTemplate extends core.Schema<InviteMessageTemplateArgs> {
    emailMessage?: string | core.StringOut;
    emailSubject?: string | core.StringOut;
    smsMessage?: string | core.StringOut;
}
export interface AdminCreateUserConfigArgs extends core.SchemaArgs {
    allowAdminCreateUserOnly?: boolean | core.BooleanOut;
    inviteMessageTemplate?: InviteMessageTemplate;
}
export declare class AdminCreateUserConfig extends core.Schema<AdminCreateUserConfigArgs> {
    allowAdminCreateUserOnly?: boolean | core.BooleanOut;
    inviteMessageTemplate?: InviteMessageTemplate;
}
export interface UserPoolArgs extends core.ResourceArgs {
    /**
     * (Optional) Configuration block to define which verified available method a user can use to recover t
     * heir forgotten password. [Detailed below](#account_recovery_setting).
     */
    accountRecoverySetting?: AccountRecoverySetting;
    /**
     * (Optional) Configuration block for creating a new user profile. [Detailed below](#admin_create_user_
     * config).
     */
    adminCreateUserConfig?: AdminCreateUserConfig;
    /**
     * (Optional) Attributes supported as an alias for this user pool. Valid values: `phone_number`, `email
     * , or `preferred_username`. Conflicts with `username_attributes`.
     */
    aliasAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    /**
     * (Optional) Attributes to be auto-verified. Valid values: `email`, `phone_number`.
     */
    autoVerifiedAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    /**
     * (Optional) Configuration block for the user pool's device tracking. [Detailed below](#device_configu
     * ration).
     */
    deviceConfiguration?: DeviceConfiguration;
    /**
     * (Optional) Configuration block for configuring email. [Detailed below](#email_configuration).
     */
    emailConfiguration?: EmailConfiguration;
    /**
     * (Optional) String representing the email verification message. Conflicts with `verification_message_
     * template` configuration block `email_message` argument.
     */
    emailVerificationMessage?: string | core.StringOut;
    /**
     * (Optional) String representing the email verification subject. Conflicts with `verification_message_
     * template` configuration block `email_subject` argument.
     */
    emailVerificationSubject?: string | core.StringOut;
    /**
     * (Optional) Configuration block for the AWS Lambda triggers associated with the user pool. [Detailed
     * below](#lambda_config).
     */
    lambdaConfig?: LambdaConfig;
    /**
     * (Optional) Multi-Factor Authentication (MFA) configuration for the User Pool. Defaults of `OFF`. Val
     * id values are `OFF` (MFA Tokens are not required), `ON` (MFA is required for all users to sign in; r
     * equires at least one of `sms_configuration` or `software_token_mfa_configuration` to be configured),
     * or `OPTIONAL` (MFA Will be required only for individual users who have MFA Enabled; requires at lea
     * st one of `sms_configuration` or `software_token_mfa_configuration` to be configured).
     */
    mfaConfiguration?: string | core.StringOut;
    /**
     * (Required) Name of the user pool.
     */
    name: string | core.StringOut;
    /**
     * (Optional) Configuration blocked for information about the user pool password policy. [Detailed belo
     * w](#password_policy).
     */
    passwordPolicy?: PasswordPolicy;
    /**
     * (Optional) Configuration block for the schema attributes of a user pool. [Detailed below](#schema).
     * Schema attributes from the [standard attribute set](https://docs.aws.amazon.com/cognito/latest/devel
     * operguide/user-pool-settings-attributes.html#cognito-user-pools-standard-attributes) only need to be
     * specified if they are different from the default configuration. Attributes can be added, but not mo
     * dified or removed. Maximum of 50 attributes.
     */
    schema?: core.Array<Schema> | core.ArrayOut<Schema>;
    /**
     * (Optional) String representing the SMS authentication message. The Message must contain the `{####}`
     * placeholder, which will be replaced with the code.
     */
    smsAuthenticationMessage?: string | core.StringOut;
    /**
     * (Optional) Configuration block for Short Message Service (SMS) settings. [Detailed below](#sms_confi
     * guration). These settings apply to SMS user verification and SMS Multi-Factor Authentication (MFA).
     * Due to Cognito API restrictions, the SMS configuration cannot be removed without recreating the Cogn
     * ito User Pool. For user data safety, this resource will ignore the removal of this configuration by
     * disabling drift detection. To force resource recreation after this configuration has been applied, s
     * ee the [`taint` command](https://www.terraform.io/docs/commands/taint.html).
     */
    smsConfiguration?: SmsConfiguration;
    /**
     * (Optional) String representing the SMS verification message. Conflicts with `verification_message_te
     * mplate` configuration block `sms_message` argument.
     */
    smsVerificationMessage?: string | core.StringOut;
    /**
     * (Optional) Configuration block for software token Mult-Factor Authentication (MFA) settings. [Detail
     * ed below](#software_token_mfa_configuration).
     */
    softwareTokenMfaConfiguration?: SoftwareTokenMfaConfiguration;
    /**
     * (Optional) Map of tags to assign to the User Pool. If configured with a provider [`default_tags` con
     * figuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-con
     * figuration-block) present, tags with matching keys will overwrite those defined at the provider-leve
     * l.
     */
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * A map of tags assigned to the resource, including those inherited from the provider [`default_tags`
     * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-
     * configuration-block).
     */
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * (Optional) Configuration block for user pool add-ons to enable user pool advanced security mode feat
     * ures. [Detailed below](#user_pool_add_ons).
     */
    userPoolAddOns?: UserPoolAddOns;
    /**
     * (Optional) Whether email addresses or phone numbers can be specified as usernames when a user signs
     * up. Conflicts with `alias_attributes`.
     */
    usernameAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    /**
     * (Optional) Configuration block for username configuration. [Detailed below](#username_configuration)
     * .
     */
    usernameConfiguration?: UsernameConfiguration;
    /**
     * (Optional) Configuration block for verification message templates. [Detailed below](#verification_me
     * ssage_template).
     */
    verificationMessageTemplate?: VerificationMessageTemplate;
}
export declare class UserPool extends core.Resource<UserPoolArgs> {
    /**
     * (Optional) Configuration block to define which verified available method a user can use to recover t
     * heir forgotten password. [Detailed below](#account_recovery_setting).
     */
    accountRecoverySetting?: AccountRecoverySetting;
    /**
     * (Optional) Configuration block for creating a new user profile. [Detailed below](#admin_create_user_
     * config).
     */
    adminCreateUserConfig?: AdminCreateUserConfig;
    /**
     * (Optional) Attributes supported as an alias for this user pool. Valid values: `phone_number`, `email
     * , or `preferred_username`. Conflicts with `username_attributes`.
     */
    aliasAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    /**
     * ARN of the user pool.
     */
    arn: string | core.StringOut;
    /**
     * (Optional) Attributes to be auto-verified. Valid values: `email`, `phone_number`.
     */
    autoVerifiedAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    /**
     * Date the user pool was created.
     */
    creationDate: string | core.StringOut;
    /**
     * A custom domain name that you provide to Amazon Cognito. This parameter applies only if you use a cu
     * stom domain to host the sign-up and sign-in pages for your application. For example: `auth.example.c
     * om`.
     */
    customDomain: string | core.StringOut;
    /**
     * (Optional) Configuration block for the user pool's device tracking. [Detailed below](#device_configu
     * ration).
     */
    deviceConfiguration?: DeviceConfiguration;
    /**
     * Holds the domain prefix if the user pool has a domain associated with it.
     */
    domain: string | core.StringOut;
    /**
     * (Optional) Configuration block for configuring email. [Detailed below](#email_configuration).
     */
    emailConfiguration?: EmailConfiguration;
    /**
     * (Optional) String representing the email verification message. Conflicts with `verification_message_
     * template` configuration block `email_message` argument.
     */
    emailVerificationMessage?: string | core.StringOut;
    /**
     * (Optional) String representing the email verification subject. Conflicts with `verification_message_
     * template` configuration block `email_subject` argument.
     */
    emailVerificationSubject?: string | core.StringOut;
    /**
     * Endpoint name of the user pool. Example format: `cognito-idp.REGION.amazonaws.com/xxxx_yyyyy`
     */
    endpoint: string | core.StringOut;
    /**
     * A number estimating the size of the user pool.
     */
    estimatedNumberOfUsers: number | core.NumberOut;
    /**
     * ID of the user pool.
     */
    id: string | core.StringOut;
    /**
     * (Optional) Configuration block for the AWS Lambda triggers associated with the user pool. [Detailed
     * below](#lambda_config).
     */
    lambdaConfig?: LambdaConfig;
    /**
     * Date the user pool was last modified.
     */
    lastModifiedDate: string | core.StringOut;
    /**
     * (Optional) Multi-Factor Authentication (MFA) configuration for the User Pool. Defaults of `OFF`. Val
     * id values are `OFF` (MFA Tokens are not required), `ON` (MFA is required for all users to sign in; r
     * equires at least one of `sms_configuration` or `software_token_mfa_configuration` to be configured),
     * or `OPTIONAL` (MFA Will be required only for individual users who have MFA Enabled; requires at lea
     * st one of `sms_configuration` or `software_token_mfa_configuration` to be configured).
     */
    mfaConfiguration?: string | core.StringOut;
    /**
     * (Required) Name of the user pool.
     */
    name: string | core.StringOut;
    /**
     * (Optional) Configuration blocked for information about the user pool password policy. [Detailed belo
     * w](#password_policy).
     */
    passwordPolicy?: PasswordPolicy;
    /**
     * (Optional) Configuration block for the schema attributes of a user pool. [Detailed below](#schema).
     * Schema attributes from the [standard attribute set](https://docs.aws.amazon.com/cognito/latest/devel
     * operguide/user-pool-settings-attributes.html#cognito-user-pools-standard-attributes) only need to be
     * specified if they are different from the default configuration. Attributes can be added, but not mo
     * dified or removed. Maximum of 50 attributes.
     */
    schema?: core.Array<Schema> | core.ArrayOut<Schema>;
    /**
     * (Optional) String representing the SMS authentication message. The Message must contain the `{####}`
     * placeholder, which will be replaced with the code.
     */
    smsAuthenticationMessage?: string | core.StringOut;
    /**
     * (Optional) Configuration block for Short Message Service (SMS) settings. [Detailed below](#sms_confi
     * guration). These settings apply to SMS user verification and SMS Multi-Factor Authentication (MFA).
     * Due to Cognito API restrictions, the SMS configuration cannot be removed without recreating the Cogn
     * ito User Pool. For user data safety, this resource will ignore the removal of this configuration by
     * disabling drift detection. To force resource recreation after this configuration has been applied, s
     * ee the [`taint` command](https://www.terraform.io/docs/commands/taint.html).
     */
    smsConfiguration?: SmsConfiguration;
    /**
     * (Optional) String representing the SMS verification message. Conflicts with `verification_message_te
     * mplate` configuration block `sms_message` argument.
     */
    smsVerificationMessage?: string | core.StringOut;
    /**
     * (Optional) Configuration block for software token Mult-Factor Authentication (MFA) settings. [Detail
     * ed below](#software_token_mfa_configuration).
     */
    softwareTokenMfaConfiguration?: SoftwareTokenMfaConfiguration;
    /**
     * (Optional) Map of tags to assign to the User Pool. If configured with a provider [`default_tags` con
     * figuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-con
     * figuration-block) present, tags with matching keys will overwrite those defined at the provider-leve
     * l.
     */
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * A map of tags assigned to the resource, including those inherited from the provider [`default_tags`
     * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-
     * configuration-block).
     */
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * (Optional) Configuration block for user pool add-ons to enable user pool advanced security mode feat
     * ures. [Detailed below](#user_pool_add_ons).
     */
    userPoolAddOns?: UserPoolAddOns;
    /**
     * (Optional) Whether email addresses or phone numbers can be specified as usernames when a user signs
     * up. Conflicts with `alias_attributes`.
     */
    usernameAttributes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    /**
     * (Optional) Configuration block for username configuration. [Detailed below](#username_configuration)
     * .
     */
    usernameConfiguration?: UsernameConfiguration;
    /**
     * (Optional) Configuration block for verification message templates. [Detailed below](#verification_me
     * ssage_template).
     */
    verificationMessageTemplate?: VerificationMessageTemplate;
    constructor(name: string, args?: UserPoolArgs);
    getNamespace(): string;
}
//# sourceMappingURL=user_pool.d.ts.map