@waku/rln 0.1.1-5d7f77f → 0.1.1-77ba0a6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +26 -2
  2. package/bundle/assets/rln_wasm_bg-a503e304.wasm +0 -0
  3. package/bundle/index.js +68738 -22572
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/byte_utils.d.ts +13 -0
  6. package/dist/byte_utils.js +22 -0
  7. package/dist/byte_utils.js.map +1 -1
  8. package/dist/codec.d.ts +5 -3
  9. package/dist/codec.js +8 -4
  10. package/dist/codec.js.map +1 -1
  11. package/dist/constants.d.ts +2 -2
  12. package/dist/constants.js +62 -9
  13. package/dist/constants.js.map +1 -1
  14. package/dist/create.d.ts +2 -0
  15. package/dist/create.js +8 -0
  16. package/dist/create.js.map +1 -0
  17. package/dist/index.d.ts +5 -3
  18. package/dist/index.js +5 -10
  19. package/dist/index.js.map +1 -1
  20. package/dist/keystore/cipher.d.ts +4 -0
  21. package/dist/keystore/cipher.js +28 -0
  22. package/dist/keystore/cipher.js.map +1 -0
  23. package/dist/keystore/credential_validation_generated.d.ts +8 -0
  24. package/dist/keystore/credential_validation_generated.js +121 -0
  25. package/dist/keystore/credential_validation_generated.js.map +1 -0
  26. package/dist/keystore/index.d.ts +4 -0
  27. package/dist/keystore/index.js +3 -0
  28. package/dist/keystore/index.js.map +1 -0
  29. package/dist/keystore/keystore.d.ts +50 -0
  30. package/dist/keystore/keystore.js +202 -0
  31. package/dist/keystore/keystore.js.map +1 -0
  32. package/dist/keystore/keystore_validation_generated.d.ts +8 -0
  33. package/dist/keystore/keystore_validation_generated.js +75 -0
  34. package/dist/keystore/keystore_validation_generated.js.map +1 -0
  35. package/dist/keystore/schema_validator.d.ts +2 -0
  36. package/dist/keystore/schema_validator.js +18 -0
  37. package/dist/keystore/schema_validator.js.map +1 -0
  38. package/dist/keystore/types.d.ts +29 -0
  39. package/dist/keystore/types.js +2 -0
  40. package/dist/keystore/types.js.map +1 -0
  41. package/dist/message.d.ts +1 -1
  42. package/dist/message.js +1 -1
  43. package/dist/metamask.d.ts +2 -0
  44. package/dist/metamask.js +11 -0
  45. package/dist/metamask.js.map +1 -0
  46. package/dist/rln.d.ts +47 -0
  47. package/dist/rln.js +110 -12
  48. package/dist/rln.js.map +1 -1
  49. package/dist/rln_contract.d.ts +24 -14
  50. package/dist/rln_contract.js +73 -33
  51. package/dist/rln_contract.js.map +1 -1
  52. package/package.json +23 -8
  53. package/src/byte_utils.ts +24 -0
  54. package/src/codec.ts +10 -5
  55. package/src/constants.ts +63 -9
  56. package/src/create.ts +9 -0
  57. package/src/index.ts +13 -11
  58. package/src/message.ts +1 -1
  59. package/src/metamask.ts +16 -0
  60. package/src/rln.ts +194 -13
  61. package/src/rln_contract.ts +127 -52
  62. package/bundle/assets/rln_wasm_bg-6f96f821.wasm +0 -0
