diff --git a/src/rln.ts b/src/rln.ts index 43c6f7a..1140daf 100644 --- a/src/rln.ts +++ b/src/rln.ts @@ -3,6 +3,7 @@ import { RateLimitProof } from "js-waku/lib/interfaces"; import verificationKey from "./resources/verification_key.js"; import * as wc from "./witness_calculator.js"; +import { WitnessCalculator } from "./witness_calculator.js"; /** * Concatenate Uint8Arrays @@ -27,7 +28,7 @@ const stringEncoder = new TextEncoder(); const DEPTH = 20; -async function loadWitnessCalculator(): Promise { +async function loadWitnessCalculator(): Promise { const url = new URL("./resources/rln.wasm", import.meta.url); const response = await fetch(url); return await wc.builder(new Uint8Array(await response.arrayBuffer()), false); @@ -162,7 +163,10 @@ function proofToBytes(p: RateLimitProof): Uint8Array { } export class RLNInstance { - constructor(private zkRLN: number, private witnessCalculator: any) {} + constructor( + private zkRLN: number, + private witnessCalculator: WitnessCalculator + ) {} generateMembershipKey(): MembershipKey { const memKeys = zerokitRLN.generateMembershipKey(this.zkRLN); diff --git a/src/witness_calculator.d.ts b/src/witness_calculator.d.ts index 6d9b409..aee4d0e 100644 --- a/src/witness_calculator.d.ts +++ b/src/witness_calculator.d.ts @@ -1,4 +1,8 @@ export async function builder( code: Uint8Array, sanityCheck: bool -): Promise; +): Promise; + +export class WitnessCalculator { + calculateWitness(input, sanityCheck): Array; +}