import {
Nullark,
generateBundledChildDepositGroth16Proof,
generateWithdrawalGroth16Proof,
getCurrentRuntime
} from "@nullark/sdk";
import {
resolveProverArtifacts,
verifyLocalProverArtifacts
} from "@nullark/sdk/node";
const runtime = getCurrentRuntime();
const artifacts = resolveProverArtifacts(runtime, {
mode: "local-artifact-dir",
artifactDir
});
const artifactBinding = await verifyLocalProverArtifacts(runtime, artifacts);
if (!artifactBinding.trusted) {
throw new Error(`Proving files rejected: ${artifactBinding.reason}`);
}
const nullark = new Nullark({
runtime,
localDepositProver: ({ binding }) =>
generateBundledChildDepositGroth16Proof({
binding,
artifacts,
artifactBinding,
proverRunner
}),
localWithdrawalProver: ({ witnessBundle }) =>
generateWithdrawalGroth16Proof({
witness: witnessBundle.witness,
intent: witnessBundle.intent,
artifacts,
artifactBinding,
proverRunner
}),
resolveMembership,
isNullifierSpent,
runtimeFeeReadClient
});