@@ -0,0 +1,75 @@
1
+ /* eslint eslint-comments/no-unlimited-disable: "off" */
2
+ // This file was generated by /scripts/schema-validation-codegen.ts
3
+ // Do not modify this file by hand.
4
+ /* eslint-disable */
5
+ // @ts-ignore
6
+ "use strict";
7
+ export const Keystore = validate11;
8
+ const schema12 = { "type": "object", "properties": { "credentials": { "type": "object" }, "appIdentifier": { "type": "string" }, "version": { "type": "string" }, "application": { "type": "string" } }, "required": ["application", "appIdentifier", "credentials", "version"] };
9
+ function validate11(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
10
+ if (data && typeof data == "object" && !Array.isArray(data)) {
11
+ let missing0;
12
+ if (((((data.application === undefined) && (missing0 = "application")) || ((data.appIdentifier === undefined) && (missing0 = "appIdentifier"))) || ((data.credentials === undefined) && (missing0 = "credentials"))) || ((data.version === undefined) && (missing0 = "version"))) {
13
+ validate11.errors = [{ instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
14
+ return false;
15
+ }
16
+ else {
17
+ if (data.credentials !== undefined) {
18
+ let data0 = data.credentials;
19
+ const _errs1 = errors;
20
+ if (!(data0 && typeof data0 == "object" && !Array.isArray(data0))) {
21
+ validate11.errors = [{ instancePath: instancePath + "/credentials", schemaPath: "#/properties/credentials/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
22
+ return false;
23
+ }
24
+ var valid0 = _errs1 === errors;
25
+ }
26
+ else {
27
+ var valid0 = true;
28
+ }
29
+ if (valid0) {
30
+ if (data.appIdentifier !== undefined) {
31
+ const _errs3 = errors;
32
+ if (typeof data.appIdentifier !== "string") {
33
+ validate11.errors = [{ instancePath: instancePath + "/appIdentifier", schemaPath: "#/properties/appIdentifier/type", keyword: "type", params: { type: "string" }, message: "must be string" }];
34
+ return false;
35
+ }
36
+ var valid0 = _errs3 === errors;
37
+ }
38
+ else {
39
+ var valid0 = true;
40
+ }
41
+ if (valid0) {
42
+ if (data.version !== undefined) {
43
+ const _errs5 = errors;
44
+ if (typeof data.version !== "string") {
45
+ validate11.errors = [{ instancePath: instancePath + "/version", schemaPath: "#/properties/version/type", keyword: "type", params: { type: "string" }, message: "must be string" }];
46
+ return false;
47
+ }
48
+ var valid0 = _errs5 === errors;
49
+ }
50
+ else {
51
+ var valid0 = true;
52
+ }
53
+ if (valid0) {
54
+ if (data.application !== undefined) {
55
+ const _errs7 = errors;
56
+ if (typeof data.application !== "string") {
57
+ validate11.errors = [{ instancePath: instancePath + "/application", schemaPath: "#/properties/application/type", keyword: "type", params: { type: "string" }, message: "must be string" }];
58
+ return false;
59
+ }
60
+ var valid0 = _errs7 === errors;
61
+ }
62
+ else {
63
+ var valid0 = true;
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ else {
71
+ validate11.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
72
+ return false;
73
+ }
74
+ } validate11.errors = vErrors; return errors === 0; }
75
+ //# sourceMappingURL=keystore_validation_generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore_validation_generated.js","sourceRoot":"","sources":["../../src/keystore/keystore_validation_generated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function isKeystoreValid(keystore: unknown): boolean;
2
+ export declare function isCredentialValid(credential: unknown): boolean;
@@ -0,0 +1,18 @@
1
+ import { Credential as _validateCredentialGenerated } from "./credential_validation_generated.js";
2
+ import { Keystore as _validateKeystoreGenerated } from "./keystore_validation_generated.js";
3
+ const _validateKeystore = _validateKeystoreGenerated;
4
+ const _validateCredential = _validateCredentialGenerated;
5
+ function schemaValidationErrors(validator, data) {
6
+ const validated = validator(data);
7
+ if (validated) {
8
+ return null;
9
+ }
10
+ return validator.errors;
11
+ }
12
+ export function isKeystoreValid(keystore) {
13
+ return !schemaValidationErrors(_validateKeystore, keystore);
14
+ }
15
+ export function isCredentialValid(credential) {
16
+ return !schemaValidationErrors(_validateCredential, credential);
17
+ }
18
+ //# sourceMappingURL=schema_validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema_validator.js","sourceRoot":"","sources":["../../src/keystore/schema_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAE,QAAQ,IAAI,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAY5F,MAAM,iBAAiB,GAAG,0BAAyC,CAAC;AACpE,MAAM,mBAAmB,GAAG,4BAA2C,CAAC;AAExE,SAAS,sBAAsB,CAC7B,SAAsB,EACtB,IAAa;IAEb,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,SAAS,EAAE;QACb,OAAO,IAAI,CAAC;KACb;IACD,OAAO,SAAS,CAAC,MAAM,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAmB;IACnD,OAAO,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { IdentityCredential } from "../rln.js";
2
+ export type MembershipHash = string;
3
+ export type Sha256Hash = string;
4
+ export type Keccak256Hash = string;
5
+ export type Password = string | Uint8Array;
6
+ export type MembershipInfo = {
7
+ chainId: number;
8
+ address: string;
9
+ treeIndex: number;
10
+ };
11
+ export type KeystoreEntity = {
12
+ identity: IdentityCredential;
13
+ membership: MembershipInfo;
14
+ };
15
+ export type DecryptedCredentials = KeystoreEntity;
16
+ export type EncryptedCredentials = {
17
+ /**
18
+ * Valid JSON string that contains Keystore
19
+ */
20
+ keystore: string;
21
+ /**
22
+ * ID of credentials from provided Keystore to use
23
+ */
24
+ id: string;
25
+ /**
26
+ * Password to decrypt credentials provided
27
+ */
28
+ password: Password;
29
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/keystore/types.ts"],"names":[],"mappings":""}
package/dist/message.d.ts CHANGED
@@ -5,7 +5,7 @@ export declare class RlnMessage<T extends IDecodedMessage> implements IDecodedMe
5
5
  rlnInstance: RLNInstance;
6
6
  msg: T;
7
7
  rateLimitProof: IRateLimitProof | undefined;
8
- pubSubTopic: string;
8
+ pubsubTopic: string;
9
9
  constructor(rlnInstance: RLNInstance, msg: T, rateLimitProof: IRateLimitProof | undefined);
10
10
  verify(roots: Uint8Array[]): boolean | undefined;
11
11
  verifyNoRoot(): boolean | undefined;
package/dist/message.js CHANGED
@@ -9,7 +9,7 @@ export class RlnMessage {
9
9
  this.rlnInstance = rlnInstance;
10
10
  this.msg = msg;
11
11
  this.rateLimitProof = rateLimitProof;
12
- this.pubSubTopic = "";
12
+ this.pubsubTopic = "";
13
13
  }
14
14
  verify(roots) {
15
15
  return this.rateLimitProof
@@ -0,0 +1,2 @@
1
+ import { ethers } from "ethers";
2
+ export declare const extractMetaMaskSigner: () => Promise<ethers.Signer>;
@@ -0,0 +1,11 @@
1
+ import { ethers } from "ethers";
2
+ export const extractMetaMaskSigner = async () => {
3
+ const ethereum = window.ethereum;
4
+ if (!ethereum) {
5
+ throw Error("Missing or invalid Ethereum provider. Please install a Web3 wallet such as MetaMask.");
6
+ }
7
+ await ethereum.request({ method: "eth_requestAccounts" });
8
+ const provider = new ethers.providers.Web3Provider(ethereum, "any");
9
+ return provider.getSigner();
10
+ };
11
+ //# sourceMappingURL=metamask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metamask.js","sourceRoot":"","sources":["../src/metamask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,IAA4B,EAAE;IACtE,MAAM,QAAQ,GAAI,MAAc,CAAC,QAAQ,CAAC;IAE1C,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,KAAK,CACT,sFAAsF,CACvF,CAAC;KACH;IAED,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEpE,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;AAC9B,CAAC,CAAC"}
package/dist/rln.d.ts CHANGED
@@ -1,4 +1,10 @@
1
1
  import type { IRateLimitProof } from "@waku/interfaces";
2
+ import type { ContentTopic, IDecodedMessage, EncoderOptions as WakuEncoderOptions } from "@waku/interfaces";
3
+ import { ethers } from "ethers";
4
+ import type { RLNDecoder, RLNEncoder } from "./codec.js";
5
+ import type { DecryptedCredentials, EncryptedCredentials } from "./keystore/index.js";
6
+ import { Password } from "./keystore/types.js";
7
+ import { RLNContract } from "./rln_contract.js";
2
8
  import { WitnessCalculator } from "./witness_calculator.js";
3
9
  /**
4
10
  * Create an instance of RLN
@@ -35,10 +41,50 @@ export declare class Proof implements IRateLimitProof {
35
41
  export declare function proofToBytes(p: IRateLimitProof): Uint8Array;
36
42
  export declare function poseidonHash(...input: Array<Uint8Array>): Uint8Array;
37
43
  export declare function sha256(input: Uint8Array): Uint8Array;
44
+ type StartRLNOptions = {
45
+ /**
46
+ * If not set - will extract MetaMask account and get signer from it.
47
+ */
48
+ signer?: ethers.Signer;
49
+ /**
50
+ * If not set - will use default SEPOLIA_CONTRACT address.
51
+ */
52
+ registryAddress?: string;
53
+ /**
54
+ * Credentials to use for generating proofs and connecting to the contract and network.
55
+ * If provided used for validating the network chainId and connecting to registry contract.
56
+ */
57
+ credentials?: EncryptedCredentials | DecryptedCredentials;
58
+ };
59
+ type RegisterMembershipOptions = {
60
+ signature: string;
61
+ } | {
62
+ identity: IdentityCredential;
63
+ };
38
64
  export declare class RLNInstance {
39
65
  private zkRLN;
40
66
  private witnessCalculator;
67
+ private started;
68
+ private starting;
69
+ private _contract;
70
+ private _signer;
71
+ private keystore;
72
+ private _credentials;
41
73
  constructor(zkRLN: number, witnessCalculator: WitnessCalculator);
74
+ get contract(): undefined | RLNContract;
75
+ get signer(): undefined | ethers.Signer;
76
+ start(options?: StartRLNOptions): Promise<void>;
77
+ private determineStartOptions;
78
+ private decryptCredentialsIfNeeded;
79
+ registerMembership(options: RegisterMembershipOptions): Promise<undefined | DecryptedCredentials>;
80
+ /**
81
+ * Changes credentials in use by relying on provided Keystore earlier in rln.start
82
+ * @param id: string, hash of credentials to select from Keystore
83
+ * @param password: string or bytes to use to decrypt credentials from Keystore
84
+ */
85
+ useCredentials(id: string, password: Password): Promise<void>;
86
+ createEncoder(options: WakuEncoderOptions): RLNEncoder;
87
+ createDecoder(contentTopic: ContentTopic): RLNDecoder<IDecodedMessage>;
42
88
  generateIdentityCredentials(): IdentityCredential;
43
89
  generateSeededIdentityCredential(seed: string): IdentityCredential;
44
90
  insertMember(idCommitment: Uint8Array): void;
@@ -51,3 +97,4 @@ export declare class RLNInstance {
51
97
  verifyWithRoots(proof: IRateLimitProof | Uint8Array, msg: Uint8Array, ...roots: Array<Uint8Array>): boolean;
52
98
  verifyWithNoRoot(proof: IRateLimitProof | Uint8Array, msg: Uint8Array): boolean;
53
99
  }
100
+ export {};
package/dist/rln.js CHANGED
@@ -1,8 +1,14 @@
1
- import { default as init } from "@waku/zerokit-rln-wasm";
1
+ import { createDecoder, createEncoder } from "@waku/core";
2
+ import init from "@waku/zerokit-rln-wasm";
2
3
  import * as zerokitRLN from "@waku/zerokit-rln-wasm";
3
- import { writeUIntLE } from "./byte_utils.js";
4
+ import { buildBigIntFromUint8Array, writeUIntLE } from "./byte_utils.js";
5
+ import { createRLNDecoder, createRLNEncoder } from "./codec.js";
6
+ import { SEPOLIA_CONTRACT } from "./constants.js";
4
7
  import { dateToEpoch, epochIntToBytes } from "./epoch.js";
8
+ import { Keystore } from "./keystore/index.js";
9
+ import { extractMetaMaskSigner } from "./metamask.js";
5
10
  import verificationKey from "./resources/verification_key.js";
11
+ import { RLNContract } from "./rln_contract.js";
6
12
  import * as wc from "./witness_calculator.js";
7
13
  /**
8
14
  * Concatenate Uint8Arrays
@@ -22,15 +28,6 @@ function concatenate(...input) {
22
28
  }
23
29
  return result;
24
30
  }
25
- /**
26
- * Transforms Uint8Array into BigInt
27
- * @param array: Uint8Array
28
- * @returns BigInt
29
- */
30
- function buildBigIntFromUint8Array(array) {
31
- const dataView = new DataView(array.buffer);
32
- return dataView.getBigUint64(0, true);
33
- }
34
31
  const stringEncoder = new TextEncoder();
35
32
  const DEPTH = 20;
36
33
  async function loadWitnessCalculator() {
@@ -48,7 +45,7 @@ async function loadZkey() {
48
45
  * @returns RLNInstance
49
46
  */
50
47
  export async function create() {
51
- await init();
48
+ await init?.();
52
49
  zerokitRLN.init_panic_hook();
53
50
  const witnessCalculator = await loadWitnessCalculator();
54
51
  const zkey = await loadZkey();
@@ -123,6 +120,107 @@ export class RLNInstance {
123
120
  constructor(zkRLN, witnessCalculator) {
124
121
  this.zkRLN = zkRLN;
125
122
  this.witnessCalculator = witnessCalculator;
123
+ this.started = false;
124
+ this.starting = false;
125
+ this.keystore = Keystore.create();
126
+ }
127
+ get contract() {
128
+ return this._contract;
129
+ }
130
+ get signer() {
131
+ return this._signer;
132
+ }
133
+ async start(options = {}) {
134
+ if (this.started || this.starting) {
135
+ return;
136
+ }
137
+ this.starting = true;
138
+ try {
139
+ const { signer, registryAddress } = await this.determineStartOptions(options);
140
+ this._signer = signer;
141
+ this._contract = await RLNContract.init(this, {
142
+ registryAddress: registryAddress,
143
+ signer: signer,
144
+ });
145
+ this.started = true;
146
+ }
147
+ finally {
148
+ this.starting = false;
149
+ }
150
+ }
151
+ async determineStartOptions(options) {
152
+ const credentials = await this.decryptCredentialsIfNeeded(options.credentials);
153
+ let chainId = credentials?.membership.chainId;
154
+ const registryAddress = credentials?.membership.address ||
155
+ options.registryAddress ||
156
+ SEPOLIA_CONTRACT.address;
157
+ if (registryAddress === SEPOLIA_CONTRACT.address) {
158
+ chainId = SEPOLIA_CONTRACT.chainId;
159
+ }
160
+ const signer = options.signer || (await extractMetaMaskSigner());
161
+ const currentChainId = await signer.getChainId();
162
+ if (chainId && chainId !== currentChainId) {
163
+ throw Error(`Failed to start RLN contract, chain ID of contract is different from current one: contract-${chainId}, current network-${currentChainId}`);
164
+ }
165
+ return {
166
+ signer,
167
+ registryAddress,
168
+ credentials: options.credentials,
169
+ };
170
+ }
171
+ async decryptCredentialsIfNeeded(credentials) {
172
+ if (!credentials) {
173
+ return;
174
+ }
175
+ if ("identity" in credentials) {
176
+ this._credentials = credentials;
177
+ return credentials;
178
+ }
179
+ const keystore = Keystore.fromString(credentials.keystore);
180
+ if (!keystore) {
181
+ throw Error("Failed to start RLN: cannot read Keystore provided.");
182
+ }
183
+ this.keystore = keystore;
184
+ this._credentials = await keystore.readCredential(credentials.id, credentials.password);
185
+ return this._credentials;
186
+ }
187
+ async registerMembership(options) {
188
+ if (!this.contract) {
189
+ throw Error("RLN Contract is not initialized.");
190
+ }
191
+ let identity = "identity" in options && options.identity;
192
+ if ("signature" in options) {
193
+ identity = await this.generateSeededIdentityCredential(options.signature);
194
+ }
195
+ if (!identity) {
196
+ throw Error("Missing signature or identity to register membership.");
197
+ }
198
+ return this.contract.registerWithIdentity(identity);
199
+ }
200
+ /**
201
+ * Changes credentials in use by relying on provided Keystore earlier in rln.start
202
+ * @param id: string, hash of credentials to select from Keystore
203
+ * @param password: string or bytes to use to decrypt credentials from Keystore
204
+ */
205
+ async useCredentials(id, password) {
206
+ this._credentials = await this.keystore?.readCredential(id, password);
207
+ }
208
+ createEncoder(options) {
209
+ if (!this._credentials) {
210
+ throw Error("Failed to create Encoder: missing RLN credentials. Use createRLNEncoder directly.");
211
+ }
212
+ return createRLNEncoder({
213
+ encoder: createEncoder(options),
214
+ rlnInstance: this,
215
+ index: this._credentials.membership.treeIndex,
216
+ credential: this._credentials.identity,
217
+ });
218
+ }
219
+ createDecoder(contentTopic) {
220
+ return createRLNDecoder({
221
+ rlnInstance: this,
222
+ decoder: createDecoder(contentTopic),
223
+ });
126
224
  }
127
225
  generateIdentityCredentials() {
128
226
  const memKeys = zerokitRLN.generateExtendedMembershipKey(this.zkRLN); // TODO: rename this function in zerokit rln-wasm
package/dist/rln.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rln.js","sourceRoot":"","sources":["../src/rln.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rln.js","sourceRoot":"","sources":["../src/rln.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,44 @@
1
1
  import { ethers } from "ethers";
2
- import { IdentityCredential, RLNInstance } from "./rln.js";
3
- declare type Member = {
4
- pubkey: string;
5
- index: number;
2
+ import type { DecryptedCredentials } from "./keystore/index.js";
3
+ import { type IdentityCredential, RLNInstance } from "./rln.js";
4
+ type Member = {
5
+ idCommitment: string;
6
+ index: ethers.BigNumber;
6
7
  };
7
- declare type ContractOptions = {
8
- address: string;
9
- provider: ethers.Signer | ethers.providers.Provider;
8
+ type Signer = ethers.Signer;
9
+ type RLNContractOptions = {
10
+ signer: Signer;
11
+ registryAddress: string;
10
12
  };
11
- declare type FetchMembersOptions = {
13
+ type RLNStorageOptions = {
14
+ storageIndex?: number;
15
+ };
16
+ type RLNContractInitOptions = RLNContractOptions & RLNStorageOptions;
17
+ type FetchMembersOptions = {
12
18
  fromBlock?: number;
13
19
  fetchRange?: number;
14
20
  fetchChunks?: number;
15
21
  };
16
22
  export declare class RLNContract {
17
- private _contract;
18
- private membersFilter;
23
+ private registryContract;
19
24
  private merkleRootTracker;
25
+ private deployBlock;
26
+ private storageIndex;
27
+ private storageContract;
28
+ private _membersFilter;
20
29
  private _members;
21
- static init(rlnInstance: RLNInstance, options: ContractOptions): Promise<RLNContract>;
22
- constructor(rlnInstance: RLNInstance, { address, provider }: ContractOptions);
30
+ static init(rlnInstance: RLNInstance, options: RLNContractInitOptions): Promise<RLNContract>;
31
+ constructor(rlnInstance: RLNInstance, { registryAddress, signer }: RLNContractOptions);
32
+ private initStorageContract;
23
33
  get contract(): ethers.Contract;
24
34
  get members(): Member[];
35
+ private get membersFilter();
25
36
  fetchMembers(rlnInstance: RLNInstance, options?: FetchMembersOptions): Promise<void>;
26
37
  processEvents(rlnInstance: RLNInstance, events: ethers.Event[]): void;
27
38
  private insertMembers;
28
39
  private removeMembers;
29
40
  subscribeToMembers(rlnInstance: RLNInstance): void;
30
- registerWithSignature(rlnInstance: RLNInstance, signature: string): Promise<ethers.Event | undefined>;
31
- registerWithKey(credential: IdentityCredential): Promise<ethers.Event | undefined>;
41
+ registerWithIdentity(identity: IdentityCredential): Promise<DecryptedCredentials | undefined>;
32
42
  roots(): Uint8Array[];
33
43
  }
34
44
  export {};