@maci-protocol/sdk 0.0.0-ci.e0aedb2 → 0.0.0-ci.e15f6a5

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 (212) hide show
  1. package/LICENSE +1 -2
  2. package/build/package.json +14 -6
  3. package/build/ts/browser/index.d.ts +2 -1
  4. package/build/ts/browser/index.d.ts.map +1 -1
  5. package/build/ts/browser/index.js +6 -1
  6. package/build/ts/browser/index.js.map +1 -1
  7. package/build/ts/browser/joinPoll.d.ts +4 -2
  8. package/build/ts/browser/joinPoll.d.ts.map +1 -1
  9. package/build/ts/browser/joinPoll.js +21 -17
  10. package/build/ts/browser/joinPoll.js.map +1 -1
  11. package/build/ts/browser/utils.d.ts +2 -2
  12. package/build/ts/browser/utils.d.ts.map +1 -1
  13. package/build/ts/browser/utils.js +3 -3
  14. package/build/ts/browser/utils.js.map +1 -1
  15. package/build/ts/deploy/index.d.ts +2 -2
  16. package/build/ts/deploy/index.d.ts.map +1 -1
  17. package/build/ts/deploy/index.js +3 -3
  18. package/build/ts/deploy/index.js.map +1 -1
  19. package/build/ts/deploy/maci.js +1 -1
  20. package/build/ts/deploy/maci.js.map +1 -1
  21. package/build/ts/deploy/poll.d.ts +1 -1
  22. package/build/ts/deploy/poll.d.ts.map +1 -1
  23. package/build/ts/deploy/poll.js +9 -8
  24. package/build/ts/deploy/poll.js.map +1 -1
  25. package/build/ts/deploy/types.d.ts +13 -8
  26. package/build/ts/deploy/types.d.ts.map +1 -1
  27. package/build/ts/deploy/utils.js +1 -1
  28. package/build/ts/deploy/utils.js.map +1 -1
  29. package/build/ts/deploy/verifyingKeysRegistry.d.ts +7 -0
  30. package/build/ts/deploy/verifyingKeysRegistry.d.ts.map +1 -0
  31. package/build/ts/deploy/verifyingKeysRegistry.js +14 -0
  32. package/build/ts/deploy/verifyingKeysRegistry.js.map +1 -0
  33. package/build/ts/index.d.ts +2 -1
  34. package/build/ts/index.d.ts.map +1 -1
  35. package/build/ts/index.js +13 -7
  36. package/build/ts/index.js.map +1 -1
  37. package/build/ts/maci/state.d.ts +1 -1
  38. package/build/ts/maci/state.js +8 -8
  39. package/build/ts/maci/state.js.map +1 -1
  40. package/build/ts/maci/types.d.ts +1 -1
  41. package/build/ts/maciKeys/__tests__/keypair.test.js +7 -7
  42. package/build/ts/maciKeys/__tests__/keypair.test.js.map +1 -1
  43. package/build/ts/maciKeys/__tests__/publicKeys.test.js +7 -7
  44. package/build/ts/maciKeys/__tests__/publicKeys.test.js.map +1 -1
  45. package/build/ts/maciKeys/keypair.d.ts.map +1 -1
  46. package/build/ts/maciKeys/keypair.js +4 -3
  47. package/build/ts/maciKeys/keypair.js.map +1 -1
  48. package/build/ts/maciKeys/publicKeys.d.ts +2 -2
  49. package/build/ts/maciKeys/publicKeys.d.ts.map +1 -1
  50. package/build/ts/maciKeys/publicKeys.js +6 -6
  51. package/build/ts/maciKeys/publicKeys.js.map +1 -1
  52. package/build/ts/maciKeys/types.d.ts +5 -0
  53. package/build/ts/maciKeys/types.d.ts.map +1 -1
  54. package/build/ts/poll/poll.d.ts.map +1 -1
  55. package/build/ts/poll/poll.js +8 -8
  56. package/build/ts/poll/poll.js.map +1 -1
  57. package/build/ts/poll/types.d.ts +6 -6
  58. package/build/ts/poll/types.d.ts.map +1 -1
  59. package/build/ts/proof/__tests__/download.test.js +7 -4
  60. package/build/ts/proof/__tests__/download.test.js.map +1 -1
  61. package/build/ts/proof/download.d.ts +3 -3
  62. package/build/ts/proof/download.d.ts.map +1 -1
  63. package/build/ts/proof/download.js +5 -7
  64. package/build/ts/proof/download.js.map +1 -1
  65. package/build/ts/proof/generate.d.ts +2 -2
  66. package/build/ts/proof/generate.d.ts.map +1 -1
  67. package/build/ts/proof/generate.js +29 -23
  68. package/build/ts/proof/generate.js.map +1 -1
  69. package/build/ts/proof/prove.js +13 -13
  70. package/build/ts/proof/prove.js.map +1 -1
  71. package/build/ts/proof/types.d.ts +40 -14
  72. package/build/ts/proof/types.d.ts.map +1 -1
  73. package/build/ts/proof/utils.d.ts +10 -0
  74. package/build/ts/proof/utils.d.ts.map +1 -0
  75. package/build/ts/proof/utils.js +24 -0
  76. package/build/ts/proof/utils.js.map +1 -0
  77. package/build/ts/relayer/__tests__/messages.test.js +1 -1
  78. package/build/ts/relayer/__tests__/messages.test.js.map +1 -1
  79. package/build/ts/relayer/__tests__/utils.test.js +3 -3
  80. package/build/ts/relayer/__tests__/utils.test.js.map +1 -1
  81. package/build/ts/relayer/messages.js +1 -1
  82. package/build/ts/relayer/utils.js +1 -1
  83. package/build/ts/relayer/utils.js.map +1 -1
  84. package/build/ts/subgraph/index.d.ts +3 -0
  85. package/build/ts/subgraph/index.d.ts.map +1 -0
  86. package/build/ts/subgraph/index.js +18 -0
  87. package/build/ts/subgraph/index.js.map +1 -0
  88. package/build/ts/subgraph/maciSubgraph.d.ts +28 -0
  89. package/build/ts/subgraph/maciSubgraph.d.ts.map +1 -0
  90. package/build/ts/subgraph/maciSubgraph.js +62 -0
  91. package/build/ts/subgraph/maciSubgraph.js.map +1 -0
  92. package/build/ts/subgraph/types.d.ts +20 -0
  93. package/build/ts/subgraph/types.d.ts.map +1 -0
  94. package/build/ts/subgraph/types.js +3 -0
  95. package/build/ts/subgraph/types.js.map +1 -0
  96. package/build/ts/tally/commitments.d.ts.map +1 -1
  97. package/build/ts/tally/commitments.js +8 -7
  98. package/build/ts/tally/commitments.js.map +1 -1
  99. package/build/ts/tally/index.d.ts +2 -1
  100. package/build/ts/tally/index.d.ts.map +1 -1
  101. package/build/ts/tally/index.js +5 -1
  102. package/build/ts/tally/index.js.map +1 -1
  103. package/build/ts/tally/results.d.ts +20 -0
  104. package/build/ts/tally/results.d.ts.map +1 -0
  105. package/build/ts/tally/results.js +49 -0
  106. package/build/ts/tally/results.js.map +1 -0
  107. package/build/ts/tally/types.d.ts +55 -15
  108. package/build/ts/tally/types.d.ts.map +1 -1
  109. package/build/ts/tally/utils.d.ts +3 -3
  110. package/build/ts/tally/utils.d.ts.map +1 -1
  111. package/build/ts/tally/utils.js +10 -10
  112. package/build/ts/tally/utils.js.map +1 -1
  113. package/build/ts/tally/verification.d.ts +1 -1
  114. package/build/ts/tally/verification.d.ts.map +1 -1
  115. package/build/ts/tally/verification.js +10 -10
  116. package/build/ts/tally/verification.js.map +1 -1
  117. package/build/ts/trees/index.d.ts +2 -2
  118. package/build/ts/trees/index.d.ts.map +1 -1
  119. package/build/ts/trees/index.js +3 -1
  120. package/build/ts/trees/index.js.map +1 -1
  121. package/build/ts/trees/stateTree.d.ts +23 -1
  122. package/build/ts/trees/stateTree.d.ts.map +1 -1
  123. package/build/ts/trees/stateTree.js +74 -13
  124. package/build/ts/trees/stateTree.js.map +1 -1
  125. package/build/ts/trees/types.d.ts +11 -2
  126. package/build/ts/trees/types.d.ts.map +1 -1
  127. package/build/ts/user/index.d.ts +2 -2
  128. package/build/ts/user/index.d.ts.map +1 -1
  129. package/build/ts/user/index.js +5 -1
  130. package/build/ts/user/index.js.map +1 -1
  131. package/build/ts/user/joinPoll.d.ts +1 -1
  132. package/build/ts/user/joinPoll.d.ts.map +1 -1
  133. package/build/ts/user/joinPoll.js +11 -11
  134. package/build/ts/user/joinPoll.js.map +1 -1
  135. package/build/ts/user/signup.d.ts +3 -3
  136. package/build/ts/user/signup.d.ts.map +1 -1
  137. package/build/ts/user/signup.js +26 -21
  138. package/build/ts/user/signup.js.map +1 -1
  139. package/build/ts/user/types.d.ts +63 -19
  140. package/build/ts/user/types.d.ts.map +1 -1
  141. package/build/ts/user/utils.d.ts +26 -14
  142. package/build/ts/user/utils.d.ts.map +1 -1
  143. package/build/ts/user/utils.js +83 -49
  144. package/build/ts/user/utils.js.map +1 -1
  145. package/build/ts/utils/index.d.ts +1 -1
  146. package/build/ts/utils/index.d.ts.map +1 -1
  147. package/build/ts/utils/index.js +2 -1
  148. package/build/ts/utils/index.js.map +1 -1
  149. package/build/ts/utils/params.d.ts +1 -1
  150. package/build/ts/utils/params.d.ts.map +1 -1
  151. package/build/ts/utils/params.js +3 -3
  152. package/build/ts/utils/params.js.map +1 -1
  153. package/build/ts/utils/proofs.d.ts +2 -2
  154. package/build/ts/utils/proofs.d.ts.map +1 -1
  155. package/build/ts/utils/proofs.js +4 -4
  156. package/build/ts/utils/proofs.js.map +1 -1
  157. package/build/ts/utils/types.d.ts +2 -2
  158. package/build/ts/utils/types.d.ts.map +1 -1
  159. package/build/ts/utils/utils.d.ts +5 -0
  160. package/build/ts/utils/utils.d.ts.map +1 -1
  161. package/build/ts/utils/utils.js +13 -1
  162. package/build/ts/utils/utils.js.map +1 -1
  163. package/build/ts/verifyingKeys/checkVerifyingKeys.d.ts +1 -1
  164. package/build/ts/verifyingKeys/checkVerifyingKeys.d.ts.map +1 -1
  165. package/build/ts/verifyingKeys/checkVerifyingKeys.js +18 -19
  166. package/build/ts/verifyingKeys/checkVerifyingKeys.js.map +1 -1
  167. package/build/ts/verifyingKeys/index.d.ts +2 -2
  168. package/build/ts/verifyingKeys/index.d.ts.map +1 -1
  169. package/build/ts/verifyingKeys/index.js +5 -5
  170. package/build/ts/verifyingKeys/index.js.map +1 -1
  171. package/build/ts/verifyingKeys/setVerifyingKeys.d.ts +1 -1
  172. package/build/ts/verifyingKeys/setVerifyingKeys.d.ts.map +1 -1
  173. package/build/ts/verifyingKeys/setVerifyingKeys.js +45 -35
  174. package/build/ts/verifyingKeys/setVerifyingKeys.js.map +1 -1
  175. package/build/ts/verifyingKeys/types.d.ts +54 -46
  176. package/build/ts/verifyingKeys/types.d.ts.map +1 -1
  177. package/build/ts/verifyingKeys/utils.d.ts +10 -10
  178. package/build/ts/verifyingKeys/utils.d.ts.map +1 -1
  179. package/build/ts/verifyingKeys/utils.js +75 -60
  180. package/build/ts/verifyingKeys/utils.js.map +1 -1
  181. package/build/ts/vote/generate.d.ts +1 -1
  182. package/build/ts/vote/generate.d.ts.map +1 -1
  183. package/build/ts/vote/generate.js +4 -4
  184. package/build/ts/vote/generate.js.map +1 -1
  185. package/build/ts/vote/index.d.ts +2 -1
  186. package/build/ts/vote/index.d.ts.map +1 -1
  187. package/build/ts/vote/index.js +4 -2
  188. package/build/ts/vote/index.js.map +1 -1
  189. package/build/ts/vote/invalidate.js +4 -4
  190. package/build/ts/vote/invalidate.js.map +1 -1
  191. package/build/ts/vote/publish.d.ts +1 -1
  192. package/build/ts/vote/publish.d.ts.map +1 -1
  193. package/build/ts/vote/publish.js +19 -19
  194. package/build/ts/vote/publish.js.map +1 -1
  195. package/build/ts/vote/submit.js +2 -2
  196. package/build/ts/vote/submit.js.map +1 -1
  197. package/build/ts/vote/types.d.ts +6 -6
  198. package/build/ts/vote/types.d.ts.map +1 -1
  199. package/build/ts/vote/utils.d.ts +2 -2
  200. package/build/ts/vote/utils.d.ts.map +1 -1
  201. package/build/ts/vote/utils.js +5 -5
  202. package/build/ts/vote/utils.js.map +1 -1
  203. package/build/tsconfig.build.tsbuildinfo +1 -1
  204. package/package.json +20 -12
  205. package/build/ts/deploy/vkRegistry.d.ts +0 -7
  206. package/build/ts/deploy/vkRegistry.d.ts.map +0 -1
  207. package/build/ts/deploy/vkRegistry.js +0 -14
  208. package/build/ts/deploy/vkRegistry.js.map +0 -1
  209. package/build/ts/proof/constants.d.ts +0 -17
  210. package/build/ts/proof/constants.d.ts.map +0 -1
  211. package/build/ts/proof/constants.js +0 -20
  212. package/build/ts/proof/constants.js.map +0 -1
