@andrewkimjoseph/celina-sdk 0.23.2 → 0.24.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 (46) hide show
  1. package/README.md +27 -2
  2. package/build/abis/locked-gold.d.ts +12 -0
  3. package/build/abis/locked-gold.js +7 -0
  4. package/build/abis/locked-gold.js.map +1 -1
  5. package/build/analytics/mcp-tool-events.js +1 -0
  6. package/build/analytics/mcp-tool-events.js.map +1 -1
  7. package/build/config/sdk-config.js +5 -1
  8. package/build/config/sdk-config.js.map +1 -1
  9. package/build/index.d.ts +2 -1
  10. package/build/index.js +1 -0
  11. package/build/index.js.map +1 -1
  12. package/build/services/governance-delegates.d.ts +82 -0
  13. package/build/services/governance-delegates.js +150 -0
  14. package/build/services/governance-delegates.js.map +1 -0
  15. package/build/services/staking.service.d.ts +7 -0
  16. package/build/services/staking.service.js +8 -0
  17. package/build/services/staking.service.js.map +1 -1
  18. package/build/src/abis/locked-gold.d.ts +12 -0
  19. package/build/src/abis/locked-gold.js +7 -0
  20. package/build/src/abis/locked-gold.js.map +1 -1
  21. package/build/src/analytics/mcp-tool-events.js +1 -0
  22. package/build/src/analytics/mcp-tool-events.js.map +1 -1
  23. package/build/src/config/sdk-config.js +5 -1
  24. package/build/src/config/sdk-config.js.map +1 -1
  25. package/build/src/index.d.ts +2 -1
  26. package/build/src/index.js +1 -0
  27. package/build/src/index.js.map +1 -1
  28. package/build/src/services/governance-delegates.d.ts +82 -0
  29. package/build/src/services/governance-delegates.js +150 -0
  30. package/build/src/services/governance-delegates.js.map +1 -0
  31. package/build/src/services/staking.service.d.ts +7 -0
  32. package/build/src/services/staking.service.js +8 -0
  33. package/build/src/services/staking.service.js.map +1 -1
  34. package/build/src/tools/domains/staking.js +24 -0
  35. package/build/src/tools/domains/staking.js.map +1 -1
  36. package/build/src/utils/normalize-private-key.d.ts +9 -0
  37. package/build/src/utils/normalize-private-key.js +23 -0
  38. package/build/src/utils/normalize-private-key.js.map +1 -0
  39. package/build/tests/catalog/domains/chain-ext.js +23 -0
  40. package/build/tests/catalog/domains/chain-ext.js.map +1 -1
  41. package/build/tools/domains/staking.js +24 -0
  42. package/build/tools/domains/staking.js.map +1 -1
  43. package/build/utils/normalize-private-key.d.ts +9 -0
  44. package/build/utils/normalize-private-key.js +23 -0
  45. package/build/utils/normalize-private-key.js.map +1 -0
  46. package/package.json +1 -1
package/README.md CHANGED
@@ -18,7 +18,7 @@ Celina is layered from chain logic through agent tooling:
18
18
  |-------|---------|------|
19
19
  | **SDK** | `@andrewkimjoseph/celina-sdk` | Reads, gas estimates, `prepare*` flows (`chainId: 42220`), ERC-8021 attribution, `createAAClient` |
20
20
  | **MCP** | `@andrewkimjoseph/celina-mcp` | MCP tools for Cursor / Claude / LM Studio — stdio writes or hosted reads |
21
- | **MCP host** | `celina-mcp-host` | Vercel Streamable HTTP — hosted reads (36 tools); no server-key writes; no sponsorship keys |
21
+ | **MCP host** | `celina-mcp-host` | Vercel Streamable HTTP + A2A **44 hosted read/prepare tools**; no server-key writes; no sponsorship keys |
22
22
 
23
23
  This repo is the **SDK**. Downstream packages depend on published npm semver (no local `file:` links in production).
24
24
 
@@ -30,6 +30,17 @@ npm i @andrewkimjoseph/celina-sdk
30
30
 
31
31
  Requires Node.js ≥ 20.
32
32
 
33
+ ## Package exports
34
+
35
+ | Export | Purpose |
36
+ |--------|---------|
37
+ | `@andrewkimjoseph/celina-sdk` | `createCelinaClient`, domain services, `parsePrivateKeyEnv` |
38
+ | `@andrewkimjoseph/celina-sdk/tools` | Shared LLM tool catalog (`ToolDefinition`, `filterToolDefinitions`) |
39
+ | `@andrewkimjoseph/celina-sdk/simulation` | `simulatePreparedStep` — dry-run prepared txs before broadcast |
40
+ | `@andrewkimjoseph/celina-sdk/a2a` | A2A agent card handler (used by celina-mcp-host) |
41
+ | `@andrewkimjoseph/celina-sdk/oasf` | OASF manifest helpers for agent discovery |
42
+ | `@andrewkimjoseph/celina-sdk/testing` | Test harness entry for fork/integration tests |
43
+
33
44
  ### LLM tool catalog (v0.5+)
