import { AttributeType, CognitoIdentityProvider, CognitoIdentityProviderClientConfig } from '@aws-sdk/client-cognito-identity-provider';
import '@quinck/collections';
import { BasicUserInfo, UserInfo } from '../models/utils/user';
import { CognitoUserAttribute } from './models/attributes';
import { UserStructure } from './models/users';
export type CognitoServiceConfig<SignUpInfo extends Partial<UserInfoAttributes>, UserUpdateInfo extends Partial<UserInfoAttributes>, UserInfoAttributes extends Record<string, unknown>> = {
    userPoolId: string;
    userStructure: UserStructure<UserInfoAttributes>;
    fitSignUpInfo?: (user: SignUpInfo) => SignUpInfo;
    fitUserUpdateInfo?: (user: UserUpdateInfo) => UserUpdateInfo;
    cognitoIdentityProviderClientConfig?: CognitoIdentityProviderClientConfig;
};
export declare class BasicCognitoService<SignUpInfo extends Partial<UserInfoAttributes>, UserUpdateInfo extends Partial<UserInfoAttributes>, UserInfoAttributes extends Record<string, unknown>> {
    static readonly DEFAULT_FIT_INFO: <X>(user: X) => X;
    protected readonly userPoolId: string;
    protected readonly cognitoIdentityProvider: CognitoIdentityProvider;
    protected readonly fitSignUpInfo: (user: SignUpInfo) => SignUpInfo;
    protected readonly fitUserUpdateInfo: (user: UserUpdateInfo) => UserUpdateInfo;
    private readonly userStructure;
    private readonly userAttributes;
    constructor(config: CognitoServiceConfig<SignUpInfo, UserUpdateInfo, UserInfoAttributes>);
    protected tryDo<X>(fun: () => Promise<X>): Promise<X>;
    protected createAttributesFromObject(user: Partial<Record<string, unknown>>, defaultIfUndefined?: boolean): CognitoUserAttribute[];
    protected createUserInfoAttributesFromAttributes(attributes: CognitoUserAttribute[]): UserInfoAttributes;
    protected getBasicUserInfo(username: string): BasicUserInfo;
    protected createUserInfo(username: string, attributes: CognitoUserAttribute[]): UserInfo<UserInfoAttributes>;
    protected parseUserAttributes(attributes: AttributeType[]): CognitoUserAttribute[];
    protected createError(error: unknown): Error;
}
