import { type TArg, type TRet } from "@li0ard/gost3413/dist/utils.js";
import type { KalynaBase } from "../core.js";
/**
 * Compute GMAC
 * @param cipherClass Initialized cipher class
 * @param authData Data to be authenticated
 * @param cipherData Ciphertext to be authenticated (Only for GMAC)
 * @param q MAC size
 */
export declare const gmac: (cipherClass: KalynaBase, authData: TArg<Uint8Array>, cipherData?: TArg<Uint8Array>, q?: number) => TRet<Uint8Array>;
/**
 * Encrypts data using Galois/Counter Mode (GCM) mode
 * @param cipherClass Initialized cipher class
 * @param plainData Data to be encrypted and authenticated
 * @param iv Initialization vector
 * @param authData Additional data to be authenticated
 * @param q MAC size
 */
export declare const encryptGCM: (cipherClass: KalynaBase, plainData: TArg<Uint8Array>, iv: TArg<Uint8Array>, authData?: TArg<Uint8Array>, q?: number) => TRet<Uint8Array>;
/**
 * Decrypts data using Galois/Counter Mode (GCM) mode
 * @param cipherClass Initialized cipher class
 * @param plainData Data to be decrypted and authenticated
 * @param iv Initialization vector
 * @param authData Additional data to be authenticated
 * @param q MAC size
 */
export declare const decryptGCM: (cipherClass: KalynaBase, encryptedData: TArg<Uint8Array>, iv: TArg<Uint8Array>, authData?: TArg<Uint8Array>, q?: number) => TRet<Uint8Array>;
