@maci-protocol/sdk 0.0.0-ci.f4bc8a6 → 0.0.0-ci.f94d0a4
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.
- package/build/package.json +4 -3
- package/build/ts/browser/index.d.ts +5 -7
- package/build/ts/browser/index.d.ts.map +1 -1
- package/build/ts/browser/index.js +11 -20
- package/build/ts/browser/index.js.map +1 -1
- package/build/ts/browser/joinPoll.d.ts +8 -0
- package/build/ts/browser/joinPoll.d.ts.map +1 -0
- package/build/ts/browser/joinPoll.js +84 -0
- package/build/ts/browser/joinPoll.js.map +1 -0
- package/build/ts/browser/utils.d.ts +18 -0
- package/build/ts/browser/utils.d.ts.map +1 -0
- package/build/ts/browser/utils.js +37 -0
- package/build/ts/browser/utils.js.map +1 -0
- package/build/ts/deploy/index.d.ts +1 -0
- package/build/ts/deploy/index.d.ts.map +1 -1
- package/build/ts/deploy/index.js +3 -1
- package/build/ts/deploy/index.js.map +1 -1
- package/build/ts/deploy/poll.d.ts +1 -1
- package/build/ts/deploy/poll.d.ts.map +1 -1
- package/build/ts/deploy/poll.js +15 -8
- package/build/ts/deploy/poll.js.map +1 -1
- package/build/ts/deploy/types.d.ts +14 -2
- package/build/ts/deploy/types.d.ts.map +1 -1
- package/build/ts/index.d.ts +1 -1
- package/build/ts/index.d.ts.map +1 -1
- package/build/ts/index.js +15 -2
- package/build/ts/index.js.map +1 -1
- package/build/ts/maci/policy.d.ts +13 -1
- package/build/ts/maci/policy.d.ts.map +1 -1
- package/build/ts/maci/policy.js +41 -2
- package/build/ts/maci/policy.js.map +1 -1
- package/build/ts/maci/state.js +5 -5
- package/build/ts/maci/state.js.map +1 -1
- package/build/ts/maci/types.d.ts +33 -1
- package/build/ts/maci/types.d.ts.map +1 -1
- package/build/ts/maci/types.js +2 -0
- package/build/ts/maci/types.js.map +1 -1
- package/build/ts/maciKeys/__tests__/keypair.test.js +7 -7
- package/build/ts/maciKeys/__tests__/keypair.test.js.map +1 -1
- package/build/ts/maciKeys/__tests__/publicKeys.test.js +4 -4
- package/build/ts/maciKeys/__tests__/publicKeys.test.js.map +1 -1
- package/build/ts/maciKeys/keypair.js +3 -3
- package/build/ts/maciKeys/keypair.js.map +1 -1
- package/build/ts/maciKeys/publicKeys.d.ts +2 -2
- package/build/ts/maciKeys/publicKeys.d.ts.map +1 -1
- package/build/ts/maciKeys/publicKeys.js +6 -6
- package/build/ts/maciKeys/publicKeys.js.map +1 -1
- package/build/ts/poll/types.d.ts +3 -4
- package/build/ts/poll/types.d.ts.map +1 -1
- package/build/ts/poll/utils.js +3 -3
- package/build/ts/poll/utils.js.map +1 -1
- package/build/ts/proof/__tests__/download.test.js +2 -2
- package/build/ts/proof/__tests__/download.test.js.map +1 -1
- package/build/ts/proof/generate.js +4 -4
- package/build/ts/proof/generate.js.map +1 -1
- package/build/ts/proof/prove.js +5 -5
- package/build/ts/proof/prove.js.map +1 -1
- package/build/ts/proof/types.d.ts +1 -1
- package/build/ts/proof/types.d.ts.map +1 -1
- package/build/ts/relayer/__tests__/messages.test.js +1 -1
- package/build/ts/relayer/__tests__/messages.test.js.map +1 -1
- package/build/ts/relayer/__tests__/utils.test.js +3 -3
- package/build/ts/relayer/__tests__/utils.test.js.map +1 -1
- package/build/ts/relayer/utils.js +4 -4
- package/build/ts/relayer/utils.js.map +1 -1
- package/build/ts/trees/stateTree.js +9 -6
- package/build/ts/trees/stateTree.js.map +1 -1
- package/build/ts/trees/types.d.ts +2 -2
- package/build/ts/trees/types.d.ts.map +1 -1
- package/build/ts/user/index.d.ts +3 -1
- package/build/ts/user/index.d.ts.map +1 -1
- package/build/ts/user/index.js +10 -8
- package/build/ts/user/index.js.map +1 -1
- package/build/ts/user/joinPoll.d.ts +8 -0
- package/build/ts/user/joinPoll.d.ts.map +1 -0
- package/build/ts/user/joinPoll.js +84 -0
- package/build/ts/user/joinPoll.js.map +1 -0
- package/build/ts/user/signup.d.ts +20 -0
- package/build/ts/user/signup.d.ts.map +1 -0
- package/build/ts/user/signup.js +79 -0
- package/build/ts/user/signup.js.map +1 -0
- package/build/ts/user/types.d.ts +12 -20
- package/build/ts/user/types.d.ts.map +1 -1
- package/build/ts/user/utils.d.ts +23 -7
- package/build/ts/user/utils.d.ts.map +1 -1
- package/build/ts/user/utils.js +52 -14
- package/build/ts/user/utils.js.map +1 -1
- package/build/ts/utils/utils.d.ts +8 -0
- package/build/ts/utils/utils.d.ts.map +1 -1
- package/build/ts/utils/utils.js +14 -1
- package/build/ts/utils/utils.js.map +1 -1
- package/build/ts/verifyingKeys/setVerifyingKeys.d.ts +1 -1
- package/build/ts/verifyingKeys/setVerifyingKeys.d.ts.map +1 -1
- package/build/ts/verifyingKeys/setVerifyingKeys.js +15 -3
- package/build/ts/verifyingKeys/setVerifyingKeys.js.map +1 -1
- package/build/ts/verifyingKeys/types.d.ts +4 -0
- package/build/ts/verifyingKeys/types.d.ts.map +1 -1
- package/build/ts/verifyingKeys/utils.d.ts +1 -1
- package/build/ts/verifyingKeys/utils.d.ts.map +1 -1
- package/build/ts/verifyingKeys/utils.js +2 -1
- package/build/ts/verifyingKeys/utils.js.map +1 -1
- package/build/ts/vote/generate.d.ts +1 -1
- package/build/ts/vote/generate.d.ts.map +1 -1
- package/build/ts/vote/generate.js +3 -3
- package/build/ts/vote/generate.js.map +1 -1
- package/build/ts/vote/invalidate.js +3 -3
- package/build/ts/vote/invalidate.js.map +1 -1
- package/build/ts/vote/publish.d.ts +1 -1
- package/build/ts/vote/publish.d.ts.map +1 -1
- package/build/ts/vote/publish.js +18 -18
- package/build/ts/vote/publish.js.map +1 -1
- package/build/ts/vote/submit.js +5 -5
- package/build/ts/vote/submit.js.map +1 -1
- package/build/ts/vote/types.d.ts +6 -6
- package/build/ts/vote/types.d.ts.map +1 -1
- package/build/ts/vote/utils.d.ts +2 -2
- package/build/ts/vote/utils.d.ts.map +1 -1
- package/build/ts/vote/utils.js +4 -4
- package/build/ts/vote/utils.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +10 -9
- package/build/ts/user/user.d.ts +0 -42
- package/build/ts/user/user.d.ts.map +0 -1
- package/build/ts/user/user.js +0 -192
- package/build/ts/user/user.js.map +0 -1
|
@@ -13,14 +13,14 @@ describe("utils", () => {
|
|
|
13
13
|
const keypair = new domainobjs_1.Keypair();
|
|
14
14
|
const defaultMessages = [
|
|
15
15
|
{
|
|
16
|
-
publicKey: keypair.
|
|
16
|
+
publicKey: keypair.publicKey.asArray().map(String),
|
|
17
17
|
data: new Array(10).fill("0"),
|
|
18
18
|
hash: "hash1",
|
|
19
19
|
maciAddress: ethers_1.ZeroAddress,
|
|
20
20
|
poll: 0,
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
publicKey: new domainobjs_1.Keypair().
|
|
23
|
+
publicKey: new domainobjs_1.Keypair().publicKey.asArray().map(String),
|
|
24
24
|
data: new Array(10).fill("0"),
|
|
25
25
|
hash: "hash2",
|
|
26
26
|
maciAddress: ethers_1.ZeroAddress,
|
|
@@ -47,7 +47,7 @@ describe("utils", () => {
|
|
|
47
47
|
startBlock: 0,
|
|
48
48
|
provider: mockProvider,
|
|
49
49
|
pollContract: mockPollContract,
|
|
50
|
-
publicKeys: [keypair.
|
|
50
|
+
publicKeys: [keypair.publicKey.serialize()],
|
|
51
51
|
messageHashes: ["hash1"],
|
|
52
52
|
});
|
|
53
53
|
expect(messages).toStrictEqual([defaultMessages[0]]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../ts/relayer/__tests__/utils.test.ts"],"names":[],"mappings":";;AAAA,wDAA0E;AAC1E,0DAAoD;AACpD,mCAAoD;AAIpD,oCAAoD;AAEpD,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,IAAI,gBAAsB,CAAC;IAC3B,IAAI,eAA4B,CAAC;IAEjC,MAAM,YAAY,GAAG;QACnB,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KAC7B,CAAC;IAEd,MAAM,OAAO,GAAG,IAAI,oBAAO,EAAE,CAAC;IAE9B,MAAM,eAAe,GAAmB;QACtC;YACE,SAAS,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../ts/relayer/__tests__/utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseIpfsHashAddedEvents = void 0;
|
|
4
4
|
const contracts_1 = require("@maci-protocol/contracts");
|
|
5
5
|
const domainobjs_1 = require("@maci-protocol/domainobjs");
|
|
6
|
-
const
|
|
6
|
+
const constants_1 = require("../utils/constants");
|
|
7
7
|
/**
|
|
8
8
|
* Parse the ipfs hash events from the Poll contract
|
|
9
9
|
*
|
|
@@ -14,8 +14,8 @@ const parseIpfsHashAddedEvents = async ({ pollContract, startBlock, provider, pu
|
|
|
14
14
|
const ipfsService = contracts_1.IpfsService.getInstance();
|
|
15
15
|
const currentBlock = await provider.getBlockNumber();
|
|
16
16
|
const ipfsHashes = [];
|
|
17
|
-
for (let block = startBlock; block <= currentBlock; block +=
|
|
18
|
-
const toBlock = Math.min(block +
|
|
17
|
+
for (let block = startBlock; block <= currentBlock; block += constants_1.BLOCKS_STEP) {
|
|
18
|
+
const toBlock = Math.min(block + constants_1.BLOCKS_STEP - 1, currentBlock);
|
|
19
19
|
// eslint-disable-next-line no-await-in-loop
|
|
20
20
|
const events = await pollContract.queryFilter(pollContract.filters.IpfsHashAdded(), block, toBlock);
|
|
21
21
|
// eslint-disable-next-line no-underscore-dangle
|
|
@@ -24,7 +24,7 @@ const parseIpfsHashAddedEvents = async ({ pollContract, startBlock, provider, pu
|
|
|
24
24
|
const messages = await Promise.all(ipfsHashes.map((ipfsHash) => ipfsService.read(ipfsHash))).then((data) => data.reduce((acc, items) => {
|
|
25
25
|
acc?.push(...(items || [])
|
|
26
26
|
.filter((message) => publicKeys && publicKeys.length > 0
|
|
27
|
-
? publicKeys.some((publicKey) => domainobjs_1.
|
|
27
|
+
? publicKeys.some((publicKey) => domainobjs_1.PublicKey.deserialize(publicKey).equals(new domainobjs_1.PublicKey([BigInt(message.publicKey[0]), BigInt(message.publicKey[1])])))
|
|
28
28
|
: true)
|
|
29
29
|
.filter((message) => messageHashes && messageHashes.length > 0 ? messageHashes.some((hash) => message.hash === hash) : true));
|
|
30
30
|
return acc ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/relayer/utils.ts"],"names":[],"mappings":";;;AAAA,wDAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/relayer/utils.ts"],"names":[],"mappings":";;;AAAA,wDAA0E;AAC1E,0DAAsD;AAItD,kDAAiD;AAEjD;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAC7C,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,aAAa,GACiB,EAAyC,EAAE;IACzE,MAAM,WAAW,GAAG,uBAAW,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;IACrD,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,uBAAW,EAAE,CAAC;QACzE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,uBAAW,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;QAChE,4CAA4C;QAC5C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAEpG,gDAAgD;QAChD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAiB,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAC/G,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACzB,GAAG,EAAE,IAAI,CACP,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;aACb,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAClB,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YACjC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAC5B,sBAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CACrC,IAAI,sBAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5E,CACF;YACH,CAAC,CAAC,IAAI,CACT;aACA,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAClB,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACvG,CACJ,CAAC;QAEF,OAAO,GAAG,IAAI,EAAE,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,CACT,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,QAAQ,IAAI,EAAE;KACzB,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,wBAAwB,4BA8CnC"}
|
|
@@ -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
|
|
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
|
|
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,7 +23,7 @@ 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 =
|
|
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
29
|
const pubKeys = [];
|
|
@@ -32,11 +35,11 @@ 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,
|
|
38
|
+
(0, assert_1.default)(!!event);
|
|
36
39
|
const pubKeyX = event.args._userPubKeyX;
|
|
37
40
|
const pubKeyY = event.args._userPubKeyY;
|
|
38
|
-
const
|
|
39
|
-
pubKeys.push(
|
|
41
|
+
const publicKey = new domainobjs_1.PublicKey([pubKeyX, pubKeyY]);
|
|
42
|
+
pubKeys.push(publicKey);
|
|
40
43
|
signUpTree.insert((0, crypto_1.hashLeftRight)(pubKeyX, pubKeyY));
|
|
41
44
|
});
|
|
42
45
|
if (sleepAmount) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateTree.js","sourceRoot":"","sources":["../../../ts/trees/stateTree.ts"],"names":[],"mappings":"
|
|
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,OAAO,GAAgB,EAAE,CAAC;IAEhC,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,SAAS,GAAG,IAAI,sBAAS,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAEpD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,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,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
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:
|
|
44
|
+
pubKeys: 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,
|
|
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,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB"}
|
package/build/ts/user/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export {
|
|
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,
|
|
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"}
|
package/build/ts/user/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var
|
|
5
|
-
Object.defineProperty(exports, "
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "
|
|
8
|
-
Object.defineProperty(exports, "
|
|
9
|
-
Object.defineProperty(exports, "
|
|
10
|
-
|
|
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
|
|
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.isValidSerializedPrivKey(privateKey)) {
|
|
22
|
+
throw new Error("Invalid MACI private key");
|
|
23
|
+
}
|
|
24
|
+
if (pollId < 0) {
|
|
25
|
+
throw new Error("Invalid poll id");
|
|
26
|
+
}
|
|
27
|
+
const userMaciPrivKey = domainobjs_1.PrivateKey.deserialize(privateKey);
|
|
28
|
+
const userMaciPubKey = new domainobjs_1.Keypair(userMaciPrivKey).publicKey;
|
|
29
|
+
const nullifier = (0, crypto_1.poseidon)([BigInt(userMaciPrivKey.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(userMaciPubKey.hash()).catch(() => -1n);
|
|
45
|
+
let circuitInputs;
|
|
46
|
+
if (stateFile) {
|
|
47
|
+
circuitInputs = await (0, utils_1.getPollJoiningCircuitInputsFromStateFile)({
|
|
48
|
+
stateFile,
|
|
49
|
+
pollId,
|
|
50
|
+
stateIndex,
|
|
51
|
+
userMaciPrivKey,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
circuitInputs = await (0, utils_1.getPollJoiningCircuitEvents)({
|
|
56
|
+
maciContract,
|
|
57
|
+
stateIndex,
|
|
58
|
+
pollId,
|
|
59
|
+
userMaciPrivKey,
|
|
60
|
+
signer,
|
|
61
|
+
startBlock,
|
|
62
|
+
endBlock,
|
|
63
|
+
blocksPerBatch,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const currentStateRootIndex = Number.parseInt((await maciContract.numSignUps()).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, userMaciPubKey.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.isValidSerializedPubKey(maciPublicKey)) {
|
|
39
|
+
throw new Error("Invalid MACI public key");
|
|
40
|
+
}
|
|
41
|
+
const userMaciPubKey = 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(userMaciPubKey.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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"}
|
package/build/ts/user/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { MACI, Poll } from "@maci-protocol/contracts/typechain-types";
|
|
2
|
-
import type {
|
|
2
|
+
import type { PrivateKey, PublicKey } from "@maci-protocol/domainobjs";
|
|
3
3
|
import type { Signer } from "ethers";
|
|
4
4
|
/**
|
|
5
5
|
* Interface for the arguments to the isJoinedUser command
|
|
@@ -16,7 +16,7 @@ export interface IJoinedUserArgs {
|
|
|
16
16
|
/**
|
|
17
17
|
* Poll public key for the poll
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
pollPublicKey: string;
|
|
20
20
|
/**
|
|
21
21
|
* A signer object
|
|
22
22
|
*/
|
|
@@ -63,7 +63,7 @@ export interface ISignupArgs {
|
|
|
63
63
|
/**
|
|
64
64
|
* The public key of the user
|
|
65
65
|
*/
|
|
66
|
-
|
|
66
|
+
maciPublicKey: string;
|
|
67
67
|
/**
|
|
68
68
|
* A signer object
|
|
69
69
|
*/
|
|
@@ -101,7 +101,7 @@ export interface IRegisteredUserArgs {
|
|
|
101
101
|
/**
|
|
102
102
|
* The public key of the user
|
|
103
103
|
*/
|
|
104
|
-
|
|
104
|
+
maciPublicKey: string;
|
|
105
105
|
/**
|
|
106
106
|
* The address of the MACI contract
|
|
107
107
|
*/
|
|
@@ -130,7 +130,7 @@ export interface IParsePollJoinEventsArgs {
|
|
|
130
130
|
/**
|
|
131
131
|
* The public key
|
|
132
132
|
*/
|
|
133
|
-
pollPublicKey:
|
|
133
|
+
pollPublicKey: PublicKey;
|
|
134
134
|
}
|
|
135
135
|
/**
|
|
136
136
|
* Interface for the arguments to the parseSignupEvents function
|
|
@@ -151,7 +151,7 @@ export interface IParseSignupEventsArgs {
|
|
|
151
151
|
/**
|
|
152
152
|
* The public key
|
|
153
153
|
*/
|
|
154
|
-
publicKey:
|
|
154
|
+
publicKey: PublicKey;
|
|
155
155
|
}
|
|
156
156
|
/**
|
|
157
157
|
* An interface describing the circuit inputs to the PollJoining circuit
|
|
@@ -160,11 +160,11 @@ export interface IPollJoiningCircuitInputs {
|
|
|
160
160
|
/**
|
|
161
161
|
* The private key
|
|
162
162
|
*/
|
|
163
|
-
|
|
163
|
+
privateKey: string;
|
|
164
164
|
/**
|
|
165
165
|
* The poll public key
|
|
166
166
|
*/
|
|
167
|
-
|
|
167
|
+
pollPublicKey: string[];
|
|
168
168
|
/**
|
|
169
169
|
* The state leaf
|
|
170
170
|
*/
|
|
@@ -201,15 +201,11 @@ export interface IPollJoinedCircuitInputs {
|
|
|
201
201
|
/**
|
|
202
202
|
* The private key
|
|
203
203
|
*/
|
|
204
|
-
|
|
204
|
+
privateKey: string;
|
|
205
205
|
/**
|
|
206
206
|
* The voice credits balance
|
|
207
207
|
*/
|
|
208
208
|
voiceCreditsBalance: string;
|
|
209
|
-
/**
|
|
210
|
-
* The join timestamp
|
|
211
|
-
*/
|
|
212
|
-
joinTimestamp: string;
|
|
213
209
|
/**
|
|
214
210
|
* The state leaf
|
|
215
211
|
*/
|
|
@@ -312,10 +308,6 @@ export interface IJoinPollData {
|
|
|
312
308
|
* Voice credits balance
|
|
313
309
|
*/
|
|
314
310
|
voiceCredits: string;
|
|
315
|
-
/**
|
|
316
|
-
* Joining poll timestamp
|
|
317
|
-
*/
|
|
318
|
-
timestamp: string;
|
|
319
311
|
/**
|
|
320
312
|
* Private key nullifier
|
|
321
313
|
*/
|
|
@@ -365,7 +357,7 @@ export interface IGetPollJoiningCircuitEventsArgs {
|
|
|
365
357
|
/**
|
|
366
358
|
* The user's maci private key
|
|
367
359
|
*/
|
|
368
|
-
userMaciPrivKey:
|
|
360
|
+
userMaciPrivKey: PrivateKey;
|
|
369
361
|
/**
|
|
370
362
|
* The signer
|
|
371
363
|
*/
|
|
@@ -402,7 +394,7 @@ export interface IGetPollJoiningCircuitInputsFromStateFileArgs {
|
|
|
402
394
|
/**
|
|
403
395
|
* The user's maci private key
|
|
404
396
|
*/
|
|
405
|
-
userMaciPrivKey:
|
|
397
|
+
userMaciPrivKey: PrivateKey;
|
|
406
398
|
}
|
|
407
399
|
/**
|
|
408
400
|
* Interface for the arguments for the is signed up command
|
|
@@ -415,7 +407,7 @@ export interface IHasUserSignedUpArgs {
|
|
|
415
407
|
/**
|
|
416
408
|
* The public key of the user
|
|
417
409
|
*/
|
|
418
|
-
|
|
410
|
+
maciPublicKey: string;
|
|
419
411
|
/**
|
|
420
412
|
* The signer to use for the transaction
|
|
421
413
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/user/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/user/types.ts"],"names":[],"mappings":"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"}
|
package/build/ts/user/utils.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { IGetPollJoiningCircuitEventsArgs, IGetPollJoiningCircuitInputsFromStateFileArgs, IParsePollJoinEventsArgs, IParseSignupEventsArgs, IPollJoiningCircuitInputs } from "./types";
|
|
3
|
-
import { IGenerateSignUpTree } from "../trees";
|
|
4
|
-
import { CircuitInputs } from "../utils/types";
|
|
1
|
+
import { PrivateKey, PublicKey } from "@maci-protocol/domainobjs";
|
|
2
|
+
import type { IGetPollJoiningCircuitEventsArgs, IGetPollJoiningCircuitInputsFromStateFileArgs, IParsePollJoinEventsArgs, IParseSignupEventsArgs, IPollJoiningCircuitInputs, IJoinedUserArgs, IIsNullifierOnChainArgs } from "./types";
|
|
3
|
+
import type { IGenerateSignUpTree } from "../trees/types";
|
|
4
|
+
import type { CircuitInputs } from "../utils/types";
|
|
5
5
|
/**
|
|
6
6
|
* Parse the poll joining events from the Poll contract
|
|
7
7
|
*/
|
|
@@ -9,6 +9,22 @@ export declare const parsePollJoinEvents: ({ pollContract, startBlock, currentBl
|
|
|
9
9
|
pollStateIndex?: string;
|
|
10
10
|
voiceCredits?: string;
|
|
11
11
|
}>;
|
|
12
|
+
/**
|
|
13
|
+
* Checks if user is joined to a poll with their public key and get its data
|
|
14
|
+
* @param {IJoinedUserArgs} - The arguments for the join check command
|
|
15
|
+
* @returns user joined or not and poll state index, voice credit balance
|
|
16
|
+
*/
|
|
17
|
+
export declare const getJoinedUserData: ({ maciAddress, pollId, pollPublicKey: serializedPollPublicKey, signer, startBlock, }: IJoinedUserArgs) => Promise<{
|
|
18
|
+
isJoined: boolean;
|
|
19
|
+
pollStateIndex?: string;
|
|
20
|
+
voiceCredits?: string;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if a user joined a poll with a given nullifier
|
|
24
|
+
* @param {IIsNullifierOnChainArgs} args - The arguments for the is nullifier on chain command
|
|
25
|
+
* @returns whether the nullifier is on chain or not
|
|
26
|
+
*/
|
|
27
|
+
export declare const hasUserJoinedPoll: ({ maciAddress, pollId, nullifier, signer, }: IIsNullifierOnChainArgs) => Promise<boolean>;
|
|
12
28
|
/**
|
|
13
29
|
* Parse the signup events from the MACI contract
|
|
14
30
|
*/
|
|
@@ -22,7 +38,7 @@ export declare const parseSignupEvents: ({ maciContract, startBlock, currentBloc
|
|
|
22
38
|
* @param stateIndex State index from the command
|
|
23
39
|
* @returns State index
|
|
24
40
|
*/
|
|
25
|
-
export declare const getStateIndex: (pubKeys:
|
|
41
|
+
export declare const getStateIndex: (pubKeys: PublicKey[], userMaciPubKey: PublicKey, stateIndex?: bigint) => bigint | undefined;
|
|
26
42
|
/**
|
|
27
43
|
* Create circuit input for pollJoining
|
|
28
44
|
* @param signUpData Sign up tree and state leaves
|
|
@@ -30,11 +46,11 @@ export declare const getStateIndex: (pubKeys: PubKey[], userMaciPubKey: PubKey,
|
|
|
30
46
|
* @param maciPrivKey User's private key for signing up
|
|
31
47
|
* @param stateLeafIndex Index where the user is stored in the state leaves
|
|
32
48
|
* @param pollPrivKey Poll's private key for the poll joining
|
|
33
|
-
* @param
|
|
49
|
+
* @param pollPublicKey Poll's public key for the poll joining
|
|
34
50
|
* @param pollId Poll's id
|
|
35
51
|
* @returns stringified circuit inputs
|
|
36
52
|
*/
|
|
37
|
-
export declare const joiningCircuitInputs: (signUpData: IGenerateSignUpTree, stateTreeDepth: bigint, maciPrivKey:
|
|
53
|
+
export declare const joiningCircuitInputs: (signUpData: IGenerateSignUpTree, stateTreeDepth: bigint, maciPrivKey: PrivateKey, stateLeafIndex: bigint, pollPublicKey: PublicKey, pollId: bigint) => IPollJoiningCircuitInputs;
|
|
38
54
|
/**
|
|
39
55
|
* Get the poll joining circuit inputs from a state file
|
|
40
56
|
* @param stateFile - The path to the state file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../ts/user/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../ts/user/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,UAAU,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI3E,OAAO,KAAK,EACV,gCAAgC,EAChC,6CAA6C,EAC7C,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACxB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAU,4DAKvC,wBAAwB,KAAG,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAyBA,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAU,sFAMrC,eAAe,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAqBjG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAU,6CAKrC,uBAAuB,KAAG,OAAO,CAAC,OAAO,CAM3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAU,wDAKrC,sBAAsB,KAAG,OAAO,CAAC;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAsB1D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS,SAAS,EAAE,EACpB,gBAAgB,SAAS,EACzB,aAAa,MAAM,KAClB,MAAM,GAAG,SAYX,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,mBAAmB,EAC/B,gBAAgB,MAAM,EACtB,aAAa,UAAU,EACvB,gBAAgB,MAAM,EACtB,eAAe,SAAS,EACxB,QAAQ,MAAM,KACb,yBAiDF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wCAAwC,GAAU,qDAK5D,6CAA6C,KAAG,OAAO,CAAC,aAAa,CAwBvE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GAAU,sGAS/C,gCAAgC,KAAG,OAAO,CAAC,aAAa,CAsC1D,CAAC"}
|