import { Bindings } from "../types";
export declare const PASSWORD_ERROR_CODES: {
    readonly TOO_SHORT: "password_too_short";
    readonly MISSING_LOWERCASE: "password_missing_lowercase";
    readonly MISSING_UPPERCASE: "password_missing_uppercase";
    readonly MISSING_NUMBER: "password_missing_number";
    readonly MISSING_SPECIAL: "password_missing_special";
    readonly REUSED: "password_reused";
    readonly CONTAINS_PERSONAL_INFO: "password_contains_personal_info";
    readonly CONTAINS_FORBIDDEN_WORD: "password_contains_forbidden_word";
};
export interface PasswordValidationError {
    code: string;
    message: string;
    params?: Record<string, string | number>;
}
export declare class PasswordPolicyError extends Error {
    code: string;
    params?: Record<string, string | number>;
    constructor(code: string, message: string, params?: Record<string, string | number>);
}
export interface PasswordPolicy {
    passwordPolicy?: string;
    password_complexity_options?: {
        min_length?: number;
    };
    password_history?: {
        enable?: boolean;
        size?: number;
    };
    password_no_personal_info?: {
        enable?: boolean;
    };
    password_dictionary?: {
        enable?: boolean;
        dictionary?: string[];
    };
}
export interface PasswordValidationOptions {
    tenantId: string;
    userId: string;
    newPassword: string;
    userData?: any;
    data: Bindings["data"];
}
export declare function validatePasswordPolicy(policy: PasswordPolicy, options: PasswordValidationOptions): Promise<void>;
export declare function getPasswordPolicy(data: Bindings["data"], tenantId: string, connectionName: string): Promise<PasswordPolicy>;
/**
 * Hash a password using bcrypt with a cost factor of 10
 */
export declare function hashPassword(password: string): Promise<{
    hash: string;
    algorithm: "bcrypt";
}>;
