/*! Copyright 2023-2025 the gnablib contributors MPL-1.1 */
import type { IHash } from '../interfaces/IHash.js';
declare class KeccakCore implements IHash {
    #private;
    private readonly _size;
    get size(): number;
    readonly blockSize: number;
    protected readonly state: Uint8Array<ArrayBuffer>;
    protected readonly block: Uint8Array;
    readonly suffix: number;
    protected bPos: number;
    constructor(suffix: number, digestSizeBytes: number, capacityBytes?: number, roundStart?: number);
    private hash;
    write(data: Uint8Array): void;
    sum(): Uint8Array;
    sumIn(): Uint8Array;
    protected xorSuffix(): void;
    reset(): void;
    newEmpty(): IHash;
    clone(): KeccakCore;
    protected _cloneHelp(ret: KeccakCore): void;
}
export declare class Keccak extends KeccakCore {
    constructor(digestSize: number, capacityBytes?: number);
}
export declare class Keccak224 extends KeccakCore {
    constructor(capacityBytes?: number);
}
export declare class Keccak256 extends KeccakCore {
    constructor(capacityBytes?: number);
}
export declare class Keccak384 extends KeccakCore {
    constructor(capacityBytes?: number);
}
export declare class Keccak512 extends KeccakCore {
    constructor(capacityBytes?: number);
}
export declare class Sha3_224 extends KeccakCore {
    constructor();
}
export declare class Sha3_256 extends KeccakCore {
    constructor();
}
export declare class Sha3_384 extends KeccakCore {
    constructor();
}
export declare class Sha3_512 extends KeccakCore {
    constructor();
}
export declare class Shake128 extends KeccakCore {
    constructor(digestSize: number);
}
export declare class Shake256 extends KeccakCore {
    constructor(digestSize: number);
}
declare class CShake implements IHash {
    protected cap: number;
    protected pad: number;
    protected functionName: string;
    private _keccak;
    protected readonly customization: Uint8Array;
    constructor(cap: number, pad: number, digestSize: number, functionName?: string, customization?: Uint8Array | string);
    write(data: Uint8Array): void;
    sum(): Uint8Array;
    sumIn(): Uint8Array;
    reset(): void;
    newEmpty(): IHash;
    clone(): CShake;
    protected _cloneHelp(ret: CShake): void;
    get size(): number;
    get blockSize(): number;
}
export declare class CShake128 extends CShake {
    constructor(digestSize: number, functionName?: string, customization?: Uint8Array | string);
}
export declare class CShake256 extends CShake {
    constructor(digestSize: number, functionName?: string, customization?: string);
}
declare class KmacCore extends CShake {
    private appendSize;
    constructor(appendSize: boolean, cap: number, pad: number, digestSize: number, key?: Uint8Array | string, customization?: Uint8Array | string);
    sumIn(): Uint8Array;
    clone(): KmacCore;
}
export declare class Kmac128 extends KmacCore {
    constructor(digestSize?: number, key?: Uint8Array | string, customization?: Uint8Array | string);
}
export declare class Kmac256 extends KmacCore {
    constructor(digestSize?: number, key?: Uint8Array | string, customization?: Uint8Array | string);
}
export declare class KmacXof128 extends KmacCore {
    constructor(digestSize: number, key?: Uint8Array | string, customization?: Uint8Array | string);
}
export declare class KmacXof256 extends KmacCore {
    constructor(digestSize: number, key?: Uint8Array | string, customization?: Uint8Array | string);
}
declare class TupleHashCore extends CShake {
    private appendSize;
    constructor(appendSize: boolean, cap: number, pad: number, digestSize: number, customization?: Uint8Array | string);
    write(data: Uint8Array): void;
    sumIn(): Uint8Array;
    clone(): TupleHashCore;
}
export declare class TupleHash128 extends TupleHashCore {
    constructor(digestSize?: number, customization?: Uint8Array | string);
}
export declare class TupleHash256 extends TupleHashCore {
    constructor(digestSize?: number, customization?: Uint8Array | string);
}
export declare class TupleHashXof128 extends TupleHashCore {
    constructor(digestSize: number, customization?: Uint8Array | string);
}
export declare class TupleHashXof256 extends TupleHashCore {
    constructor(digestSize: number, customization?: Uint8Array | string);
}
declare class ParallelHashCore extends CShake {
    #private;
    private appendSize;
    private _subHash;
    private _obPos;
    private _obCount;
    constructor(appendSize: boolean, cap: number, pad: number, blockSize: number, digestSize: number, customization?: Uint8Array | string);
    write(data: Uint8Array): void;
    sumIn(): Uint8Array;
    reset(): void;
    clone(): ParallelHashCore;
    protected _cloneHelp(ret: ParallelHashCore): void;
}
export declare class ParallelHash128 extends ParallelHashCore {
    constructor(blockSize: number, digestSize?: number, customization?: Uint8Array | string);
}
export declare class ParallelHash256 extends ParallelHashCore {
    constructor(blockSize: number, digestSize?: number, customization?: Uint8Array | string);
}
export declare class ParallelHashXof128 extends ParallelHashCore {
    constructor(blockSize: number, digestSize: number, customization?: Uint8Array | string);
}
export declare class ParallelHashXof256 extends ParallelHashCore {
    constructor(blockSize: number, digestSize: number, customization?: Uint8Array | string);
}
export declare class TurboShake128 extends KeccakCore {
    constructor(digestSize: number, domainSep?: number);
}
export declare class TurboShake256 extends KeccakCore {
    constructor(digestSize: number, domainSep?: number);
}
export declare class KangarooTwelve extends KeccakCore {
    readonly maxChunkSize = 8192;
    protected readonly customization: Uint8Array;
    private _chunks;
    private _ingestBlockBytes;
    constructor(digestSize: number, customization?: Uint8Array | string);
    write(data: Uint8Array): void;
    protected xorSuffix(): void;
    clone(): KangarooTwelve;
    protected _cloneHelp(ret: KangarooTwelve): void;
}
export declare class HopMac extends KangarooTwelve {
    #private;
    private _outerSize;
    constructor(digestSize: number, key: Uint8Array | string, customization?: Uint8Array | string);
    get size(): number;
    sumIn(): Uint8Array;
    clone(): HopMac;
}
export {};
