@tokamak-zk-evm/synthesizer
Version:
Tokamak zk-EVM Synthesizer - Processes Ethereum transactions into wire maps for Tokamak zk-SNARK proof generation
70 lines • 2.25 kB
TypeScript
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