import type { ArithmeticOperator } from '../types/index.js';
export type ArithmeticFunction = (...args: bigint[]) => bigint | bigint[];
/**
 * Utility class for handling Synthesizer arithmetic operations
 */
export declare class ArithmeticOperations {
    private static readonly MAX_UINT256;
    private static readonly SIGN_BIT;
    private static readonly N;
    /**
     * Basic arithmetic operations
     */
    static add(a: bigint, b: bigint): bigint;
    static mul(a: bigint, b: bigint): bigint;
    static sub(a: bigint, b: bigint): bigint;
    static div(a: bigint, b: bigint): bigint;
    static sdiv(a: bigint, b: bigint): bigint;
    /**
     * Modulo operations
     */
    static mod(a: bigint, b: bigint): bigint;
    static smod(a: bigint, b: bigint): bigint;
    static addmod(a: bigint, b: bigint, N: bigint): bigint;
    static mulmod(a: bigint, b: bigint, N: bigint): bigint;
    /**
     * @deprecated
     * Exponentiation operation
     */
    static exp(base: bigint, exponent: bigint): bigint;
    /**
     * Comparison operations
     */
    static lt(a: bigint, b: bigint): bigint;
    static gt(a: bigint, b: bigint): bigint;
    static slt(a: bigint, b: bigint): bigint;
    static sgt(a: bigint, b: bigint): bigint;
    static eq(a: bigint, b: bigint): bigint;
    static iszero(a: bigint): bigint;
    /**
     * Bit operations
     */
    static and(a: bigint, b: bigint): bigint;
    static or(a: bigint, b: bigint): bigint;
    static xor(a: bigint, b: bigint): bigint;
    static not(a: bigint): bigint;
    /**
     * Shift operations
     */
    static shl(shift: bigint, value: bigint): bigint;
    static shr(shift: bigint, value: bigint): bigint;
    static sar(shift: bigint, value: bigint): bigint;
    /**
     * Byte operations
     */
    static byte(index: bigint, value: bigint): bigint;
    /**
     * Sign extension
     */
    static signextend(k: bigint, value: bigint): bigint;
    /**
     * Decimal to Bit
     */
    static decToBit(dec: bigint): bigint[];
    /**
     * Subroutine for EXP
     */
    static subEXP(c: bigint, a: bigint, b: bigint): bigint[];
}
export declare const OPERATION_MAPPING: Record<ArithmeticOperator, ArithmeticFunction>;
//# sourceMappingURL=arithmetic.d.ts.map