@@ -1,15 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateSignUpTree = void 0;
3
+ exports.generateSignUpTreeFromKeys = exports.generateSignUpTreeWithEndKey = exports.generateSignUpTree = void 0;
7
4
  /* eslint-disable no-underscore-dangle */
8
5
  const typechain_types_1 = require("@maci-protocol/contracts/typechain-types");
9
6
  const crypto_1 = require("@maci-protocol/crypto");
10
7
  const domainobjs_1 = require("@maci-protocol/domainobjs");
11
8
  const lean_imt_1 = require("@zk-kit/lean-imt");
12
- const assert_1 = __importDefault(require("assert"));
13
9
  const utils_1 = require("../utils/utils");
14
10
  /**
15
11
  * Generate a State tree object from the events of a MACI smart contracts
@@ -26,7 +22,7 @@ const generateSignUpTree = async ({ provider, address, fromBlock = 0, blocksPerR
26
22
  const maciContract = typechain_types_1.MACI__factory.connect(address, provider);
27
23
  const signUpTree = new lean_imt_1.LeanIMT(crypto_1.hashLeanIMT);
28
24
  signUpTree.insert(crypto_1.PAD_KEY_HASH);
29
- const pubKeys = [];
25
+ const publicKeys = [];
30
26
  // Fetch event logs in batches (lastBlock inclusive)
31
27
  for (let i = fromBlock; i <= lastBlock; i += blocksPerRequest + 1) {
32
28
  // the last block batch will be either current iteration block + blockPerRequest
@@ -35,12 +31,11 @@ const generateSignUpTree = async ({ provider, address, fromBlock = 0, blocksPerR
35
31
  // eslint-disable-next-line no-await-in-loop
36
32
  const signUpLogs = await maciContract.queryFilter(maciContract.filters.SignUp(), i, toBlock);
37
33
  signUpLogs.forEach((event) => {
38
- (0, assert_1.default)(!!event);
39
- const pubKeyX = event.args._userPubKeyX;
40
- const pubKeyY = event.args._userPubKeyY;
41
- const pubKey = new domainobjs_1.PubKey([pubKeyX, pubKeyY]);
42
- pubKeys.push(pubKey);
43
- signUpTree.insert((0, crypto_1.hashLeftRight)(pubKeyX, pubKeyY));
34
+ const publicKeyX = event.args._userPublicKeyX;
35
+ const publicKeyY = event.args._userPublicKeyY;
36
+ const publicKey = new domainobjs_1.PublicKey([publicKeyX, publicKeyY]);
37
+ publicKeys.push(publicKey);
38
+ signUpTree.insert((0, crypto_1.hashLeftRight)(publicKeyX, publicKeyY));
44
39
  });
45
40
  if (sleepAmount) {
46
41
  // eslint-disable-next-line no-await-in-loop
@@ -49,8 +44,74 @@ const generateSignUpTree = async ({ provider, address, fromBlock = 0, blocksPerR
49
44
  }
50
45
  return {
51
46
  signUpTree,
52
- pubKeys,
47
+ publicKeys,
53
48
  };
54
49
  };
55
50
  exports.generateSignUpTree = generateSignUpTree;
51
+ /**
52
+ * Generate a State tree object from the events of a MACI smart contracts
53
+ * @param provider - the ethereum provider
54
+ * @param address - the address of the MACI contract
55
+ * @param fromBlock - the block number from which to start fetching events
56
+ * @param blocksPerRequest - the number of blocks to fetch in each request
57
+ * @param endBlock - the block number at which to stop fetching events
58
+ * @param sleepAmount - the amount of time to sleep between each request
59
+ * @param userPublicKey - the user public key where we end/stop the signUpTree replica.
60
+ * If user public key is 4th then the returned signUpTree will have only 4 leaves
61
+ * (does not matter if MACI' signUpTree has more).
62
+ * @returns State tree
63
+ */
64
+ const generateSignUpTreeWithEndKey = async ({ provider, address, fromBlock = 0, blocksPerRequest = 50, endBlock, sleepAmount, userPublicKey, }) => {
65
+ const lastBlock = endBlock || (await provider.getBlockNumber());
66
+ const maciContract = typechain_types_1.MACI__factory.connect(address, provider);
67
+ const signUpTree = new lean_imt_1.LeanIMT(crypto_1.hashLeanIMT);
68
+ signUpTree.insert(crypto_1.PAD_KEY_HASH);
69
+ const publicKeys = [];
70
+ // Fetch event logs in batches (lastBlock inclusive)
71
+ for (let i = fromBlock; i <= lastBlock; i += blocksPerRequest + 1) {
72
+ // the last block batch will be either current iteration block + blockPerRequest
73
+ // or the end block if it is set
74
+ const toBlock = i + blocksPerRequest >= lastBlock ? lastBlock : i + blocksPerRequest;
75
+ // eslint-disable-next-line no-await-in-loop
76
+ const signUpLogs = await maciContract.queryFilter(maciContract.filters.SignUp(), i, toBlock);
77
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
78
+ for (let j = 0; j < signUpLogs.length; j += 1) {
79
+ const event = signUpLogs[j];
80
+ const publicKeyX = event.args._userPublicKeyX;
81
+ const publicKeyY = event.args._userPublicKeyY;
82
+ const publicKey = new domainobjs_1.PublicKey([publicKeyX, publicKeyY]);
83
+ publicKeys.push(publicKey);
84
+ signUpTree.insert((0, crypto_1.hashLeftRight)(publicKeyX, publicKeyY));
85
+ // early return cause we found the user
86
+ if (publicKey.equals(userPublicKey)) {
87
+ return {
88
+ signUpTree,
89
+ publicKeys,
90
+ };
91
+ }
92
+ }
93
+ if (sleepAmount) {
94
+ // eslint-disable-next-line no-await-in-loop
95
+ await (0, utils_1.sleep)(sleepAmount);
96
+ }
97
+ }
98
+ return {
99
+ signUpTree,
100
+ publicKeys,
101
+ };
102
+ };
103
+ exports.generateSignUpTreeWithEndKey = generateSignUpTreeWithEndKey;
104
+ /**
105
+ * Generate a sign up tree from the public keys
106
+ * @param publicKeys - the public keys to generate the sign up tree from
107
+ * @returns the sign up tree
108
+ */
109
+ const generateSignUpTreeFromKeys = (publicKeys) => {
110
+ const signUpTree = new lean_imt_1.LeanIMT(crypto_1.hashLeanIMT);
111
+ publicKeys.forEach((key) => {
112
+ signUpTree.insert(key.hash());
113
+ });
114
+ return signUpTree;
115
+ };
116
+ exports.generateSignUpTreeFromKeys = generateSignUpTreeFromKeys;
56
117
  //# sourceMappingURL=stateTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stateTree.js","sourceRoot":"","sources":["../../../ts/trees/stateTree.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAyC;AACzC,8EAAwF;AACxF,kDAAiF;AACjF,0DAAmD;AACnD,+CAAgE;AAEhE,oDAA4B;AAI5B,0CAAuC;AAEvC;;;;;;;;;GASG;AACI,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACvC,QAAQ,EACR,OAAO,EACP,SAAS,GAAG,CAAC,EACb,gBAAgB,GAAG,EAAE,EACrB,QAAQ,EACR,WAAW,GACa,EAAgC,EAAE;IAC1D,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IAEhE,MAAM,YAAY,GAAG,+BAAW,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,kBAAO,CAAC,oBAAkC,CAAC,CAAC;IACnE,UAAU,CAAC,MAAM,CAAC,qBAAY,CAAC,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,oDAAoD;IACpD,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAClE,gFAAgF;QAChF,gCAAgC;QAChC,MAAM,OAAO,GAAG,CAAC,GAAG,gBAAgB,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;QAErF,4CAA4C;QAC5C,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7F,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAA,gBAAM,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;YACxC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;YAExC,MAAM,MAAM,GAAG,IAAI,mBAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAE9C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,UAAU,CAAC,MAAM,CAAC,IAAA,sBAAa,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,EAAE,CAAC;YAChB,4CAA4C;YAC5C,MAAM,IAAA,aAAK,EAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU;QACV,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AA5CW,QAAA,kBAAkB,sBA4C7B"}
