UNPKG

l1-lottery-contracts

Version:

This repo contains smart contracts and related scripts for ZkNoid L1 Lottery proposed [here](https://forums.minaprotocol.com/t/zknoid-l1-lottery/6269)

252 lines (251 loc) 9.72 kB
import { Field, SelfProof } from 'o1js'; import { Ticket } from '../Structs/Ticket.js'; import { UInt64 } from 'o1js'; import { MerkleMap20Witness } from '../Structs/CustomMerkleMap.js'; declare const DistributionProofPublicInput_base: (new (value: { winningCombination: import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket; valueWitness: MerkleMap20Witness; }) => { winningCombination: import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket; valueWitness: MerkleMap20Witness; }) & { _isStruct: true; } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{ winningCombination: import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket; valueWitness: MerkleMap20Witness; }, { winningCombination: bigint; ticket: { numbers: bigint[]; owner: { x: bigint; isOdd: boolean; }; amount: bigint; }; valueWitness: { isLefts: boolean[]; siblings: bigint[]; }; }>, "fromFields"> & { fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[]) => { winningCombination: import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket; valueWitness: MerkleMap20Witness; }; } & { fromValue: (value: { winningCombination: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket | { numbers: import("o1js").UInt32[] | bigint[]; owner: import("o1js").PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; amount: bigint | UInt64; }; valueWitness: MerkleMap20Witness | { isLefts: import("o1js/dist/node/lib/provable/bool.js").Bool[] | boolean[]; siblings: import("o1js/dist/node/lib/provable/field.js").Field[] | bigint[]; }; }) => { winningCombination: import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket; valueWitness: MerkleMap20Witness; }; toInput: (x: { winningCombination: import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket; valueWitness: MerkleMap20Witness; }) => { fields?: Field[] | undefined; packed?: [Field, number][] | undefined; }; toJSON: (x: { winningCombination: import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket; valueWitness: MerkleMap20Witness; }) => { winningCombination: string; ticket: { numbers: string[]; owner: string; amount: string; }; valueWitness: { isLefts: boolean[]; siblings: string[]; }; }; fromJSON: (x: { winningCombination: string; ticket: { numbers: string[]; owner: string; amount: string; }; valueWitness: { isLefts: boolean[]; siblings: string[]; }; }) => { winningCombination: import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket; valueWitness: MerkleMap20Witness; }; empty: () => { winningCombination: import("o1js/dist/node/lib/provable/field.js").Field; ticket: Ticket; valueWitness: MerkleMap20Witness; }; }; export declare class DistributionProofPublicInput extends DistributionProofPublicInput_base { } declare const DistributionProofPublicOutput_base: (new (value: { root: import("o1js/dist/node/lib/provable/field.js").Field; total: UInt64; }) => { root: import("o1js/dist/node/lib/provable/field.js").Field; total: UInt64; }) & { _isStruct: true; } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{ root: import("o1js/dist/node/lib/provable/field.js").Field; total: UInt64; }, { root: bigint; total: bigint; }>, "fromFields"> & { fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[]) => { root: import("o1js/dist/node/lib/provable/field.js").Field; total: UInt64; }; } & { fromValue: (value: { root: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field; total: bigint | UInt64; }) => { root: import("o1js/dist/node/lib/provable/field.js").Field; total: UInt64; }; toInput: (x: { root: import("o1js/dist/node/lib/provable/field.js").Field; total: UInt64; }) => { fields?: Field[] | undefined; packed?: [Field, number][] | undefined; }; toJSON: (x: { root: import("o1js/dist/node/lib/provable/field.js").Field; total: UInt64; }) => { root: string; total: string; }; fromJSON: (x: { root: string; total: string; }) => { root: import("o1js/dist/node/lib/provable/field.js").Field; total: UInt64; }; empty: () => { root: import("o1js/dist/node/lib/provable/field.js").Field; total: UInt64; }; }; export declare class DistributionProofPublicOutput extends DistributionProofPublicOutput_base { } export declare const init: (input: DistributionProofPublicInput) => Promise<DistributionProofPublicOutput>; export declare const addTicket: (input: DistributionProofPublicInput, prevProof: SelfProof<DistributionProofPublicInput, DistributionProofPublicOutput>) => Promise<DistributionProofPublicOutput>; export declare const DistributionProgram: { name: string; compile: (options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }) => Promise<{ verificationKey: { data: string; hash: Field; }; }>; verify: (proof: import("o1js").Proof<DistributionProofPublicInput, DistributionProofPublicOutput>) => Promise<boolean>; digest: () => Promise<string>; analyzeMethods: () => Promise<{ init: { 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>>; }; addTicket: { 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 DistributionProofPublicInput; publicOutputType: typeof DistributionProofPublicOutput; privateInputTypes: { init: []; addTicket: [typeof SelfProof]; }; rawMethods: { init: (publicInput: DistributionProofPublicInput, ...args: [] & any[]) => Promise<DistributionProofPublicOutput>; addTicket: (publicInput: DistributionProofPublicInput, ...args: [SelfProof<unknown, unknown>] & any[]) => Promise<DistributionProofPublicOutput>; }; proofsEnabled: boolean; setProofsEnabled(proofsEnabled: boolean): void; } & { init: (publicInput: DistributionProofPublicInput, ...args: [] & any[]) => Promise<import("o1js").Proof<DistributionProofPublicInput, DistributionProofPublicOutput>>; addTicket: (publicInput: DistributionProofPublicInput, ...args: [SelfProof<unknown, unknown>] & any[]) => Promise<import("o1js").Proof<DistributionProofPublicInput, DistributionProofPublicOutput>>; }; declare const DistributionProof_base: { new ({ proof, publicInput, publicOutput, maxProofsVerified, }: { proof: unknown; publicInput: DistributionProofPublicInput; publicOutput: DistributionProofPublicOutput; maxProofsVerified: 0 | 2 | 1; }): { verify(): void; verifyIf(condition: import("o1js/dist/node/lib/provable/bool.js").Bool): void; publicInput: DistributionProofPublicInput; publicOutput: DistributionProofPublicOutput; proof: unknown; maxProofsVerified: 0 | 2 | 1; shouldVerify: import("o1js/dist/node/lib/provable/bool.js").Bool; toJSON(): import("o1js").JsonProof; }; publicInputType: typeof DistributionProofPublicInput; publicOutputType: typeof DistributionProofPublicOutput; tag: () => { name: string; publicInputType: typeof DistributionProofPublicInput; publicOutputType: typeof DistributionProofPublicOutput; }; fromJSON<S extends (new (...args: any) => import("o1js").Proof<unknown, unknown>) & { prototype: import("o1js").Proof<any, any>; fromJSON: typeof import("o1js").Proof.fromJSON; dummy: typeof import("o1js").Proof.dummy; publicInputType: import("o1js").FlexibleProvablePure<any>; publicOutputType: import("o1js").FlexibleProvablePure<any>; tag: () => { name: string; }; } & { prototype: import("o1js").Proof<unknown, unknown>; }>(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>>; }; export declare class DistributionProof extends DistributionProof_base { } export {};