@maci-protocol/sdk 0.0.0-ci.b4e6be4 → 0.0.0-ci.b6437c0

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 (179) hide show
  1. package/LICENSE +1 -2
  2. package/build/package.json +13 -4
  3. package/build/ts/browser/index.d.ts +5 -7
  4. package/build/ts/browser/index.d.ts.map +1 -1
  5. package/build/ts/browser/index.js +11 -20
  6. package/build/ts/browser/index.js.map +1 -1
  7. package/build/ts/browser/joinPoll.d.ts +8 -0
  8. package/build/ts/browser/joinPoll.d.ts.map +1 -0
  9. package/build/ts/browser/joinPoll.js +88 -0
  10. package/build/ts/browser/joinPoll.js.map +1 -0
  11. package/build/ts/browser/utils.d.ts +18 -0
  12. package/build/ts/browser/utils.d.ts.map +1 -0
  13. package/build/ts/browser/utils.js +37 -0
  14. package/build/ts/browser/utils.js.map +1 -0
  15. package/build/ts/deploy/index.d.ts +3 -2
  16. package/build/ts/deploy/index.d.ts.map +1 -1
  17. package/build/ts/deploy/index.js +5 -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 +18 -11
  24. package/build/ts/deploy/poll.js.map +1 -1
  25. package/build/ts/deploy/types.d.ts +18 -6
  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 +1 -1
  34. package/build/ts/index.d.ts.map +1 -1
  35. package/build/ts/index.js +25 -8
  36. package/build/ts/index.js.map +1 -1
  37. package/build/ts/maci/policy.d.ts +13 -1
  38. package/build/ts/maci/policy.d.ts.map +1 -1
  39. package/build/ts/maci/policy.js +41 -2
  40. package/build/ts/maci/policy.js.map +1 -1
  41. package/build/ts/maci/state.d.ts +1 -1
  42. package/build/ts/maci/state.js +11 -11
  43. package/build/ts/maci/state.js.map +1 -1
  44. package/build/ts/maci/types.d.ts +34 -2
  45. package/build/ts/maci/types.d.ts.map +1 -1
  46. package/build/ts/maci/types.js +2 -0
  47. package/build/ts/maci/types.js.map +1 -1
  48. package/build/ts/maciKeys/__tests__/keypair.test.js +7 -7
  49. package/build/ts/maciKeys/__tests__/keypair.test.js.map +1 -1
  50. package/build/ts/maciKeys/__tests__/publicKeys.test.js +7 -7
  51. package/build/ts/maciKeys/__tests__/publicKeys.test.js.map +1 -1
  52. package/build/ts/maciKeys/keypair.js +3 -3
  53. package/build/ts/maciKeys/keypair.js.map +1 -1
  54. package/build/ts/maciKeys/publicKeys.d.ts +2 -2
  55. package/build/ts/maciKeys/publicKeys.d.ts.map +1 -1
  56. package/build/ts/maciKeys/publicKeys.js +6 -6
  57. package/build/ts/maciKeys/publicKeys.js.map +1 -1
  58. package/build/ts/poll/poll.js +4 -4
  59. package/build/ts/poll/poll.js.map +1 -1
  60. package/build/ts/poll/types.d.ts +5 -6
  61. package/build/ts/poll/types.d.ts.map +1 -1
  62. package/build/ts/poll/utils.js +3 -3
  63. package/build/ts/poll/utils.js.map +1 -1
  64. package/build/ts/proof/__tests__/download.test.js +3 -3
  65. package/build/ts/proof/__tests__/download.test.js.map +1 -1
  66. package/build/ts/proof/generate.d.ts +1 -1
  67. package/build/ts/proof/generate.js +6 -6
  68. package/build/ts/proof/generate.js.map +1 -1
  69. package/build/ts/proof/prove.js +14 -14
  70. package/build/ts/proof/prove.js.map +1 -1
  71. package/build/ts/proof/types.d.ts +4 -4
  72. package/build/ts/proof/types.d.ts.map +1 -1
  73. package/build/ts/relayer/__tests__/messages.test.js +1 -1
  74. package/build/ts/relayer/__tests__/messages.test.js.map +1 -1
  75. package/build/ts/relayer/__tests__/utils.test.js +3 -3
  76. package/build/ts/relayer/__tests__/utils.test.js.map +1 -1
  77. package/build/ts/relayer/messages.js +1 -1
  78. package/build/ts/relayer/utils.js +4 -4
  79. package/build/ts/relayer/utils.js.map +1 -1
  80. package/build/ts/tally/commitments.js +2 -2
  81. package/build/ts/tally/commitments.js.map +1 -1
  82. package/build/ts/tally/index.d.ts +2 -1
  83. package/build/ts/tally/index.d.ts.map +1 -1
  84. package/build/ts/tally/index.js +4 -1
  85. package/build/ts/tally/index.js.map +1 -1
  86. package/build/ts/tally/results.d.ts +14 -0
  87. package/build/ts/tally/results.d.ts.map +1 -0
  88. package/build/ts/tally/results.js +44 -0
  89. package/build/ts/tally/results.js.map +1 -0
  90. package/build/ts/tally/types.d.ts +33 -7
  91. package/build/ts/tally/types.d.ts.map +1 -1
  92. package/build/ts/tally/utils.js +3 -3
  93. package/build/ts/tally/utils.js.map +1 -1
  94. package/build/ts/tally/verification.d.ts +1 -1
  95. package/build/ts/tally/verification.d.ts.map +1 -1
  96. package/build/ts/tally/verification.js +4 -4
  97. package/build/ts/tally/verification.js.map +1 -1
  98. package/build/ts/trees/stateTree.js +14 -11
  99. package/build/ts/trees/stateTree.js.map +1 -1
  100. package/build/ts/trees/types.d.ts +2 -2
  101. package/build/ts/trees/types.d.ts.map +1 -1
  102. package/build/ts/user/index.d.ts +3 -1
  103. package/build/ts/user/index.d.ts.map +1 -1
  104. package/build/ts/user/index.js +10 -8
  105. package/build/ts/user/index.js.map +1 -1
  106. package/build/ts/user/joinPoll.d.ts +8 -0
  107. package/build/ts/user/joinPoll.d.ts.map +1 -0
  108. package/build/ts/user/joinPoll.js +84 -0
  109. package/build/ts/user/joinPoll.js.map +1 -0
  110. package/build/ts/user/signup.d.ts +20 -0
  111. package/build/ts/user/signup.d.ts.map +1 -0
  112. package/build/ts/user/signup.js +79 -0
  113. package/build/ts/user/signup.js.map +1 -0
  114. package/build/ts/user/types.d.ts +12 -20
  115. package/build/ts/user/types.d.ts.map +1 -1
  116. package/build/ts/user/utils.d.ts +29 -13
  117. package/build/ts/user/utils.d.ts.map +1 -1
  118. package/build/ts/user/utils.js +66 -28
  119. package/build/ts/user/utils.js.map +1 -1
  120. package/build/ts/utils/proofs.d.ts +2 -2
  121. package/build/ts/utils/proofs.d.ts.map +1 -1
  122. package/build/ts/utils/proofs.js +4 -4
  123. package/build/ts/utils/proofs.js.map +1 -1
  124. package/build/ts/utils/types.d.ts +1 -1
  125. package/build/ts/utils/types.d.ts.map +1 -1
  126. package/build/ts/utils/utils.d.ts +8 -0
  127. package/build/ts/utils/utils.d.ts.map +1 -1
  128. package/build/ts/utils/utils.js +14 -1
  129. package/build/ts/utils/utils.js.map +1 -1
  130. package/build/ts/verifyingKeys/checkVerifyingKeys.d.ts +1 -1
  131. package/build/ts/verifyingKeys/checkVerifyingKeys.d.ts.map +1 -1
  132. package/build/ts/verifyingKeys/checkVerifyingKeys.js +13 -13
  133. package/build/ts/verifyingKeys/checkVerifyingKeys.js.map +1 -1
  134. package/build/ts/verifyingKeys/index.d.ts +2 -2
  135. package/build/ts/verifyingKeys/index.d.ts.map +1 -1
  136. package/build/ts/verifyingKeys/index.js +5 -5
  137. package/build/ts/verifyingKeys/index.js.map +1 -1
  138. package/build/ts/verifyingKeys/setVerifyingKeys.d.ts +1 -1
  139. package/build/ts/verifyingKeys/setVerifyingKeys.d.ts.map +1 -1
  140. package/build/ts/verifyingKeys/setVerifyingKeys.js +44 -33
  141. package/build/ts/verifyingKeys/setVerifyingKeys.js.map +1 -1
  142. package/build/ts/verifyingKeys/types.d.ts +36 -32
  143. package/build/ts/verifyingKeys/types.d.ts.map +1 -1
  144. package/build/ts/verifyingKeys/utils.d.ts +10 -10
  145. package/build/ts/verifyingKeys/utils.d.ts.map +1 -1
  146. package/build/ts/verifyingKeys/utils.js +74 -60
  147. package/build/ts/verifyingKeys/utils.js.map +1 -1
  148. package/build/ts/vote/generate.d.ts +1 -1
  149. package/build/ts/vote/generate.d.ts.map +1 -1
  150. package/build/ts/vote/generate.js +4 -4
  151. package/build/ts/vote/generate.js.map +1 -1
  152. package/build/ts/vote/index.d.ts +1 -1
  153. package/build/ts/vote/index.d.ts.map +1 -1
  154. package/build/ts/vote/index.js +2 -2
  155. package/build/ts/vote/index.js.map +1 -1
  156. package/build/ts/vote/invalidate.js +3 -3
  157. package/build/ts/vote/invalidate.js.map +1 -1
  158. package/build/ts/vote/publish.d.ts +1 -1
  159. package/build/ts/vote/publish.d.ts.map +1 -1
  160. package/build/ts/vote/publish.js +19 -19
  161. package/build/ts/vote/publish.js.map +1 -1
  162. package/build/ts/vote/submit.js +5 -5
  163. package/build/ts/vote/submit.js.map +1 -1
  164. package/build/ts/vote/types.d.ts +6 -6
  165. package/build/ts/vote/types.d.ts.map +1 -1
  166. package/build/ts/vote/utils.d.ts +2 -2
  167. package/build/ts/vote/utils.d.ts.map +1 -1
  168. package/build/ts/vote/utils.js +7 -7
  169. package/build/ts/vote/utils.js.map +1 -1
  170. package/build/tsconfig.build.tsbuildinfo +1 -1
  171. package/package.json +19 -10
  172. package/build/ts/deploy/vkRegistry.d.ts +0 -7
  173. package/build/ts/deploy/vkRegistry.d.ts.map +0 -1
  174. package/build/ts/deploy/vkRegistry.js +0 -14
  175. package/build/ts/deploy/vkRegistry.js.map +0 -1
  176. package/build/ts/user/user.d.ts +0 -42
  177. package/build/ts/user/user.d.ts.map +0 -1
  178. package/build/ts/user/user.js +0 -192
  179. package/build/ts/user/user.js.map +0 -1
