import { EncodingVersions } from '../encoding-versions';
import { EncryptionKey } from '../encryption-key';
import { SerializationFormat } from '../serialization-versions';
export declare enum KeyDerivationStrategy {
    Pbkdf2Hmac = "Pbkdf2Hmac"
}
export interface IDerivedKey {
    salt: string;
    iterations: number;
    length: number;
    strategy: string;
    hash?: string;
}
/** Serialization style used in Ruby cryppo */
export interface ICryppoSerializationArtifacts {
    iv: any;
    i: number;
    l: number;
    hash: any;
}
export interface IRandomKeyOptions {
    strategy?: string;
    iterationVariance?: number;
    length?: number;
    minIterations?: number;
    useSalt?: string;
    hash?: string;
}
/**
 * Store configuration used for password based key derivation and
 * serialize/de-serialize it.
 */
export declare class DerivedKeyOptions implements IDerivedKey {
    static usesDerivedKey(serialized: string): boolean;
    static randomFromOptions({ iterationVariance, length, minIterations, strategy, useSalt, }: IRandomKeyOptions): DerivedKeyOptions;
    static fromSerialized(serialized: string): DerivedKeyOptions;
    salt: string;
    iterations: number;
    length: number;
    strategy: string;
    hash: string;
    constructor(options: IDerivedKey);
    serialize(serializationVersion?: SerializationFormat): string;
    deriveKey(key: string, encodingVersion?: EncodingVersions): Promise<EncryptionKey>;
}
