/*! Copyright 2023-2025 the gnablib contributors MPL-1.1 */
import { IHash } from '../interfaces/IHash.js';
import { IAeadCrypt } from '../interfaces/IAeadCrypt.js';
declare abstract class AAscon {
    readonly blockSize: number;
    readonly aRound: number;
    readonly bRound: number;
    protected readonly state: Uint8Array<ArrayBuffer>;
    protected readonly s32: Uint32Array<ArrayBuffer>;
    protected _sPos: number;
    constructor(blockSize: number, aRound: number, bRound: number);
    protected p(rounds: number): void;
}
declare class _AsconAead extends AAscon implements IAeadCrypt {
    #private;
    readonly tagSize = 16;
    private _stage;
    constructor(key: Uint8Array, nonce: Uint8Array, rate: number, aRound: number, bRound: number);
    writeAD(data: Uint8Array): void;
    private finalizeAD;
    encryptInto(enc: Uint8Array, plain: Uint8Array): void;
    decryptInto(plain: Uint8Array, enc: Uint8Array): void;
    verify(tag: Uint8Array): boolean;
    finalize(): Uint8Array;
    encryptSize(plainLen: number): number;
}
export declare class Ascon128 extends _AsconAead {
    constructor(key: Uint8Array, nonce: Uint8Array);
}
export declare class Ascon128a extends _AsconAead {
    constructor(key: Uint8Array, nonce: Uint8Array);
}
export declare class Ascon80pq extends _AsconAead {
    constructor(key: Uint8Array, nonce: Uint8Array);
}
declare class _AsconHash extends AAscon implements IHash {
    readonly size: number;
    private readonly xof;
    constructor(rate: number, aRound: number, bRound: number, size: number, xof: boolean);
    write(data: Uint8Array): void;
    sum(): Uint8Array;
    sumIn(): Uint8Array;
    reset(): void;
    newEmpty(): IHash;
    clone(): IHash;
}
export declare class AsconHash extends _AsconHash {
    constructor();
}
export declare class AsconHashA extends _AsconHash {
    constructor();
}
export declare class AsconXof extends _AsconHash {
    constructor(digestSize: number);
}
export declare class AsconXofA extends _AsconHash {
    constructor(digestSize: number);
}
export {};
