@waku/rln
Version:
RLN (Rate Limiting Nullifier) implementation for Waku
49 lines (48 loc) • 2.32 kB
TypeScript
import { ethers } from "ethers";
import { RLNBaseContract } from "./contract/rln_base_contract.js";
import { Keystore } from "./keystore/index.js";
import type { DecryptedCredentials, EncryptedCredentials } from "./keystore/index.js";
import { KeystoreEntity, Password } from "./keystore/types.js";
import { RegisterMembershipOptions, StartRLNOptions } from "./types.js";
import { Zerokit } from "./zerokit.js";
/**
* Manages credentials for RLN
* This is a lightweight implementation of the RLN contract that doesn't require Zerokit
* It is used to register membership and generate identity credentials
*/
export declare class RLNCredentialsManager {
protected started: boolean;
protected starting: boolean;
contract: undefined | RLNBaseContract;
signer: undefined | ethers.Signer;
protected keystore: Keystore;
credentials: undefined | DecryptedCredentials;
zerokit: undefined | Zerokit;
constructor(zerokit?: Zerokit);
get provider(): undefined | ethers.providers.Provider;
start(options?: StartRLNOptions): Promise<void>;
registerMembership(options: RegisterMembershipOptions): Promise<undefined | DecryptedCredentials>;
/**
* Changes credentials in use by relying on provided Keystore earlier in rln.start
* @param id: string, hash of credentials to select from Keystore
* @param password: string or bytes to use to decrypt credentials from Keystore
*/
useCredentials(id: string, password: Password): Promise<void>;
protected determineStartOptions(options: StartRLNOptions, credentials: KeystoreEntity | undefined): Promise<StartRLNOptions>;
protected static decryptCredentialsIfNeeded(credentials?: EncryptedCredentials | DecryptedCredentials): Promise<{
credentials?: DecryptedCredentials;
keystore?: Keystore;
}>;
protected verifyCredentialsAgainstContract(credentials: KeystoreEntity): Promise<void>;
/**
* Generates an identity credential from a seed string
* This is a pure implementation that doesn't rely on Zerokit
* @param seed A string seed to generate the identity from
* @returns IdentityCredential
*/
private generateSeededIdentityCredential;
/**
* Helper: take 32-byte BE, reduce mod Q, return 32-byte BE
*/
private reduceIdCommitment;
}