@andrewkimjoseph/celina-sdk 0.15.7 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/build/abis/accounts.d.ts +18 -0
  2. package/build/abis/accounts.js +14 -0
  3. package/build/abis/accounts.js.map +1 -1
  4. package/build/abis/election.d.ts +69 -0
  5. package/build/abis/election.js +45 -0
  6. package/build/abis/election.js.map +1 -1
  7. package/build/abis/gooddollar-identity.d.ts +18 -0
  8. package/build/abis/gooddollar-identity.js +14 -0
  9. package/build/abis/gooddollar-identity.js.map +1 -1
  10. package/build/abis/governance.d.ts +31 -0
  11. package/build/abis/governance.js +27 -0
  12. package/build/abis/governance.js.map +1 -1
  13. package/build/abis/locked-gold.d.ts +162 -0
  14. package/build/abis/locked-gold.js +116 -0
  15. package/build/abis/locked-gold.js.map +1 -1
  16. package/build/analytics/mcp-tool-events.js +6 -0
  17. package/build/analytics/mcp-tool-events.js.map +1 -1
  18. package/build/analytics/wallet-extract.js +5 -0
  19. package/build/analytics/wallet-extract.js.map +1 -1
  20. package/build/config/celina-tag.d.ts +3 -3
  21. package/build/config/celina-tag.js +12 -3
  22. package/build/config/celina-tag.js.map +1 -1
  23. package/build/index.d.ts +13 -2
  24. package/build/index.js +8 -1
  25. package/build/index.js.map +1 -1
  26. package/build/services/account.service.d.ts +17 -3
  27. package/build/services/account.service.js +62 -0
  28. package/build/services/account.service.js.map +1 -1
  29. package/build/services/gooddollar.service.d.ts +10 -0
  30. package/build/services/gooddollar.service.js +55 -0
  31. package/build/services/gooddollar.service.js.map +1 -1
  32. package/build/services/governance.service.d.ts +56 -1
  33. package/build/services/governance.service.js +253 -3
  34. package/build/services/governance.service.js.map +1 -1
  35. package/build/services/humanness.service.d.ts +30 -0
  36. package/build/services/humanness.service.js +123 -0
  37. package/build/services/humanness.service.js.map +1 -0
  38. package/build/services/staking.service.d.ts +27 -1
  39. package/build/services/staking.service.js +203 -3
  40. package/build/services/staking.service.js.map +1 -1
  41. package/build/src/abis/accounts.d.ts +18 -0
  42. package/build/src/abis/accounts.js +14 -0
  43. package/build/src/abis/accounts.js.map +1 -1
  44. package/build/src/abis/election.d.ts +69 -0
  45. package/build/src/abis/election.js +45 -0
  46. package/build/src/abis/election.js.map +1 -1
  47. package/build/src/abis/gooddollar-identity.d.ts +18 -0
  48. package/build/src/abis/gooddollar-identity.js +14 -0
  49. package/build/src/abis/gooddollar-identity.js.map +1 -1
  50. package/build/src/abis/governance.d.ts +31 -0
  51. package/build/src/abis/governance.js +27 -0
  52. package/build/src/abis/governance.js.map +1 -1
  53. package/build/src/abis/locked-gold.d.ts +162 -0
  54. package/build/src/abis/locked-gold.js +116 -0
  55. package/build/src/abis/locked-gold.js.map +1 -1
  56. package/build/src/analytics/mcp-tool-events.js +6 -0
  57. package/build/src/analytics/mcp-tool-events.js.map +1 -1
  58. package/build/src/analytics/wallet-extract.js +5 -0
  59. package/build/src/analytics/wallet-extract.js.map +1 -1
  60. package/build/src/config/celina-tag.d.ts +3 -3
  61. package/build/src/config/celina-tag.js +12 -3
  62. package/build/src/config/celina-tag.js.map +1 -1
  63. package/build/src/index.d.ts +13 -2
  64. package/build/src/index.js +8 -1
  65. package/build/src/index.js.map +1 -1
  66. package/build/src/services/account.service.d.ts +17 -3
  67. package/build/src/services/account.service.js +62 -0
  68. package/build/src/services/account.service.js.map +1 -1
  69. package/build/src/services/gooddollar.service.d.ts +10 -0
  70. package/build/src/services/gooddollar.service.js +55 -0
  71. package/build/src/services/gooddollar.service.js.map +1 -1
  72. package/build/src/services/governance.service.d.ts +56 -1
  73. package/build/src/services/governance.service.js +253 -3
  74. package/build/src/services/governance.service.js.map +1 -1
  75. package/build/src/services/humanness.service.d.ts +30 -0
  76. package/build/src/services/humanness.service.js +123 -0
  77. package/build/src/services/humanness.service.js.map +1 -0
  78. package/build/src/services/staking.service.d.ts +27 -1
  79. package/build/src/services/staking.service.js +203 -3
  80. package/build/src/services/staking.service.js.map +1 -1
  81. package/build/src/tools/domains/blockchain.js +47 -3
  82. package/build/src/tools/domains/blockchain.js.map +1 -1
  83. package/build/src/tools/domains/gooddollar.js +92 -1
  84. package/build/src/tools/domains/gooddollar.js.map +1 -1
  85. package/build/src/tools/domains/governance.js +215 -1
  86. package/build/src/tools/domains/governance.js.map +1 -1
  87. package/build/src/tools/domains/humanness.d.ts +2 -0
  88. package/build/src/tools/domains/humanness.js +25 -0
  89. package/build/src/tools/domains/humanness.js.map +1 -0
  90. package/build/src/tools/domains/index.js +2 -0
  91. package/build/src/tools/domains/index.js.map +1 -1
  92. package/build/src/tools/domains/staking.js +199 -1
  93. package/build/src/tools/domains/staking.js.map +1 -1
  94. package/build/src/tools/schemas/common.d.ts +3 -0
  95. package/build/src/tools/schemas/common.js +9 -0
  96. package/build/src/tools/schemas/common.js.map +1 -1
  97. package/build/src/tools/types.d.ts +29 -0
  98. package/build/src/utils/celo-account.d.ts +3 -0
  99. package/build/src/utils/celo-account.js +22 -0
  100. package/build/src/utils/celo-account.js.map +1 -0
  101. package/build/src/utils/election-vote-neighbors.d.ts +12 -0
  102. package/build/src/utils/election-vote-neighbors.js +27 -0
  103. package/build/src/utils/election-vote-neighbors.js.map +1 -0
  104. package/build/src/utils/fixidity.d.ts +11 -0
  105. package/build/src/utils/fixidity.js +24 -0
  106. package/build/src/utils/fixidity.js.map +1 -0
  107. package/build/tests/catalog/domains/chain-ext.js +152 -0
  108. package/build/tests/catalog/domains/chain-ext.js.map +1 -1
  109. package/build/tools/domains/blockchain.js +47 -3
  110. package/build/tools/domains/blockchain.js.map +1 -1
  111. package/build/tools/domains/gooddollar.js +92 -1
  112. package/build/tools/domains/gooddollar.js.map +1 -1
  113. package/build/tools/domains/governance.js +215 -1
  114. package/build/tools/domains/governance.js.map +1 -1
  115. package/build/tools/domains/humanness.d.ts +2 -0
  116. package/build/tools/domains/humanness.js +25 -0
  117. package/build/tools/domains/humanness.js.map +1 -0
  118. package/build/tools/domains/index.js +2 -0
  119. package/build/tools/domains/index.js.map +1 -1
  120. package/build/tools/domains/staking.js +199 -1
  121. package/build/tools/domains/staking.js.map +1 -1
  122. package/build/tools/schemas/common.d.ts +3 -0
  123. package/build/tools/schemas/common.js +9 -0
  124. package/build/tools/schemas/common.js.map +1 -1
  125. package/build/tools/types.d.ts +29 -0
  126. package/build/utils/celo-account.d.ts +3 -0
  127. package/build/utils/celo-account.js +22 -0
  128. package/build/utils/celo-account.js.map +1 -0
  129. package/build/utils/election-vote-neighbors.d.ts +12 -0
  130. package/build/utils/election-vote-neighbors.js +27 -0
  131. package/build/utils/election-vote-neighbors.js.map +1 -0
  132. package/build/utils/fixidity.d.ts +11 -0
  133. package/build/utils/fixidity.js +24 -0
  134. package/build/utils/fixidity.js.map +1 -0
  135. package/package.json +4 -1
