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)
36 lines (35 loc) • 1.46 kB
TypeScript
import { Field, JsonProof } from 'o1js';
import { Ticket } from '../Structs/Ticket.js';
import { DistributionProof } from '../Proofs/DistributionProof.js';
import { MerkleMap20, MerkleMap20Witness } from '../Structs/CustomMerkleMap.js';
import { PLottery } from '../PLottery.js';
export declare function mockProof<I, O, P>(publicOutput: O, ProofType: new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
proof: unknown;
publicInput: I;
publicOutput: any;
maxProofsVerified: 0 | 2 | 1;
}) => P, publicInput: I): Promise<P>;
export declare class BaseStateManager {
contract: PLottery;
ticketMap: MerkleMap20;
roundTickets: (Ticket | undefined)[];
lastTicketInRound: number;
ticketNullifierMap: MerkleMap20;
startSlot: Field;
isMock: boolean;
shouldUpdateState: boolean;
dpProof: DistributionProof | undefined;
constructor(contract: PLottery, isMock?: boolean, shouldUpdateState?: boolean);
addTicket(ticket: Ticket): void;
getReward(round: number, ticket: Ticket, roundDP?: JsonProof | undefined, ticketIndex?: number): Promise<{
ticketWitness: MerkleMap20Witness;
nullifierWitness: MerkleMap20Witness;
}>;
getRewardByTicketId(ticketId: number): Promise<{
ticketWitness: MerkleMap20Witness;
nullifierWitness: MerkleMap20Witness;
}>;
getRefund(round: number, ticket: Ticket): Promise<{
ticketWitness: MerkleMap20Witness;
}>;
}