o1js
Version:
TypeScript framework for zk-SNARKs and zkApps
95 lines (94 loc) • 3.56 kB
TypeScript
export { createField, Fp, Fq, FiniteField, p, q, mod, inverse };
declare const p = 28948022309329048855892746252171976963363056481941560715954676764349967630337n;
declare const q = 28948022309329048855892746252171976963363056481941647379679742748393362948097n;
declare function mod(x: bigint, p: bigint): bigint;
declare function inverse(a: bigint, p: bigint): bigint | undefined;
declare const Fp: {
modulus: bigint;
sizeInBits: number;
t: bigint;
M: bigint;
twoadicRoot: bigint;
mod(x: bigint): bigint;
add(x: bigint, y: bigint): bigint;
not(x: bigint, bits: number): bigint;
negate(x: bigint): bigint;
sub(x: bigint, y: bigint): bigint;
mul(x: bigint, y: bigint): bigint;
inverse: (x: bigint) => bigint | undefined;
div(x: bigint, y: bigint): bigint | undefined;
square(x: bigint): bigint;
isSquare(x: bigint): boolean;
sqrt(x: bigint): bigint | undefined;
power(x: bigint, n: bigint): bigint;
dot(x: bigint[], y: bigint[]): bigint;
equal(x: bigint, y: bigint): boolean;
isEven(x: bigint): boolean;
random(): bigint;
fromNumber(x: number): bigint;
fromBigint(x: bigint): bigint;
rot(x: bigint, bits: bigint, direction?: 'left' | 'right', maxBits?: bigint): bigint;
leftShift(x: bigint, bits: number, maxBitSize?: number): bigint;
rightShift(x: bigint, bits: number): bigint;
};
declare const Fq: {
modulus: bigint;
sizeInBits: number;
t: bigint;
M: bigint;
twoadicRoot: bigint;
mod(x: bigint): bigint;
add(x: bigint, y: bigint): bigint;
not(x: bigint, bits: number): bigint;
negate(x: bigint): bigint;
sub(x: bigint, y: bigint): bigint;
mul(x: bigint, y: bigint): bigint;
inverse: (x: bigint) => bigint | undefined;
div(x: bigint, y: bigint): bigint | undefined;
square(x: bigint): bigint;
isSquare(x: bigint): boolean;
sqrt(x: bigint): bigint | undefined;
power(x: bigint, n: bigint): bigint;
dot(x: bigint[], y: bigint[]): bigint;
equal(x: bigint, y: bigint): boolean;
isEven(x: bigint): boolean;
random(): bigint;
fromNumber(x: number): bigint;
fromBigint(x: bigint): bigint;
rot(x: bigint, bits: bigint, direction?: 'left' | 'right', maxBits?: bigint): bigint;
leftShift(x: bigint, bits: number, maxBitSize?: number): bigint;
rightShift(x: bigint, bits: number): bigint;
};
type FiniteField = ReturnType<typeof createField>;
declare function createField(p: bigint, constants?: {
oddFactor: bigint;
twoadicRoot: bigint;
twoadicity: bigint;
}): {
modulus: bigint;
sizeInBits: number;
t: bigint;
M: bigint;
twoadicRoot: bigint;
mod(x: bigint): bigint;
add(x: bigint, y: bigint): bigint;
not(x: bigint, bits: number): bigint;
negate(x: bigint): bigint;
sub(x: bigint, y: bigint): bigint;
mul(x: bigint, y: bigint): bigint;
inverse: (x: bigint) => bigint | undefined;
div(x: bigint, y: bigint): bigint | undefined;
square(x: bigint): bigint;
isSquare(x: bigint): boolean;
sqrt(x: bigint): bigint | undefined;
power(x: bigint, n: bigint): bigint;
dot(x: bigint[], y: bigint[]): bigint;
equal(x: bigint, y: bigint): boolean;
isEven(x: bigint): boolean;
random(): bigint;
fromNumber(x: number): bigint;
fromBigint(x: bigint): bigint;
rot(x: bigint, bits: bigint, direction?: 'left' | 'right', maxBits?: bigint): bigint;
leftShift(x: bigint, bits: number, maxBitSize?: number): bigint;
rightShift(x: bigint, bits: number): bigint;
};