@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.
- package/README.md +27 -2
- package/build/abis/locked-gold.d.ts +12 -0
- package/build/abis/locked-gold.js +7 -0
- package/build/abis/locked-gold.js.map +1 -1
- package/build/analytics/mcp-tool-events.js +1 -0
- package/build/analytics/mcp-tool-events.js.map +1 -1
- package/build/config/sdk-config.js +5 -1
- package/build/config/sdk-config.js.map +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/services/governance-delegates.d.ts +82 -0
- package/build/services/governance-delegates.js +150 -0
- package/build/services/governance-delegates.js.map +1 -0
- package/build/services/staking.service.d.ts +7 -0
- package/build/services/staking.service.js +8 -0
- package/build/services/staking.service.js.map +1 -1
- package/build/src/abis/locked-gold.d.ts +12 -0
- package/build/src/abis/locked-gold.js +7 -0
- package/build/src/abis/locked-gold.js.map +1 -1
- package/build/src/analytics/mcp-tool-events.js +1 -0
- package/build/src/analytics/mcp-tool-events.js.map +1 -1
- package/build/src/config/sdk-config.js +5 -1
- package/build/src/config/sdk-config.js.map +1 -1
- package/build/src/index.d.ts +2 -1
- package/build/src/index.js +1 -0
- package/build/src/index.js.map +1 -1
- package/build/src/services/governance-delegates.d.ts +82 -0
- package/build/src/services/governance-delegates.js +150 -0
- package/build/src/services/governance-delegates.js.map +1 -0
- package/build/src/services/staking.service.d.ts +7 -0
- package/build/src/services/staking.service.js +8 -0
- package/build/src/services/staking.service.js.map +1 -1
- package/build/src/tools/domains/staking.js +24 -0
- package/build/src/tools/domains/staking.js.map +1 -1
- package/build/src/utils/normalize-private-key.d.ts +9 -0
- package/build/src/utils/normalize-private-key.js +23 -0
- package/build/src/utils/normalize-private-key.js.map +1 -0
- package/build/tests/catalog/domains/chain-ext.js +23 -0
- package/build/tests/catalog/domains/chain-ext.js.map +1 -1
- package/build/tools/domains/staking.js +24 -0
- package/build/tools/domains/staking.js.map +1 -1
- package/build/utils/normalize-private-key.d.ts +9 -0
- package/build/utils/normalize-private-key.js +23 -0
- package/build/utils/normalize-private-key.js.map +1 -0
- 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
|
|
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**
|
|
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
|
|
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;
|
|
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";
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|