import type { EncryptionVersion } from './constants.js';
/**
 * Base encryption configuration
 */
export interface BaseEncryptionConfig {
    version: EncryptionVersion;
    algorithm: string;
    keyDerivation: string;
    iterations: number;
    hashAlgorithm: string;
    algorithmLength: number;
}
/**
 * Argon2-specific encryption configuration
 */
export interface Argon2EncryptionConfig extends BaseEncryptionConfig {
    memorySize: number;
    parallelism: number;
    hashLength: number;
}
/**
 * Encrypted data structure
 */
export interface EncryptedData {
    salt: string;
    iv: string;
    cipher: string;
    version: string;
}
/**
 * Decryption input data structure
 */
export interface DecryptionData {
    salt: string;
    iv: string;
    cipher: string;
    version?: string;
}
/**
 * Key derivation parameters
 */
export interface KeyDerivationParams {
    password: string;
    salt: Uint8Array;
}
/**
 * Per-component, one-way fingerprints of the exact inputs a single Argon2id
 * derivation consumed. Split by component so that when two derivations disagree,
 * the self-test can pinpoint whether the salt, the password, or the config
 * (Argon2 params) was the difference — rather than just "inputs differ".
 * Each value is a truncated SHA-256; none is reversible.
 */
export interface DerivationInputFingerprint {
    /** H(salt) */
    salt: string;
    /** H(password bytes) */
    password: string;
    /** H(parallelism, passes, memorySize, tagLength) */
    params: string;
}
//# sourceMappingURL=types.d.ts.map