1
+ {"version":3,"file":"stateTree.js","sourceRoot":"","sources":["../../../ts/trees/stateTree.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PubKey } from "@maci-protocol/domainobjs";
1
+ import type { PublicKey } from "@maci-protocol/domainobjs";
2
2
  import type { LeanIMT } from "@zk-kit/lean-imt";
3
3
  import type { Provider } from "ethers";
4
4
  /**
@@ -30,6 +30,15 @@ export interface IGenerateSignUpTreeArgs {
30
30
  */
31
31
  sleepAmount?: number;
32
32
  }
33
+ /**
34
+ * An interface that represents arguments of generation sign up tree which stops fetching at a given public key
35
+ */
36
+ export interface IGenerateSignUpTreeWithEndKeyArgs extends IGenerateSignUpTreeArgs {
37
+ /**
38
+ * The public key of the user
39
+ */
40
+ userPublicKey: PublicKey;
41
+ }
33
42
  /**
34
43
  * An interface that represents sign up tree and state leaves
35
44
  */
@@ -41,6 +50,6 @@ export interface IGenerateSignUpTree {
41
50
  /**
42
51
  * State leaves
43
52
  */
44
- pubKeys: PubKey[];
53
+ publicKeys: PublicKey[];
45
54
  }
46
55
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/trees/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/trees/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iCAAkC,SAAQ,uBAAuB;IAChF;;OAEG;IACH,aAAa,EAAE,SAAS,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB"}
@@ -1,5 +1,5 @@
1
1
  export { joinPoll } from "./joinPoll";
2
2
  export { getSignedupUserData, signup, hasUserSignedUp } from "./signup";
3
- export { getJoinedUserData, hasUserJoinedPoll } from "./utils";
4
- export type { IJoinedUserArgs, IIsRegisteredUser, IIsJoinedUser, ISignupArgs, IRegisteredUserArgs, IPollJoinedCircuitInputs, IPollJoiningCircuitInputs, IJoinPollArgs, IIsNullifierOnChainArgs, IGetPollJoiningCircuitEventsArgs, IGetPollJoiningCircuitInputsFromStateFileArgs, IJoinPollData, IParsePollJoinEventsArgs, IParseSignupEventsArgs, ISignupData, IHasUserSignedUpArgs, } from "./types";
3
+ export { getJoinedUserData, hasUserJoinedPoll, generateMaciStateTree, generateMaciStateTreeWithEndKey, getPollJoiningCircuitEvents, joiningCircuitInputs, } from "./utils";
4
+ export type { IJoinedUserArgs, IIsRegisteredUser, IIsJoinedUser, ISignupArgs, IRegisteredUserArgs, IPollJoinedCircuitInputs, IPollJoiningCircuitInputs, IJoinPollArgs, IIsNullifierOnChainArgs, IGetPollJoiningCircuitEventsArgs, IGetPollJoiningCircuitInputsFromStateFileArgs, IJoinPollData, IParsePollJoinEventsArgs, IParseSignupEventsArgs, ISignupData, IHasUserSignedUpArgs, IGenerateMaciStateTreeArgs, IGenerateMaciStateTreeWithEndKeyArgs, } from "./types";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ts/user/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC/D,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,aAAa,EACb,uBAAuB,EACvB,gCAAgC,EAChC,6CAA6C,EAC7C,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ts/user/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,+BAA+B,EAC/B,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,aAAa,EACb,uBAAuB,EACvB,gCAAgC,EAChC,6CAA6C,EAC7C,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,oBAAoB,EACpB,0BAA0B,EAC1B,oCAAoC,GACrC,MAAM,SAAS,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasUserJoinedPoll = exports.getJoinedUserData = exports.hasUserSignedUp = exports.signup = exports.getSignedupUserData = exports.joinPoll = void 0;
3
+ exports.joiningCircuitInputs = exports.getPollJoiningCircuitEvents = exports.generateMaciStateTreeWithEndKey = exports.generateMaciStateTree = exports.hasUserJoinedPoll = exports.getJoinedUserData = exports.hasUserSignedUp = exports.signup = exports.getSignedupUserData = exports.joinPoll = void 0;
4
4
  var joinPoll_1 = require("./joinPoll");
5
5
  Object.defineProperty(exports, "joinPoll", { enumerable: true, get: function () { return joinPoll_1.joinPoll; } });
6
6
  var signup_1 = require("./signup");
@@ -10,4 +10,8 @@ Object.defineProperty(exports, "hasUserSignedUp", { enumerable: true, get: funct
10
10
  var utils_1 = require("./utils");
11
11
  Object.defineProperty(exports, "getJoinedUserData", { enumerable: true, get: function () { return utils_1.getJoinedUserData; } });
12
12
  Object.defineProperty(exports, "hasUserJoinedPoll", { enumerable: true, get: function () { return utils_1.hasUserJoinedPoll; } });
13
+ Object.defineProperty(exports, "generateMaciStateTree", { enumerable: true, get: function () { return utils_1.generateMaciStateTree; } });
14
+ Object.defineProperty(exports, "generateMaciStateTreeWithEndKey", { enumerable: true, get: function () { return utils_1.generateMaciStateTreeWithEndKey; } });
15
+ Object.defineProperty(exports, "getPollJoiningCircuitEvents", { enumerable: true, get: function () { return utils_1.getPollJoiningCircuitEvents; } });
16
+ Object.defineProperty(exports, "joiningCircuitInputs", { enumerable: true, get: function () { return utils_1.joiningCircuitInputs; } });
13
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/user/index.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,mCAAwE;AAA/D,6GAAA,mBAAmB,OAAA;AAAE,gGAAA,MAAM,OAAA;AAAE,yGAAA,eAAe,OAAA;AACrD,iCAA+D;AAAtD,0GAAA,iBAAiB,OAAA;AAAE,0GAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/user/index.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,mCAAwE;AAA/D,6GAAA,mBAAmB,OAAA;AAAE,gGAAA,MAAM,OAAA;AAAE,yGAAA,eAAe,OAAA;AACrD,iCAOiB;AANf,0GAAA,iBAAiB,OAAA;AACjB,0GAAA,iBAAiB,OAAA;AACjB,8GAAA,qBAAqB,OAAA;AACrB,wHAAA,+BAA+B,OAAA;AAC/B,oHAAA,2BAA2B,OAAA;AAC3B,6GAAA,oBAAoB,OAAA"}
@@ -4,5 +4,5 @@ import type { IJoinPollData, IJoinPollArgs } from "./types";
4
4
  * @param {IJoinPollArgs} args - The arguments for the join poll command
5
5
  * @returns {IJoinPollData} The poll state index of the joined user and transaction hash
6
6
  */
7
- export declare const joinPoll: ({ maciAddress, privateKey, stateFile, pollId, signer, startBlock, endBlock, blocksPerBatch, pollJoiningZkey, useWasm, rapidsnark, pollWitgen, pollWasm, sgDataArg, ivcpDataArg, }: IJoinPollArgs) => Promise<IJoinPollData>;
7
+ export declare const joinPoll: ({ maciAddress, privateKey, stateFile, pollId, signer, startBlock, endBlock, blocksPerBatch, pollJoiningZkey, useWasm, rapidsnark, pollWitnessGenerator, pollWasm, sgDataArg, ivcpDataArg, }: IJoinPollArgs) => Promise<IJoinPollData>;
8
8
  //# sourceMappingURL=joinPoll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"joinPoll.d.ts","sourceRoot":"","sources":["../../../ts/user/joinPoll.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ5D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAU,mLAgB5B,aAAa,KAAG,OAAO,CAAC,aAAa,CA4FvC,CAAC"}
1
+ {"version":3,"file":"joinPoll.d.ts","sourceRoot":"","sources":["../../../ts/user/joinPoll.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ5D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAU,6LAgB5B,aAAa,KAAG,OAAO,CAAC,aAAa,CAmGvC,CAAC"}
@@ -13,20 +13,20 @@ const utils_1 = require("./utils");
13
13
  * @param {IJoinPollArgs} args - The arguments for the join poll command
14
14
  * @returns {IJoinPollData} The poll state index of the joined user and transaction hash
15
15
  */
16
- const joinPoll = async ({ maciAddress, privateKey, stateFile, pollId, signer, startBlock, endBlock, blocksPerBatch, pollJoiningZkey, useWasm, rapidsnark, pollWitgen, pollWasm, sgDataArg, ivcpDataArg, }) => {
16
+ const joinPoll = async ({ maciAddress, privateKey, stateFile, pollId, signer, startBlock, endBlock, blocksPerBatch, pollJoiningZkey, useWasm, rapidsnark, pollWitnessGenerator, pollWasm, sgDataArg, ivcpDataArg, }) => {
17
17
  const validContract = await (0, contracts_1.contractExists)(signer.provider, maciAddress);
18
18
  if (!validContract) {
19
19
  throw new Error("MACI contract does not exist");
20
20
  }
21
- if (!domainobjs_1.PrivKey.isValidSerializedPrivKey(privateKey)) {
21
+ if (!domainobjs_1.PrivateKey.isValidSerialized(privateKey)) {
22
22
  throw new Error("Invalid MACI private key");
23
23
  }
24
24
  if (pollId < 0) {
25
25
  throw new Error("Invalid poll id");
26
26
  }
27
- const userMaciPrivKey = domainobjs_1.PrivKey.deserialize(privateKey);
28
- const userMaciPubKey = new domainobjs_1.Keypair(userMaciPrivKey).pubKey;
29
- const nullifier = (0, crypto_1.poseidon)([BigInt(userMaciPrivKey.asCircuitInputs()), pollId]);
27
+ const userMaciPrivateKey = domainobjs_1.PrivateKey.deserialize(privateKey);
28
+ const userMaciPublicKey = new domainobjs_1.Keypair(userMaciPrivateKey).publicKey;
29
+ const nullifier = (0, crypto_1.poseidon)([BigInt(userMaciPrivateKey.asCircuitInputs()), pollId]);
30
30
  // check if the user has already joined the poll based on the nullifier
31
31
  const hasUserJoinedAlready = await (0, utils_1.hasUserJoinedPoll)({
32
32
  maciAddress,
@@ -41,14 +41,14 @@ const joinPoll = async ({ maciAddress, privateKey, stateFile, pollId, signer, st
41
41
  const pollContracts = await maciContract.getPoll(pollId);
42
42
  const pollContract = typechain_types_1.Poll__factory.connect(pollContracts.poll, signer);
43
43
  // get the state index from the MACI contract
44
- const stateIndex = await maciContract.getStateIndex(userMaciPubKey.hash()).catch(() => -1n);
44
+ const stateIndex = await maciContract.getStateIndex(userMaciPublicKey.hash()).catch(() => -1n);
45
45
  let circuitInputs;
46
46
  if (stateFile) {
47
47
  circuitInputs = await (0, utils_1.getPollJoiningCircuitInputsFromStateFile)({
48
48
  stateFile,
49
49
  pollId,
50
50
  stateIndex,
51
- userMaciPrivKey,
51
+ userMaciPrivateKey,
52
52
  });
53
53
  }
54
54
  else {
@@ -56,18 +56,18 @@ const joinPoll = async ({ maciAddress, privateKey, stateFile, pollId, signer, st
56
56
  maciContract,
57
57
  stateIndex,
58
58
  pollId,
59
- userMaciPrivKey,
59
+ userMaciPrivateKey,
60
60
  signer,
61
61
  startBlock,
62
62
  endBlock,
63
63
  blocksPerBatch,
64
64
  });
65
65
  }
66
- const currentStateRootIndex = Number.parseInt((await maciContract.numSignUps()).toString(), 10) - 1;
66
+ const currentStateRootIndex = Number.parseInt((await maciContract.totalSignups()).toString(), 10) - 1;
67
67
  // generate the proof for this batch
68
- const proof = await (0, proofs_1.generateAndVerifyProof)(circuitInputs, pollJoiningZkey, useWasm, rapidsnark, pollWitgen, pollWasm);
68
+ const proof = await (0, proofs_1.generateAndVerifyProof)(circuitInputs, pollJoiningZkey, useWasm, rapidsnark, pollWitnessGenerator, pollWasm);
69
69
  // submit the message onchain as well as the encryption public key
70
- const tx = await pollContract.joinPoll(nullifier, userMaciPubKey.asContractParam(), currentStateRootIndex, proof, sgDataArg, ivcpDataArg);
70
+ const tx = await pollContract.joinPoll(nullifier, userMaciPublicKey.asContractParam(), currentStateRootIndex, proof, sgDataArg, ivcpDataArg);
71
71
  const receipt = await tx.wait();
72
72
  if (receipt?.status !== 1) {
73
73
  throw new Error("Transaction failed");
@@ -1 +1 @@
1
- {"version":3,"file":"joinPoll.js","sourceRoot":"","sources":["../../../ts/user/joinPoll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"joinPoll.js","sourceRoot":"","sources":["../../../ts/user/joinPoll.ts"],"names":[],"mappings":"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"}
@@ -4,17 +4,17 @@ import type { IIsRegisteredUser, ISignupArgs, ISignupData, IRegisteredUserArgs,
4
4
  * @param IRegisteredArgs - The arguments for the check register command
5
5
  * @returns whether the user is registered or not and their state index
6
6
  */
7
- export declare const getSignedupUserData: ({ maciAddress, maciPubKey, signer, startBlock, }: IRegisteredUserArgs) => Promise<IIsRegisteredUser>;
7
+ export declare const getSignedupUserData: ({ maciAddress, maciPublicKey, signer, }: IRegisteredUserArgs) => Promise<IIsRegisteredUser>;
8
8
  /**
9
9
  * Signup a user to the MACI contract
10
10
  * @param {SignupArgs} args - The arguments for the signup command
11
11
  * @returns {ISignupData} The state index of the user and transaction hash
12
12
  */
13
- export declare const signup: ({ maciPubKey, maciAddress, sgData, signer }: ISignupArgs) => Promise<ISignupData>;
13
+ export declare const signup: ({ maciPublicKey, maciAddress, sgData, signer }: ISignupArgs) => Promise<ISignupData>;
14
14
  /**
15
15
  * Checks if a user is signed up with a given public key
16
16
  * @param {IIsSignedUpArgs} args - The arguments for the is signed up command
17
17
  * @returns {boolean} Whether the user is signed up or not
18
18
  */
19
- export declare const hasUserSignedUp: ({ maciAddress, maciPubKey, signer }: IHasUserSignedUpArgs) => Promise<boolean>;
19
+ export declare const hasUserSignedUp: ({ maciAddress, maciPublicKey, signer, }: IHasUserSignedUpArgs) => Promise<boolean>;
20
20
  //# sourceMappingURL=signup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../ts/user/signup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAMtH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAU,kDAKvC,mBAAmB,KAAG,OAAO,CAAC,iBAAiB,CAiBjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAU,6CAA6C,WAAW,KAAG,OAAO,CAAC,WAAW,CA6C1G,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAU,qCAAqC,oBAAoB,KAAG,OAAO,CAAC,OAAO,CAMhH,CAAC"}
1
+ {"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../ts/user/signup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAItH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAU,yCAIvC,mBAAmB,KAAG,OAAO,CAAC,iBAAiB,CAsBjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAU,gDAAgD,WAAW,KAAG,OAAO,CAAC,WAAW,CA6C7G,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAU,yCAInC,oBAAoB,KAAG,OAAO,CAAC,OAAO,CAMxC,CAAC"}
@@ -5,27 +5,32 @@ const typechain_types_1 = require("@maci-protocol/contracts/typechain-types");
5
5
  const domainobjs_1 = require("@maci-protocol/domainobjs");
6
6
  const ethers_1 = require("ethers");
7
7
  const contracts_1 = require("../utils/contracts");
8
- const utils_1 = require("./utils");
9
8
  /**
10
9
  * Checks if user is registered with a given public key and get its data
11
10
  * @param IRegisteredArgs - The arguments for the check register command
12
11
  * @returns whether the user is registered or not and their state index
13
12
  */
14
- const getSignedupUserData = async ({ maciAddress, maciPubKey, signer, startBlock, }) => {
13
+ const getSignedupUserData = async ({ maciAddress, maciPublicKey, signer, }) => {
15
14
  const maciContract = typechain_types_1.MACI__factory.connect(maciAddress, signer);
16
- const publicKey = domainobjs_1.PubKey.deserialize(maciPubKey);
17
- const startBlockNumber = startBlock || 0;
18
- const currentBlock = await signer.provider.getBlockNumber();
19
- const { stateIndex } = await (0, utils_1.parseSignupEvents)({
20
- maciContract,
21
- startBlock: startBlockNumber,
22
- currentBlock,
23
- publicKey,
24
- });
25
- return {
26
- isRegistered: stateIndex !== undefined,
27
- stateIndex,
28
- };
15
+ const publicKey = domainobjs_1.PublicKey.deserialize(maciPublicKey);
16
+ try {
17
+ const stateIndex = await maciContract.getStateIndex(publicKey.hash());
18
+ return {
19
+ isRegistered: stateIndex !== 0n, // 0 index is reserved for deleted leaves
20
+ stateIndex: String(stateIndex),
21
+ };
22
+ }
23
+ catch (error) {
24
+ // Check if this is a "UserNotSignedUp" maci contract error
25
+ if (error instanceof Error && error.message.includes("UserNotSignedUp()")) {
26
+ return {
27
+ isRegistered: false,
28
+ stateIndex: undefined,
29
+ };
30
+ }
31
+ // If it's a different error, rethrow it
32
+ throw error;
33
+ }
29
34
  };
30
35
  exports.getSignedupUserData = getSignedupUserData;
31
36
  /**
@@ -33,12 +38,12 @@ exports.getSignedupUserData = getSignedupUserData;
33
38
  * @param {SignupArgs} args - The arguments for the signup command
34
39
  * @returns {ISignupData} The state index of the user and transaction hash
35
40
  */
36
- const signup = async ({ maciPubKey, maciAddress, sgData, signer }) => {
41
+ const signup = async ({ maciPublicKey, maciAddress, sgData, signer }) => {
37
42
  // validate user key
38
- if (!domainobjs_1.PubKey.isValidSerializedPubKey(maciPubKey)) {
43
+ if (!domainobjs_1.PublicKey.isValidSerialized(maciPublicKey)) {
39
44
  throw new Error("Invalid MACI public key");
40
45
  }
41
- const userMaciPubKey = domainobjs_1.PubKey.deserialize(maciPubKey);
46
+ const userMaciPublicKey = domainobjs_1.PublicKey.deserialize(maciPublicKey);
42
47
  const validContract = await (0, contracts_1.contractExists)(signer.provider, maciAddress);
43
48
  if (!validContract) {
44
49
  throw new Error("There is no contract deployed at the specified address");
@@ -51,7 +56,7 @@ const signup = async ({ maciPubKey, maciAddress, sgData, signer }) => {
51
56
  let stateIndex = "";
52
57
  let receipt = null;
53
58
  // sign up to the MACI contract
54
- const tx = await maciContract.signUp(userMaciPubKey.asContractParam(), sgData);
59
+ const tx = await maciContract.signUp(userMaciPublicKey.asContractParam(), sgData);
55
60
  receipt = await tx.wait();
56
61
  if (receipt?.status !== 1) {
57
62
  throw new Error("The transaction failed");
@@ -70,9 +75,9 @@ exports.signup = signup;
70
75
  * @param {IIsSignedUpArgs} args - The arguments for the is signed up command
71
76
  * @returns {boolean} Whether the user is signed up or not
72
77
  */
73
- const hasUserSignedUp = async ({ maciAddress, maciPubKey, signer }) => {
78
+ const hasUserSignedUp = async ({ maciAddress, maciPublicKey, signer, }) => {
74
79
  const maciContract = typechain_types_1.MACI__factory.connect(maciAddress, signer);
75
- const stateIndex = await maciContract.getStateIndex(domainobjs_1.PubKey.deserialize(maciPubKey).hash());
80
+ const stateIndex = await maciContract.getStateIndex(domainobjs_1.PublicKey.deserialize(maciPublicKey).hash());
76
81
  return stateIndex !== 0n;
77
82
  };
78
83
  exports.hasUserSignedUp = hasUserSignedUp;
@@ -1 +1 @@
1
- {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../ts/user/signup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../ts/user/signup.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import { LeanIMTMerkleProof } from "@zk-kit/lean-imt";
1
2
  import type { MACI, Poll } from "@maci-protocol/contracts/typechain-types";
2
- import type { PrivKey, PubKey } from "@maci-protocol/domainobjs";
3
+ import type { PrivateKey, PublicKey } from "@maci-protocol/domainobjs";
3
4
  import type { Signer } from "ethers";
4
5
  /**
5
6
  * Interface for the arguments to the isJoinedUser command
@@ -16,7 +17,7 @@ export interface IJoinedUserArgs {
16
17
  /**
17
18
  * Poll public key for the poll
18
19
  */
19
- pollPubKey: string;
20
+ pollPublicKey: string;
20
21
  /**
21
22
  * A signer object
22
23
  */
@@ -63,7 +64,7 @@ export interface ISignupArgs {
63
64
  /**
64
65
  * The public key of the user
65
66
  */
66
- maciPubKey: string;
67
+ maciPublicKey: string;
67
68
  /**
68
69
  * A signer object
69
70
  */
@@ -101,7 +102,7 @@ export interface IRegisteredUserArgs {
101
102
  /**
102
103
  * The public key of the user
103
104
  */
104
- maciPubKey: string;
105
+ maciPublicKey: string;
105
106
  /**
106
107
  * The address of the MACI contract
107
108
  */
@@ -130,7 +131,7 @@ export interface IParsePollJoinEventsArgs {
130
131
  /**
131
132
  * The public key
132
133
  */
133
- pollPublicKey: PubKey;
134
+ pollPublicKey: PublicKey;
134
135
  }
135
136
  /**
136
137
  * Interface for the arguments to the parseSignupEvents function
@@ -151,7 +152,7 @@ export interface IParseSignupEventsArgs {
151
152
  /**
152
153
  * The public key
153
154
  */
154
- publicKey: PubKey;
155
+ publicKey: PublicKey;
155
156
  }
156
157
  /**
157
158
  * An interface describing the circuit inputs to the PollJoining circuit
@@ -160,11 +161,11 @@ export interface IPollJoiningCircuitInputs {
160
161
  /**
161
162
  * The private key
162
163
  */
163
- privKey: string;
164
+ privateKey: string;
164
165
  /**
165
166
  * The poll public key
166
167
  */
167
- pollPubKey: string[];
168
+ pollPublicKey: string[];
168
169
  /**
169
170
  * The state leaf
170
171
  */
@@ -201,7 +202,7 @@ export interface IPollJoinedCircuitInputs {
201
202
  /**
202
203
  * The private key
203
204
  */
204
- privKey: string;
205
+ privateKey: string;
205
206
  /**
206
207
  * The voice credits balance
207
208
  */
@@ -244,11 +245,7 @@ export interface IJoinPollArgs {
244
245
  */
245
246
  pollId: bigint;
246
247
  /**
247
- * The index of the public key in the state tree
248
- */
249
- stateIndex?: bigint;
250
- /**
251
- * Path to the state file with MACI state
248
+ * Path to the state file with MACI state. Not available in the browser's SDK
252
249
  */
253
250
  stateFile?: string;
254
251
  /**
@@ -280,9 +277,9 @@ export interface IJoinPollArgs {
280
277
  */
281
278
  rapidsnark?: string;
282
279
  /**
283
- * The path to the poll witnessgen binary
280
+ * The path to the poll witness generator binary
284
281
  */
285
- pollWitgen?: string;
282
+ pollWitnessGenerator?: string;
286
283
  /**
287
284
  * The path to the poll wasm file
288
285
  */
@@ -296,6 +293,19 @@ export interface IJoinPollArgs {
296
293
  */
297
294
  ivcpDataArg: string;
298
295
  }
296
+ /**
297
+ * Interface for the arguments to the joinPoll command for the browser
298
+ */
299
+ export interface IJoinPollBrowserArgs extends IJoinPollArgs {
300
+ /**
301
+ * Whether to use of not the latest state index
302
+ */
303
+ useLatestStateIndex?: boolean;
304
+ /**
305
+ * The inclusion proof
306
+ */
307
+ inclusionProof?: LeanIMTMerkleProof;
308
+ }
299
309
  /**
300
310
  * Interface for the return data to the joinPoll command
301
311
  */
@@ -338,6 +348,40 @@ export interface IIsNullifierOnChainArgs {
338
348
  */
339
349
  signer: Signer;
340
350
  }
351
+ /**
352
+ * Arguments for IGenerateMaciStateTreeArgs
353
+ */
354
+ export interface IGenerateMaciStateTreeArgs {
355
+ /**
356
+ * The MACI contract address
357
+ */
358
+ maciContractAddress: string;
359
+ /**
360
+ * The signer
361
+ */
362
+ signer: Signer;
363
+ /**
364
+ * The start block
365
+ */
366
+ startBlock?: number;
367
+ /**
368
+ * The end block
369
+ */
370
+ endBlock?: number;
371
+ /**
372
+ * The blocks per batch
373
+ */
374
+ blocksPerBatch?: number;
375
+ }
376
+ /**
377
+ * Arguments for IGenerateMaciStateTreeWithEndKeyArgs
378
+ */
379
+ export interface IGenerateMaciStateTreeWithEndKeyArgs extends IGenerateMaciStateTreeArgs {
380
+ /**
381
+ * The public key of the user
382
+ */
383
+ userPublicKey: PublicKey;
384
+ }
341
385
  /**
342
386
  * Arguments for getPollJoiningCircuitEvents
343
387
  */
@@ -357,7 +401,7 @@ export interface IGetPollJoiningCircuitEventsArgs {
357
401
  /**
358
402
  * The user's maci private key
359
403
  */
360
- userMaciPrivKey: PrivKey;
404
+ userMaciPrivateKey: PrivateKey;
361
405
  /**
362
406
  * The signer
363
407
  */
@@ -394,7 +438,7 @@ export interface IGetPollJoiningCircuitInputsFromStateFileArgs {
394
438
  /**
395
439
  * The user's maci private key
396
440
  */
397
- userMaciPrivKey: PrivKey;
441
+ userMaciPrivateKey: PrivateKey;
398
442
  }
399
443
  /**
400
444
  * Interface for the arguments for the is signed up command
@@ -407,7 +451,7 @@ export interface IHasUserSignedUpArgs {
407
451
  /**
408
452
  * The public key of the user
409
453
  */
410
- maciPubKey: string;
454
+ maciPublicKey: string;
411
455
  /**
412
456
  * The signer to use for the transaction
413
457
  */