@@ -1,8 +1,16 @@
1
1
  /**
2
- * Celo governance: on-chain proposals with optional CGP markdown metadata from GitHub.
2
+ * Celo governance: on-chain proposals with optional CGP markdown metadata from GitHub,
3
+ * LockedGold locking/unlocking, and governance voting.
3
4
  */
5
+ import { encodeFunctionData, isAddress, parseEther } from "viem";
4
6
  import { CELO_CORE_CONTRACTS } from "../config/celo-core-contracts.js";
5
- import { governanceAbi, proposalStageName, } from "../abis/governance.js";
7
+ import { lockedGoldAbi } from "../abis/locked-gold.js";
8
+ import { governanceAbi, proposalStageName, voteValueToInt, } from "../abis/governance.js";
9
+ import { appendCelinaCalldataTag } from "../config/celina-tag.js";
10
+ import { CHAIN } from "../config/chains.js";
11
+ import { serializePreparedFlow, } from "../types/prepared.js";
12
+ import { assertCeloAccountRegistered } from "../utils/celo-account.js";
13
+ import { formatCeloAmount } from "../utils/celo-format.js";
6
14
  const STAGE_EXPIRY_MS = {
7
15
  Queued: 4 * 24 * 60 * 60 * 1000,
8
16
  Approval: 24 * 60 * 60 * 1000,
@@ -51,11 +59,13 @@ function getExpiryTimestamp(stage, timestampMs) {
51
59
  const expiry = STAGE_EXPIRY_MS[stage];
52
60
  return expiry ? timestampMs + expiry : null;
53
61
  }
54
- /** Celo on-chain governance proposal reads and CGP enrichment. */
62
+ /** Celo on-chain governance proposal reads, CGP enrichment, and LockedGold writes. */
55
63
  export class GovernanceService {
56
64
  clientFactory;
65
+ attributionTags;
57
66
  constructor(clientFactory) {
58
67
  this.clientFactory = clientFactory;
68
+ this.attributionTags = clientFactory.getConfig().attributionTags;
59
69
  }
60
70
  getClient() {
61
71
  return this.clientFactory.getClients().public;
@@ -251,5 +261,245 @@ export class GovernanceService {
251
261
  error: null,
252
262
  };
253
263
  }
264
+ /** Raw getDequeue with positional indices preserved for Governance.vote(). */
265
+ async getDequeueWithIndices() {
266
+ const client = this.getClient();
267
+ const dequeued = (await client.readContract({
268
+ address: CELO_CORE_CONTRACTS.governance,
269
+ abi: governanceAbi,
270
+ functionName: "getDequeue",
271
+ }));
272
+ return dequeued.map((id, index) => ({
273
+ index,
274
+ proposalId: Number(id),
275
+ }));
276
+ }
277
+ /** Proposals currently in Referendum stage with their dequeue index. */
278
+ async getVotableProposals() {
279
+ const entries = await this.getDequeueWithIndices();
280
+ const votable = [];
281
+ for (const entry of entries) {
282
+ if (entry.proposalId === 0)
283
+ continue;
284
+ const proposal = await this.fetchProposal(entry.proposalId, 0, false);
285
+ if (!proposal)
286
+ continue;
287
+ const stageName = proposalStageName(proposal.stage);
288
+ if (stageName === "Referendum") {
289
+ votable.push({
290
+ proposalId: entry.proposalId,
291
+ index: entry.index,
292
+ stage: stageName,
293
+ url: proposal.url,
294
+ });
295
+ }
296
+ }
297
+ return {
298
+ network: "mainnet",
299
+ proposals: votable,
300
+ message: votable.length > 0
301
+ ? `${votable.length} proposal(s) in Referendum`
302
+ : "No proposals currently in Referendum",
303
+ };
304
+ }
305
+ /** Locked CELO balances and governance voting power for an address. */
306
+ async getLockedCeloBalance(address) {
307
+ if (!isAddress(address)) {
308
+ throw new Error(`Invalid address: ${address}`);
309
+ }
310
+ const client = this.getClient();
311
+ const lockedGold = CELO_CORE_CONTRACTS.lockedGold;
312
+ const [totalLocked, nonvotingLocked, votingPower, delegatedFraction] = await Promise.all([
313
+ client.readContract({
314
+ address: lockedGold,
315
+ abi: lockedGoldAbi,
316
+ functionName: "getAccountTotalLockedGold",
317
+ args: [address],
318
+ }),
319
+ client.readContract({
320
+ address: lockedGold,
321
+ abi: lockedGoldAbi,
322
+ functionName: "getAccountNonvotingLockedGold",
323
+ args: [address],
324
+ }),
325
+ client.readContract({
326
+ address: lockedGold,
327
+ abi: lockedGoldAbi,
328
+ functionName: "getAccountTotalGovernanceVotingPower",
329
+ args: [address],
330
+ }),
331
+ client.readContract({
332
+ address: lockedGold,
333
+ abi: lockedGoldAbi,
334
+ functionName: "getAccountTotalDelegatedFraction",
335
+ args: [address],
336
+ }),
337
+ ]);
338
+ return {
339
+ network: "mainnet",
340
+ address,
341
+ totalLocked: totalLocked.toString(),
342
+ totalLockedFormatted: formatCeloAmount(totalLocked),
343
+ nonvotingLocked: nonvotingLocked.toString(),
344
+ nonvotingLockedFormatted: formatCeloAmount(nonvotingLocked),
345
+ governanceVotingPower: votingPower.toString(),
346
+ governanceVotingPowerFormatted: formatCeloAmount(votingPower),
347
+ delegatedFraction: delegatedFraction.toString(),
348
+ };
349
+ }
350
+ /** Pending LockedGold withdrawals with maturity timestamps. */
351
+ async getPendingWithdrawals(address) {
352
+ if (!isAddress(address)) {
353
+ throw new Error(`Invalid address: ${address}`);
354
+ }
355
+ const client = this.getClient();
356
+ const lockedGold = CELO_CORE_CONTRACTS.lockedGold;
357
+ const [pending, unlockingPeriod] = await Promise.all([
358
+ client.readContract({
359
+ address: lockedGold,
360
+ abi: lockedGoldAbi,
361
+ functionName: "getPendingWithdrawals",
362
+ args: [address],
363
+ }),
364
+ client.readContract({
365
+ address: lockedGold,
366
+ abi: lockedGoldAbi,
367
+ functionName: "unlockingPeriod",
368
+ }),
369
+ ]);
370
+ const [values, timestamps] = pending;
371
+ const nowSec = Math.floor(Date.now() / 1000);
372
+ const withdrawals = values.map((value, index) => {
373
+ const timestampSec = Number(timestamps[index] ?? 0n);
374
+ return {
375
+ index,
376
+ value: value.toString(),
377
+ valueFormatted: formatCeloAmount(value),
378
+ availableAt: timestampSec,
379
+ availableAtIso: new Date(timestampSec * 1000).toISOString(),
380
+ isMature: nowSec >= timestampSec,
381
+ };
382
+ });
383
+ return {
384
+ network: "mainnet",
385
+ address,
386
+ unlockingPeriodSeconds: Number(unlockingPeriod),
387
+ withdrawals,
388
+ matureCount: withdrawals.filter((w) => w.isMature).length,
389
+ };
390
+ }
391
+ buildStep(to, data, description, value) {
392
+ return {
393
+ kind: value && value > 0n ? "native" : "contract",
394
+ to,
395
+ data,
396
+ value: value && value > 0n ? value.toString() : undefined,
397
+ description,
398
+ };
399
+ }
400
+ toPreparedFlow(from, steps, summary) {
401
+ const flow = {
402
+ steps,
403
+ summary,
404
+ chainId: CHAIN.id,
405
+ from,
406
+ };
407
+ return serializePreparedFlow(flow);
408
+ }
409
+ /** Lock CELO, relocking matured pending withdrawals first (reverse index order). */
410
+ async prepareLockCelo(from, amount) {
411
+ await assertCeloAccountRegistered(this.clientFactory, from);
412
+ const amountWei = parseEther(amount);
413
+ const pending = await this.getPendingWithdrawals(from);
414
+ const steps = [];
415
+ let amountRemaining = amountWei;
416
+ const sorted = [...pending.withdrawals]
417
+ .filter((w) => w.isMature)
418
+ .sort((a, b) => b.index - a.index);
419
+ for (const withdrawal of sorted) {
420
+ if (amountRemaining <= 0n)
421
+ break;
422
+ const txAmount = BigInt(withdrawal.value) <= amountRemaining
423
+ ? BigInt(withdrawal.value)
424
+ : amountRemaining;
425
+ const data = appendCelinaCalldataTag(encodeFunctionData({
426
+ abi: lockedGoldAbi,
427
+ functionName: "relock",
428
+ args: [BigInt(withdrawal.index), txAmount],
429
+ }), this.attributionTags);
430
+ steps.push(this.buildStep(CELO_CORE_CONTRACTS.lockedGold, data, `Relock ${formatCeloAmount(txAmount)} from pending withdrawal #${withdrawal.index}`));
431
+ amountRemaining -= txAmount;
432
+ }
433
+ if (amountRemaining > 0n) {
434
+ const data = appendCelinaCalldataTag(encodeFunctionData({
435
+ abi: lockedGoldAbi,
436
+ functionName: "lock",
437
+ }), this.attributionTags);
438
+ steps.push(this.buildStep(CELO_CORE_CONTRACTS.lockedGold, data, `Lock ${formatCeloAmount(amountRemaining)} CELO`, amountRemaining));
439
+ }
440
+ return this.toPreparedFlow(from, steps, `Lock ${amount} CELO for ${from}`);
441
+ }
442
+ async prepareUnlockCelo(from, amount) {
443
+ await assertCeloAccountRegistered(this.clientFactory, from);
444
+ const amountWei = parseEther(amount);
445
+ const data = appendCelinaCalldataTag(encodeFunctionData({
446
+ abi: lockedGoldAbi,
447
+ functionName: "unlock",
448
+ args: [amountWei],
449
+ }), this.attributionTags);
450
+ return this.toPreparedFlow(from, [
451
+ this.buildStep(CELO_CORE_CONTRACTS.lockedGold, data, `Unlock ${amount} CELO (starts ${formatCeloAmount(amountWei)} timelock)`),
452
+ ], `Unlock ${amount} CELO from ${from}`);
453
+ }
454
+ async prepareRelockCelo(from, index, amount) {
455
+ await assertCeloAccountRegistered(this.clientFactory, from);
456
+ const amountWei = parseEther(amount);
457
+ const data = appendCelinaCalldataTag(encodeFunctionData({
458
+ abi: lockedGoldAbi,
459
+ functionName: "relock",
460
+ args: [BigInt(index), amountWei],
461
+ }), this.attributionTags);
462
+ return this.toPreparedFlow(from, [
463
+ this.buildStep(CELO_CORE_CONTRACTS.lockedGold, data, `Relock ${amount} CELO from pending withdrawal #${index}`),
464
+ ], `Relock ${amount} CELO for ${from}`);
465
+ }
466
+ /** Withdraw all matured pending withdrawals. */
467
+ async prepareWithdrawCelo(from) {
468
+ await assertCeloAccountRegistered(this.clientFactory, from);
469
+ const pending = await this.getPendingWithdrawals(from);
470
+ const mature = pending.withdrawals.filter((w) => w.isMature);
471
+ if (mature.length === 0) {
472
+ throw new Error("No matured pending withdrawals available. Unlock CELO and wait for the timelock.");
473
+ }
474
+ const steps = mature.map((withdrawal) => {
475
+ const data = appendCelinaCalldataTag(encodeFunctionData({
476
+ abi: lockedGoldAbi,
477
+ functionName: "withdraw",
478
+ args: [BigInt(withdrawal.index)],
479
+ }), this.attributionTags);
480
+ return this.buildStep(CELO_CORE_CONTRACTS.lockedGold, data, `Withdraw ${withdrawal.valueFormatted} from pending #${withdrawal.index}`);
481
+ });
482
+ return this.toPreparedFlow(from, steps, `Withdraw ${mature.length} matured pending withdrawal(s) for ${from}`);
483
+ }
484
+ async prepareVote(from, proposalId, vote) {
485
+ const entries = await this.getDequeueWithIndices();
486
+ const match = entries.find((e) => e.proposalId === proposalId);
487
+ if (!match) {
488
+ throw new Error(`Proposal ${proposalId} is not in the dequeue. Use get_votable_proposals to find Referendum proposals.`);
489
+ }
490
+ const details = await this.fetchProposal(proposalId, 0, false);
491
+ if (!details || proposalStageName(details.stage) !== "Referendum") {
492
+ throw new Error(`Proposal ${proposalId} is not in Referendum stage.`);
493
+ }
494
+ const voteInt = voteValueToInt(vote);
495
+ const data = appendCelinaCalldataTag(encodeFunctionData({
496
+ abi: governanceAbi,
497
+ functionName: "vote",
498
+ args: [BigInt(proposalId), BigInt(match.index), voteInt],
499
+ }), this.attributionTags);
500
+ return this.toPreparedFlow(from, [
501
+ this.buildStep(CELO_CORE_CONTRACTS.governance, data, `Vote ${vote} on proposal #${proposalId} (index ${match.index})`),
502
+ ], `Vote ${vote} on governance proposal #${proposalId}`);
503
+ }
254
504
  }
255
505
  //# sourceMappingURL=governance.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"governance.service.js","sourceRoot":"","sources":["../../src/services/governance.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"governance.service.js","sourceRoot":"","sources":["../../src/services/governance.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { CeloClientFactory } from "../clients/celo-client.js";
2
+ import { SelfService } from "./self.service.js";
3
+ export interface HumannessRailResult {
4
+ checked: boolean;
5
+ isHuman: boolean;
6
+ agentId?: number;
7
+ whitelistedRoot?: `0x${string}`;
8
+ reason?: string;
9
+ }
10
+ export interface HumannessCheckResult {
11
+ signerAddress: `0x${string}`;
12
+ selfAgent: HumannessRailResult;
13
+ goodDollar: HumannessRailResult;
14
+ isHumanOverall: boolean;
15
+ }
16
+ /** Address-bound humanness gate across Self and GoodDollar rails. */
17
+ export declare class HumannessService {
18
+ private readonly clientFactory;
19
+ private readonly selfService;
20
+ constructor(clientFactory: CeloClientFactory, selfService: SelfService);
21
+ /**
22
+ * Check whether an address passes humanness on either Self or GoodDollar.
23
+ * @param signerAddress - The address that will sign on-chain actions
24
+ */
25
+ checkHumanness(signerAddress: `0x${string}`): Promise<HumannessCheckResult>;
26
+ private checkSelfRail;
27
+ private checkGoodDollarRail;
28
+ }
29
+ /** Throw when humanness check fails, with remediation pointers. */
30
+ export declare function assertHumanness(result: HumannessCheckResult): void;
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Dual-rail humanness verification: Self Agent ID or GoodDollar IdentityV4.
3
+ */
4
+ import { isAddress } from "viem";
5
+ import { GOODDOLLAR_IDENTITY_ADDRESS } from "../config/gooddollar.js";
6
+ import { goodDollarIdentityAbi } from "../abis/gooddollar-identity.js";
7
+ const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
8
+ /** Address-bound humanness gate across Self and GoodDollar rails. */
9
+ export class HumannessService {
10
+ clientFactory;
11
+ selfService;
12
+ constructor(clientFactory, selfService) {
13
+ this.clientFactory = clientFactory;
14
+ this.selfService = selfService;
15
+ }
16
+ /**
17
+ * Check whether an address passes humanness on either Self or GoodDollar.
18
+ * @param signerAddress - The address that will sign on-chain actions
19
+ */
20
+ async checkHumanness(signerAddress) {
21
+ if (!isAddress(signerAddress)) {
22
+ throw new Error(`Invalid address: ${signerAddress}`);
23
+ }
24
+ const [selfAgent, goodDollar] = await Promise.all([
25
+ this.checkSelfRail(signerAddress),
26
+ this.checkGoodDollarRail(signerAddress),
27
+ ]);
28
+ return {
29
+ signerAddress,
30
+ selfAgent,
31
+ goodDollar,
32
+ isHumanOverall: selfAgent.isHuman || goodDollar.isHuman,
33
+ };
34
+ }
35
+ async checkSelfRail(signerAddress) {
36
+ try {
37
+ const result = await this.selfService.verifyAgent({
38
+ agentAddress: signerAddress,
39
+ });
40
+ if (result.verified) {
41
+ return {
42
+ checked: true,
43
+ isHuman: true,
44
+ agentId: "agent_id" in result && typeof result.agent_id === "number"
45
+ ? result.agent_id
46
+ : undefined,
47
+ };
48
+ }
49
+ return {
50
+ checked: true,
51
+ isHuman: false,
52
+ reason: "reason" in result && typeof result.reason === "string"
53
+ ? result.reason
54
+ : "Self agent not verified",
55
+ };
56
+ }
57
+ catch (error) {
58
+ return {
59
+ checked: true,
60
+ isHuman: false,
61
+ reason: error instanceof Error ? error.message : "Self verification failed",
62
+ };
63
+ }
64
+ }
65
+ async checkGoodDollarRail(signerAddress) {
66
+ const client = this.clientFactory.getClients().public;
67
+ try {
68
+ const root = (await client.readContract({
69
+ address: GOODDOLLAR_IDENTITY_ADDRESS,
70
+ abi: goodDollarIdentityAbi,
71
+ functionName: "getWhitelistedRoot",
72
+ args: [signerAddress],
73
+ }));
74
+ const identityAddress = root !== ZERO_ADDRESS ? root : signerAddress;
75
+ const isWhitelisted = await client.readContract({
76
+ address: GOODDOLLAR_IDENTITY_ADDRESS,
77
+ abi: goodDollarIdentityAbi,
78
+ functionName: "isWhitelisted",
79
+ args: [identityAddress],
80
+ });
81
+ if (isWhitelisted) {
82
+ return {
83
+ checked: true,
84
+ isHuman: true,
85
+ whitelistedRoot: root !== ZERO_ADDRESS ? root : signerAddress,
86
+ };
87
+ }
88
+ return {
89
+ checked: true,
90
+ isHuman: false,
91
+ whitelistedRoot: root !== ZERO_ADDRESS ? root : undefined,
92
+ reason: "GoodDollar identity not whitelisted",
93
+ };
94
+ }
95
+ catch (error) {
96
+ const message = error instanceof Error ? error.message : String(error);
97
+ if (message.includes("revert") &&
98
+ (message.includes("reverify") || message.includes("out of bounds"))) {
99
+ return {
100
+ checked: true,
101
+ isHuman: false,
102
+ reason: "reverify-index-out-of-bounds",
103
+ };
104
+ }
105
+ return {
106
+ checked: true,
107
+ isHuman: false,
108
+ reason: message,
109
+ };
110
+ }
111
+ }
112
+ }
113
+ /** Throw when humanness check fails, with remediation pointers. */
114
+ export function assertHumanness(result) {
115
+ if (result.isHumanOverall)
116
+ return;
117
+ throw new Error(`Humanness verification failed for ${result.signerAddress}. ` +
118
+ `Self: ${result.selfAgent.reason ?? "not verified"}. ` +
119
+ `GoodDollar: ${result.goodDollar.reason ?? "not whitelisted"}. ` +
120
+ "Register a Self agent (register_self_agent) or verify with GoodDollar " +
121
+ "(get_gooddollar_face_verification_link).");
122
+ }
123
+ //# sourceMappingURL=humanness.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanness.service.js","sourceRoot":"","sources":["../../src/services/humanness.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import type { CeloClientFactory } from "../clients/celo-client.js";
2
- /** Validator election staking reads via Celo core contracts. */
2
+ import { type SerializedPreparedFlow } from "../types/prepared.js";
3
+ /** Validator election staking reads and writes via Celo core contracts. */
3
4
  export declare class StakingService {
4
5
  private readonly clientFactory;
6
+ private readonly attributionTags?;
5
7
  constructor(clientFactory: CeloClientFactory);
6
8
  private getClient;
7
9
  /**
@@ -137,4 +139,28 @@ export declare class StakingService {
137
139
  message: string;
138
140
  };
139
141
  }>;
142
+ /** Governance vote delegation info from LockedGold for an address. */
143
+ getDelegationInfo(address: `0x${string}`): Promise<{
144
+ network: "mainnet";
145
+ address: `0x${string}`;
146
+ totalDelegatedFraction: string;
147
+ totalDelegatedPercent: string;
148
+ governanceVotingPower: string;
149
+ governanceVotingPowerFormatted: string;
150
+ delegatees: {
151
+ delegatee: `0x${string}`;
152
+ fraction: string;
153
+ fractionPercent: string;
154
+ currentAmount: string;
155
+ currentAmountFormatted: string;
156
+ }[];
157
+ }>;
158
+ private buildStep;
159
+ private toPreparedFlow;
160
+ private fetchEligibleGroupsWithVotes;
161
+ prepareStake(from: `0x${string}`, groupAddress: `0x${string}`, amount: string): Promise<SerializedPreparedFlow>;
162
+ prepareActivateStake(from: `0x${string}`, groupAddress: `0x${string}`): Promise<SerializedPreparedFlow>;
163
+ prepareUnstake(from: `0x${string}`, groupAddress: `0x${string}`, amount: string): Promise<SerializedPreparedFlow>;
164
+ prepareDelegatePower(from: `0x${string}`, delegatee: `0x${string}`, percent: number): Promise<SerializedPreparedFlow>;
165
+ prepareUndelegatePower(from: `0x${string}`, delegatee: `0x${string}`, percent: number): Promise<SerializedPreparedFlow>;
140
166
  }