import type { HashDriverContract } from './types.ts';
/**
 * Hash and verify values using a dedicated hash driver. The Hash
 * works as an adapter across different drivers.
 *
 * ```ts
 * const hash = new Hash(new Argon())
 * const hashedPassword = await hash.make('secret')
 *
 * const isValid = await hash.verify(hashedPassword, 'secret')
 * console.log(isValid)
 * ```
 */
export declare class Hash implements HashDriverContract {
    #private;
    /**
     * Create a new Hash instance with the specified driver
     *
     * @param driver - The hash driver implementation to use
     */
    constructor(driver: HashDriverContract);
    /**
     * Check if the value is a valid hash. This method just checks
     * for the formatting of the hash
     *
     * @param value - The value to check
     * @return True if the value is a valid hash format
     */
    isValidHash(value: string): boolean;
    /**
     * Hash plain text value
     *
     * @param value - The plain text value to hash
     * @return Promise resolving to the hashed value
     */
    make(value: string): Promise<string>;
    /**
     * Verify the plain text value against an existing hash
     *
     * @param hashedValue - The hashed value to verify against
     * @param plainValue - The plain text value to verify
     * @return Promise resolving to true if verification succeeds
     */
    verify(hashedValue: string, plainValue: string): Promise<boolean>;
    /**
     * Find if the hash value needs a rehash or not.
     *
     * @param hashedValue - The hashed value to check
     * @return True if the hash needs to be rehashed
     */
    needsReHash(hashedValue: string): boolean;
    /**
     * Assert the plain value passes the hash verification
     *
     * @param hashedValue - The hashed value to verify against
     * @param plainValue - The plain text value to verify
     * @return Promise that resolves if verification passes, throws if it fails
     */
    assertEquals(hashedValue: string, plainValue: string): Promise<void>;
    /**
     * Assert the plain value fails the hash verification
     *
     * @param hashedValue - The hashed value to verify against
     * @param plainValue - The plain text value to verify
     * @return Promise that resolves if verification fails, throws if it passes
     */
    assertNotEquals(hashedValue: string, plainValue: string): Promise<void>;
}
