import { Context } from '../util/global-context.js'; import type { Subclass } from '../util/types.js'; import type { ProofBase } from './proof.js'; export { ZkProgramContext, DeclaredProof }; type DeclaredProof = { ProofClass: Subclass>; proofInstance: ProofBase; }; type ZkProgramContext = { proofs: DeclaredProof[]; }; let context = Context.create(); const ZkProgramContext = { enter() { return context.enter({ proofs: [] }); }, leave: context.leave, has: context.has, declareProof(proof: DeclaredProof) { context.get().proofs.push(proof); }, getDeclaredProofs() { return context.get().proofs; }, };