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> = { compile(): Promise; run(input: UserInputs): Promise, Output>>; program: ZkProgram<{ publicInput: ProvableType>; publicOutput: ProvableType; methods: { run: { privateInputs: [ProvableType>]; method(publicInput: PublicInputs, privateInput: PrivateInputs): Promise<{ publicOutput: Output; }>; }; }; }>; claimsType: ProvableType>; outputClaimType: ProvableType; }; declare function createProgram(spec: S): Program, S['inputs']>; type GetSpecData = S extends Spec ? Data : never;