import { type CipherFunc, type TArg, type TRet } from "./utils.js";
/** Multilinear Galois Mode (MGM) class */
export declare class MGM {
    tag_size: number;
    encrypter: CipherFunc;
    blockSize: number;
    max_size: bigint;
    r: number;
    /**
     * Prepare nonce
     *
     * Just clear MSB bit
     * @param nonce Nonce
     */
    static nonce_prepare(nonce: TArg<Uint8Array>): TRet<Uint8Array>;
    constructor(encrypter: CipherFunc, blockSize: number, tagSize?: number);
    private validateNonce;
    private validateSizes;
    private mul;
    private crypt;
    private auth;
    /**
     * Seal plaintext
     * @param nonce Nonce (blocksized)
     * @param plaintext Data to be encrypted and authenticated
     * @param additional_data Additional data to be authenticated
     */
    seal(nonce: TArg<Uint8Array>, plaintext: TArg<Uint8Array>, additional_data: TArg<Uint8Array>): TRet<Uint8Array>;
    /**
     * Open ciphertext
     * @param nonce Nonce (blocksized)
     * @param ciphertext Data to be decrypted and authenticated
     * @param additional_data Additional data to be authenticated
     */
    open(nonce: TArg<Uint8Array>, ciphertext: TArg<Uint8Array>, additional_data: TArg<Uint8Array>): TRet<Uint8Array>;
}
