UNPKG

mina-attestations

Version:
24 lines (23 loc) 1.13 kB
import { Proof, ProvableType, VerificationKey, ZkProgram } from 'o1js'; import { type Input, Spec, type PublicInputs, type UserInputs, type PrivateInputs, type Claims } from './program-spec.ts'; export { createProgram, type Program }; type Program<Output, Inputs extends Record<string, Input>> = { compile(): Promise<VerificationKey>; run(input: UserInputs<Inputs>): Promise<Proof<PublicInputs<Inputs>, Output>>; program: ZkProgram<{ publicInput: ProvableType<PublicInputs<Inputs>>; publicOutput: ProvableType<Output>; methods: { run: { privateInputs: [ProvableType<PrivateInputs<Inputs>>]; method(publicInput: PublicInputs<Inputs>, privateInput: PrivateInputs<Inputs>): Promise<{ publicOutput: Output; }>; }; }; }>; claimsType: ProvableType<Claims<Inputs>>; outputClaimType: ProvableType<Output>; }; declare function createProgram<S extends Spec>(spec: S): Program<GetSpecData<S>, S['inputs']>; type GetSpecData<S extends Spec> = S extends Spec<infer Data, any> ? Data : never;