@waku/rln
Version:
RLN (Rate Limiting Nullifier) implementation for Waku
24 lines (23 loc) • 1.47 kB
TypeScript
import type { IRateLimitProof } from "@waku/interfaces";
import { IdentityCredential } from "./identity.js";
import { WitnessCalculator } from "./resources/witness_calculator";
export declare class Zerokit {
private readonly zkRLN;
private readonly witnessCalculator;
private readonly _rateLimit;
constructor(zkRLN: number, witnessCalculator: WitnessCalculator, _rateLimit?: number);
get getZkRLN(): number;
get getWitnessCalculator(): WitnessCalculator;
get rateLimit(): number;
generateIdentityCredentials(): IdentityCredential;
generateSeededIdentityCredential(seed: string): IdentityCredential;
insertMember(idCommitment: Uint8Array): void;
insertMembers(index: number, ...idCommitments: Array<Uint8Array>): void;
deleteMember(index: number): void;
getMerkleRoot(): Uint8Array;
serializeMessage(uint8Msg: Uint8Array, memIndex: number, epoch: Uint8Array, idKey: Uint8Array, rateLimit?: number): Uint8Array;
generateRLNProof(msg: Uint8Array, index: number, epoch: Uint8Array | Date | undefined, idSecretHash: Uint8Array, rateLimit?: number): Promise<IRateLimitProof>;
verifyRLNProof(proof: IRateLimitProof | Uint8Array, msg: Uint8Array, rateLimit?: number): boolean;
verifyWithRoots(proof: IRateLimitProof | Uint8Array, msg: Uint8Array, roots: Array<Uint8Array>, rateLimit?: number): boolean;
verifyWithNoRoot(proof: IRateLimitProof | Uint8Array, msg: Uint8Array, rateLimit?: number): boolean;
}