@vocdoni/davinci-sdk 0.0.7 → 0.1.1
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/README.md +97 -28
- package/dist/contracts.d.ts +12 -0
- package/dist/index.d.ts +91 -88
- package/dist/index.js +142 -154
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +139 -152
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +142 -154
- package/dist/sequencer.d.ts +12 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -220,34 +220,12 @@ function assertCSPCensusProof(proof) {
|
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
var CensusType = /* @__PURE__ */ ((CensusType2) => {
|
|
224
|
-
CensusType2["PLAIN"] = "plain";
|
|
225
|
-
CensusType2["WEIGHTED"] = "weighted";
|
|
226
|
-
CensusType2["CSP"] = "csp";
|
|
227
|
-
return CensusType2;
|
|
228
|
-
})(CensusType || {});
|
|
229
223
|
class Census {
|
|
230
|
-
constructor(
|
|
224
|
+
constructor(censusOrigin) {
|
|
231
225
|
this._censusId = null;
|
|
232
226
|
this._censusRoot = null;
|
|
233
227
|
this._censusURI = null;
|
|
234
|
-
this.
|
|
235
|
-
this._type = type;
|
|
236
|
-
if (censusOrigin !== void 0) {
|
|
237
|
-
this._censusOrigin = censusOrigin;
|
|
238
|
-
} else {
|
|
239
|
-
switch (type) {
|
|
240
|
-
case "plain" /* PLAIN */:
|
|
241
|
-
case "weighted" /* WEIGHTED */:
|
|
242
|
-
this._censusOrigin = CensusOrigin.OffchainStatic;
|
|
243
|
-
break;
|
|
244
|
-
case "csp" /* CSP */:
|
|
245
|
-
this._censusOrigin = CensusOrigin.CSP;
|
|
246
|
-
break;
|
|
247
|
-
default:
|
|
248
|
-
throw new Error(`Unknown census type: ${type}`);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
228
|
+
this._censusOrigin = censusOrigin;
|
|
251
229
|
}
|
|
252
230
|
get censusId() {
|
|
253
231
|
return this._censusId;
|
|
@@ -258,12 +236,6 @@ class Census {
|
|
|
258
236
|
get censusURI() {
|
|
259
237
|
return this._censusURI;
|
|
260
238
|
}
|
|
261
|
-
get type() {
|
|
262
|
-
return this._type;
|
|
263
|
-
}
|
|
264
|
-
get size() {
|
|
265
|
-
return this._size;
|
|
266
|
-
}
|
|
267
239
|
get isPublished() {
|
|
268
240
|
return this._censusRoot !== null && this._censusURI !== null;
|
|
269
241
|
}
|
|
@@ -273,91 +245,41 @@ class Census {
|
|
|
273
245
|
get censusOrigin() {
|
|
274
246
|
return this._censusOrigin;
|
|
275
247
|
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
class PlainCensus extends Census {
|
|
279
|
-
/**
|
|
280
|
-
* Creates a new PlainCensus
|
|
281
|
-
* @param censusOrigin - The census origin (defaults to OffchainStatic for backward compatibility)
|
|
282
|
-
*/
|
|
283
|
-
constructor(censusOrigin) {
|
|
284
|
-
super(CensusType.PLAIN, censusOrigin);
|
|
285
|
-
this._participants = /* @__PURE__ */ new Set();
|
|
286
|
-
}
|
|
287
248
|
/**
|
|
288
|
-
*
|
|
289
|
-
*
|
|
249
|
+
* Check if this census requires publishing via the Census API
|
|
250
|
+
* Merkle censuses (OffchainStatic, OffchainDynamic) need to be published
|
|
251
|
+
* Onchain and CSP censuses are ready immediately upon construction
|
|
290
252
|
*/
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
for (const address of toAdd) {
|
|
294
|
-
this.validateAddress(address);
|
|
295
|
-
this._participants.add(address.toLowerCase());
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Remove participant by address
|
|
300
|
-
*/
|
|
301
|
-
remove(address) {
|
|
302
|
-
this._participants.delete(address.toLowerCase());
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Get all participants as CensusParticipant array (for API)
|
|
306
|
-
* All participants have weight="1"
|
|
307
|
-
*/
|
|
308
|
-
get participants() {
|
|
309
|
-
return Array.from(this._participants).map((key) => ({
|
|
310
|
-
key,
|
|
311
|
-
weight: "1"
|
|
312
|
-
// Everyone has weight=1 in plain census
|
|
313
|
-
}));
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Get addresses only
|
|
317
|
-
*/
|
|
318
|
-
get addresses() {
|
|
319
|
-
return Array.from(this._participants);
|
|
320
|
-
}
|
|
321
|
-
validateAddress(address) {
|
|
322
|
-
if (!address || typeof address !== "string") {
|
|
323
|
-
throw new Error("Address is required and must be a string");
|
|
324
|
-
}
|
|
325
|
-
if (!/^(0x)?[0-9a-fA-F]{40}$/i.test(address)) {
|
|
326
|
-
throw new Error(`Invalid Ethereum address format: ${address}`);
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Internal method called after publishing
|
|
331
|
-
* @internal
|
|
332
|
-
*/
|
|
333
|
-
_setPublishedData(root, uri, size, censusId) {
|
|
334
|
-
this._censusRoot = root;
|
|
335
|
-
this._censusURI = uri;
|
|
336
|
-
this._size = size;
|
|
337
|
-
if (censusId) this._censusId = censusId;
|
|
253
|
+
get requiresPublishing() {
|
|
254
|
+
return this._censusOrigin === CensusOrigin.OffchainStatic || this._censusOrigin === CensusOrigin.OffchainDynamic;
|
|
338
255
|
}
|
|
339
256
|
}
|
|
340
257
|
|
|
341
|
-
class
|
|
342
|
-
/**
|
|
343
|
-
* Creates a new WeightedCensus
|
|
344
|
-
* @param censusOrigin - The census origin (defaults to OffchainStatic for backward compatibility)
|
|
345
|
-
*/
|
|
258
|
+
class MerkleCensus extends Census {
|
|
346
259
|
constructor(censusOrigin) {
|
|
347
|
-
super(
|
|
260
|
+
super(censusOrigin);
|
|
348
261
|
this._participants = /* @__PURE__ */ new Map();
|
|
349
262
|
}
|
|
350
263
|
/**
|
|
351
|
-
* Add participant(s)
|
|
352
|
-
*
|
|
353
|
-
*
|
|
264
|
+
* Add participant(s) - supports both plain addresses and weighted participants
|
|
265
|
+
* @param data - Can be:
|
|
266
|
+
* - string: single address (weight=1)
|
|
267
|
+
* - string[]: array of addresses (weight=1 for all)
|
|
268
|
+
* - {key: string, weight: string|number|bigint}: single weighted participant
|
|
269
|
+
* - Array of weighted participants
|
|
354
270
|
*/
|
|
355
|
-
add(
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
271
|
+
add(data) {
|
|
272
|
+
if (typeof data === "string") {
|
|
273
|
+
this.addAddress(data, "1");
|
|
274
|
+
} else if (Array.isArray(data)) {
|
|
275
|
+
if (data.length === 0) return;
|
|
276
|
+
if (typeof data[0] === "string") {
|
|
277
|
+
data.forEach((addr) => this.addAddress(addr, "1"));
|
|
278
|
+
} else {
|
|
279
|
+
data.forEach((p) => this.addParticipant(p));
|
|
280
|
+
}
|
|
281
|
+
} else {
|
|
282
|
+
this.addParticipant(data);
|
|
361
283
|
}
|
|
362
284
|
}
|
|
363
285
|
/**
|
|
@@ -387,6 +309,21 @@ class WeightedCensus extends Census {
|
|
|
387
309
|
getWeight(address) {
|
|
388
310
|
return this._participants.get(address.toLowerCase());
|
|
389
311
|
}
|
|
312
|
+
/**
|
|
313
|
+
* Internal method to add a plain address with a given weight
|
|
314
|
+
*/
|
|
315
|
+
addAddress(address, weight) {
|
|
316
|
+
this.validateAddress(address);
|
|
317
|
+
this._participants.set(address.toLowerCase(), weight);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Internal method to add a weighted participant
|
|
321
|
+
*/
|
|
322
|
+
addParticipant(participant) {
|
|
323
|
+
this.validateAddress(participant.key);
|
|
324
|
+
const weight = this.normalizeWeight(participant.weight);
|
|
325
|
+
this._participants.set(participant.key.toLowerCase(), weight);
|
|
326
|
+
}
|
|
390
327
|
/**
|
|
391
328
|
* Normalizes weight from string, number, or bigint to string
|
|
392
329
|
*/
|
|
@@ -411,32 +348,66 @@ class WeightedCensus extends Census {
|
|
|
411
348
|
}
|
|
412
349
|
throw new Error(`Invalid weight type. Must be string, number, or bigint.`);
|
|
413
350
|
}
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
if (
|
|
419
|
-
throw new Error(
|
|
351
|
+
/**
|
|
352
|
+
* Validates Ethereum address format
|
|
353
|
+
*/
|
|
354
|
+
validateAddress(address) {
|
|
355
|
+
if (!address || typeof address !== "string") {
|
|
356
|
+
throw new Error("Address is required and must be a string");
|
|
420
357
|
}
|
|
421
|
-
if (
|
|
422
|
-
throw new Error(
|
|
358
|
+
if (!/^(0x)?[0-9a-fA-F]{40}$/i.test(address)) {
|
|
359
|
+
throw new Error(`Invalid Ethereum address format: ${address}`);
|
|
423
360
|
}
|
|
424
361
|
}
|
|
425
362
|
/**
|
|
426
363
|
* Internal method called after publishing
|
|
427
364
|
* @internal
|
|
428
365
|
*/
|
|
429
|
-
_setPublishedData(root, uri,
|
|
366
|
+
_setPublishedData(root, uri, censusId) {
|
|
430
367
|
this._censusRoot = root;
|
|
431
368
|
this._censusURI = uri;
|
|
432
|
-
this._size = size;
|
|
433
369
|
if (censusId) this._censusId = censusId;
|
|
434
370
|
}
|
|
435
371
|
}
|
|
436
372
|
|
|
373
|
+
class OffchainCensus extends MerkleCensus {
|
|
374
|
+
constructor() {
|
|
375
|
+
super(CensusOrigin.OffchainStatic);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
class OffchainDynamicCensus extends MerkleCensus {
|
|
380
|
+
constructor() {
|
|
381
|
+
super(CensusOrigin.OffchainDynamic);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
class OnchainCensus extends Census {
|
|
386
|
+
/**
|
|
387
|
+
* Creates an OnchainCensus
|
|
388
|
+
* @param contractAddress - The address of the smart contract (e.g., ERC20, ERC721)
|
|
389
|
+
* @param uri - The URI pointing to census data source (e.g., subgraph endpoint)
|
|
390
|
+
*/
|
|
391
|
+
constructor(contractAddress, uri) {
|
|
392
|
+
super(CensusOrigin.Onchain);
|
|
393
|
+
if (!/^(0x)?[0-9a-fA-F]{40}$/i.test(contractAddress)) {
|
|
394
|
+
throw new Error("Contract address is missing or invalid");
|
|
395
|
+
}
|
|
396
|
+
if (!uri || uri.trim() === "") {
|
|
397
|
+
throw new Error("URI is required for onchain census");
|
|
398
|
+
}
|
|
399
|
+
this._contractAddress = contractAddress;
|
|
400
|
+
this._censusRoot = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
401
|
+
this._censusURI = uri;
|
|
402
|
+
}
|
|
403
|
+
get contractAddress() {
|
|
404
|
+
return this._contractAddress;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
437
408
|
class CspCensus extends Census {
|
|
438
|
-
constructor(publicKey, cspURI
|
|
439
|
-
super(
|
|
409
|
+
constructor(publicKey, cspURI) {
|
|
410
|
+
super(CensusOrigin.CSP);
|
|
440
411
|
if (!/^(0x)?[0-9a-fA-F]+$/.test(publicKey)) {
|
|
441
412
|
throw new Error("Public key is missing or invalid");
|
|
442
413
|
}
|
|
@@ -449,7 +420,6 @@ class CspCensus extends Census {
|
|
|
449
420
|
this._cspURI = cspURI;
|
|
450
421
|
this._censusRoot = publicKey;
|
|
451
422
|
this._censusURI = cspURI;
|
|
452
|
-
this._size = size;
|
|
453
423
|
}
|
|
454
424
|
get publicKey() {
|
|
455
425
|
return this._publicKey;
|
|
@@ -462,17 +432,14 @@ class CspCensus extends Census {
|
|
|
462
432
|
class PublishedCensus extends Census {
|
|
463
433
|
/**
|
|
464
434
|
* Creates a PublishedCensus from existing census data
|
|
465
|
-
* @param
|
|
435
|
+
* @param censusOrigin - The census origin (OffchainStatic, OffchainDynamic, Onchain, or CSP)
|
|
466
436
|
* @param root - The census root
|
|
467
437
|
* @param uri - The census URI
|
|
468
|
-
* @param size - The census size (number of participants)
|
|
469
|
-
* @param censusOrigin - The census origin (optional - defaults based on type if not provided)
|
|
470
438
|
*/
|
|
471
|
-
constructor(
|
|
472
|
-
super(
|
|
439
|
+
constructor(censusOrigin, root, uri) {
|
|
440
|
+
super(censusOrigin);
|
|
473
441
|
this._censusRoot = root;
|
|
474
442
|
this._censusURI = uri;
|
|
475
|
-
this._size = size;
|
|
476
443
|
}
|
|
477
444
|
}
|
|
478
445
|
|
|
@@ -481,7 +448,7 @@ class CensusOrchestrator {
|
|
|
481
448
|
this.censusService = censusService;
|
|
482
449
|
}
|
|
483
450
|
/**
|
|
484
|
-
* Publishes a
|
|
451
|
+
* Publishes a MerkleCensus (OffchainCensus, OffchainDynamicCensus, or OnchainCensus)
|
|
485
452
|
* Creates a working census, adds participants, and publishes it
|
|
486
453
|
*/
|
|
487
454
|
async publish(census) {
|
|
@@ -497,23 +464,26 @@ class CensusOrchestrator {
|
|
|
497
464
|
census._setPublishedData(
|
|
498
465
|
publishResponse.root,
|
|
499
466
|
publishResponse.uri,
|
|
500
|
-
publishResponse.participantCount,
|
|
501
467
|
censusId
|
|
502
468
|
);
|
|
503
469
|
}
|
|
504
470
|
/**
|
|
505
471
|
* Gets census data for process creation
|
|
506
|
-
* Throws if census is not published
|
|
472
|
+
* Throws if census is not ready (published for Merkle/CSP, or constructed for Onchain)
|
|
507
473
|
*/
|
|
508
474
|
getCensusData(census) {
|
|
509
|
-
if (!census.isPublished) {
|
|
510
|
-
throw new Error("
|
|
475
|
+
if (census.requiresPublishing && !census.isPublished) {
|
|
476
|
+
throw new Error("Merkle census must be published before creating a process");
|
|
511
477
|
}
|
|
478
|
+
if (!census.censusRoot || !census.censusURI) {
|
|
479
|
+
throw new Error("Census data is incomplete");
|
|
480
|
+
}
|
|
481
|
+
const contractAddress = "contractAddress" in census ? census.contractAddress : void 0;
|
|
512
482
|
return {
|
|
513
483
|
type: census.censusOrigin,
|
|
514
484
|
root: census.censusRoot,
|
|
515
485
|
uri: census.censusURI,
|
|
516
|
-
|
|
486
|
+
contractAddress
|
|
517
487
|
};
|
|
518
488
|
}
|
|
519
489
|
}
|
|
@@ -1037,7 +1007,9 @@ class ProcessRegistryService extends SmartContractService {
|
|
|
1037
1007
|
const contractCensus = {
|
|
1038
1008
|
censusOrigin: BigInt(census.censusOrigin),
|
|
1039
1009
|
censusRoot: census.censusRoot,
|
|
1040
|
-
|
|
1010
|
+
contractAddress: census.contractAddress ?? "0x0000000000000000000000000000000000000000",
|
|
1011
|
+
censusURI: census.censusURI,
|
|
1012
|
+
onchainAllowAnyValidRoot: census.onchainAllowAnyValidRoot ?? false
|
|
1041
1013
|
};
|
|
1042
1014
|
return this.sendTx(
|
|
1043
1015
|
this.contract.newProcess(
|
|
@@ -1068,7 +1040,9 @@ class ProcessRegistryService extends SmartContractService {
|
|
|
1068
1040
|
const contractCensus = {
|
|
1069
1041
|
censusOrigin: BigInt(census.censusOrigin),
|
|
1070
1042
|
censusRoot: census.censusRoot,
|
|
1071
|
-
|
|
1043
|
+
contractAddress: census.contractAddress ?? "0x0000000000000000000000000000000000000000",
|
|
1044
|
+
censusURI: census.censusURI,
|
|
1045
|
+
onchainAllowAnyValidRoot: census.onchainAllowAnyValidRoot ?? false
|
|
1072
1046
|
};
|
|
1073
1047
|
return this.sendTx(
|
|
1074
1048
|
this.contract.setProcessCensus(processID, contractCensus).catch((e) => {
|
|
@@ -1191,26 +1165,19 @@ class ProcessOrchestrationService {
|
|
|
1191
1165
|
*/
|
|
1192
1166
|
async handleCensus(census) {
|
|
1193
1167
|
if ("isPublished" in census) {
|
|
1194
|
-
if (census
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
);
|
|
1201
|
-
}
|
|
1202
|
-
await this.censusOrchestrator.publish(census);
|
|
1168
|
+
if (census.requiresPublishing && !census.isPublished) {
|
|
1169
|
+
const censusBaseURL = this.apiService.census?.["axios"]?.defaults?.baseURL;
|
|
1170
|
+
if (!censusBaseURL || censusBaseURL === "" || censusBaseURL === "undefined") {
|
|
1171
|
+
throw new Error(
|
|
1172
|
+
'Census API URL is required to publish Merkle censuses (OffchainCensus, OffchainDynamicCensus). Please provide "censusUrl" when initializing DavinciSDK, or use a pre-published census.'
|
|
1173
|
+
);
|
|
1203
1174
|
}
|
|
1175
|
+
await this.censusOrchestrator.publish(census);
|
|
1204
1176
|
}
|
|
1205
|
-
|
|
1206
|
-
return {
|
|
1207
|
-
type: censusData.type,
|
|
1208
|
-
root: censusData.root,
|
|
1209
|
-
size: censusData.size,
|
|
1210
|
-
uri: censusData.uri
|
|
1211
|
-
};
|
|
1177
|
+
return this.censusOrchestrator.getCensusData(census);
|
|
1212
1178
|
}
|
|
1213
|
-
|
|
1179
|
+
const { size, ...censusWithoutSize } = census;
|
|
1180
|
+
return censusWithoutSize;
|
|
1214
1181
|
}
|
|
1215
1182
|
/**
|
|
1216
1183
|
* Gets user-friendly process information by transforming raw contract data
|
|
@@ -1418,11 +1385,31 @@ class ProcessOrchestrationService {
|
|
|
1418
1385
|
ballotMode,
|
|
1419
1386
|
signature
|
|
1420
1387
|
});
|
|
1421
|
-
|
|
1388
|
+
let maxVoters;
|
|
1389
|
+
if (config.maxVoters !== void 0) {
|
|
1390
|
+
maxVoters = config.maxVoters;
|
|
1391
|
+
} else if ("isPublished" in config.census && config.census.isPublished) {
|
|
1392
|
+
if ("participants" in config.census) {
|
|
1393
|
+
maxVoters = config.census.participants.length;
|
|
1394
|
+
} else {
|
|
1395
|
+
throw new Error(
|
|
1396
|
+
"maxVoters is required when using OnchainCensus, CspCensus, or PublishedCensus. It can only be auto-calculated for published MerkleCensus (OffchainCensus/OffchainDynamicCensus)."
|
|
1397
|
+
);
|
|
1398
|
+
}
|
|
1399
|
+
} else {
|
|
1400
|
+
throw new Error(
|
|
1401
|
+
"maxVoters is required. It can only be omitted when using a published MerkleCensus (OffchainCensus/OffchainDynamicCensus), in which case it defaults to the participant count."
|
|
1402
|
+
);
|
|
1403
|
+
}
|
|
1422
1404
|
const census = {
|
|
1423
1405
|
censusOrigin: censusConfig.type,
|
|
1424
1406
|
censusRoot,
|
|
1425
|
-
|
|
1407
|
+
contractAddress: censusConfig.contractAddress,
|
|
1408
|
+
// Only set for onchain censuses
|
|
1409
|
+
censusURI: censusConfig.uri,
|
|
1410
|
+
// For onchain censuses (ERC20 token snapshots), allow any valid merkle root
|
|
1411
|
+
// For other census types, require the specific censusRoot
|
|
1412
|
+
onchainAllowAnyValidRoot: censusConfig.type === CensusOrigin.Onchain
|
|
1426
1413
|
};
|
|
1427
1414
|
return {
|
|
1428
1415
|
processId,
|
|
@@ -3547,7 +3534,6 @@ exports.Census = Census;
|
|
|
3547
3534
|
exports.CensusNotUpdatable = CensusNotUpdatable;
|
|
3548
3535
|
exports.CensusOrchestrator = CensusOrchestrator;
|
|
3549
3536
|
exports.CensusOrigin = CensusOrigin;
|
|
3550
|
-
exports.CensusType = CensusType;
|
|
3551
3537
|
exports.CircomProof = CircomProof;
|
|
3552
3538
|
exports.ContractServiceError = ContractServiceError;
|
|
3553
3539
|
exports.CspCensus = CspCensus;
|
|
@@ -3555,12 +3541,15 @@ exports.DavinciCrypto = DavinciCrypto;
|
|
|
3555
3541
|
exports.DavinciSDK = DavinciSDK;
|
|
3556
3542
|
exports.ElectionMetadataTemplate = ElectionMetadataTemplate;
|
|
3557
3543
|
exports.ElectionResultsTypeNames = ElectionResultsTypeNames;
|
|
3544
|
+
exports.MerkleCensus = MerkleCensus;
|
|
3545
|
+
exports.OffchainCensus = OffchainCensus;
|
|
3546
|
+
exports.OffchainDynamicCensus = OffchainDynamicCensus;
|
|
3547
|
+
exports.OnchainCensus = OnchainCensus;
|
|
3558
3548
|
exports.OrganizationAdministratorError = OrganizationAdministratorError;
|
|
3559
3549
|
exports.OrganizationCreateError = OrganizationCreateError;
|
|
3560
3550
|
exports.OrganizationDeleteError = OrganizationDeleteError;
|
|
3561
3551
|
exports.OrganizationRegistryService = OrganizationRegistryService;
|
|
3562
3552
|
exports.OrganizationUpdateError = OrganizationUpdateError;
|
|
3563
|
-
exports.PlainCensus = PlainCensus;
|
|
3564
3553
|
exports.ProcessCensusError = ProcessCensusError;
|
|
3565
3554
|
exports.ProcessCreateError = ProcessCreateError;
|
|
3566
3555
|
exports.ProcessDurationError = ProcessDurationError;
|
|
@@ -3578,7 +3567,6 @@ exports.VocdoniCensusService = VocdoniCensusService;
|
|
|
3578
3567
|
exports.VocdoniSequencerService = VocdoniSequencerService;
|
|
3579
3568
|
exports.VoteOrchestrationService = VoteOrchestrationService;
|
|
3580
3569
|
exports.VoteStatus = VoteStatus;
|
|
3581
|
-
exports.WeightedCensus = WeightedCensus;
|
|
3582
3570
|
exports.assertCSPCensusProof = assertCSPCensusProof;
|
|
3583
3571
|
exports.assertMerkleCensusProof = assertMerkleCensusProof;
|
|
3584
3572
|
exports.createProcessSignatureMessage = createProcessSignatureMessage;
|