@nori-zk/mina-token-bridge
Version:
A Mina zk-program contract allowing users to mint tokens on Nori Bridge.
431 lines (430 loc) • 25.3 kB
TypeScript
import { Field, PrivateKey, Provable } from 'o1js';
declare const EthDepositProgramInput_base: (new (value: {
credentialAttestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
credentialAttestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}) & {
_isStruct: true;
} & Omit<import("o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
credentialAttestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}, {
credentialAttestationHash: bigint;
}>, "fromFields"> & {
fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[]) => {
credentialAttestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
};
} & {
fromValue: (value: {
credentialAttestationHash: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
credentialAttestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
};
toInput: (x: {
credentialAttestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
fields?: Field[] | undefined;
packed?: [Field, number][] | undefined;
};
toJSON: (x: {
credentialAttestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
credentialAttestationHash: string;
};
fromJSON: (x: {
credentialAttestationHash: string;
}) => {
credentialAttestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
};
empty: () => {
credentialAttestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
};
};
export declare class EthDepositProgramInput extends EthDepositProgramInput_base {
}
declare const EthDepositProgramOutput_base: (new (value: {
totalLocked: import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
totalLocked: import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}) & {
_isStruct: true;
} & Omit<import("o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
totalLocked: import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}, {
totalLocked: bigint;
storageDepositRoot: bigint;
attestationHash: bigint;
}>, "fromFields"> & {
fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[]) => {
totalLocked: import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
};
} & {
fromValue: (value: {
totalLocked: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
totalLocked: import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
};
toInput: (x: {
totalLocked: import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
fields?: Field[] | undefined;
packed?: [Field, number][] | undefined;
};
toJSON: (x: {
totalLocked: import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
}) => {
totalLocked: string;
storageDepositRoot: string;
attestationHash: string;
};
fromJSON: (x: {
totalLocked: string;
storageDepositRoot: string;
attestationHash: string;
}) => {
totalLocked: import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
};
empty: () => {
totalLocked: import("o1js/dist/node/lib/provable/field.js").Field;
storageDepositRoot: import("o1js/dist/node/lib/provable/field.js").Field;
attestationHash: import("o1js/dist/node/lib/provable/field.js").Field;
};
};
export declare class EthDepositProgramOutput extends EthDepositProgramOutput_base {
}
export declare const EthDepositProgram: {
name: string;
maxProofsVerified(): Promise<0 | 1 | 2>;
compile: (options?: {
cache?: import("o1js").Cache;
forceRecompile?: boolean;
proofsEnabled?: boolean;
}) => Promise<{
verificationKey: {
data: string;
hash: Field;
};
}>;
verify: (proof: import("o1js").Proof<EthDepositProgramInput, EthDepositProgramOutput>) => Promise<boolean>;
digest: () => Promise<string>;
analyzeMethods: () => Promise<{
compute: {
proofs: import("o1js/dist/node/lib/proof-system/proof.js").ProofClass[];
rows: number;
digest: string;
gates: import("o1js/dist/node/snarky.js").Gate[];
publicInputSize: number;
print(): void;
summary(): Partial<Record<import("o1js/dist/node/snarky.js").GateType | "Total rows", number>>;
};
}>;
publicInputType: typeof EthDepositProgramInput;
publicOutputType: typeof EthDepositProgramOutput;
privateInputTypes: {
compute: [{
new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
proof: unknown;
publicInput: import("@nori-zk/o1js-zk-utils").EthInput;
publicOutput: import("o1js/dist/node/lib/provable/field.js").Field;
maxProofsVerified: 0 | 2 | 1;
}): import("o1js").Proof<import("@nori-zk/o1js-zk-utils").EthInput, import("o1js/dist/node/lib/provable/field.js").Field>;
fromJSON<S extends import("o1js/dist/node/lib/util/types.js").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise<import("o1js").Proof<Input, OutPut>>;
readonly provable: {
toFields: (value: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/provable/field.js").Field[];
toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[];
fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => import("o1js").Proof<any, any>;
sizeInFields(): number;
check: (value: import("o1js").Proof<any, any>) => void;
toValue: (x: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>;
fromValue: (x: import("o1js").Proof<any, any> | import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => import("o1js").Proof<any, any>;
toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>) | undefined;
};
publicInputType: import("o1js").FlexibleProvable<any>;
publicOutputType: import("o1js").FlexibleProvable<any>;
tag: () => {
name: string;
};
publicFields(value: import("o1js").ProofBase<any, any>): {
input: import("o1js/dist/node/lib/provable/field.js").Field[];
output: import("o1js/dist/node/lib/provable/field.js").Field[];
};
_proofFromBase64(proofString: string, maxProofsVerified: 0 | 2 | 1): unknown;
_proofToBase64(proof: unknown, maxProofsVerified: 0 | 2 | 1): string;
} & {
provable: Provable<import("o1js").Proof<import("@nori-zk/o1js-zk-utils").EthInput, import("o1js/dist/node/lib/provable/field.js").Field>, import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<{
inputSlot: bigint;
inputStoreHash: {
bytes: {
value: bigint;
}[];
};
outputSlot: bigint;
outputStoreHash: {
bytes: {
value: bigint;
}[];
};
executionStateRoot: {
bytes: {
value: bigint;
}[];
};
verifiedContractDepositsRoot: {
bytes: {
value: bigint;
}[];
};
nextSyncCommitteeHash: {
bytes: {
value: bigint;
}[];
};
}, bigint>>;
}, {
new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
proof: unknown;
publicInput: {
rootHash: import("o1js/dist/node/lib/provable/field.js").Field;
path: import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>;
index: import("o1js").UInt64;
value: {};
};
publicOutput: import("o1js/dist/node/lib/provable/field.js").Field;
maxProofsVerified: 0 | 2 | 1;
}): {
publicInput: {
rootHash: Field;
path: InstanceType<{
new (array: import("o1js/dist/node/lib/provable/field.js").Field[], length: Field): import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>;
readonly maxLength: number;
} & Omit<import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayClass<import("o1js/dist/node/lib/provable/field.js").Field, bigint>, "provable"> & {
provable: Omit<import("o1js").ProvableHashable<import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>, bigint[]>, "fromValue"> & {
fromValue: (value: import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint> | (bigint | import("o1js/dist/node/lib/provable/field.js").Field)[]) => import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>;
} & Omit<import("o1js").ProvablePure<import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>, bigint[]>, "fromValue">;
}>;
index: import("o1js").UInt64;
value: import("@nori-zk/o1js-zk-utils").ContractDeposit;
};
publicOutput: Field;
verify(): void;
verifyIf(condition: import("o1js").Bool): void;
proof: import("o1js/dist/node/snarky.js").Pickles.Proof;
maxProofsVerified: 0 | 1 | 2;
shouldVerify: import("o1js/dist/node/lib/provable/bool.js").Bool;
declare(): boolean;
toJSON(): import("o1js").JsonProof;
publicFields(): {
input: import("o1js/dist/node/lib/provable/field.js").Field[];
output: import("o1js/dist/node/lib/provable/field.js").Field[];
};
};
fromJSON<S extends import("o1js/dist/node/lib/util/types.js").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise<import("o1js").Proof<Input, OutPut>>;
provable: {
toFields: (value: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/provable/field.js").Field[];
toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[];
fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => import("o1js").Proof<any, any>;
sizeInFields(): number;
check: (value: import("o1js").Proof<any, any>) => void;
toValue: (x: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>;
fromValue: (x: import("o1js").Proof<any, any> | import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => import("o1js").Proof<any, any>;
toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>) | undefined;
} & Provable<import("o1js").Proof<{
rootHash: import("o1js/dist/node/lib/provable/field.js").Field;
path: import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>;
index: import("o1js").UInt64;
value: {};
}, import("o1js/dist/node/lib/provable/field.js").Field>, import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<{
rootHash: bigint;
path: bigint[];
index: bigint;
value: {};
}, bigint>>;
publicInputType: import("o1js").FlexibleProvable<any>;
publicOutputType: import("o1js").FlexibleProvable<any>;
tag: () => {
name: string;
};
publicFields(value: import("o1js").ProofBase<any, any>): {
input: import("o1js/dist/node/lib/provable/field.js").Field[];
output: import("o1js/dist/node/lib/provable/field.js").Field[];
};
_proofFromBase64(proofString: string, maxProofsVerified: 0 | 2 | 1): unknown;
_proofToBase64(proof: unknown, maxProofsVerified: 0 | 2 | 1): string;
}];
};
auxiliaryOutputTypes: {
compute: undefined;
};
rawMethods: {
compute: (publicInput: EthDepositProgramInput, args_0: import("o1js").Proof<import("@nori-zk/o1js-zk-utils").EthInput, import("o1js/dist/node/lib/provable/field.js").Field>, args_1: {
publicInput: {
rootHash: Field;
path: InstanceType<{
new (array: import("o1js/dist/node/lib/provable/field.js").Field[], length: Field): import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>;
readonly maxLength: number;
} & Omit<import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayClass<import("o1js/dist/node/lib/provable/field.js").Field, bigint>, "provable"> & {
provable: Omit<import("o1js").ProvableHashable<import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>, bigint[]>, "fromValue"> & {
fromValue: (value: import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint> | (bigint | import("o1js/dist/node/lib/provable/field.js").Field)[]) => import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>;
} & Omit<import("o1js").ProvablePure<import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>, bigint[]>, "fromValue">;
}>;
index: import("o1js").UInt64;
value: import("@nori-zk/o1js-zk-utils").ContractDeposit;
};
publicOutput: Field;
verify(): void;
verifyIf(condition: import("o1js").Bool): void;
proof: import("o1js/dist/node/snarky.js").Pickles.Proof;
maxProofsVerified: 0 | 1 | 2;
shouldVerify: import("o1js/dist/node/lib/provable/bool.js").Bool;
declare(): boolean;
toJSON(): import("o1js").JsonProof;
publicFields(): {
input: import("o1js/dist/node/lib/provable/field.js").Field[];
output: import("o1js/dist/node/lib/provable/field.js").Field[];
};
}) => Promise<{
publicOutput: EthDepositProgramOutput;
}>;
};
Proof: {
new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
proof: import("o1js/dist/node/snarky.js").Pickles.Proof;
publicInput: EthDepositProgramInput;
publicOutput: EthDepositProgramOutput;
maxProofsVerified: 0 | 1 | 2;
}): import("o1js").Proof<EthDepositProgramInput, EthDepositProgramOutput>;
fromJSON<S extends import("o1js/dist/node/lib/util/types.js").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 1 | 2, domainLog2?: number): Promise<import("o1js").Proof<Input, OutPut>>;
readonly provable: {
toFields: (value: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/provable/field.js").Field[];
toAuxiliary: (value?: import("o1js").Proof<any, any>) => any[];
fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => import("o1js").Proof<any, any>;
sizeInFields(): number;
check: (value: import("o1js").Proof<any, any>) => void;
toValue: (x: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>;
fromValue: (x: import("o1js").Proof<any, any> | import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => import("o1js").Proof<any, any>;
toCanonical?: (x: import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>;
};
publicInputType: import("o1js").FlexibleProvable<any>;
publicOutputType: import("o1js").FlexibleProvable<any>;
tag: () => {
name: string;
};
publicFields(value: import("o1js").ProofBase): {
input: import("o1js/dist/node/lib/provable/field.js").Field[];
output: import("o1js/dist/node/lib/provable/field.js").Field[];
};
_proofFromBase64(proofString: import("o1js/dist/node/snarky.js").Base64ProofString, maxProofsVerified: 0 | 1 | 2): unknown;
_proofToBase64(proof: import("o1js/dist/node/snarky.js").Pickles.Proof, maxProofsVerified: 0 | 1 | 2): string;
};
proofsEnabled: boolean;
setProofsEnabled(proofsEnabled: boolean): void;
} & {
compute: (publicInput: EthDepositProgramInput | {
credentialAttestationHash: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field;
}, args_0: import("o1js").Proof<import("@nori-zk/o1js-zk-utils").EthInput, import("o1js/dist/node/lib/provable/field.js").Field> | import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<{
inputSlot: bigint;
inputStoreHash: {
bytes: {
value: bigint;
}[];
};
outputSlot: bigint;
outputStoreHash: {
bytes: {
value: bigint;
}[];
};
executionStateRoot: {
bytes: {
value: bigint;
}[];
};
verifiedContractDepositsRoot: {
bytes: {
value: bigint;
}[];
};
nextSyncCommitteeHash: {
bytes: {
value: bigint;
}[];
};
}, bigint>, args_1: import("o1js").Proof<{
rootHash: import("o1js/dist/node/lib/provable/field.js").Field;
path: import("mina-attestations/build/src/dynamic/dynamic-array.js").DynamicArrayBase<import("o1js/dist/node/lib/provable/field.js").Field, bigint>;
index: import("o1js").UInt64;
value: {};
}, import("o1js/dist/node/lib/provable/field.js").Field> | import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<{
rootHash: bigint;
path: bigint[];
index: bigint;
value: {};
}, bigint>) => Promise<{
proof: import("o1js").Proof<EthDepositProgramInput, EthDepositProgramOutput>;
auxiliaryOutput: undefined;
}>;
};
export declare const EthDepositProgramProof: {
new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
proof: unknown;
publicInput: EthDepositProgramInput;
publicOutput: EthDepositProgramOutput;
maxProofsVerified: 0 | 2 | 1;
}): import("o1js").Proof<EthDepositProgramInput, EthDepositProgramOutput>;
fromJSON<S extends import("o1js/dist/node/lib/util/types.js").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise<import("o1js").Proof<Input, OutPut>>;
readonly provable: {
toFields: (value: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/provable/field.js").Field[];
toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[];
fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => import("o1js").Proof<any, any>;
sizeInFields(): number;
check: (value: import("o1js").Proof<any, any>) => void;
toValue: (x: import("o1js").Proof<any, any>) => import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>;
fromValue: (x: import("o1js").Proof<any, any> | import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => import("o1js").Proof<any, any>;
toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>) | undefined;
};
publicInputType: import("o1js").FlexibleProvable<any>;
publicOutputType: import("o1js").FlexibleProvable<any>;
tag: () => {
name: string;
};
publicFields(value: import("o1js").ProofBase<any, any>): {
input: import("o1js/dist/node/lib/provable/field.js").Field[];
output: import("o1js/dist/node/lib/provable/field.js").Field[];
};
_proofFromBase64(proofString: string, maxProofsVerified: 0 | 2 | 1): unknown;
_proofToBase64(proof: unknown, maxProofsVerified: 0 | 2 | 1): string;
} & {
provable: Provable<import("o1js").Proof<EthDepositProgramInput, EthDepositProgramOutput>, import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<{
credentialAttestationHash: bigint;
}, {
totalLocked: bigint;
storageDepositRoot: bigint;
attestationHash: bigint;
}>>;
};
export declare class EthDepositProgramProofType extends EthDepositProgramProof {
}
export declare function compilePreRequisites(): Promise<void>;
export declare function deployAndVerifyEcdsaSigPresentationVerifier(zkAppPrivateKey: PrivateKey, senderPrivateKey: PrivateKey, presentationJSON: string): Promise<void>;
export {};