UNPKG

@navigators-exploration-team/mina-mastermind

Version:

[![Integration tests](https://github.com/navigators-exploration-team/recursive-mastermind-zkApp/actions/workflows/ci.yml/badge.svg)](https://github.com/navigators-exploration-team/recursive-mastermind-zkApp/actions/workflows/ci.yml)

402 lines (401 loc) 20.4 kB
import { Field, PublicKey, SelfProof, Signature, UInt8 } from 'o1js'; import { Combination } from './utils.js'; export { StepProgram, PublicInputs, PublicOutputs, StepProgramProof }; declare const PublicInputs_base: (new (value: { authPubKey: PublicKey; authSignature: Signature; }) => { authPubKey: PublicKey; authSignature: Signature; }) & { _isStruct: true; } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{ authPubKey: PublicKey; authSignature: Signature; }, { authPubKey: { x: bigint; isOdd: boolean; }; authSignature: any; }>, "fromFields"> & { fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[]) => { authPubKey: PublicKey; authSignature: Signature; }; } & { fromValue: (value: { authPubKey: PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; authSignature: Signature | { r: Field | bigint; s: import("o1js").Scalar | bigint; }; }) => { authPubKey: PublicKey; authSignature: Signature; }; toInput: (x: { authPubKey: PublicKey; authSignature: Signature; }) => { fields?: Field[] | undefined; packed?: [Field, number][] | undefined; }; toJSON: (x: { authPubKey: PublicKey; authSignature: Signature; }) => { authPubKey: string; authSignature: any; }; fromJSON: (x: { authPubKey: string; authSignature: any; }) => { authPubKey: PublicKey; authSignature: Signature; }; empty: () => { authPubKey: PublicKey; authSignature: Signature; }; }; /** * authPubKey and authSignature is used for the authenticity of the data transferred. It enables a p2p authenticated communication. */ declare class PublicInputs extends PublicInputs_base { } declare const PublicOutputs_base: (new (value: { codeMasterId: import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: import("o1js/dist/node/lib/provable/field.js").Field; turnCount: UInt8; packedGuessHistory: import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: import("o1js/dist/node/lib/provable/field.js").Field; }) => { codeMasterId: import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: import("o1js/dist/node/lib/provable/field.js").Field; turnCount: UInt8; packedGuessHistory: import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: import("o1js/dist/node/lib/provable/field.js").Field; }) & { _isStruct: true; } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{ codeMasterId: import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: import("o1js/dist/node/lib/provable/field.js").Field; turnCount: UInt8; packedGuessHistory: import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: import("o1js/dist/node/lib/provable/field.js").Field; }, { codeMasterId: bigint; codeBreakerId: bigint; solutionHash: bigint; lastCompressedGuess: bigint; lastcompressedClue: bigint; turnCount: { value: bigint; }; packedGuessHistory: bigint; packedClueHistory: bigint; }>, "fromFields"> & { fromFields: (fields: import("o1js/dist/node/lib/provable/field.js").Field[]) => { codeMasterId: import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: import("o1js/dist/node/lib/provable/field.js").Field; turnCount: UInt8; packedGuessHistory: import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: import("o1js/dist/node/lib/provable/field.js").Field; }; } & { fromValue: (value: { codeMasterId: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field; turnCount: number | UInt8 | { value: string | number | bigint | Field; }; packedGuessHistory: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field; }) => { codeMasterId: import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: import("o1js/dist/node/lib/provable/field.js").Field; turnCount: UInt8; packedGuessHistory: import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: import("o1js/dist/node/lib/provable/field.js").Field; }; toInput: (x: { codeMasterId: import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: import("o1js/dist/node/lib/provable/field.js").Field; turnCount: UInt8; packedGuessHistory: import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: import("o1js/dist/node/lib/provable/field.js").Field; }) => { fields?: Field[] | undefined; packed?: [Field, number][] | undefined; }; toJSON: (x: { codeMasterId: import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: import("o1js/dist/node/lib/provable/field.js").Field; turnCount: UInt8; packedGuessHistory: import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: import("o1js/dist/node/lib/provable/field.js").Field; }) => { codeMasterId: string; codeBreakerId: string; solutionHash: string; lastCompressedGuess: string; lastcompressedClue: string; turnCount: { value: string; }; packedGuessHistory: string; packedClueHistory: string; }; fromJSON: (x: { codeMasterId: string; codeBreakerId: string; solutionHash: string; lastCompressedGuess: string; lastcompressedClue: string; turnCount: { value: string; }; packedGuessHistory: string; packedClueHistory: string; }) => { codeMasterId: import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: import("o1js/dist/node/lib/provable/field.js").Field; turnCount: UInt8; packedGuessHistory: import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: import("o1js/dist/node/lib/provable/field.js").Field; }; empty: () => { codeMasterId: import("o1js/dist/node/lib/provable/field.js").Field; codeBreakerId: import("o1js/dist/node/lib/provable/field.js").Field; solutionHash: import("o1js/dist/node/lib/provable/field.js").Field; lastCompressedGuess: import("o1js/dist/node/lib/provable/field.js").Field; lastcompressedClue: import("o1js/dist/node/lib/provable/field.js").Field; turnCount: UInt8; packedGuessHistory: import("o1js/dist/node/lib/provable/field.js").Field; packedClueHistory: import("o1js/dist/node/lib/provable/field.js").Field; }; }; /** * @param `codeMasterId` and `codeBreakerId` should be same with the on-chain values of players. * @param `solutionHash` should also be same with the one on-chain value. * @param `lastCompressedGuess` and `lastcompressedClue` are the values obtained from the `makeGuess` and `giveClue` methods, respectively. * @param `turnCount` is the turn count of the game. Even turn counts represent the turns of code master and odd turn counts represent the turn of the code breaker. * @param `packedGuessHistory` is a compressed data that keeps all guesses done so far. * @param `packedClueHistory` is a compressed data that keeps all clues given so far. */ declare class PublicOutputs extends PublicOutputs_base { } declare const StepProgram: { name: string; maxProofsVerified(): Promise<0 | 1 | 2>; compile: (options?: { cache?: import("o1js").Cache; forceRecompile?: boolean; proofsEnabled?: boolean; withRuntimeTables?: boolean; }) => Promise<{ verificationKey: { data: string; hash: Field; }; }>; verify: (proof: import("o1js").Proof<PublicInputs, PublicOutputs>) => Promise<boolean>; digest: () => Promise<string>; analyzeMethods: () => Promise<{ createGame: import("o1js/dist/node/lib/provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("o1js/dist/node/lib/proof-system/proof.js").ProofClass[]; }; makeGuess: import("o1js/dist/node/lib/provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("o1js/dist/node/lib/proof-system/proof.js").ProofClass[]; }; giveClue: import("o1js/dist/node/lib/provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("o1js/dist/node/lib/proof-system/proof.js").ProofClass[]; }; }>; publicInputType: typeof PublicInputs; publicOutputType: typeof PublicOutputs; privateInputTypes: { createGame: [typeof Combination, typeof import("o1js/dist/node/lib/provable/field.js").Field & ((x: string | number | bigint | import("o1js/dist/node/lib/provable/core/fieldvar.js").FieldConst | import("o1js/dist/node/lib/provable/core/fieldvar.js").FieldVar | import("o1js/dist/node/lib/provable/field.js").Field) => import("o1js/dist/node/lib/provable/field.js").Field)]; makeGuess: [typeof SelfProof, typeof Combination]; giveClue: [typeof SelfProof, typeof Combination, typeof import("o1js/dist/node/lib/provable/field.js").Field & ((x: string | number | bigint | import("o1js/dist/node/lib/provable/core/fieldvar.js").FieldConst | import("o1js/dist/node/lib/provable/core/fieldvar.js").FieldVar | import("o1js/dist/node/lib/provable/field.js").Field) => import("o1js/dist/node/lib/provable/field.js").Field)]; }; auxiliaryOutputTypes: { createGame: undefined; makeGuess: undefined; giveClue: undefined; }; rawMethods: { createGame: (publicInput: PublicInputs, args_0: Combination, args_1: import("o1js/dist/node/lib/provable/field.js").Field) => Promise<{ publicOutput: PublicOutputs; }>; makeGuess: (publicInput: PublicInputs, args_0: SelfProof<unknown, unknown>, args_1: Combination) => Promise<{ publicOutput: PublicOutputs; }>; giveClue: (publicInput: PublicInputs, args_0: SelfProof<unknown, unknown>, args_1: Combination, args_2: import("o1js/dist/node/lib/provable/field.js").Field) => Promise<{ publicOutput: PublicOutputs; }>; }; Proof: { new ({ proof, publicInput, publicOutput, maxProofsVerified, }: { proof: import("o1js/dist/node/snarky.js").Pickles.Proof; publicInput: PublicInputs; publicOutput: PublicOutputs; maxProofsVerified: 0 | 1 | 2; }): import("o1js").Proof<PublicInputs, PublicOutputs>; 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> | 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): { 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; } & { createGame: (publicInput: PublicInputs | { authPubKey: PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; authSignature: Signature | { r: Field | bigint; s: import("o1js").Scalar | bigint; }; }, args_0: Combination | { digits: import("o1js/dist/node/lib/provable/field.js").Field[] | bigint[]; }, args_1: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field) => Promise<{ proof: import("o1js").Proof<PublicInputs, PublicOutputs>; auxiliaryOutput: undefined; }>; makeGuess: (publicInput: PublicInputs | { authPubKey: PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; authSignature: Signature | { r: Field | bigint; s: import("o1js").Scalar | bigint; }; }, args_0: import("o1js").Proof<any, any> | import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>, args_1: Combination | { digits: import("o1js/dist/node/lib/provable/field.js").Field[] | bigint[]; }) => Promise<{ proof: import("o1js").Proof<PublicInputs, PublicOutputs>; auxiliaryOutput: undefined; }>; giveClue: (publicInput: PublicInputs | { authPubKey: PublicKey | { x: Field | bigint; isOdd: import("o1js").Bool | boolean; }; authSignature: Signature | { r: Field | bigint; s: import("o1js").Scalar | bigint; }; }, args_0: import("o1js").Proof<any, any> | import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>, args_1: Combination | { digits: import("o1js/dist/node/lib/provable/field.js").Field[] | bigint[]; }, args_2: string | number | bigint | import("o1js/dist/node/lib/provable/field.js").Field) => Promise<{ proof: import("o1js").Proof<PublicInputs, PublicOutputs>; auxiliaryOutput: undefined; }>; }; declare const StepProgramProof_base: { new ({ proof, publicInput, publicOutput, maxProofsVerified, }: { proof: unknown; publicInput: PublicInputs; publicOutput: PublicOutputs; maxProofsVerified: 0 | 2 | 1; }): import("o1js").Proof<PublicInputs, PublicOutputs>; 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: import("o1js").Provable<import("o1js").Proof<PublicInputs, PublicOutputs>, import("o1js/dist/node/lib/proof-system/proof.js").ProofValue<{ authPubKey: { x: bigint; isOdd: boolean; }; authSignature: any; }, { codeMasterId: bigint; codeBreakerId: bigint; solutionHash: bigint; lastCompressedGuess: bigint; lastcompressedClue: bigint; turnCount: { value: bigint; }; packedGuessHistory: bigint; packedClueHistory: bigint; }>>; }; declare class StepProgramProof extends StepProgramProof_base { }