@@ -67,19 +67,19 @@ export interface ITallyData {
67
67
  commitment: string;
68
68
  };
69
69
  /**
70
- * The per VO spent voice credits.
70
+ * The per vote option spent voice credits.
71
71
  */
72
- perVOSpentVoiceCredits?: {
72
+ perVoteOptionSpentVoiceCredits?: {
73
73
  /**
74
- * The tally of the per VO spent voice credits.
74
+ * The tally of the per vote option spent voice credits.
75
75
  */
76
76
  tally: string[];
77
77
  /**
78
- * The salt of the per VO spent voice credits.
78
+ * The salt of the per vote option spent voice credits.
79
79
  */
80
80
  salt: string;
81
81
  /**
82
- * The commitment of the per VO spent voice credits.
82
+ * The commitment of the per vote option spent voice credits.
83
83
  */
84
84
  commitment: string;
85
85
  };
@@ -111,7 +111,7 @@ export interface IVerifyArgs {
111
111
  /**
112
112
  * The number of vote options
113
113
  */
114
- numVoteOptions: number;
114
+ totalVoteOptions: number;
115
115
  /**
116
116
  * The vote option tree depth
117
117
  */
@@ -159,7 +159,7 @@ export interface ITallyVotesInputs {
159
159
  ballotRoot: bigint;
160
160
  sbSalt: bigint;
161
161
  index: bigint;
162
- numSignUps: bigint;
162
+ totalSignups: bigint;
163
163
  sbCommitment: bigint;
164
164
  currentTallyCommitment: bigint;
165
165
  newTallyCommitment: bigint;
@@ -176,4 +176,30 @@ export interface ITallyVotesInputs {
176
176
  newPerVOSpentVoiceCreditsRootSalt: bigint;
177
177
  newSpentVoiceCreditSubtotalSalt: bigint;
178
178
  }
179
+ /**
180
+ * Get results args
181
+ */
182
+ export interface IGetResultsArgs {
183
+ /**
184
+ * The address of the MACI contract
185
+ */
186
+ maciAddress: string;
187
+ /**
188
+ * The ID of the poll
189
+ */
190
+ pollId: string;
191
+ /**
192
+ * The signer
193
+ */
194
+ signer: Signer;
195
+ }
196
+ /**
197
+ * Get result per option args
198
+ */
199
+ export interface IGetResultPerOptionArgs extends IGetResultsArgs {
200
+ /**
201
+ * The index of the vote option
202
+ */
203
+ index: number;
204
+ }
179
205
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/tally/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/tally/types.ts"],"names":[],"mappings":"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"}
@@ -14,10 +14,10 @@ const crypto_1 = require("@maci-protocol/crypto");
14
14
  */
15
15
  const verifyPerVOSpentVoiceCredits = async (tallyContract, tallyData, voteOptionTreeDepth, newSpentVoiceCreditsCommitment, newResultsCommitment) => {
16
16
  const failedIndices = [];
17
- for (let i = 0; i < tallyData.perVOSpentVoiceCredits.tally.length; i += 1) {
18
- const proof = (0, crypto_1.genTreeProof)(i, tallyData.perVOSpentVoiceCredits.tally.map((x) => BigInt(x)), voteOptionTreeDepth);
17
+ for (let i = 0; i < tallyData.perVoteOptionSpentVoiceCredits.tally.length; i += 1) {
18
+ const proof = (0, crypto_1.genTreeProof)(i, tallyData.perVoteOptionSpentVoiceCredits.tally.map((x) => BigInt(x)), voteOptionTreeDepth);
19
19
  // eslint-disable-next-line no-await-in-loop
20
- const isValid = await tallyContract.verifyPerVOSpentVoiceCredits(i, tallyData.perVOSpentVoiceCredits.tally[i], proof, tallyData.perVOSpentVoiceCredits.salt, voteOptionTreeDepth, newSpentVoiceCreditsCommitment, newResultsCommitment);
20
+ const isValid = await tallyContract.verifyPerVOSpentVoiceCredits(i, tallyData.perVoteOptionSpentVoiceCredits.tally[i], proof, tallyData.perVoteOptionSpentVoiceCredits.salt, voteOptionTreeDepth, newSpentVoiceCreditsCommitment, newResultsCommitment);
21
21
  if (!isValid) {
22
22
  failedIndices.push(i);
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/tally/utils.ts"],"names":[],"mappings":";;;AAAA,kDAAqD;AAKrD;;;;;;;;;GASG;AACI,MAAM,4BAA4B,GAAG,KAAK,EAC/C,aAAoB,EACpB,SAAqB,EACrB,mBAA2B,EAC3B,8BAAsC,EACtC,oBAA4B,EACT,EAAE;IACrB,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,sBAAuB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,IAAA,qBAAY,EACxB,CAAC,EACD,SAAS,CAAC,sBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC7D,mBAAmB,CACpB,CAAC;QAEF,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,4BAA4B,CAC9D,CAAC,EACD,SAAS,CAAC,sBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,EAC1C,KAAK,EACL,SAAS,CAAC,sBAAuB,CAAC,IAAI,EACtC,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,CACrB,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAjCW,QAAA,4BAA4B,gCAiCvC;AAEF;;;;;;;;GAQG;AACI,MAAM,kBAAkB,GAAG,KAAK,EACrC,aAAoB,EACpB,SAAqB,EACrB,mBAA2B,EAC3B,8BAAsC,EACtC,mCAA4C,EACzB,EAAE;IACrB,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAA,qBAAY,EACxB,CAAC,EACD,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC7C,mBAAmB,CACpB,CAAC;QAEF,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,iBAAiB,CACnD,CAAC,EACD,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAC1B,KAAK,EACL,SAAS,CAAC,OAAO,CAAC,IAAI,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,mCAAmC,IAAI,EAAE,CAC1C,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAjCW,QAAA,kBAAkB,sBAiC7B"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/tally/utils.ts"],"names":[],"mappings":";;;AAAA,kDAAqD;AAKrD;;;;;;;;;GASG;AACI,MAAM,4BAA4B,GAAG,KAAK,EAC/C,aAAoB,EACpB,SAAqB,EACrB,mBAA2B,EAC3B,8BAAsC,EACtC,oBAA4B,EACT,EAAE;IACrB,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,8BAA+B,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACnF,MAAM,KAAK,GAAG,IAAA,qBAAY,EACxB,CAAC,EACD,SAAS,CAAC,8BAA+B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACrE,mBAAmB,CACpB,CAAC;QAEF,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,4BAA4B,CAC9D,CAAC,EACD,SAAS,CAAC,8BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC,EAClD,KAAK,EACL,SAAS,CAAC,8BAA+B,CAAC,IAAI,EAC9C,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,CACrB,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAjCW,QAAA,4BAA4B,gCAiCvC;AAEF;;;;;;;;GAQG;AACI,MAAM,kBAAkB,GAAG,KAAK,EACrC,aAAoB,EACpB,SAAqB,EACrB,mBAA2B,EAC3B,8BAAsC,EACtC,mCAA4C,EACzB,EAAE;IACrB,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAA,qBAAY,EACxB,CAAC,EACD,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC7C,mBAAmB,CACpB,CAAC;QAEF,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,iBAAiB,CACnD,CAAC,EACD,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAC1B,KAAK,EACL,SAAS,CAAC,OAAO,CAAC,IAAI,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,mCAAmC,IAAI,EAAE,CAC1C,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAjCW,QAAA,kBAAkB,sBAiC7B"}
@@ -3,5 +3,5 @@ import type { IVerifyArgs } from "./types";
3
3
  * Verify the results of a poll on-chain
4
4
  * @param VerifyArgs - The arguments for the verify command
5
5
  */
6
- export declare const verify: ({ pollId, tallyData, signer, tallyCommitments, numVoteOptions, voteOptionTreeDepth, }: IVerifyArgs) => Promise<boolean>;
6
+ export declare const verify: ({ pollId, tallyData, signer, tallyCommitments, totalVoteOptions, voteOptionTreeDepth, }: IVerifyArgs) => Promise<boolean>;
7
7
  //# sourceMappingURL=verification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../ts/tally/verification.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAM3C;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAU,uFAO1B,WAAW,KAAG,OAAO,CAAC,OAAO,CAiG/B,CAAC"}
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../ts/tally/verification.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAM3C;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAU,yFAO1B,WAAW,KAAG,OAAO,CAAC,OAAO,CAiG/B,CAAC"}
@@ -8,7 +8,7 @@ const utils_1 = require("./utils");
8
8
  * Verify the results of a poll on-chain
9
9
  * @param VerifyArgs - The arguments for the verify command
10
10
  */
11
- const verify = async ({ pollId, tallyData, signer, tallyCommitments, numVoteOptions, voteOptionTreeDepth, }) => {
11
+ const verify = async ({ pollId, tallyData, signer, tallyCommitments, totalVoteOptions, voteOptionTreeDepth, }) => {
12
12
  const useQv = tallyData.isQuadratic;
13
13
  const maciContractAddress = tallyData.maci;
14
14
  const validContract = await (0, contracts_1.contractExists)(signer.provider, maciContractAddress);
@@ -26,12 +26,12 @@ const verify = async ({ pollId, tallyData, signer, tallyCommitments, numVoteOpti
26
26
  if (!validResultsCommitment) {
27
27
  throw new Error("Invalid results commitment format");
28
28
  }
29
- if (tallyData.results.tally.length !== numVoteOptions) {
29
+ if (tallyData.results.tally.length !== totalVoteOptions) {
30
30
  throw new Error("Wrong number of vote options.");
31
31
  }
32
32
  // destructure the tally commitments
33
33
  const { newTallyCommitment, newSpentVoiceCreditsCommitment, newPerVOSpentVoiceCreditsCommitment, newResultsCommitment, } = tallyCommitments;
34
- // verify that the results commitment matches the output of genTreeCommitment()
34
+ // verify that the results commitment matches the output of generateTreeCommitment()
35
35
  if (onChainTallyCommitment !== newTallyCommitment) {
36
36
  throw new Error("The on-chain tally commitment does not match.");
37
37
  }
@@ -48,7 +48,7 @@ const verify = async ({ pollId, tallyData, signer, tallyCommitments, numVoteOpti
48
48
  if (!useQv) {
49
49
  return true;
50
50
  }
51
- if (tallyData.perVOSpentVoiceCredits?.tally.length !== numVoteOptions) {
51
+ if (tallyData.perVoteOptionSpentVoiceCredits?.tally.length !== totalVoteOptions) {
52
52
  throw new Error("Wrong number of vote options.");
53
53
  }
54
54
  // verify per vote option voice credits on-chain
@@ -1 +1 @@
1
- {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../ts/tally/verification.ts"],"names":[],"mappings":";;;AAAA,8EAAwH;AAIxH,kDAAoD;AAEpD,mCAA2E;AAE3E;;;GAGG;AACI,MAAM,MAAM,GAAG,KAAK,EAAE,EAC3B,MAAM,EACN,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACP,EAAoB,EAAE;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC;IACpC,MAAM,mBAAmB,GAAG,SAAS,CAAC,IAAI,CAAC;IAE3C,MAAM,aAAa,GAAG,MAAM,IAAA,0BAAc,EAAC,MAAM,CAAC,QAAS,EAAE,mBAAmB,CAAC,CAAC;IAElF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,mBAAmB,GAAG,CAAC,CAAC;IACnF,CAAC;IAED,2BAA2B;IAC3B,MAAM,YAAY,GAAG,+BAAW,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,gCAAY,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAExE,qCAAqC;IACrC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC;IAE7E,+BAA+B;IAC/B,MAAM,sBAAsB,GAAG,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAEpF,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,oCAAoC;IACpC,MAAM,EACJ,kBAAkB,EAClB,8BAA8B,EAC9B,mCAAmC,EACnC,oBAAoB,GACrB,GAAG,gBAAgB,CAAC;IAErB,+EAA+E;IAC/E,IAAI,sBAAsB,KAAK,kBAAkB,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,uBAAuB,CAC1D,SAAS,CAAC,sBAAsB,CAAC,KAAK,EACtC,SAAS,CAAC,sBAAsB,CAAC,IAAI,EACrC,oBAAoB,EACpB,mCAAmC,IAAI,EAAE,CAC1C,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IAED,oDAAoD;IACpD,MAAM,uBAAuB,GAAG,MAAM,IAAA,0BAAkB,EACtD,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,8BAA8B,EAC9B,mCAAmC,CACpC,CAAC;IAEF,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,mJAAmJ,uBAAuB,CAAC,IAAI,CAC7K,IAAI,CACL,EAAE,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,gDAAgD;IAChD,MAAM,kBAAkB,GAAG,MAAM,IAAA,oCAA4B,EAC3D,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,CACrB,CAAC;IAEF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,8GAA8G,kBAAkB,CAAC,IAAI,CACnI,IAAI,CACL,EAAE,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAxGW,QAAA,MAAM,UAwGjB"}
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../ts/tally/verification.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,15 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.generateSignUpTree = void 0;
4
7
  /* eslint-disable no-underscore-dangle */
5
- const contracts_1 = require("@maci-protocol/contracts");
8
+ const typechain_types_1 = require("@maci-protocol/contracts/typechain-types");
6
9
  const crypto_1 = require("@maci-protocol/crypto");
7
10
  const domainobjs_1 = require("@maci-protocol/domainobjs");
8
11
  const lean_imt_1 = require("@zk-kit/lean-imt");
9
- const console_1 = require("console");
12
+ const assert_1 = __importDefault(require("assert"));
10
13
  const utils_1 = require("../utils/utils");
11
14
  /**
12
15
  * Generate a State tree object from the events of a MACI smart contracts
@@ -20,10 +23,10 @@ const utils_1 = require("../utils/utils");
20
23
  */
21
24
  const generateSignUpTree = async ({ provider, address, fromBlock = 0, blocksPerRequest = 50, endBlock, sleepAmount, }) => {
22
25
  const lastBlock = endBlock || (await provider.getBlockNumber());
23
- const maciContract = contracts_1.MACI__factory.connect(address, provider);
26
+ const maciContract = typechain_types_1.MACI__factory.connect(address, provider);
24
27
  const signUpTree = new lean_imt_1.LeanIMT(crypto_1.hashLeanIMT);
25
28
  signUpTree.insert(crypto_1.PAD_KEY_HASH);
26
- const pubKeys = [];
29
+ const publicKeys = [];
27
30
  // Fetch event logs in batches (lastBlock inclusive)
28
31
  for (let i = fromBlock; i <= lastBlock; i += blocksPerRequest + 1) {
29
32
  // the last block batch will be either current iteration block + blockPerRequest
@@ -32,12 +35,12 @@ const generateSignUpTree = async ({ provider, address, fromBlock = 0, blocksPerR
32
35
  // eslint-disable-next-line no-await-in-loop
33
36
  const signUpLogs = await maciContract.queryFilter(maciContract.filters.SignUp(), i, toBlock);
34
37
  signUpLogs.forEach((event) => {
35
- (0, console_1.assert)(!!event);
36
- const pubKeyX = event.args._userPubKeyX;
37
- const pubKeyY = event.args._userPubKeyY;
38
- const pubKey = new domainobjs_1.PubKey([pubKeyX, pubKeyY]);
39
- pubKeys.push(pubKey);
40
- signUpTree.insert((0, crypto_1.hashLeftRight)(pubKeyX, pubKeyY));
38
+ (0, assert_1.default)(!!event);
39
+ const publicKeyX = event.args._userPublicKeyX;
40
+ const publicKeyY = event.args._userPublicKeyY;
41
+ const publicKey = new domainobjs_1.PublicKey([publicKeyX, publicKeyY]);
42
+ publicKeys.push(publicKey);
43
+ signUpTree.insert((0, crypto_1.hashLeftRight)(publicKeyX, publicKeyY));
41
44
  });
42
45
  if (sleepAmount) {
43
46
  // eslint-disable-next-line no-await-in-loop
@@ -46,7 +49,7 @@ const generateSignUpTree = async ({ provider, address, fromBlock = 0, blocksPerR
46
49
  }
47
50
  return {
48
51
  signUpTree,
49
- pubKeys,
52
+ publicKeys,
50
53
  };
51
54
  };
52
55
  exports.generateSignUpTree = generateSignUpTree;
@@ -1 +1 @@
1
- {"version":3,"file":"stateTree.js","sourceRoot":"","sources":["../../../ts/trees/stateTree.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AACzC,wDAAwE;AACxE,kDAAiF;AACjF,0DAAmD;AACnD,+CAAgE;AAEhE,qCAAiC;AAIjC,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,yBAAW,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":";;;;;;AAAA,yCAAyC;AACzC,8EAAwF;AACxF,kDAAiF;AACjF,0DAAsD;AACtD,+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,UAAU,GAAgB,EAAE,CAAC;IAEnC,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,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;YAE9C,MAAM,SAAS,GAAG,IAAI,sBAAS,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YAE1D,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,UAAU,CAAC,MAAM,CAAC,IAAA,sBAAa,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QAC3D,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,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AA5CW,QAAA,kBAAkB,sBA4C7B"}
@@ -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
  /**
@@ -41,6 +41,6 @@ export interface IGenerateSignUpTree {
41
41
  /**
42
42
  * State leaves
43
43
  */
44
- pubKeys: PubKey[];
44
+ publicKeys: PublicKey[];
45
45
  }
46
46
  //# 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,mBAAmB;IAClC;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB"}
@@ -1,3 +1,5 @@
1
- export { getSignedupUserData, signup, getJoinedUserData, joinPoll, hasUserJoinedPoll, hasUserSignedUp } from "./user";
1
+ export { joinPoll } from "./joinPoll";
2
+ export { getSignedupUserData, signup, hasUserSignedUp } from "./signup";
3
+ export { getJoinedUserData, hasUserJoinedPoll } from "./utils";
2
4
  export type { IJoinedUserArgs, IIsRegisteredUser, IIsJoinedUser, ISignupArgs, IRegisteredUserArgs, IPollJoinedCircuitInputs, IPollJoiningCircuitInputs, IJoinPollArgs, IIsNullifierOnChainArgs, IGetPollJoiningCircuitEventsArgs, IGetPollJoiningCircuitInputsFromStateFileArgs, IJoinPollData, IParsePollJoinEventsArgs, IParseSignupEventsArgs, ISignupData, IHasUserSignedUpArgs, } from "./types";
3
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,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACtH,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,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,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasUserSignedUp = exports.hasUserJoinedPoll = exports.joinPoll = exports.getJoinedUserData = exports.signup = exports.getSignedupUserData = void 0;
4
- var user_1 = require("./user");
5
- Object.defineProperty(exports, "getSignedupUserData", { enumerable: true, get: function () { return user_1.getSignedupUserData; } });
6
- Object.defineProperty(exports, "signup", { enumerable: true, get: function () { return user_1.signup; } });
7
- Object.defineProperty(exports, "getJoinedUserData", { enumerable: true, get: function () { return user_1.getJoinedUserData; } });
8
- Object.defineProperty(exports, "joinPoll", { enumerable: true, get: function () { return user_1.joinPoll; } });
9
- Object.defineProperty(exports, "hasUserJoinedPoll", { enumerable: true, get: function () { return user_1.hasUserJoinedPoll; } });
10
- Object.defineProperty(exports, "hasUserSignedUp", { enumerable: true, get: function () { return user_1.hasUserSignedUp; } });
3
+ exports.hasUserJoinedPoll = exports.getJoinedUserData = exports.hasUserSignedUp = exports.signup = exports.getSignedupUserData = exports.joinPoll = void 0;
4
+ var joinPoll_1 = require("./joinPoll");
5
+ Object.defineProperty(exports, "joinPoll", { enumerable: true, get: function () { return joinPoll_1.joinPoll; } });
6
+ var signup_1 = require("./signup");
7
+ Object.defineProperty(exports, "getSignedupUserData", { enumerable: true, get: function () { return signup_1.getSignedupUserData; } });
8
+ Object.defineProperty(exports, "signup", { enumerable: true, get: function () { return signup_1.signup; } });
9
+ Object.defineProperty(exports, "hasUserSignedUp", { enumerable: true, get: function () { return signup_1.hasUserSignedUp; } });
10
+ var utils_1 = require("./utils");
11
+ Object.defineProperty(exports, "getJoinedUserData", { enumerable: true, get: function () { return utils_1.getJoinedUserData; } });
12
+ Object.defineProperty(exports, "hasUserJoinedPoll", { enumerable: true, get: function () { return utils_1.hasUserJoinedPoll; } });
11
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/user/index.ts"],"names":[],"mappings":";;;AAAA,+BAAsH;AAA7G,2GAAA,mBAAmB,OAAA;AAAE,8FAAA,MAAM,OAAA;AAAE,yGAAA,iBAAiB,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAAE,yGAAA,iBAAiB,OAAA;AAAE,uGAAA,eAAe,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,iCAA+D;AAAtD,0GAAA,iBAAiB,OAAA;AAAE,0GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,8 @@
1
+ import type { IJoinPollData, IJoinPollArgs } from "./types";
2
+ /**
3
+ * Join Poll user to the Poll contract
4
+ * @param {IJoinPollArgs} args - The arguments for the join poll command
5
+ * @returns {IJoinPollData} The poll state index of the joined user and transaction hash
6
+ */
7
+ export declare const joinPoll: ({ maciAddress, privateKey, stateFile, pollId, signer, startBlock, endBlock, blocksPerBatch, pollJoiningZkey, useWasm, rapidsnark, pollWitgen, pollWasm, sgDataArg, ivcpDataArg, }: IJoinPollArgs) => Promise<IJoinPollData>;
8
+ //# sourceMappingURL=joinPoll.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.joinPoll = void 0;
4
+ /* eslint-disable no-underscore-dangle */
5
+ const typechain_types_1 = require("@maci-protocol/contracts/typechain-types");
6
+ const crypto_1 = require("@maci-protocol/crypto");
7
+ const domainobjs_1 = require("@maci-protocol/domainobjs");
8
+ const contracts_1 = require("../utils/contracts");
9
+ const proofs_1 = require("../utils/proofs");
10
+ const utils_1 = require("./utils");
11
+ /**
12
+ * Join Poll user to the Poll contract
13
+ * @param {IJoinPollArgs} args - The arguments for the join poll command
14
+ * @returns {IJoinPollData} The poll state index of the joined user and transaction hash
15
+ */
16
+ const joinPoll = async ({ maciAddress, privateKey, stateFile, pollId, signer, startBlock, endBlock, blocksPerBatch, pollJoiningZkey, useWasm, rapidsnark, pollWitgen, pollWasm, sgDataArg, ivcpDataArg, }) => {
17
+ const validContract = await (0, contracts_1.contractExists)(signer.provider, maciAddress);
18
+ if (!validContract) {
19
+ throw new Error("MACI contract does not exist");
20
+ }
21
+ if (!domainobjs_1.PrivateKey.isValidSerialized(privateKey)) {
22
+ throw new Error("Invalid MACI private key");
23
+ }
24
+ if (pollId < 0) {
25
+ throw new Error("Invalid poll id");
26
+ }
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
+ // check if the user has already joined the poll based on the nullifier
31
+ const hasUserJoinedAlready = await (0, utils_1.hasUserJoinedPoll)({
32
+ maciAddress,
33
+ pollId,
34
+ nullifier,
35
+ signer,
36
+ });
37
+ if (hasUserJoinedAlready) {
38
+ throw new Error("User has already joined");
39
+ }
40
+ const maciContract = typechain_types_1.MACI__factory.connect(maciAddress, signer);
41
+ const pollContracts = await maciContract.getPoll(pollId);
42
+ const pollContract = typechain_types_1.Poll__factory.connect(pollContracts.poll, signer);
43
+ // get the state index from the MACI contract
44
+ const stateIndex = await maciContract.getStateIndex(userMaciPublicKey.hash()).catch(() => -1n);
45
+ let circuitInputs;
46
+ if (stateFile) {
47
+ circuitInputs = await (0, utils_1.getPollJoiningCircuitInputsFromStateFile)({
48
+ stateFile,
49
+ pollId,
50
+ stateIndex,
51
+ userMaciPrivateKey,
52
+ });
53
+ }
54
+ else {
55
+ circuitInputs = await (0, utils_1.getPollJoiningCircuitEvents)({
56
+ maciContract,
57
+ stateIndex,
58
+ pollId,
59
+ userMaciPrivateKey,
60
+ signer,
61
+ startBlock,
62
+ endBlock,
63
+ blocksPerBatch,
64
+ });
65
+ }
66
+ const currentStateRootIndex = Number.parseInt((await maciContract.totalSignups()).toString(), 10) - 1;
67
+ // generate the proof for this batch
68
+ const proof = await (0, proofs_1.generateAndVerifyProof)(circuitInputs, pollJoiningZkey, useWasm, rapidsnark, pollWitgen, pollWasm);
69
+ // submit the message onchain as well as the encryption public key
70
+ const tx = await pollContract.joinPoll(nullifier, userMaciPublicKey.asContractParam(), currentStateRootIndex, proof, sgDataArg, ivcpDataArg);
71
+ const receipt = await tx.wait();
72
+ if (receipt?.status !== 1) {
73
+ throw new Error("Transaction failed");
74
+ }
75
+ const [{ args }] = await pollContract.queryFilter(pollContract.filters.PollJoined, receipt.blockNumber, receipt.blockNumber);
76
+ return {
77
+ pollStateIndex: args._pollStateIndex.toString(),
78
+ voiceCredits: args._voiceCreditBalance.toString(),
79
+ nullifier: nullifier.toString(),
80
+ hash: receipt.hash,
81
+ };
82
+ };
83
+ exports.joinPoll = joinPoll;
84
+ //# sourceMappingURL=joinPoll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joinPoll.js","sourceRoot":"","sources":["../../../ts/user/joinPoll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { IIsRegisteredUser, ISignupArgs, ISignupData, IRegisteredUserArgs, IHasUserSignedUpArgs } from "./types";
2
+ /**
3
+ * Checks if user is registered with a given public key and get its data
4
+ * @param IRegisteredArgs - The arguments for the check register command
5
+ * @returns whether the user is registered or not and their state index
6
+ */
7
+ export declare const getSignedupUserData: ({ maciAddress, maciPublicKey, signer, startBlock, }: IRegisteredUserArgs) => Promise<IIsRegisteredUser>;
8
+ /**
9
+ * Signup a user to the MACI contract
10
+ * @param {SignupArgs} args - The arguments for the signup command
11
+ * @returns {ISignupData} The state index of the user and transaction hash
12
+ */
13
+ export declare const signup: ({ maciPublicKey, maciAddress, sgData, signer }: ISignupArgs) => Promise<ISignupData>;
14
+ /**
15
+ * Checks if a user is signed up with a given public key
16
+ * @param {IIsSignedUpArgs} args - The arguments for the is signed up command
17
+ * @returns {boolean} Whether the user is signed up or not
18
+ */
19
+ export declare const hasUserSignedUp: ({ maciAddress, maciPublicKey, signer, }: IHasUserSignedUpArgs) => Promise<boolean>;
20
+ //# sourceMappingURL=signup.d.ts.map
@@ -0,0 +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,qDAKvC,mBAAmB,KAAG,OAAO,CAAC,iBAAiB,CAiBjD,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"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasUserSignedUp = exports.signup = exports.getSignedupUserData = void 0;
4
+ const typechain_types_1 = require("@maci-protocol/contracts/typechain-types");
5
+ const domainobjs_1 = require("@maci-protocol/domainobjs");
6
+ const ethers_1 = require("ethers");
7
+ const contracts_1 = require("../utils/contracts");
8
+ const utils_1 = require("./utils");
9
+ /**
10
+ * Checks if user is registered with a given public key and get its data
11
+ * @param IRegisteredArgs - The arguments for the check register command
12
+ * @returns whether the user is registered or not and their state index
13
+ */
14
+ const getSignedupUserData = async ({ maciAddress, maciPublicKey, signer, startBlock, }) => {
15
+ const maciContract = typechain_types_1.MACI__factory.connect(maciAddress, signer);
16
+ const publicKey = domainobjs_1.PublicKey.deserialize(maciPublicKey);
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
+ };
29
+ };
30
+ exports.getSignedupUserData = getSignedupUserData;
31
+ /**
32
+ * Signup a user to the MACI contract
33
+ * @param {SignupArgs} args - The arguments for the signup command
34
+ * @returns {ISignupData} The state index of the user and transaction hash
35
+ */
36
+ const signup = async ({ maciPublicKey, maciAddress, sgData, signer }) => {
37
+ // validate user key
38
+ if (!domainobjs_1.PublicKey.isValidSerialized(maciPublicKey)) {
39
+ throw new Error("Invalid MACI public key");
40
+ }
41
+ const userMaciPublicKey = domainobjs_1.PublicKey.deserialize(maciPublicKey);
42
+ const validContract = await (0, contracts_1.contractExists)(signer.provider, maciAddress);
43
+ if (!validContract) {
44
+ throw new Error("There is no contract deployed at the specified address");
45
+ }
46
+ // we validate that the signup data and voice credit data is valid
47
+ if (!(0, ethers_1.isBytesLike)(sgData)) {
48
+ throw new Error("invalid signup gateway data");
49
+ }
50
+ const maciContract = typechain_types_1.MACI__factory.connect(maciAddress, signer);
51
+ let stateIndex = "";
52
+ let receipt = null;
53
+ // sign up to the MACI contract
54
+ const tx = await maciContract.signUp(userMaciPublicKey.asContractParam(), sgData);
55
+ receipt = await tx.wait();
56
+ if (receipt?.status !== 1) {
57
+ throw new Error("The transaction failed");
58
+ }
59
+ // get state index from the event
60
+ const [{ args = [] } = { args: [] }] = await maciContract.queryFilter(maciContract.filters.SignUp, receipt.blockNumber, receipt.blockNumber);
61
+ stateIndex = args[0].toString();
62
+ return {
63
+ stateIndex: stateIndex ? stateIndex.toString() : "",
64
+ transactionHash: receipt.hash,
65
+ };
66
+ };
67
+ exports.signup = signup;
68
+ /**
69
+ * Checks if a user is signed up with a given public key
70
+ * @param {IIsSignedUpArgs} args - The arguments for the is signed up command
71
+ * @returns {boolean} Whether the user is signed up or not
72
+ */
73
+ const hasUserSignedUp = async ({ maciAddress, maciPublicKey, signer, }) => {
74
+ const maciContract = typechain_types_1.MACI__factory.connect(maciAddress, signer);
75
+ const stateIndex = await maciContract.getStateIndex(domainobjs_1.PublicKey.deserialize(maciPublicKey).hash());
76
+ return stateIndex !== 0n;
77
+ };
78
+ exports.hasUserSignedUp = hasUserSignedUp;
79
+ //# sourceMappingURL=signup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../ts/user/signup.ts"],"names":[],"mappings":"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"}