@waku/rln 0.1.4-d27db21.0 → 0.1.5-053bb95.0

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 (138) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +5 -0
  3. package/bundle/_virtual/utils.js +2 -2
  4. package/bundle/_virtual/utils2.js +2 -2
  5. package/bundle/index.js +3 -1
  6. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +1 -1
  7. package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +1 -1
  8. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +1 -1
  9. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +11 -11
  10. package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +1 -1
  11. package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +7 -7
  12. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +2 -2
  13. package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +2 -2
  14. package/bundle/node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js +1 -1
  15. package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +1 -1
  16. package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +1 -1
  17. package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +44 -44
  18. package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +8 -8
  19. package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +1 -1
  20. package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +1 -1
  21. package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +1 -1
  22. package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +2 -2
  23. package/bundle/node_modules/@multiformats/multiaddr/dist/src/multiaddr.js +1 -0
  24. package/bundle/node_modules/@noble/hashes/esm/sha3.js +1 -1
  25. package/bundle/node_modules/bn.js/lib/bn.js +1 -1
  26. package/bundle/packages/core/dist/lib/connection_manager/connection_manager.js +6 -6
  27. package/bundle/packages/rln/dist/contract/abi.js +502 -248
  28. package/bundle/packages/rln/dist/contract/constants.js +5 -9
  29. package/bundle/packages/rln/dist/contract/errors.js +62 -0
  30. package/bundle/packages/rln/dist/contract/rln_base_contract.js +347 -0
  31. package/bundle/packages/rln/dist/contract/rln_contract.js +81 -392
  32. package/bundle/packages/rln/dist/contract/types.js +9 -0
  33. package/bundle/packages/rln/dist/create.js +1 -1
  34. package/bundle/packages/rln/dist/credentials_manager.js +215 -0
  35. package/bundle/packages/rln/dist/identity.js +8 -0
  36. package/bundle/packages/rln/dist/keystore/keystore.js +20 -28
  37. package/bundle/packages/rln/dist/rln.js +56 -166
  38. package/bundle/packages/rln/dist/zerokit.js +5 -5
  39. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/checksum.js +2 -2
  40. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/cipher.js +3 -3
  41. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/class.js +4 -4
  42. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/functional.js +4 -4
  43. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/kdf.js +4 -4
  44. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/password.js +1 -1
  45. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/schema-validation-generated.js +1 -1
  46. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/lib/schema-validation.js +1 -1
  47. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/aes.js +1 -1
  48. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/pbkdf2.js +1 -1
  49. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +2 -2
  50. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/scrypt.js +1 -1
  51. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/sha256.js +1 -1
  52. package/bundle/packages/rln/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +3 -3
  53. package/bundle/packages/rln/node_modules/@noble/hashes/_assert.js +1 -1
  54. package/bundle/packages/rln/node_modules/@noble/hashes/_sha2.js +2 -2
  55. package/bundle/packages/rln/node_modules/@noble/hashes/_u64.js +1 -1
  56. package/bundle/packages/rln/node_modules/@noble/hashes/cryptoBrowser.js +1 -1
  57. package/bundle/packages/rln/node_modules/@noble/hashes/esm/_assert.js +43 -0
  58. package/bundle/packages/rln/node_modules/@noble/hashes/esm/_sha2.js +116 -0
  59. package/bundle/packages/rln/node_modules/@noble/hashes/esm/hmac.js +79 -0
  60. package/bundle/packages/rln/node_modules/@noble/hashes/esm/sha256.js +126 -0
  61. package/bundle/packages/rln/node_modules/@noble/hashes/esm/utils.js +43 -0
  62. package/bundle/packages/rln/node_modules/@noble/hashes/hmac.js +2 -2
  63. package/bundle/packages/rln/node_modules/@noble/hashes/pbkdf2.js +2 -2
  64. package/bundle/packages/rln/node_modules/@noble/hashes/scrypt.js +3 -3
  65. package/bundle/packages/rln/node_modules/@noble/hashes/sha256.js +2 -2
  66. package/bundle/packages/rln/node_modules/@noble/hashes/sha512.js +3 -3
  67. package/bundle/packages/rln/node_modules/@noble/hashes/utils.js +2 -2
  68. package/dist/.tsbuildinfo +1 -1
  69. package/dist/codec.test-utils.d.ts +36 -0
  70. package/dist/codec.test-utils.js +56 -0
  71. package/dist/codec.test-utils.js.map +1 -0
  72. package/dist/contract/abi.d.ts +21 -17
  73. package/dist/contract/abi.js +502 -248
  74. package/dist/contract/abi.js.map +1 -1
  75. package/dist/contract/constants.d.ts +23 -19
  76. package/dist/contract/constants.js +3 -3
  77. package/dist/contract/constants.js.map +1 -1
  78. package/dist/contract/errors.d.ts +30 -0
  79. package/dist/contract/errors.js +61 -0
  80. package/dist/contract/errors.js.map +1 -0
  81. package/dist/contract/rln_base_contract.d.ts +88 -0
  82. package/dist/contract/rln_base_contract.js +330 -0
  83. package/dist/contract/rln_base_contract.js.map +1 -0
  84. package/dist/contract/rln_contract.d.ts +19 -109
  85. package/dist/contract/rln_contract.js +80 -390
  86. package/dist/contract/rln_contract.js.map +1 -1
  87. package/dist/contract/test-setup.d.ts +26 -0
  88. package/dist/contract/test-setup.js +56 -0
  89. package/dist/contract/test-setup.js.map +1 -0
  90. package/dist/contract/test-utils.d.ts +39 -0
  91. package/dist/contract/test-utils.js +118 -0
  92. package/dist/contract/test-utils.js.map +1 -0
  93. package/dist/contract/types.d.ts +40 -0
  94. package/dist/contract/types.js +8 -0
  95. package/dist/contract/types.js.map +1 -0
  96. package/dist/create.js +1 -1
  97. package/dist/create.js.map +1 -1
  98. package/dist/credentials_manager.d.ts +44 -0
  99. package/dist/credentials_manager.js +197 -0
  100. package/dist/credentials_manager.js.map +1 -0
  101. package/dist/identity.d.ts +1 -0
  102. package/dist/identity.js +8 -0
  103. package/dist/identity.js.map +1 -1
  104. package/dist/index.d.ts +5 -2
  105. package/dist/index.js +4 -2
  106. package/dist/index.js.map +1 -1
  107. package/dist/keystore/keystore.d.ts +0 -1
  108. package/dist/keystore/keystore.js +20 -28
  109. package/dist/keystore/keystore.js.map +1 -1
  110. package/dist/keystore/types.d.ts +2 -1
  111. package/dist/rln.d.ts +9 -52
  112. package/dist/rln.js +54 -163
  113. package/dist/rln.js.map +1 -1
  114. package/dist/types.d.ts +27 -0
  115. package/dist/types.js +2 -0
  116. package/dist/types.js.map +1 -0
  117. package/dist/zerokit.d.ts +3 -3
  118. package/dist/zerokit.js +5 -5
  119. package/dist/zerokit.js.map +1 -1
  120. package/package.json +1 -1
  121. package/src/codec.test-utils.ts +80 -0
  122. package/src/contract/abi.ts +502 -248
  123. package/src/contract/constants.ts +3 -3
  124. package/src/contract/errors.ts +75 -0
  125. package/src/contract/rln_base_contract.ts +500 -0
  126. package/src/contract/rln_contract.ts +102 -619
  127. package/src/contract/test-setup.ts +86 -0
  128. package/src/contract/test-utils.ts +179 -0
  129. package/src/contract/types.ts +48 -0
  130. package/src/create.ts +1 -1
  131. package/src/credentials_manager.ts +282 -0
  132. package/src/identity.ts +9 -0
  133. package/src/index.ts +17 -2
  134. package/src/keystore/keystore.ts +32 -46
  135. package/src/keystore/types.ts +2 -1
  136. package/src/rln.ts +67 -258
  137. package/src/types.ts +31 -0
  138. package/src/zerokit.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/contract/abi.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB;QACE,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,YAAY;KAC9B;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,EAAE;KACX;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,OAAO;aACd;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,iCAAiC;QACvC,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,WAAW;aAClB;SACF;QACD,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;KAC9B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,WAAW;aAClB;YACD;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,IAAI,EAAE,MAAM;aACb;SACF;QACD,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;KAC9B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,WAAW;aAClB;SACF;QACD,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;KAC9B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;aACf;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,aAAa;aACpB;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,0CAA0C;QAChD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;aACf;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,WAAW;aAClB;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,sCAAsC;QAC5C,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;aACf;SACF;QACD,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;KAC9B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,MAAM;aACb;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,IAAI,EAAE,WAAW;aAClB;SACF;QACD,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;KAC9B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,OAAO;aACd;YACD;gBACE,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,IAAI,EAAE,WAAW;aAClB;SACF;QACD,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;KAC9B;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;aACf;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;aACf;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;aACf;SACF;QACD,SAAS,EAAE,KAAK;KACjB;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;aACf;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;aACf;SACF;QACD,SAAS,EAAE,KAAK;KACjB;CACF,CAAC"}
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/contract/abi.ts"],"names":[],"mappings":"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"}
@@ -1,47 +1,51 @@
1
- export declare const SEPOLIA_CONTRACT: {
2
- chainId: number;
1
+ export declare const LINEA_CONTRACT: {
2
+ chainId: string;
3
3
  address: string;
4
4
  abi: ({
5
- type: string;
6
5
  inputs: never[];
7
6
  stateMutability: string;
7
+ type: string;
8
8
  name?: undefined;
9
- outputs?: undefined;
10
9
  anonymous?: undefined;
10
+ outputs?: undefined;
11
11
  } | {
12
- type: string;
13
- name: string;
14
12
  inputs: {
13
+ internalType: string;
15
14
  name: string;
16
15
  type: string;
17
16
  }[];
17
+ name: string;
18
+ type: string;
18
19
  stateMutability?: undefined;
19
- outputs?: undefined;
20
20
  anonymous?: undefined;
21
+ outputs?: undefined;
21
22
  } | {
22
- type: string;
23
- name: string;
23
+ anonymous: boolean;
24
24
  inputs: {
25
+ indexed: boolean;
26
+ internalType: string;
25
27
  name: string;
26
28
  type: string;
27
29
  }[];
28
- outputs: {
30
+ name: string;
31
+ type: string;
32
+ stateMutability?: undefined;
33
+ outputs?: undefined;
34
+ } | {
35
+ inputs: {
36
+ internalType: string;
29
37
  name: string;
30
38
  type: string;
31
39
  }[];
32
- stateMutability: string;
33
- anonymous?: undefined;
34
- } | {
35
- type: string;
36
40
  name: string;
37
- inputs: {
41
+ outputs: {
42
+ internalType: string;
38
43
  name: string;
39
44
  type: string;
40
- indexed: boolean;
41
45
  }[];
42
- anonymous: boolean;
43
- stateMutability?: undefined;
44
- outputs?: undefined;
46
+ stateMutability: string;
47
+ type: string;
48
+ anonymous?: undefined;
45
49
  })[];
46
50
  };
47
51
  /**
@@ -1,7 +1,7 @@
1
1
  import { RLN_ABI } from "./abi.js";
2
- export const SEPOLIA_CONTRACT = {
3
- chainId: 11155111,
4
- address: "0xCB33Aa5B38d79E3D9Fa8B10afF38AA201399a7e3",
2
+ export const LINEA_CONTRACT = {
3
+ chainId: "59141",
4
+ address: "0xb9cd878c90e49f797b4431fbf4fb333108cb90e6",
5
5
  abi: RLN_ABI
6
6
  };
7
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/contract/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,4CAA4C;IACrD,GAAG,EAAE,OAAO;CACb,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,GAAG,EAAE,EAAE,EAAE,iDAAiD;IAC1D,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,kDAAkD;CACpD,CAAC;AAEX,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,gBAAgB,CAAC,GAAG;IAC9B,QAAQ,EAAE,gBAAgB,CAAC,IAAI;IAC/B,cAAc,EAAE,OAAO,EAAE,kDAAkD;IAC3E,YAAY,EAAE,GAAG,CAAC,uCAAuC;CACjD,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,QAAQ,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/contract/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,4CAA4C;IACrD,GAAG,EAAE,OAAO;CACb,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,GAAG,EAAE,EAAE,EAAE,iDAAiD;IAC1D,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,kDAAkD;CACpD,CAAC;AAEX,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,gBAAgB,CAAC,GAAG;IAC9B,QAAQ,EAAE,gBAAgB,CAAC,IAAI;IAC/B,cAAc,EAAE,OAAO,EAAE,kDAAkD;IAC3E,YAAY,EAAE,GAAG,CAAC,uCAAuC;CACjD,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,QAAQ,CAAC"}
@@ -0,0 +1,30 @@
1
+ export declare class RLNContractError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class MembershipError extends RLNContractError {
5
+ constructor(message: string);
6
+ }
7
+ export declare class RateLimitError extends RLNContractError {
8
+ constructor(message: string);
9
+ }
10
+ export declare class InvalidMembershipError extends MembershipError {
11
+ constructor(idCommitment: string);
12
+ }
13
+ export declare class MembershipNotFoundError extends MembershipError {
14
+ constructor(idCommitment: string);
15
+ }
16
+ export declare class MembershipExistsError extends MembershipError {
17
+ constructor(idCommitment: string, index: string);
18
+ }
19
+ export declare class RateLimitExceededError extends RateLimitError {
20
+ constructor(requested: number, available: number);
21
+ }
22
+ export declare class InvalidRateLimitError extends RateLimitError {
23
+ constructor(rateLimit: number, minRate: number, maxRate: number);
24
+ }
25
+ export declare class ContractStateError extends RLNContractError {
26
+ constructor(message: string);
27
+ }
28
+ export declare class TransactionError extends RLNContractError {
29
+ constructor(message: string);
30
+ }
@@ -0,0 +1,61 @@
1
+ export class RLNContractError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "RLNContractError";
5
+ }
6
+ }
7
+ export class MembershipError extends RLNContractError {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = "MembershipError";
11
+ }
12
+ }
13
+ export class RateLimitError extends RLNContractError {
14
+ constructor(message) {
15
+ super(message);
16
+ this.name = "RateLimitError";
17
+ }
18
+ }
19
+ export class InvalidMembershipError extends MembershipError {
20
+ constructor(idCommitment) {
21
+ super(`Invalid membership ID commitment: ${idCommitment}`);
22
+ this.name = "InvalidMembershipError";
23
+ }
24
+ }
25
+ export class MembershipNotFoundError extends MembershipError {
26
+ constructor(idCommitment) {
27
+ super(`Membership not found for ID commitment: ${idCommitment}`);
28
+ this.name = "MembershipNotFoundError";
29
+ }
30
+ }
31
+ export class MembershipExistsError extends MembershipError {
32
+ constructor(idCommitment, index) {
33
+ super(`Membership already exists for ID commitment: ${idCommitment} at index ${index}`);
34
+ this.name = "MembershipExistsError";
35
+ }
36
+ }
37
+ export class RateLimitExceededError extends RateLimitError {
38
+ constructor(requested, available) {
39
+ super(`Rate limit exceeded. Requested: ${requested}, Available: ${available}`);
40
+ this.name = "RateLimitExceededError";
41
+ }
42
+ }
43
+ export class InvalidRateLimitError extends RateLimitError {
44
+ constructor(rateLimit, minRate, maxRate) {
45
+ super(`Invalid rate limit: ${rateLimit}. Must be between ${minRate} and ${maxRate}`);
46
+ this.name = "InvalidRateLimitError";
47
+ }
48
+ }
49
+ export class ContractStateError extends RLNContractError {
50
+ constructor(message) {
51
+ super(`Contract state error: ${message}`);
52
+ this.name = "ContractStateError";
53
+ }
54
+ }
55
+ export class TransactionError extends RLNContractError {
56
+ constructor(message) {
57
+ super(`Transaction failed: ${message}`);
58
+ this.name = "TransactionError";
59
+ }
60
+ }
61
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/contract/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,gBAAgB;IACnD,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,eAAe;IACzD,YAAmB,YAAoB;QACrC,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,eAAe;IAC1D,YAAmB,YAAoB;QACrC,KAAK,CAAC,2CAA2C,YAAY,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACxD,YAAmB,YAAoB,EAAE,KAAa;QACpD,KAAK,CACH,gDAAgD,YAAY,aAAa,KAAK,EAAE,CACjF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD,YAAmB,SAAiB,EAAE,SAAiB;QACrD,KAAK,CACH,mCAAmC,SAAS,gBAAgB,SAAS,EAAE,CACxE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IACvD,YAAmB,SAAiB,EAAE,OAAe,EAAE,OAAe;QACpE,KAAK,CACH,uBAAuB,SAAS,qBAAqB,OAAO,QAAQ,OAAO,EAAE,CAC9E,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,gBAAgB;IACtD,YAAmB,OAAe;QAChC,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IACpD,YAAmB,OAAe;QAChC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,88 @@
1
+ import { ethers } from "ethers";
2
+ import { IdentityCredential } from "../identity.js";
3
+ import { DecryptedCredentials } from "../keystore/types.js";
4
+ import { Member, MembershipInfo, RLNContractInitOptions } from "./types.js";
5
+ export declare class RLNBaseContract {
6
+ contract: ethers.Contract;
7
+ private rateLimit;
8
+ constructor(options: RLNContractInitOptions);
9
+ /**
10
+ * Gets the current rate limit for this contract instance
11
+ */
12
+ getRateLimit(): number;
13
+ /**
14
+ * Gets the contract address
15
+ */
16
+ get address(): string;
17
+ /**
18
+ * Gets the contract provider
19
+ */
20
+ get provider(): ethers.providers.Provider;
21
+ /**
22
+ * Gets the minimum allowed rate limit from the contract
23
+ * @returns Promise<number> The minimum rate limit in messages per epoch
24
+ */
25
+ getMinRateLimit(): Promise<number>;
26
+ /**
27
+ * Gets the maximum allowed rate limit from the contract
28
+ * @returns Promise<number> The maximum rate limit in messages per epoch
29
+ */
30
+ getMaxRateLimit(): Promise<number>;
31
+ /**
32
+ * Gets the maximum total rate limit across all memberships
33
+ * @returns Promise<number> The maximum total rate limit in messages per epoch
34
+ */
35
+ getMaxTotalRateLimit(): Promise<number>;
36
+ /**
37
+ * Gets the current total rate limit usage across all memberships
38
+ * @returns Promise<number> The current total rate limit usage in messages per epoch
39
+ */
40
+ getCurrentTotalRateLimit(): Promise<number>;
41
+ /**
42
+ * Gets the remaining available total rate limit that can be allocated
43
+ * @returns Promise<number> The remaining rate limit that can be allocated
44
+ */
45
+ getRemainingTotalRateLimit(): Promise<number>;
46
+ /**
47
+ * Updates the rate limit for future registrations
48
+ * @param newRateLimit The new rate limit to use
49
+ */
50
+ setRateLimit(newRateLimit: number): Promise<void>;
51
+ /**
52
+ * Gets all members in the given range
53
+ * @param startIndex Start index (inclusive)
54
+ * @param endIndex End index (exclusive)
55
+ */
56
+ getMembersInRange(startIndex: number, endIndex: number): Promise<Member[]>;
57
+ /**
58
+ * Gets all current members
59
+ */
60
+ getAllMembers(): Promise<Member[]>;
61
+ /**
62
+ * Gets the member index if it exists, or null if it doesn't
63
+ * Throws only on actual errors (invalid input, network issues, etc)
64
+ */
65
+ private getMemberIndex;
66
+ getMembershipInfo(idCommitment: string): Promise<MembershipInfo>;
67
+ extendMembership(idCommitment: string): Promise<void>;
68
+ eraseMembership(idCommitment: string, eraseFromMembershipSet?: boolean): Promise<void>;
69
+ registerMembership(idCommitment: string, rateLimit?: number): Promise<void>;
70
+ withdraw(token: string, holder: string): Promise<void>;
71
+ registerWithIdentity(identity: IdentityCredential): Promise<DecryptedCredentials | undefined>;
72
+ registerWithPermitAndErase(identity: IdentityCredential, permit: {
73
+ owner: string;
74
+ deadline: number;
75
+ v: number;
76
+ r: string;
77
+ s: string;
78
+ }, idCommitmentsToErase: string[]): Promise<DecryptedCredentials | undefined>;
79
+ /**
80
+ * Validates that the rate limit is within the allowed range
81
+ * @throws Error if the rate limit is outside the allowed range
82
+ */
83
+ private validateRateLimit;
84
+ /**
85
+ * Helper to confirm a transaction and extract event data
86
+ */
87
+ private confirmTransaction;
88
+ }
@@ -0,0 +1,330 @@
1
+ import { Logger } from "@waku/utils";
2
+ import { ethers } from "ethers";
3
+ import { RLN_ABI } from "./abi.js";
4
+ import { DEFAULT_RATE_LIMIT, RATE_LIMIT_PARAMS } from "./constants.js";
5
+ import { InvalidMembershipError, InvalidRateLimitError, MembershipExistsError, MembershipNotFoundError, RateLimitExceededError, RLNContractError, TransactionError } from "./errors.js";
6
+ import { MembershipState } from "./types.js";
7
+ const log = new Logger("waku:rln:contract:base");
8
+ export class RLNBaseContract {
9
+ contract;
10
+ rateLimit;
11
+ constructor(options) {
12
+ const { address, signer, rateLimit = DEFAULT_RATE_LIMIT, contract } = options;
13
+ this.validateRateLimit(rateLimit);
14
+ this.contract = contract || new ethers.Contract(address, RLN_ABI, signer);
15
+ this.rateLimit = rateLimit;
16
+ }
17
+ /**
18
+ * Gets the current rate limit for this contract instance
19
+ */
20
+ getRateLimit() {
21
+ return this.rateLimit;
22
+ }
23
+ /**
24
+ * Gets the contract address
25
+ */
26
+ get address() {
27
+ return this.contract.address;
28
+ }
29
+ /**
30
+ * Gets the contract provider
31
+ */
32
+ get provider() {
33
+ return this.contract.provider;
34
+ }
35
+ /**
36
+ * Gets the minimum allowed rate limit from the contract
37
+ * @returns Promise<number> The minimum rate limit in messages per epoch
38
+ */
39
+ async getMinRateLimit() {
40
+ const minRate = await this.contract.minMembershipRateLimit();
41
+ return ethers.BigNumber.from(minRate).toNumber();
42
+ }
43
+ /**
44
+ * Gets the maximum allowed rate limit from the contract
45
+ * @returns Promise<number> The maximum rate limit in messages per epoch
46
+ */
47
+ async getMaxRateLimit() {
48
+ const maxRate = await this.contract.maxMembershipRateLimit();
49
+ return ethers.BigNumber.from(maxRate).toNumber();
50
+ }
51
+ /**
52
+ * Gets the maximum total rate limit across all memberships
53
+ * @returns Promise<number> The maximum total rate limit in messages per epoch
54
+ */
55
+ async getMaxTotalRateLimit() {
56
+ const maxTotalRate = await this.contract.maxTotalRateLimit();
57
+ return maxTotalRate.toNumber();
58
+ }
59
+ /**
60
+ * Gets the current total rate limit usage across all memberships
61
+ * @returns Promise<number> The current total rate limit usage in messages per epoch
62
+ */
63
+ async getCurrentTotalRateLimit() {
64
+ const currentTotal = await this.contract.currentTotalRateLimit();
65
+ return currentTotal.toNumber();
66
+ }
67
+ /**
68
+ * Gets the remaining available total rate limit that can be allocated
69
+ * @returns Promise<number> The remaining rate limit that can be allocated
70
+ */
71
+ async getRemainingTotalRateLimit() {
72
+ const [maxTotal, currentTotal] = await Promise.all([
73
+ this.contract.maxTotalRateLimit(),
74
+ this.contract.currentTotalRateLimit()
75
+ ]);
76
+ return Number(maxTotal) - Number(currentTotal);
77
+ }
78
+ /**
79
+ * Updates the rate limit for future registrations
80
+ * @param newRateLimit The new rate limit to use
81
+ */
82
+ async setRateLimit(newRateLimit) {
83
+ this.validateRateLimit(newRateLimit);
84
+ this.rateLimit = newRateLimit;
85
+ }
86
+ /**
87
+ * Gets all members in the given range
88
+ * @param startIndex Start index (inclusive)
89
+ * @param endIndex End index (exclusive)
90
+ */
91
+ async getMembersInRange(startIndex, endIndex) {
92
+ try {
93
+ // Get all commitments in one call
94
+ const idCommitments = await this.contract.getRateCommitmentsInRangeBoundsInclusive(startIndex, endIndex - 1 // -1 because getRateCommitmentsInRangeBoundsInclusive is inclusive
95
+ );
96
+ // Get membership info for each commitment in a single batch
97
+ const membershipPromises = idCommitments.map((idCommitment) => this.contract
98
+ .memberships(idCommitment)
99
+ .then((info) => ({
100
+ idCommitment: idCommitment.toString(),
101
+ index: ethers.BigNumber.from(info.index)
102
+ }))
103
+ .catch(() => null) // Skip invalid members
104
+ );
105
+ // Wait for all promises to resolve
106
+ const members = (await Promise.all(membershipPromises)).filter((m) => m !== null);
107
+ return members;
108
+ }
109
+ catch (error) {
110
+ if (error instanceof Error &&
111
+ error.message.includes("InvalidPaginationQuery")) {
112
+ throw new RLNContractError(`Invalid pagination range: start=${startIndex}, end=${endIndex}`);
113
+ }
114
+ throw error;
115
+ }
116
+ }
117
+ /**
118
+ * Gets all current members
119
+ */
120
+ async getAllMembers() {
121
+ const nextIndex = (await this.contract.nextFreeIndex()).toNumber();
122
+ return this.getMembersInRange(0, nextIndex);
123
+ }
124
+ /**
125
+ * Gets the member index if it exists, or null if it doesn't
126
+ * Throws only on actual errors (invalid input, network issues, etc)
127
+ */
128
+ async getMemberIndex(idCommitment) {
129
+ try {
130
+ const isValid = await this.contract.isInMembershipSet(idCommitment);
131
+ if (!isValid) {
132
+ return null;
133
+ }
134
+ const membershipInfo = await this.contract.memberships(idCommitment);
135
+ return ethers.BigNumber.from(membershipInfo.index);
136
+ }
137
+ catch (error) {
138
+ log.error(`Error getting member index: ${error.message}`);
139
+ throw new InvalidMembershipError(idCommitment);
140
+ }
141
+ }
142
+ async getMembershipInfo(idCommitment) {
143
+ try {
144
+ const [startBlock, endBlock, rateLimit] = await this.contract.getMembershipInfo(idCommitment);
145
+ const currentBlock = await this.contract.provider.getBlockNumber();
146
+ let state;
147
+ if (currentBlock < startBlock) {
148
+ state = MembershipState.Active;
149
+ }
150
+ else if (currentBlock < endBlock) {
151
+ state = MembershipState.GracePeriod;
152
+ }
153
+ else {
154
+ state = MembershipState.Expired;
155
+ }
156
+ const index = await this.getMemberIndex(idCommitment);
157
+ if (index === null) {
158
+ throw new MembershipNotFoundError(idCommitment);
159
+ }
160
+ return {
161
+ index,
162
+ idCommitment,
163
+ rateLimit: rateLimit.toNumber(),
164
+ startBlock: startBlock.toNumber(),
165
+ endBlock: endBlock.toNumber(),
166
+ state
167
+ };
168
+ }
169
+ catch (error) {
170
+ if (error instanceof RLNContractError) {
171
+ throw error;
172
+ }
173
+ log.error(`Error getting membership info: ${error.message}`);
174
+ throw new InvalidMembershipError(idCommitment);
175
+ }
176
+ }
177
+ async extendMembership(idCommitment) {
178
+ const tx = await this.contract.extendMemberships([idCommitment]);
179
+ await this.confirmTransaction(tx, "MembershipExtended", (event) => ({
180
+ idCommitment: event.args.idCommitment,
181
+ endBlock: event.args.endBlock
182
+ }));
183
+ }
184
+ async eraseMembership(idCommitment, eraseFromMembershipSet = true) {
185
+ const tx = await this.contract.eraseMemberships([idCommitment], eraseFromMembershipSet);
186
+ await this.confirmTransaction(tx, "MembershipErased", (event) => ({
187
+ idCommitment: event.args.idCommitment,
188
+ index: event.args.index
189
+ }));
190
+ }
191
+ async registerMembership(idCommitment, rateLimit = DEFAULT_RATE_LIMIT) {
192
+ if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
193
+ rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
194
+ throw new Error(`Rate limit must be between ${RATE_LIMIT_PARAMS.MIN_RATE} and ${RATE_LIMIT_PARAMS.MAX_RATE}`);
195
+ }
196
+ const tx = await this.contract.register(idCommitment, rateLimit, []);
197
+ await this.confirmTransaction(tx, "MembershipRegistered", (event) => ({
198
+ idCommitment: event.args.idCommitment,
199
+ membershipRateLimit: event.args.membershipRateLimit,
200
+ index: event.args.index
201
+ }));
202
+ }
203
+ async withdraw(token, holder) {
204
+ try {
205
+ const tx = await this.contract.withdraw(token, { from: holder });
206
+ await this.confirmTransaction(tx, "TokenWithdrawn", (event) => ({
207
+ token: event.args.token,
208
+ holder: event.args.holder,
209
+ amount: event.args.amount
210
+ }));
211
+ }
212
+ catch (error) {
213
+ log.error(`Error in withdraw: ${error.message}`);
214
+ throw error;
215
+ }
216
+ }
217
+ async registerWithIdentity(identity) {
218
+ try {
219
+ log.info(`Registering identity with rate limit: ${this.rateLimit} messages/epoch`);
220
+ // Check if the ID commitment is already registered
221
+ const existingIndex = await this.getMemberIndex(identity.IDCommitmentBigInt.toString());
222
+ if (existingIndex !== null) {
223
+ throw new MembershipExistsError(identity.IDCommitmentBigInt.toString(), existingIndex.toString());
224
+ }
225
+ // Check if there's enough remaining rate limit
226
+ const remainingRateLimit = await this.getRemainingTotalRateLimit();
227
+ if (remainingRateLimit < this.rateLimit) {
228
+ throw new RateLimitExceededError(this.rateLimit, remainingRateLimit);
229
+ }
230
+ const estimatedGas = await this.contract.estimateGas.register(identity.IDCommitmentBigInt, this.rateLimit, []);
231
+ const gasLimit = estimatedGas.add(10000);
232
+ const tx = await this.contract.register(identity.IDCommitmentBigInt, this.rateLimit, [], { gasLimit });
233
+ const decodedData = await this.confirmTransaction(tx, "MembershipRegistered", (event) => ({
234
+ idCommitment: event.args.idCommitment,
235
+ membershipRateLimit: event.args.membershipRateLimit,
236
+ index: event.args.index
237
+ }));
238
+ log.info(`Successfully registered membership with index ${decodedData.index} ` +
239
+ `and rate limit ${decodedData.membershipRateLimit}`);
240
+ const network = await this.contract.provider.getNetwork();
241
+ const address = this.contract.address;
242
+ const membershipId = decodedData.index.toString();
243
+ return {
244
+ identity,
245
+ membership: {
246
+ address,
247
+ treeIndex: parseInt(membershipId),
248
+ chainId: network.chainId.toString(),
249
+ rateLimit: decodedData.membershipRateLimit.toNumber()
250
+ }
251
+ };
252
+ }
253
+ catch (error) {
254
+ if (error instanceof RLNContractError) {
255
+ throw error;
256
+ }
257
+ if (error instanceof Error) {
258
+ const errorMessage = error.message;
259
+ log.error("registerWithIdentity - error message:", errorMessage);
260
+ log.error("registerWithIdentity - error stack:", error.stack);
261
+ // Map contract errors to our custom errors
262
+ if (errorMessage.includes("CannotExceedMaxTotalRateLimit")) {
263
+ throw new RateLimitExceededError(this.rateLimit, await this.getRemainingTotalRateLimit());
264
+ }
265
+ else if (errorMessage.includes("InvalidIdCommitment")) {
266
+ throw new InvalidMembershipError(identity.IDCommitmentBigInt.toString());
267
+ }
268
+ else if (errorMessage.includes("InvalidMembershipRateLimit")) {
269
+ throw new InvalidRateLimitError(this.rateLimit, RATE_LIMIT_PARAMS.MIN_RATE, RATE_LIMIT_PARAMS.MAX_RATE);
270
+ }
271
+ else if (errorMessage.includes("execution reverted")) {
272
+ throw new TransactionError("Contract execution reverted. Check contract requirements.");
273
+ }
274
+ throw new RLNContractError(`Error in registerWithIdentity: ${errorMessage}`);
275
+ }
276
+ throw new RLNContractError("Unknown error in registerWithIdentity");
277
+ }
278
+ }
279
+ async registerWithPermitAndErase(identity, permit, idCommitmentsToErase) {
280
+ try {
281
+ log.info(`Registering identity with permit and rate limit: ${this.rateLimit} messages/epoch`);
282
+ const tx = await this.contract.registerWithPermit(permit.owner, permit.deadline, permit.v, permit.r, permit.s, identity.IDCommitmentBigInt, this.rateLimit, idCommitmentsToErase.map((id) => ethers.BigNumber.from(id)));
283
+ const decodedData = await this.confirmTransaction(tx, "MembershipRegistered", (event) => ({
284
+ idCommitment: event.args.idCommitment,
285
+ membershipRateLimit: event.args.membershipRateLimit,
286
+ index: event.args.index
287
+ }));
288
+ log.info(`Successfully registered membership with permit. Index: ${decodedData.index}, ` +
289
+ `Rate limit: ${decodedData.membershipRateLimit}, Erased ${idCommitmentsToErase.length} commitments`);
290
+ const network = await this.contract.provider.getNetwork();
291
+ const address = this.contract.address;
292
+ const membershipId = decodedData.index.toString();
293
+ return {
294
+ identity,
295
+ membership: {
296
+ address,
297
+ treeIndex: parseInt(membershipId),
298
+ chainId: network.chainId.toString(),
299
+ rateLimit: decodedData.membershipRateLimit.toNumber()
300
+ }
301
+ };
302
+ }
303
+ catch (error) {
304
+ log.error(`Error in registerWithPermitAndErase: ${error.message}`);
305
+ throw error;
306
+ }
307
+ }
308
+ /**
309
+ * Validates that the rate limit is within the allowed range
310
+ * @throws Error if the rate limit is outside the allowed range
311
+ */
312
+ validateRateLimit(rateLimit) {
313
+ if (rateLimit < RATE_LIMIT_PARAMS.MIN_RATE ||
314
+ rateLimit > RATE_LIMIT_PARAMS.MAX_RATE) {
315
+ throw new InvalidRateLimitError(rateLimit, RATE_LIMIT_PARAMS.MIN_RATE, RATE_LIMIT_PARAMS.MAX_RATE);
316
+ }
317
+ }
318
+ /**
319
+ * Helper to confirm a transaction and extract event data
320
+ */
321
+ async confirmTransaction(tx, expectedEvent, transform) {
322
+ const receipt = await tx.wait();
323
+ const event = receipt.events?.find((e) => e.event === expectedEvent);
324
+ if (!event || !event.args) {
325
+ throw new TransactionError(`Expected event ${expectedEvent} not found`);
326
+ }
327
+ return transform(event);
328
+ }
329
+ }
330
+ //# sourceMappingURL=rln_base_contract.js.map