import { Signer } from './utils.js';
/**
 * * N: Security parameter (in bytes). W: Winternitz parameter
 * * H: Hypertree height. D: Hypertree layers
 * * K: FORS trees numbers. A: FORS trees height
 */
export type SphincsOpts = {
    N: number;
    W: number;
    H: number;
    D: number;
    K: number;
    A: number;
};
export type SphincsHashOpts = {
    isCompressed?: boolean;
    getContext: GetContext;
};
export declare const PARAMS: Record<string, SphincsOpts>;
export type ADRS = Uint8Array;
type Context = {
    PRFaddr: (addr: ADRS) => Uint8Array;
    PRFmsg: (skPRF: Uint8Array, random: Uint8Array, msg: Uint8Array) => Uint8Array;
    Hmsg: (R: Uint8Array, pk: Uint8Array, m: Uint8Array, outLen: number) => Uint8Array;
    thash1: (input: Uint8Array, addr: ADRS) => Uint8Array;
    thashN: (blocks: number, input: Uint8Array, addr: ADRS) => Uint8Array;
    clean: () => void;
};
export type GetContext = (opts: SphincsOpts) => (pub_seed: Uint8Array, sk_seed?: Uint8Array) => Context;
type SphincsSigner = Signer & {
    seedLen: number;
};
export declare const slh_dsa_shake_128f: SphincsSigner;
export declare const slh_dsa_shake_128s: SphincsSigner;
export declare const slh_dsa_shake_192f: SphincsSigner;
export declare const slh_dsa_shake_192s: SphincsSigner;
export declare const slh_dsa_shake_256f: SphincsSigner;
export declare const slh_dsa_shake_256s: SphincsSigner;
export declare const slh_dsa_sha2_128f: SphincsSigner;
export declare const slh_dsa_sha2_128s: SphincsSigner;
export declare const slh_dsa_sha2_192f: SphincsSigner;
export declare const slh_dsa_sha2_192s: SphincsSigner;
export declare const slh_dsa_sha2_256f: SphincsSigner;
export declare const slh_dsa_sha2_256s: SphincsSigner;
export {};
//# sourceMappingURL=slh-dsa.d.ts.map