34
45
 
35
46
  For MCP servers and chat APIs (Vercel AI SDK, etc.), import shared tool definitions from `@andrewkimjoseph/celina-sdk/tools` instead of redefining schemas. See [LLM tool catalog](docs/guides/tool-catalog.md) — includes the recommended **`dynamicTool`** pattern so TypeScript does not OOM on large tool sets.
@@ -51,6 +62,9 @@ Before broadcasting prepared steps, call `simulatePreparedStep` from `@andrewkim
51
62
  - [Prepared-step simulation](docs/guides/prepared-step-simulation.md) — `simulatePreparedStep` before wallet send
52
63
  - [wagmi integration](https://andrewkimjoseph.gitbook.io/celina-sdk/guides/wagmi-integration)
53
64
  - [GoodDollar](docs/guides/gooddollar.md) — UBI whitelist/claim and G$ ↔ USDm reserve swaps
65
+ - [Governance](docs/guides/governance.md) — lock CELO, vote, upvote, withdraw (humanness-gated)
66
+ - [Staking](docs/guides/staking.md) — validator election stake, activate, delegate (humanness-gated)
67
+ - [Humanness](docs/guides/humanness.md) — dual-rail Self + GoodDollar gate for governance/staking writes
54
68
  - [Self Agent ID](docs/guides/self-agent-id.md) — verify, register, refresh human-backed agents
55
69
  - [AgentKarma reputation](docs/guides/agentkarma.md) — karma reads and counterparty trust policy
56
70
  - [Telemetry](docs/guides/telemetry.md) — optional Amplitude read metrics (`device_id` per project, `user_id` per wallet; opt out with `analyticsEnabled: false`)
@@ -86,6 +100,11 @@ const reserveFlow = await celina.gooddollar.prepareReserveSwap(
86
100
  "USDm",
87
101
  "1000",
88
102
  );
103
+
104
+ // Governance & staking (humanness-gated prepare* for browser signing)
105
+ const human = await celina.humanness.checkHumanness("0xYourAddress");
106
+ const proposals = await celina.governance.getProposals({ stage: "Queued" });
107
+ const groups = await celina.staking.getValidatorGroups();
89
108
  ```
90
109
 
91
110
  ## Prepared flows and calldata tagging
