@navigators-exploration-team/mina-mastermind
Version:
[](https://github.com/navigators-exploration-team/recursive-mastermind-zkApp/actions/workflows/ci.yml)
402 lines (401 loc) • 20.4 kB
TypeScript
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 {
}