import type { TArg, TRet } from "@li0ard/gost3413";
/** Kalyna abstract class */
export declare abstract class KalynaBase {
    readonly N: number;
    /** Round keys for encryption */
    erk: TArg<BigUint64Array>;
    /** Rounds keys for decryption */
    drk: TArg<BigUint64Array>;
    /** Block size */
    readonly blockSize: number;
    /** Key size */
    readonly keySize: number;
    private readonly numRounds;
    private readonly glOffset;
    private wordOffsets;
    /** Kalyna abstract class */
    constructor(key: TArg<Uint8Array>, N: number, isDouble?: boolean);
    private expandKey;
    private makeOddKey;
    private addkey;
    private subkey;
    private add_constant;
    private byte;
    private G0;
    private G;
    private GL;
    private IMC;
    private IG;
    private IGL;
    /**
     * Encrypt data
     * @param in_ Data to be encrypted
     */
    encrypt(in_: TArg<Uint8Array>): TRet<Uint8Array>;
    /**
     * Decrypt data
     * @param in_ Data to be decrypted
     */
    decrypt(in_: TArg<Uint8Array>): TRet<Uint8Array>;
}
