mina-attestations
Version:
Private Attestations on Mina
24 lines (23 loc) • 1.13 kB
TypeScript
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;