@@ -104,7 +123,9 @@ See [Prepared flows](docs/concepts/prepared-flows.md), [On-chain attribution](do
104
123
 
105
124
  ### MCP session wallet (not in the SDK)
106
125
 
107
- Local **celina-mcp** with `CELO_PRIVATE_KEY` can omit wallet params on many tools and use **`get_wallet_address`** instead of shelling out for the signer. The SDK always requires an explicit `0x…` from your app (e.g. wagmi). See [MCP session wallet](docs/guides/mcp-session-wallet.md). **Celeste AI** is an independent app built on this SDK + browser wallet signingit does not use celina-mcp.
126
+ Local **celina-mcp** stdio can configure **`CELO_PRIVATE_KEY`**, **`SELF_AGENT_PRIVATE_KEY`**, or **both**. With a key set, omit wallet params on many MCP tools and use **`get_wallet_address`** instead of shelling out for the signer. Pass optional `signer: "celo" | "self_agent"` on execute tools when both keys are configured. **Self-only** setups (no `CELO_PRIVATE_KEY`) are valid for governance/staking when the Self agent passes humanness do not leave placeholder CELO keys in config.
127
+
128
+ The SDK always requires an explicit `0x…` from your app (e.g. wagmi). See [MCP session wallet](docs/guides/mcp-session-wallet.md). **Celeste AI** is an independent app built on this SDK + browser wallet signing — it does not use celina-mcp.
108
129
 
109
130
  ## GoodDollar
110
131
 
@@ -134,6 +155,10 @@ MCP: `get_gooddollar_whitelisting_info`, `get_gooddollar_ubi_entitlement`, `get_
134
155
  - [x] Aave tools (`getBalances` / MCP `get_aave_balances`, `prepareSupply`, `prepareWithdraw`) — USDT, WETH, USDm, USDC, CELO, EURm
135
156
  - [x] Self proof verification (`verifySelfAgent`, `verifySelfRequest`, ai.self.xyz)
136
157
  - [x] Self Agent ID (`lookupSelfAgent`, registration & lifecycle tools)
158
+ - [x] Governance (`prepareLockCelo`, `prepareVote`, `prepareUpvote`, revoke prepares — humanness-gated)
159
+ - [x] Staking (`prepareStake`, `prepareActivateStake`, delegate/undelegate prepares — humanness-gated)
160
+ - [x] Humanness dual-rail gate (`checkHumanness` — Self Agent ID or GoodDollar whitelist)
161
+ - [x] GoodDollar identity link, face verification, connect/disconnect wallet tools
137
162
 
138
163
  ## License
139
164
 
@@ -79,6 +79,18 @@ export declare const lockedGoldAbi: readonly [{
79
79
  readonly type: "uint256";
80
80
  }];
81
81
  readonly stateMutability: "view";
82
+ }, {
83
+ readonly type: "function";
84
+ readonly name: "totalDelegatedCelo";
85
+ readonly inputs: readonly [{
86
+ readonly name: "account";
87
+ readonly type: "address";
88
+ }];
89
+ readonly outputs: readonly [{
90
+ readonly name: "";
91
+ readonly type: "uint256";
92
+ }];
93
+ readonly stateMutability: "view";
82
94
  }, {
83
95
  readonly type: "function";
84
96
  readonly name: "getDelegateesOfDelegator";
@@ -51,6 +51,13 @@ export const lockedGoldAbi = [
51
51
  outputs: [{ name: "", type: "uint256" }],
52
52
  stateMutability: "view",
53
53
  },
54
+ {
55
+ type: "function",
56
+ name: "totalDelegatedCelo",
57
+ inputs: [{ name: "account", type: "address" }],
58
+ outputs: [{ name: "", type: "uint256" }],
59
+ stateMutability: "view",
60
+ },
54
61
  {
55
62
  type: "function",
56
63
  name: "getDelegateesOfDelegator",
@@ -1 +1 @@
1
- {"version":3,"file":"locked-gold.js","sourceRoot":"","sources":["../../src/abis/locked-gold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locked-gold.js","sourceRoot":"","sources":["../../src/abis/locked-gold.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,7 @@ export const MCP_TOOL_EVENT_BY_SDK_METHOD = {
43
43
  "self.verifySelfRequest": "verify_self_request",
44
44
  "staking.getActivatableStakes": "get_activatable_stakes",
45
45
  "staking.getDelegationInfo": "get_delegation_info",
46
+ "staking.getGovernanceDelegates": "get_governance_delegates",
46
47
  "staking.getStakeEligibility": "get_stake_eligibility",
47
48
  "staking.getStakeEligibility.cLabs": "get_stake_eligibility",
48
49
  "staking.getStakingBalances": "get_staking_balances",
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tool-events.js","sourceRoot":"","sources":["../../src/analytics/mcp-tool-events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAqC;IAC5E,kBAAkB,EAAE,mBAAmB;IACvC,oBAAoB,EAAE,aAAa;IACnC,gCAAgC,EAAE,+BAA+B;IACjE,0BAA0B,EAAE,oBAAoB;IAChD,qBAAqB,EAAE,WAAW;IAClC,qCAAqC,EAAE,WAAW;IAClD,4BAA4B,EAAE,mBAAmB;IACjD,6BAA6B,EAAE,oBAAoB;IACnD,2BAA2B,EAAE,iBAAiB;IAC9C,uBAAuB,EAAE,wBAAwB;IACjD,sBAAsB,EAAE,uBAAuB;IAC/C,gBAAgB,EAAE,aAAa;IAC/B,qCAAqC,EAAE,kCAAkC;IACzE,4BAA4B,EAAE,8BAA8B;IAC5D,gCAAgC,EAAE,8BAA8B;IAChE,yCAAyC,EAAE,8BAA8B;IACzE,iCAAiC,EAAE,8BAA8B;IACjE,0CAA0C,EAAE,8BAA8B;IAC1E,mCAAmC,EAAE,gCAAgC;IACrE,gCAAgC,EAAE,kCAAkC;IACpE,mCAAmC,EAAE,0BAA0B;IAC/D,+BAA+B,EAAE,sBAAsB;IACvD,iCAAiC,EAAE,yBAAyB;IAC5D,kCAAkC,EAAE,yBAAyB;IAC7D,+BAA+B,EAAE,sBAAsB;IACvD,gCAAgC,EAAE,uBAAuB;IACzD,0BAA0B,EAAE,iBAAiB;IAC7C,oBAAoB,EAAE,mBAAmB;IACzC,oBAAoB,EAAE,oBAAoB;IAC1C,mBAAmB,EAAE,iBAAiB;IACtC,gBAAgB,EAAE,cAAc;IAChC,6BAA6B,EAAE,0BAA0B;IACzD,4BAA4B,EAAE,yBAAyB;IACvD,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,qBAAqB;IAC/C,8BAA8B,EAAE,wBAAwB;IACxD,2BAA2B,EAAE,qBAAqB;IAClD,6BAA6B,EAAE,uBAAuB;IACtD,mCAAmC,EAAE,uBAAuB;IAC5D,4BAA4B,EAAE,sBAAsB;IACpD,6BAA6B,EAAE,wBAAwB;IACvD,kCAAkC,EAAE,6BAA6B;IACjE,4BAA4B,EAAE,sBAAsB;IACpD,mBAAmB,EAAE,mBAAmB;IACxC,6BAA6B,EAAE,yBAAyB;IACxD,uBAAuB,EAAE,mBAAmB;IAC5C,oBAAoB,EAAE,gBAAgB;IACtC,0BAA0B,EAAE,eAAe;IAC3C,iCAAiC,EAAE,sBAAsB;IACzD,2BAA2B,EAAE,kBAAkB;IAC/C,sBAAsB,EAAE,uBAAuB;IAC/C,sBAAsB,EAAE,mBAAmB;CACnC,CAAC"}
1
+ {"version":3,"file":"mcp-tool-events.js","sourceRoot":"","sources":["../../src/analytics/mcp-tool-events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAqC;IAC5E,kBAAkB,EAAE,mBAAmB;IACvC,oBAAoB,EAAE,aAAa;IACnC,gCAAgC,EAAE,+BAA+B;IACjE,0BAA0B,EAAE,oBAAoB;IAChD,qBAAqB,EAAE,WAAW;IAClC,qCAAqC,EAAE,WAAW;IAClD,4BAA4B,EAAE,mBAAmB;IACjD,6BAA6B,EAAE,oBAAoB;IACnD,2BAA2B,EAAE,iBAAiB;IAC9C,uBAAuB,EAAE,wBAAwB;IACjD,sBAAsB,EAAE,uBAAuB;IAC/C,gBAAgB,EAAE,aAAa;IAC/B,qCAAqC,EAAE,kCAAkC;IACzE,4BAA4B,EAAE,8BAA8B;IAC5D,gCAAgC,EAAE,8BAA8B;IAChE,yCAAyC,EAAE,8BAA8B;IACzE,iCAAiC,EAAE,8BAA8B;IACjE,0CAA0C,EAAE,8BAA8B;IAC1E,mCAAmC,EAAE,gCAAgC;IACrE,gCAAgC,EAAE,kCAAkC;IACpE,mCAAmC,EAAE,0BAA0B;IAC/D,+BAA+B,EAAE,sBAAsB;IACvD,iCAAiC,EAAE,yBAAyB;IAC5D,kCAAkC,EAAE,yBAAyB;IAC7D,+BAA+B,EAAE,sBAAsB;IACvD,gCAAgC,EAAE,uBAAuB;IACzD,0BAA0B,EAAE,iBAAiB;IAC7C,oBAAoB,EAAE,mBAAmB;IACzC,oBAAoB,EAAE,oBAAoB;IAC1C,mBAAmB,EAAE,iBAAiB;IACtC,gBAAgB,EAAE,cAAc;IAChC,6BAA6B,EAAE,0BAA0B;IACzD,4BAA4B,EAAE,yBAAyB;IACvD,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,qBAAqB;IAC/C,8BAA8B,EAAE,wBAAwB;IACxD,2BAA2B,EAAE,qBAAqB;IAClD,gCAAgC,EAAE,0BAA0B;IAC5D,6BAA6B,EAAE,uBAAuB;IACtD,mCAAmC,EAAE,uBAAuB;IAC5D,4BAA4B,EAAE,sBAAsB;IACpD,6BAA6B,EAAE,wBAAwB;IACvD,kCAAkC,EAAE,6BAA6B;IACjE,4BAA4B,EAAE,sBAAsB;IACpD,mBAAmB,EAAE,mBAAmB;IACxC,6BAA6B,EAAE,yBAAyB;IACxD,uBAAuB,EAAE,mBAAmB;IAC5C,oBAAoB,EAAE,gBAAgB;IACtC,0BAA0B,EAAE,eAAe;IAC3C,iCAAiC,EAAE,sBAAsB;IACzD,2BAA2B,EAAE,kBAAkB;IAC/C,sBAAsB,EAAE,uBAAuB;IAC/C,sBAAsB,EAAE,mBAAmB;CACnC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { detectConsumerPackageName } from "../analytics/consumer-package.js";
2
+ import { parsePrivateKeyEnv } from "../utils/normalize-private-key.js";
2
3
  /** Default Celo RPC when `rpcUrl` is omitted. */
3
4
  export const DEFAULT_RPC_URL = "https://forno.celo.org";
4
5
  /**
@@ -6,10 +7,13 @@ export const DEFAULT_RPC_URL = "https://forno.celo.org";
6
7
  * @param opts - Optional RPC overrides from `createCelinaClient(opts)`
7
8
  */
8
9
  export function resolveSdkConfig(opts) {
9
- const selfAgentPrivateKey = opts?.selfAgentPrivateKey ??
10
+ const rawSelfAgentPrivateKey = opts?.selfAgentPrivateKey ??
10
11
  (typeof process !== "undefined"
11
12
  ? process.env.SELF_AGENT_PRIVATE_KEY
12
13
  : undefined);
14
+ const selfAgentPrivateKey = rawSelfAgentPrivateKey === undefined
15
+ ? undefined
16
+ : parsePrivateKeyEnv(rawSelfAgentPrivateKey, "SELF_AGENT_PRIVATE_KEY");
13
17
  return {
14
18
  rpcUrl: opts?.rpcUrl ?? DEFAULT_RPC_URL,
15
19
  ethRpcUrl: opts?.ethRpcUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAsC7E,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,mBAAmB,GACvB,IAAI,EAAE,mBAAmB;QACzB,CAAC,OAAO,OAAO,KAAK,WAAW;YAC7B,CAAC,CAAE,OAAO,CAAC,GAAG,CAAC,sBAAoD;YACnE,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe;QACvC,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,mBAAmB;QACnB,WAAW,EACT,IAAI,EAAE,WAAW;YACjB,CAAC,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB;gBACjC,CAAC,CAAC,SAAS,CAAC;QAChB,gBAAgB,EAAE,IAAI,EAAE,gBAAgB;QACxC,eAAe,EAAE,IAAI,EAAE,eAAe;QACtC,iBAAiB,EACf,IAAI,EAAE,iBAAiB,IAAI,yBAAyB,EAAE;QACxD,sBAAsB,EAAE,IAAI,EAAE,sBAAsB;QACpD,eAAe,EAAE,IAAI,EAAE,eAAe;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAsCvE,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,sBAAsB,GAC1B,IAAI,EAAE,mBAAmB;QACzB,CAAC,OAAO,OAAO,KAAK,WAAW;YAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB;YACpC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,MAAM,mBAAmB,GACvB,sBAAsB,KAAK,SAAS;QAClC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;IAE3E,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe;QACvC,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,mBAAmB;QACnB,WAAW,EACT,IAAI,EAAE,WAAW;YACjB,CAAC,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB;gBACjC,CAAC,CAAC,SAAS,CAAC;QAChB,gBAAgB,EAAE,IAAI,EAAE,gBAAgB;QACxC,eAAe,EAAE,IAAI,EAAE,eAAe;QACtC,iBAAiB,EACf,IAAI,EAAE,iBAAiB,IAAI,yBAAyB,EAAE;QACxD,sBAAsB,EAAE,IAAI,EAAE,sBAAsB;QACpD,eAAe,EAAE,IAAI,EAAE,eAAe;KACvC,CAAC;AACJ,CAAC"}
package/build/index.d.ts CHANGED
@@ -93,7 +93,7 @@ export type { MentoFxParams } from "./services/mento-fx.service.js";
93
93
  export type { UniswapSwapParams } from "./services/uniswap.service.js";
94
94
  /** Pagination and metadata options for governance proposal lists. */
95
95
  export type { GovernanceProposalsOptions } from "./services/governance.service.js";
96
- export type { StakeEligibilityResult } from "./services/staking.service.js";
96
+ export type { StakeEligibilityResult, GetGovernanceDelegatesOptions, GovernanceDelegate, GovernanceDelegateMetadata, GovernanceDelegatesResult } from "./services/staking.service.js";
97
97
  /** On-chain VoteValue enum names for governance voting. */
98
98
  export type { VoteValueName } from "./abis/governance.js";
99
99
  export { VOTE_VALUES, voteValueToInt } from "./abis/governance.js";
@@ -102,6 +102,7 @@ export type { HumannessCheckResult, HumannessRailResult, } from "./services/huma
102
102
  export { assertHumanness } from "./services/humanness.service.js";
103
103
  export { toFixidity, percentToFixidity, fromFixidity, FIXIDITY_ONE } from "./utils/fixidity.js";
104
104
  export { findLesserAndGreaterAfterVote } from "./utils/election-vote-neighbors.js";
105
+ export { parsePrivateKeyEnv } from "./utils/normalize-private-key.js";
105
106
  /** Parameters for generic contract reads, estimates, and write prepares. */
106
107
  export type { ContractCallParams } from "./services/contract.service.js";
107
108
  /** Aave V3 Celo pool address and supported asset symbols. */
package/build/index.js CHANGED
@@ -67,6 +67,7 @@ export { VOTE_VALUES, voteValueToInt } from "./abis/governance.js";
67
67
  export { assertHumanness } from "./services/humanness.service.js";
68
68
  export { toFixidity, percentToFixidity, fromFixidity, FIXIDITY_ONE } from "./utils/fixidity.js";
69
69
  export { findLesserAndGreaterAfterVote } from "./utils/election-vote-neighbors.js";
70
+ export { parsePrivateKeyEnv } from "./utils/normalize-private-key.js";
70
71
  /** Aave V3 Celo pool address and supported asset symbols. */
71
72
  export { AAVE_POOL, AAVE_SUPPORTED_SYMBOLS, resolveAaveAsset, } from "./config/aave.js";
72
73
  export { CHAIN, DEFAULT_RPC_URL } from "./config/chains.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,iBAAiB,GAElB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAmDtE;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA0B;IAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,CAAmB,GAAW,EAAE,OAAU,EAAE,EAAE,CACzD,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE3D,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QAClD,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAClD,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC9E,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;QAC/B,sEAAsE;QACtE,uEAAuE;QACvE,UAAU,EAAE,IAAI,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;KACpD,CAAC;AACJ,CAAC;AAYD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAc5D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMnE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAGnF,6DAA6D;AAC7D,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAavB,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,kCAAkC,EAClC,6BAA6B,EAC7B,wBAAwB,EACxB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gCAAgC,EAChC,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,WAAW,GAIZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAE9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,wEAAwE;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAkB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,iBAAiB,GAElB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAmDtE;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA0B;IAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,CAAmB,GAAW,EAAE,OAAU,EAAE,EAAE,CACzD,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE3D,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAClC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QAClD,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAClD,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QAC3D,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC9E,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;QAC/B,sEAAsE;QACtE,uEAAuE;QACvE,UAAU,EAAE,IAAI,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;KACpD,CAAC;AACJ,CAAC;AAYD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAc5D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMnE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,6DAA6D;AAC7D,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAavB,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,kCAAkC,EAClC,6BAA6B,EAC7B,wBAAwB,EACxB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gCAAgC,EAChC,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,WAAW,GAIZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAE9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,wEAAwE;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { z } from "zod";
2
+ import type { PublicClient } from "viem";
3
+ export declare const CELO_MONDO_DELEGATES_URL = "https://raw.githubusercontent.com/celo-org/celo-mondo/main/src/config/delegates.json";
4
+ declare const DelegateeMetadataSchema: z.ZodObject<{
5
+ name: z.ZodString;
6
+ address: z.ZodString;
7
+ logoUri: z.ZodString;
8
+ date: z.ZodString;
9
+ links: z.ZodObject<{
10
+ website: z.ZodOptional<z.ZodString>;
11
+ twitter: z.ZodOptional<z.ZodString>;
12
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
13
+ website: z.ZodOptional<z.ZodString>;
14
+ twitter: z.ZodOptional<z.ZodString>;
15
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
16
+ website: z.ZodOptional<z.ZodString>;
17
+ twitter: z.ZodOptional<z.ZodString>;
18
+ }, z.ZodTypeAny, "passthrough">>;
19
+ interests: z.ZodArray<z.ZodString, "many">;
20
+ description: z.ZodString;
21
+ stCELO: z.ZodOptional<z.ZodBoolean>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ address: string;
24
+ name: string;
25
+ description: string;
26
+ logoUri: string;
27
+ date: string;
28
+ links: {
29
+ website?: string | undefined;
30
+ twitter?: string | undefined;
31
+ } & {
32
+ [k: string]: unknown;
33
+ };
34
+ interests: string[];
35
+ stCELO?: boolean | undefined;
36
+ }, {
37
+ address: string;
38
+ name: string;
39
+ description: string;
40
+ logoUri: string;
41
+ date: string;
42
+ links: {
43
+ website?: string | undefined;
44
+ twitter?: string | undefined;
45
+ } & {
46
+ [k: string]: unknown;
47
+ };
48
+ interests: string[];
49
+ stCELO?: boolean | undefined;
50
+ }>;
51
+ export type GovernanceDelegateMetadata = z.infer<typeof DelegateeMetadataSchema>;
52
+ export type GovernanceDelegate = GovernanceDelegateMetadata & {
53
+ address: `0x${string}`;
54
+ votingPower?: string;
55
+ votingPowerFormatted?: string;
56
+ delegatedToBalance?: string;
57
+ delegatedToBalanceFormatted?: string;
58
+ delegatedByPercent?: string;
59
+ };
60
+ export type GetGovernanceDelegatesOptions = {
61
+ search?: string;
62
+ limit?: number;
63
+ offset?: number;
64
+ includeStats?: boolean;
65
+ };
66
+ export type GovernanceDelegatesResult = {
67
+ network: "mainnet";
68
+ source: "celo-mondo";
69
+ sourceUrl: string;
70
+ directoryNote: string;
71
+ delegates: GovernanceDelegate[];
72
+ pagination: {
73
+ total: number;
74
+ offset: number;
75
+ limit: number;
76
+ hasMore: boolean;
77
+ };
78
+ };
79
+ /** @internal Test hook — clears in-memory Mondo metadata cache. */
80
+ export declare function clearGovernanceDelegatesCacheForTests(): void;
81
+ export declare function getGovernanceDelegates(client: PublicClient, options?: GetGovernanceDelegatesOptions): Promise<GovernanceDelegatesResult>;
82
+ export {};
@@ -0,0 +1,150 @@
1
+ import { z } from "zod";
2
+ import { lockedGoldAbi } from "../abis/locked-gold.js";
3
+ import { CELO_CORE_CONTRACTS } from "../config/celo-core-contracts.js";
4
+ import { formatCeloAmount } from "../utils/celo-format.js";
5
+ import { fromFixidity } from "../utils/fixidity.js";
6
+ export const CELO_MONDO_DELEGATES_URL = "https://raw.githubusercontent.com/celo-org/celo-mondo/main/src/config/delegates.json";
7
+ const DIRECTORY_NOTE = "Curated Celo Mondo delegate directory (off-chain). Not an on-chain registry — any address can receive governance delegation via LockedGold.";
8
+ const CACHE_TTL_MS = 10 * 60 * 1000;
9
+ const DelegateeLinksSchema = z
10
+ .object({
11
+ website: z.string().optional(),
12
+ twitter: z.string().optional(),
13
+ })
14
+ .passthrough();
15
+ const DelegateeMetadataSchema = z.object({
16
+ name: z.string().min(1),
17
+ address: z.string().regex(/^0x[a-fA-F0-9]{40}$/),
18
+ logoUri: z.string().min(1),
19
+ date: z.string(),
20
+ links: DelegateeLinksSchema,
21
+ interests: z.array(z.string().min(1)).min(1),
22
+ description: z.string().min(1),
23
+ stCELO: z.boolean().optional(),
24
+ });
25
+ const DelegateeMetadataMapSchema = z.record(z.string(), DelegateeMetadataSchema);
26
+ let metadataCache = null;
27
+ /** @internal Test hook — clears in-memory Mondo metadata cache. */
28
+ export function clearGovernanceDelegatesCacheForTests() {
29
+ metadataCache = null;
30
+ }
31
+ async function fetchMondoDelegateMetadata() {
32
+ const now = Date.now();
33
+ if (metadataCache && now - metadataCache.fetchedAt < CACHE_TTL_MS) {
34
+ return metadataCache.entries;
35
+ }
36
+ let response;
37
+ try {
38
+ response = await fetch(CELO_MONDO_DELEGATES_URL, {
39
+ signal: AbortSignal.timeout(10_000),
40
+ });
41
+ }
42
+ catch {
43
+ throw new Error(`Failed to fetch Celo Mondo delegate directory from ${CELO_MONDO_DELEGATES_URL}`);
44
+ }
45
+ if (!response.ok) {
46
+ throw new Error(`Celo Mondo delegate directory returned HTTP ${response.status} (${CELO_MONDO_DELEGATES_URL})`);
47
+ }
48
+ const json = await response.json();
49
+ const parsed = DelegateeMetadataMapSchema.parse(json);
50
+ const entries = Object.values(parsed).sort((a, b) => a.name.localeCompare(b.name));
51
+ metadataCache = { fetchedAt: now, entries };
52
+ return entries;
53
+ }
54
+ function filterDelegatees(entries, search, offset = 0, limit = 20) {
55
+ let filtered = entries;
56
+ if (search?.trim()) {
57
+ const q = search.trim().toLowerCase();
58
+ filtered = entries.filter((d) => d.name.toLowerCase().includes(q) ||
59
+ d.address.toLowerCase().includes(q) ||
60
+ d.interests.some((i) => i.toLowerCase().includes(q)) ||
61
+ d.description.toLowerCase().includes(q));
62
+ }
63
+ const total = filtered.length;
64
+ const safeOffset = Math.max(0, offset);
65
+ const safeLimit = Math.min(Math.max(1, limit), 100);
66
+ const slice = filtered.slice(safeOffset, safeOffset + safeLimit);
67
+ return { slice, total };
68
+ }
69
+ async function enrichDelegateesWithStats(client, metadata) {
70
+ if (metadata.length === 0)
71
+ return [];
72
+ const lockedGold = CELO_CORE_CONTRACTS.lockedGold;
73
+ const votingPowerCalls = metadata.map((d) => ({
74
+ address: lockedGold,
75
+ abi: lockedGoldAbi,
76
+ functionName: "getAccountTotalGovernanceVotingPower",
77
+ args: [d.address],
78
+ }));
79
+ const delegatedFractionCalls = metadata.map((d) => ({
80
+ address: lockedGold,
81
+ abi: lockedGoldAbi,
82
+ functionName: "getAccountTotalDelegatedFraction",
83
+ args: [d.address],
84
+ }));
85
+ const delegatedToCalls = metadata.map((d) => ({
86
+ address: lockedGold,
87
+ abi: lockedGoldAbi,
88
+ functionName: "totalDelegatedCelo",
89
+ args: [d.address],
90
+ }));
91
+ const [votingPowerResults, delegatedFractionResults, delegatedToResults] = await Promise.all([
92
+ client.multicall({ contracts: votingPowerCalls, allowFailure: true }),
93
+ client.multicall({ contracts: delegatedFractionCalls, allowFailure: true }),
94
+ client.multicall({ contracts: delegatedToCalls, allowFailure: true }),
95
+ ]);
96
+ return metadata.map((entry, index) => {
97
+ const base = {
98
+ ...entry,
99
+ address: entry.address,
100
+ };
101
+ const votingPowerRes = votingPowerResults[index];
102
+ const delegatedFractionRes = delegatedFractionResults[index];
103
+ const delegatedToRes = delegatedToResults[index];
104
+ if (votingPowerRes.status !== "success" ||
105
+ delegatedFractionRes.status !== "success" ||
106
+ delegatedToRes.status !== "success") {
107
+ return base;
108
+ }
109
+ const votingPower = votingPowerRes.result;
110
+ const delegatedByPercent = fromFixidity(delegatedFractionRes.result) * 100;
111
+ const delegatedToBalance = delegatedToRes.result;
112
+ return {
113
+ ...base,
114
+ votingPower: votingPower.toString(),
115
+ votingPowerFormatted: formatCeloAmount(votingPower),
116
+ delegatedToBalance: delegatedToBalance.toString(),
117
+ delegatedToBalanceFormatted: formatCeloAmount(delegatedToBalance),
118
+ delegatedByPercent: delegatedByPercent.toFixed(2),
119
+ };
120
+ });
121
+ }
122
+ export async function getGovernanceDelegates(client, options = {}) {
123
+ const includeStats = options.includeStats !== false;
124
+ const offset = options.offset ?? 0;
125
+ const limit = options.limit ?? 20;
126
+ const allMetadata = await fetchMondoDelegateMetadata();
127
+ const { slice, total } = filterDelegatees(allMetadata, options.search, offset, limit);
128
+ const delegates = includeStats
129
+ ? await enrichDelegateesWithStats(client, slice)
130
+ : slice.map((entry) => ({
131
+ ...entry,
132
+ address: entry.address,
133
+ }));
134
+ const safeOffset = Math.max(0, offset);
135
+ const safeLimit = Math.min(Math.max(1, limit), 100);
136
+ return {
137
+ network: "mainnet",
138
+ source: "celo-mondo",
139
+ sourceUrl: CELO_MONDO_DELEGATES_URL,
140
+ directoryNote: DIRECTORY_NOTE,
141
+ delegates,
142
+ pagination: {
143
+ total,
144
+ offset: safeOffset,
145
+ limit: safeLimit,
146
+ hasMore: safeOffset + safeLimit < total,
147
+ },
148
+ };
149
+ }
150
+ //# sourceMappingURL=governance-delegates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-delegates.js","sourceRoot":"","sources":["../../src/services/governance-delegates.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import type { CeloClientFactory } from "../clients/celo-client.js";
2
2
  import { type SerializedPreparedFlow } from "../types/prepared.js";
3
3
  import { type StakeEligibilityResult } from "../utils/stake-eligibility.js";
4
+ import { type GetGovernanceDelegatesOptions, type GovernanceDelegatesResult } from "./governance-delegates.js";
4
5
  export type { StakeEligibilityResult } from "../utils/stake-eligibility.js";
6
+ export type { GetGovernanceDelegatesOptions, GovernanceDelegate, GovernanceDelegateMetadata, GovernanceDelegatesResult, } from "./governance-delegates.js";
5
7
  /** Validator election staking reads and writes via Celo core contracts. */
6
8
  export declare class StakingService {
7
9
  private readonly clientFactory;
@@ -159,6 +161,11 @@ export declare class StakingService {
159
161
  currentAmountFormatted: string;
160
162
  }[];
161
163
  }>;
164
+ /**
165
+ * Curated Celo Mondo governance delegate directory with optional LockedGold stats.
166
+ * Off-chain directory — not an on-chain registry; any address can receive delegation.
167
+ */
168
+ getGovernanceDelegates(options?: GetGovernanceDelegatesOptions): Promise<GovernanceDelegatesResult>;
162
169
  private fetchGroupVoteHeadroom;
163
170
  private buildStep;
164
171
  private toPreparedFlow;
@@ -17,6 +17,7 @@ import { findLesserAndGreaterAfterVote } from "../utils/election-vote-neighbors.
17
17
  import { fromFixidity, percentToFixidity } from "../utils/fixidity.js";
18
18
  import { assertStakeEligible, computeGroupVoteHeadroom, deriveStakeEligibility, } from "../utils/stake-eligibility.js";
19
19
  import { isCeloAccountRegistered } from "../utils/celo-account.js";
20
+ import { getGovernanceDelegates as fetchGovernanceDelegates, } from "./governance-delegates.js";
20
21
  const MAX_ELECTABLE_VALIDATORS = 110;
21
22
  const MIN_INCREMENTAL_VOTE_AMOUNT = parseEther("0.000001");
22
23
  function calculateGroupCapacity(groupMembers, totalLockedGold, totalValidators) {
@@ -514,6 +515,13 @@ export class StakingService {
514
515
  delegatees: delegateeDetails,
515
516
  };
516
517
  }
518
+ /**
519
+ * Curated Celo Mondo governance delegate directory with optional LockedGold stats.
520
+ * Off-chain directory — not an on-chain registry; any address can receive delegation.
521
+ */
522
+ async getGovernanceDelegates(options) {
523
+ return fetchGovernanceDelegates(this.getClient(), options);
524
+ }
517
525
  async fetchGroupVoteHeadroom(groupAddress) {
518
526
  const client = this.getClient();
519
527
  const election = CELO_CORE_CONTRACTS.election;