@nori-zk/o1js-zk-utils
Version:
o1js-zk-utils supporting Nori Bridge
103 lines (102 loc) • 4.33 kB
TypeScript
import { Field, type ProvableType } from 'o1js';
import { type EthVerifier } from './ethVerifier.js';
import { type Tuple } from 'o1js/dist/node/lib/util/types.js';
import { type PrivateInput, type ZkProgram as ZkProgramFunc } from 'o1js/dist/node/lib/proof-system/zkprogram.js';
import { type ConversionOutput, type SP1ProofWithPublicValuesPlonkNoTee } from '@nori-zk/proof-conversion/build/src/index.min.js';
export type Constructor<T = unknown> = new (...args: any[]) => T;
export type ZkProgram<Config extends {
publicInput?: ProvableType;
publicOutput?: ProvableType;
methods: {
[I in string]: {
privateInputs: Tuple<PrivateInput>;
auxiliaryOutput?: ProvableType;
};
};
}> = ReturnType<typeof ZkProgramFunc<Config>>;
export type CompilableZkProgram = {
compile: (options?: unknown) => Promise<{
verificationKey: {
data: string;
hash: Field;
};
}>;
};
export interface CreateProofArgument {
sp1PlonkProof: SP1ProofWithPublicValuesPlonkNoTee;
conversionOutputProof: ConversionOutput;
}
export type EthVerifierComputeOutput = Awaited<ReturnType<typeof EthVerifier.compute>>;
export type VerificationKey = {
data: string;
hash: Field;
};
declare const Bytes32_base: typeof import("o1js/dist/node/lib/provable/bytes.js").Bytes;
export declare class Bytes32 extends Bytes32_base {
static get zero(): Bytes32;
}
declare const Bytes20_base: typeof import("o1js/dist/node/lib/provable/bytes.js").Bytes;
export declare class Bytes20 extends Bytes20_base {
static get zero(): Bytes20;
static fromHex(hex: string): Bytes20;
toField(): Field;
}
export declare function bytes32FieldPairToBytes32(highByteField: Field, lowerBytesField: Field): import("o1js/dist/node/lib/provable/bytes.js").Bytes;
declare const Bytes32FieldPair_base: (new (value: {
highByteField: import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
highByteField: import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: import("o1js/dist/node/lib/provable/field.js").Field;
}) & {
_isStruct: true;
} & Omit<import("o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
highByteField: import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: import("o1js/dist/node/lib/provable/field.js").Field;
}, {
highByteField: bigint;
lowerBytesField: bigint;
}>, "fromFields"> & {
fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[]) => {
highByteField: import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: import("o1js/dist/node/lib/provable/field.js").Field;
};
} & {
fromValue: (value: {
highByteField: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
highByteField: import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: import("o1js/dist/node/lib/provable/field.js").Field;
};
toInput: (x: {
highByteField: import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
fields?: Field[] | undefined;
packed?: [Field, number][] | undefined;
};
toJSON: (x: {
highByteField: import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
highByteField: string;
lowerBytesField: string;
};
fromJSON: (x: {
highByteField: string;
lowerBytesField: string;
}) => {
highByteField: import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: import("o1js/dist/node/lib/provable/field.js").Field;
};
empty: () => {
highByteField: import("o1js/dist/node/lib/provable/field.js").Field;
lowerBytesField: import("o1js/dist/node/lib/provable/field.js").Field;
};
};
export declare class Bytes32FieldPair extends Bytes32FieldPair_base {
static fromBytes32(bytes32: Bytes32): Bytes32FieldPair;
toBytes32(): Bytes32;
}
export {};