import ts from 'typescript';
import { GroupType, IdentityProviderType, UserPoolClientType, UserPoolType } from '@aws-sdk/client-cognito-identity-provider';
import { IdentityPool } from '@aws-sdk/client-cognito-identity';
import { GetUserPoolMfaConfigResponse } from '@aws-sdk/client-cognito-identity-provider';
export interface AuthTrigger {
    readonly event: AuthTriggerEvent;
    readonly resourceName: string;
}
export type Scope = 'phone' | 'email' | 'openid' | 'profile' | 'aws.cognito.signin.user.admin';
export type AuthTriggerEvent = 'createAuthChallenge' | 'customMessage' | 'defineAuthChallenge' | 'postAuthentication' | 'postConfirmation' | 'preAuthentication' | 'preSignUp' | 'preTokenGeneration' | 'userMigration' | 'verifyAuthChallengeResponse';
export interface AuthPermissions {
    readonly manageUsers?: boolean;
    readonly manageGroups?: boolean;
    readonly manageGroupMembership?: boolean;
    readonly manageUserDevices?: boolean;
    readonly managePasswordRecovery?: boolean;
    readonly addUserToGroup?: boolean;
    readonly createUser?: boolean;
    readonly deleteUser?: boolean;
    readonly deleteUserAttributes?: boolean;
    readonly disableUser?: boolean;
    readonly enableUser?: boolean;
    readonly forgetDevice?: boolean;
    readonly getDevice?: boolean;
    readonly getUser?: boolean;
    readonly listUsers?: boolean;
    readonly listDevices?: boolean;
    readonly listGroupsForUser?: boolean;
    readonly listUsersInGroup?: boolean;
    readonly listGroups?: boolean;
    readonly createGroup?: boolean;
    readonly deleteGroup?: boolean;
    readonly getGroup?: boolean;
    readonly updateGroup?: boolean;
    readonly removeUserFromGroup?: boolean;
    readonly resetUserPassword?: boolean;
    readonly setUserMfaPreference?: boolean;
    readonly setUserPassword?: boolean;
    readonly setUserSettings?: boolean;
    readonly updateDeviceStatus?: boolean;
    readonly updateUserAttributes?: boolean;
}
export interface FunctionAccess {
    readonly resourceName: string;
    readonly permissions: AuthPermissions;
}
export interface AuthRenderOptions {
    readonly userPool: UserPoolType;
    readonly webClient: UserPoolClientType;
    readonly nativeClient: UserPoolClientType;
    readonly identityPool?: IdentityPool;
    readonly identityProviders?: readonly IdentityProviderType[];
    readonly identityGroups?: readonly GroupType[];
    readonly triggers?: readonly AuthTrigger[];
    readonly mfaConfig?: GetUserPoolMfaConfigResponse;
    readonly access?: readonly FunctionAccess[];
}
export declare class AuthRenderer {
    render(options: AuthRenderOptions): ts.NodeArray<ts.Node>;
    private renderBackendTypeImport;
    private renderCdkImports;
    private renderApplyEscapeHatches;
    private renderPostRefactor;
    private renderStandardAuth;
    private static deriveLoginFlags;
    private static deriveExternalProviders;
    private static deriveMfaConfig;
    private static deriveStandardUserAttributes;
    private static deriveCustomUserAttributes;
    private static deriveGroups;
    private static deriveUserPoolOverrides;
    private static deriveProviderSpecificScopes;
    private static filterAttributeMapping;
    private addLambdaTriggers;
    private addMfaConfig;
    private addFunctionAccess;
    private createLogInWithPropertyAssignment;
    private createEmailDefinitionObject;
    private createExternalProvidersExpression;
    private createUserAttributeAssignments;
    private static createAttributeDefinition;
    private static createProviderConfig;
    private static createProviderPropertyAssignment;
    private static createOidcSamlPropertyAssignments;
    private buildEscapeHatchStatements;
    private buildDomainOverrideStatements;
    private buildAdditionalImports;
    private buildUserPoolOverrideStatements;
    private buildNativeUserPoolClientStatements;
    private static hasIdentityProviders;
    private buildCognitoProvidersPushStatements;
    private static buildClientAttributesExpression;
    private buildProviderSetupStatements;
}
//# sourceMappingURL=auth.renderer.d.ts.map