@andrewkimjoseph/celina 0.3.5 → 0.4.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 +33 -18
- package/build/clients/celo-client.d.ts +0 -1
- package/build/clients/celo-client.js +0 -19
- package/build/clients/celo-client.js.map +1 -1
- package/build/config/aave.d.ts +8 -2
- package/build/config/aave.js +51 -2
- package/build/config/aave.js.map +1 -1
- package/build/config/chains.js +7 -0
- package/build/config/chains.js.map +1 -1
- package/build/server/instructions.js +3 -3
- package/build/services/aave.service.d.ts +6 -6
- package/build/services/aave.service.js +40 -40
- package/build/services/aave.service.js.map +1 -1
- package/build/services/mento-fx.service.d.ts +1 -2
- package/build/services/mento-fx.service.js +5 -10
- package/build/services/mento-fx.service.js.map +1 -1
- package/build/services/self.service.d.ts +5 -8
- package/build/services/self.service.js +10 -14
- package/build/services/self.service.js.map +1 -1
- package/build/services/transaction.service.d.ts +3 -3
- package/build/services/transaction.service.js +7 -12
- package/build/services/transaction.service.js.map +1 -1
- package/build/tools/aave.tools.js +18 -19
- package/build/tools/aave.tools.js.map +1 -1
- package/build/tools/index.js +0 -2
- package/build/tools/index.js.map +1 -1
- package/build/tools/mento-fx.tools.js +4 -11
- package/build/tools/mento-fx.tools.js.map +1 -1
- package/build/tools/self.tools.js +11 -25
- package/build/tools/self.tools.js.map +1 -1
- package/build/tools/transaction.tools.js +6 -12
- package/build/tools/transaction.tools.js.map +1 -1
- package/package.json +2 -7
- package/build/crypto/wallet-key-crypto.d.ts +0 -11
- package/build/crypto/wallet-key-crypto.js +0 -57
- package/build/crypto/wallet-key-crypto.js.map +0 -1
- package/build/http.d.ts +0 -2
- package/build/http.js +0 -15
- package/build/http.js.map +0 -1
- package/build/server/create-http-app.d.ts +0 -1
- package/build/server/create-http-app.js +0 -147
- package/build/server/create-http-app.js.map +0 -1
- package/build/tools/wallet.tools.d.ts +0 -2
- package/build/tools/wallet.tools.js +0 -23
- package/build/tools/wallet.tools.js.map +0 -1
package/README.md
CHANGED
|
@@ -102,29 +102,45 @@ For development from a cloned repo, point at your local `build/index.js`:
|
|
|
102
102
|
}
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
##
|
|
105
|
+
## Run Celina with your own model
|
|
106
106
|
|
|
107
|
-
Celina is
|
|
107
|
+
Celina is a plain MCP server. Pair it with any MCP-aware local stack — Ollama, LM Studio, llama.cpp — through a client that supports tool calling.
|
|
108
108
|
|
|
109
|
-
Read-only tools (balances, blocks, GoodDollar status, etc.) work out of the box. For write tools
|
|
109
|
+
Read-only tools (balances, blocks, GoodDollar status, etc.) work out of the box. For write tools, set `CELO_PRIVATE_KEY` in the MCP server `env` block.
|
|
110
110
|
|
|
111
111
|
### LM Studio (0.3.17+)
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
Native MCP hosting via `mcp.json`.
|
|
114
114
|
|
|
115
|
-
1.
|
|
116
|
-
2. Add Celina under `mcpServers`
|
|
117
|
-
3.
|
|
118
|
-
4. Chat with a tool-capable model (
|
|
115
|
+
1. **Program** → **Install** → **Edit mcp.json**
|
|
116
|
+
2. Add Celina under `mcpServers`
|
|
117
|
+
3. Enable **Allow calling servers from mcp.json**
|
|
118
|
+
4. Chat with a tool-capable model (Qwen 2.5, Llama 3.1+)
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"mcpServers": {
|
|
123
|
+
"celina": {
|
|
124
|
+
"type": "stdio",
|
|
125
|
+
"command": "npx",
|
|
126
|
+
"args": ["-y", "@andrewkimjoseph/celina"],
|
|
127
|
+
"env": {
|
|
128
|
+
"CELO_PRIVATE_KEY": "0x...",
|
|
129
|
+
"SELF_AGENT_PRIVATE_KEY": "0x..."
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Omit `CELO_PRIVATE_KEY` for read-only.
|
|
121
137
|
|
|
122
|
-
### Continue
|
|
138
|
+
### Continue · VS Code
|
|
123
139
|
|
|
124
|
-
|
|
140
|
+
Agent mode in your editor. Drop a YAML file into your workspace and Continue picks it up in agent mode.
|
|
125
141
|
|
|
126
|
-
1.
|
|
127
|
-
2.
|
|
142
|
+
1. Create `.continue/mcpServers/celina.yaml`
|
|
143
|
+
2. Paste the snippet below
|
|
128
144
|
3. Switch Continue to agent mode and prompt
|
|
129
145
|
|
|
130
146
|
```yaml
|
|
@@ -159,7 +175,7 @@ npm run inspect
|
|
|
159
175
|
|
|
160
176
|
## Write tools
|
|
161
177
|
|
|
162
|
-
Set `CELO_PRIVATE_KEY` in your MCP server `env` block for on-chain writes (`send_token`, `estimate_send`, `execute_mento_fx`, `
|
|
178
|
+
Set `CELO_PRIVATE_KEY` in your MCP server `env` block for on-chain writes (`send_token`, `estimate_send`, `execute_mento_fx`, `supply_aave`, `withdraw_aave`). Use `SELF_AGENT_PRIVATE_KEY` for Self agent signing tools. Keys stay on your machine and are not sent to Celina's authors.
|
|
163
179
|
|
|
164
180
|
## Environment variables
|
|
165
181
|
|
|
@@ -200,14 +216,13 @@ Token symbols are resolved case-insensitively. Legacy aliases `cUSD` and `cEUR`
|
|
|
200
216
|
| `get_celo_balances` | read | CELO + ERC-20 balances (default: CELO + USDm) |
|
|
201
217
|
| `get_stablecoin_balances` | read | All registry stablecoins including GoodDollar |
|
|
202
218
|
| `get_token_info` | read | Token metadata |
|
|
203
|
-
| `get_wallet_encryption_public_key` | read | RSA public key (HTTP/self-hosted mode only) |
|
|
204
219
|
| `estimate_send` | read* | Gas estimate (*needs `CELO_PRIVATE_KEY`) |
|
|
205
220
|
| `send_token` | write | Send CELO or ERC-20 |
|
|
206
221
|
| `get_mento_fx_quote` | read | Mento FX expected output (no wallet) |
|
|
207
222
|
| `estimate_mento_fx` | read* | Mento FX gas estimate (*needs `CELO_PRIVATE_KEY`) |
|
|
208
223
|
| `execute_mento_fx` | write | Execute Mento FX conversion |
|
|
209
|
-
| `
|
|
210
|
-
| `
|
|
224
|
+
| `supply_aave` | write | Supply tokens to Aave V3 on Celo (USDT, WETH, USDm, USDC, CELO, EURm) |
|
|
225
|
+
| `withdraw_aave` | write | Withdraw tokens from Aave V3 on Celo |
|
|
211
226
|
| `get_gooddollar_whitelisting_info` | read | GoodDollar IdentityV4 whitelist status |
|
|
212
227
|
| `verify_self_agent` | read | Verify Self Agent ID on-chain by address |
|
|
213
228
|
| `lookup_self_agent` | read | Look up Self agent by numeric ID (ai.self.xyz) |
|
|
@@ -261,7 +276,7 @@ No changes to `src/index.ts` or server bootstrap required.
|
|
|
261
276
|
## Roadmap
|
|
262
277
|
|
|
263
278
|
- [x] Mento FX routing (`get_mento_fx_quote`, `estimate_mento_fx`, `execute_mento_fx`)
|
|
264
|
-
- [x] Aave lending tools (`
|
|
279
|
+
- [x] Aave lending tools (`supply_aave`, `withdraw_aave`) — USDT, WETH, USDm, USDC, CELO, EURm
|
|
265
280
|
- [x] Self proof verification (`verify_self_agent`, `verify_self_request`, `ai.self.xyz`)
|
|
266
281
|
- [x] Self Agent ID check (`lookup_self_agent`, registration & lifecycle tools)
|
|
267
282
|
|
|
@@ -35,24 +35,5 @@ export class CeloClientFactory {
|
|
|
35
35
|
};
|
|
36
36
|
return this.clients;
|
|
37
37
|
}
|
|
38
|
-
getClientsForAccount(privateKey) {
|
|
39
|
-
const rpcUrl = this.config.rpcUrl ?? DEFAULT_RPC_URL;
|
|
40
|
-
const transport = http(rpcUrl);
|
|
41
|
-
const publicClient = createPublicClient({
|
|
42
|
-
chain: CHAIN,
|
|
43
|
-
transport,
|
|
44
|
-
});
|
|
45
|
-
const account = privateKeyToAccount(privateKey);
|
|
46
|
-
const wallet = createWalletClient({
|
|
47
|
-
account,
|
|
48
|
-
chain: CHAIN,
|
|
49
|
-
transport,
|
|
50
|
-
});
|
|
51
|
-
return {
|
|
52
|
-
public: publicClient,
|
|
53
|
-
wallet,
|
|
54
|
-
accountAddress: account.address,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
38
|
}
|
|
58
39
|
//# sourceMappingURL=celo-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"celo-client.js","sourceRoot":"","sources":["../../src/clients/celo-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,GAGL,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAQ7D,MAAM,OAAO,iBAAiB;IAGC;IAFrB,OAAO,GAAuB,IAAI,CAAC;IAE3C,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAElD,UAAU;QACR,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK,EAAE,KAAK;YACZ,SAAS;SACV,CAAiB,CAAC;QAEnB,IAAI,MAAgC,CAAC;QACrC,IAAI,cAAyC,CAAC;QAE9C,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5D,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YACjC,MAAM,GAAG,kBAAkB,CAAC;gBAC1B,OAAO;gBACP,KAAK,EAAE,KAAK;gBACZ,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,GAAG;YACb,MAAM,EAAE,YAAY;YACpB,MAAM;YACN,cAAc;SACf,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"celo-client.js","sourceRoot":"","sources":["../../src/clients/celo-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,GAGL,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAQ7D,MAAM,OAAO,iBAAiB;IAGC;IAFrB,OAAO,GAAuB,IAAI,CAAC;IAE3C,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAElD,UAAU;QACR,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK,EAAE,KAAK;YACZ,SAAS;SACV,CAAiB,CAAC;QAEnB,IAAI,MAAgC,CAAC;QACrC,IAAI,cAAyC,CAAC;QAE9C,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5D,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YACjC,MAAM,GAAG,kBAAkB,CAAC;gBAC1B,OAAO;gBACP,KAAK,EAAE,KAAK;gBACZ,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,GAAG;YACb,MAAM,EAAE,YAAY;YACpB,MAAM;YACN,cAAc;SACf,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
|
package/build/config/aave.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/** Aave V3 on Celo mainnet — from bgd-labs/aave-address-book AaveV3Celo */
|
|
2
2
|
export declare const AAVE_POOL: "0x3E59A31363E2ad014dcbc521c4a0d5757d9f3402";
|
|
3
|
-
export declare const AAVE_USDT: "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e";
|
|
4
|
-
export declare const AAVE_USDT_A_TOKEN: "0xDeE98402A302e4D707fB9bf2bac66fAEEc31e8Df";
|
|
5
3
|
export declare const AAVE_CHAIN_ID = 42220;
|
|
4
|
+
export type AaveAsset = {
|
|
5
|
+
symbol: string;
|
|
6
|
+
underlying: `0x${string}`;
|
|
7
|
+
aToken: `0x${string}`;
|
|
8
|
+
};
|
|
9
|
+
export declare const AAVE_ASSETS: Record<string, AaveAsset>;
|
|
10
|
+
export declare const AAVE_SUPPORTED_SYMBOLS: readonly ["USDT", "WETH", "USDm", "USDC", "CELO", "EURm"];
|
|
11
|
+
export declare function resolveAaveAsset(token: string): AaveAsset;
|
package/build/config/aave.js
CHANGED
|
@@ -1,6 +1,55 @@
|
|
|
1
|
+
import { findKnownToken } from "./chains.js";
|
|
1
2
|
/** Aave V3 on Celo mainnet — from bgd-labs/aave-address-book AaveV3Celo */
|
|
2
3
|
export const AAVE_POOL = "0x3E59A31363E2ad014dcbc521c4a0d5757d9f3402";
|
|
3
|
-
export const AAVE_USDT = "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e";
|
|
4
|
-
export const AAVE_USDT_A_TOKEN = "0xDeE98402A302e4D707fB9bf2bac66fAEEc31e8Df";
|
|
5
4
|
export const AAVE_CHAIN_ID = 42220;
|
|
5
|
+
export const AAVE_ASSETS = {
|
|
6
|
+
USDT: {
|
|
7
|
+
symbol: "USDT",
|
|
8
|
+
underlying: "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e",
|
|
9
|
+
aToken: "0xDeE98402A302e4D707fB9bf2bac66fAEEc31e8Df",
|
|
10
|
+
},
|
|
11
|
+
WETH: {
|
|
12
|
+
symbol: "WETH",
|
|
13
|
+
underlying: "0xD221812de1BD094f35587EE8E174B07B6167D9Af",
|
|
14
|
+
aToken: "0xf385280F36e009C157697D25E0B802EfaBfd789c",
|
|
15
|
+
},
|
|
16
|
+
USDm: {
|
|
17
|
+
symbol: "USDm",
|
|
18
|
+
underlying: "0x765DE816845861e75A25fCA122bb6898B8B1282a",
|
|
19
|
+
aToken: "0xBba98352628B0B0c4b40583F593fFCb630935a45",
|
|
20
|
+
},
|
|
21
|
+
USDC: {
|
|
22
|
+
symbol: "USDC",
|
|
23
|
+
underlying: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C",
|
|
24
|
+
aToken: "0xFF8309b9e99bfd2D4021bc71a362aBD93dBd4785",
|
|
25
|
+
},
|
|
26
|
+
CELO: {
|
|
27
|
+
symbol: "CELO",
|
|
28
|
+
underlying: "0x471EcE3750Da237f93B8E339c536989b8978a438",
|
|
29
|
+
aToken: "0xC3e77dC389537Db1EEc7C33B95Cf3beECA71A209",
|
|
30
|
+
},
|
|
31
|
+
EURm: {
|
|
32
|
+
symbol: "EURm",
|
|
33
|
+
underlying: "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73",
|
|
34
|
+
aToken: "0x34c02571094e08E935B8cf8dC10F1Ad6795f1f81",
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
export const AAVE_SUPPORTED_SYMBOLS = [
|
|
38
|
+
"USDT",
|
|
39
|
+
"WETH",
|
|
40
|
+
"USDm",
|
|
41
|
+
"USDC",
|
|
42
|
+
"CELO",
|
|
43
|
+
"EURm",
|
|
44
|
+
];
|
|
45
|
+
export function resolveAaveAsset(token) {
|
|
46
|
+
const normalized = token.trim();
|
|
47
|
+
const known = findKnownToken(normalized);
|
|
48
|
+
const symbol = known?.symbol ?? normalized.toUpperCase();
|
|
49
|
+
const asset = AAVE_ASSETS[symbol];
|
|
50
|
+
if (!asset) {
|
|
51
|
+
throw new Error(`Token "${token}" is not supported on Aave V3 Celo. Supported: ${AAVE_SUPPORTED_SYMBOLS.join(", ")}.`);
|
|
52
|
+
}
|
|
53
|
+
return asset;
|
|
54
|
+
}
|
|
6
55
|
//# sourceMappingURL=aave.js.map
|
package/build/config/aave.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aave.js","sourceRoot":"","sources":["../../src/config/aave.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,4CAAqD,CAAC;AAC/E,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"aave.js","sourceRoot":"","sources":["../../src/config/aave.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,4CAAqD,CAAC;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AAQnC,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACE,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;IAEzD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,kDAAkD,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACtG,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/build/config/chains.js
CHANGED
|
@@ -130,6 +130,13 @@ export const KNOWN_TOKENS = [
|
|
|
130
130
|
useCase: "Widely used stablecoin with high liquidity",
|
|
131
131
|
decimals: 6,
|
|
132
132
|
},
|
|
133
|
+
{
|
|
134
|
+
symbol: "WETH",
|
|
135
|
+
address: "0xD221812de1BD094f35587EE8E174B07B6167D9Af",
|
|
136
|
+
issuer: "Wrapped Ether",
|
|
137
|
+
useCase: "Bridged ETH on Celo",
|
|
138
|
+
decimals: 18,
|
|
139
|
+
},
|
|
133
140
|
{
|
|
134
141
|
symbol: "vEUR",
|
|
135
142
|
address: "0x9346f43c1588b6df1d52bdd6bf846064f92d9cba",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../src/config/chains.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../src/config/chains.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,12 @@ Guidelines:
|
|
|
11
11
|
- Use get_stablecoin_balances to scan all stablecoins at once; use get_celo_balances with a tokens list for specific symbols.
|
|
12
12
|
- Use get_gooddollar_whitelisting_info to check GoodDollar IdentityV4 whitelist status, whitelisting date, and reverification progress for a wallet.
|
|
13
13
|
- Mento FX tools (get_mento_fx_quote, estimate_mento_fx, execute_mento_fx) convert between Mento oracle-priced tokens (USDm, EURm, CELO, etc.). They are unavailable when the Mento FX market is closed.
|
|
14
|
-
- Aave tools (
|
|
14
|
+
- Aave tools (supply_aave, withdraw_aave) supply and withdraw tokens on Aave V3 Celo. Supported: USDT, WETH, USDm, USDC, CELO, EURm. Use get_celo_balances with the target token before supplying; CELO requires wrapped CELO (ERC-20), not native CELO; use withdrawMax on withdraw to redeem the full supplied balance.
|
|
15
15
|
- Self Agent ID tools (ai.self.xyz on Celo mainnet):
|
|
16
16
|
- Read: verify_self_agent, lookup_self_agent, verify_self_request, get_self_identity
|
|
17
17
|
- Register: register_self_agent → human scans QR → check_self_registration (returns private_key_hex on success)
|
|
18
18
|
- Lifecycle: refresh_self_proof (only after on-chain proof expiry), deregister_self_agent (poll with check_self_registration)
|
|
19
|
-
- Auth: sign_self_request, authenticated_self_fetch (require SELF_AGENT_PRIVATE_KEY
|
|
20
|
-
- Self agent keys are separate from CELO_PRIVATE_KEY. Registration sessions are in-memory (~10 min TTL)
|
|
19
|
+
- Auth: sign_self_request, authenticated_self_fetch (require SELF_AGENT_PRIVATE_KEY). For Self demo/gated APIs use ?network=celo-mainnet (not mainnet), e.g. POST https://app.ai.self.xyz/api/demo/verify?network=celo-mainnet
|
|
20
|
+
- Self agent keys are separate from CELO_PRIVATE_KEY. Registration sessions are in-memory (~10 min TTL).
|
|
21
21
|
`.trim();
|
|
22
22
|
//# sourceMappingURL=instructions.js.map
|
|
@@ -3,12 +3,12 @@ export declare class AaveService {
|
|
|
3
3
|
private readonly clientFactory;
|
|
4
4
|
private readonly tokenService;
|
|
5
5
|
constructor(clientFactory: CeloClientFactory);
|
|
6
|
-
private
|
|
6
|
+
private requireClients;
|
|
7
7
|
private requireWallet;
|
|
8
|
-
private
|
|
9
|
-
private
|
|
10
|
-
private
|
|
11
|
-
|
|
8
|
+
private assertUnderlyingBalance;
|
|
9
|
+
private assertATokenBalance;
|
|
10
|
+
private ensureAllowance;
|
|
11
|
+
supply(token: string, amount: string): Promise<{
|
|
12
12
|
from: `0x${string}`;
|
|
13
13
|
amount: string;
|
|
14
14
|
token: string;
|
|
@@ -17,7 +17,7 @@ export declare class AaveService {
|
|
|
17
17
|
approvalHash: `0x${string}` | undefined;
|
|
18
18
|
operation: string;
|
|
19
19
|
}>;
|
|
20
|
-
|
|
20
|
+
withdraw(token: string, amount: string | undefined, withdrawMax?: boolean): Promise<{
|
|
21
21
|
from: `0x${string}`;
|
|
22
22
|
amount: string;
|
|
23
23
|
token: string;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { erc20Abi } from "viem";
|
|
2
2
|
import { aavePoolAbi } from "../abis/aave-pool.js";
|
|
3
|
-
import { AAVE_POOL,
|
|
3
|
+
import { AAVE_POOL, resolveAaveAsset, } from "../config/aave.js";
|
|
4
4
|
import { CELINA_DATA_SUFFIX } from "../config/celina-tag.js";
|
|
5
|
-
import { decryptPrivateKey } from "../crypto/wallet-key-crypto.js";
|
|
6
5
|
import { TokenService } from "./token.service.js";
|
|
7
6
|
export class AaveService {
|
|
8
7
|
clientFactory;
|
|
@@ -11,21 +10,17 @@ export class AaveService {
|
|
|
11
10
|
this.clientFactory = clientFactory;
|
|
12
11
|
this.tokenService = new TokenService(clientFactory);
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
if (encryptedPrivateKey) {
|
|
16
|
-
const privateKey = decryptPrivateKey(encryptedPrivateKey);
|
|
17
|
-
return this.clientFactory.getClientsForAccount(privateKey);
|
|
18
|
-
}
|
|
13
|
+
requireClients() {
|
|
19
14
|
const clients = this.clientFactory.getClients();
|
|
20
15
|
if (!clients.wallet || !clients.accountAddress) {
|
|
21
|
-
throw new Error("No wallet configured.
|
|
16
|
+
throw new Error("No wallet configured. Set CELO_PRIVATE_KEY in the MCP server env.");
|
|
22
17
|
}
|
|
23
18
|
return clients;
|
|
24
19
|
}
|
|
25
20
|
requireWallet(clients) {
|
|
26
21
|
const { public: publicClient, wallet, accountAddress: from } = clients;
|
|
27
22
|
if (!wallet || !from) {
|
|
28
|
-
throw new Error("Wallet client unavailable.
|
|
23
|
+
throw new Error("Wallet client unavailable. Set CELO_PRIVATE_KEY in the MCP server env.");
|
|
29
24
|
}
|
|
30
25
|
const account = wallet.account;
|
|
31
26
|
if (!account) {
|
|
@@ -37,35 +32,38 @@ export class AaveService {
|
|
|
37
32
|
}
|
|
38
33
|
return { publicClient, wallet, from, account, chain };
|
|
39
34
|
}
|
|
40
|
-
async
|
|
41
|
-
const
|
|
42
|
-
const required = this.tokenService.parseAmount(amount,
|
|
35
|
+
async assertUnderlyingBalance(asset, publicClient, owner, amount) {
|
|
36
|
+
const token = this.tokenService.resolveToken(asset.symbol);
|
|
37
|
+
const required = this.tokenService.parseAmount(amount, token.decimals);
|
|
43
38
|
const balance = await publicClient.readContract({
|
|
44
|
-
address:
|
|
39
|
+
address: asset.underlying,
|
|
45
40
|
abi: erc20Abi,
|
|
46
41
|
functionName: "balanceOf",
|
|
47
42
|
args: [owner],
|
|
48
43
|
});
|
|
49
44
|
if (balance < required) {
|
|
50
|
-
|
|
45
|
+
const celoHint = asset.symbol === "CELO"
|
|
46
|
+
? " Aave requires wrapped CELO (ERC-20), not native CELO."
|
|
47
|
+
: "";
|
|
48
|
+
throw new Error(`Insufficient ${asset.symbol} balance. Required ${amount} ${asset.symbol}, available ${balance.toString()} raw units.${celoHint}`);
|
|
51
49
|
}
|
|
52
50
|
}
|
|
53
|
-
async
|
|
54
|
-
const
|
|
55
|
-
const required = this.tokenService.parseAmount(amount,
|
|
51
|
+
async assertATokenBalance(asset, publicClient, owner, amount) {
|
|
52
|
+
const token = this.tokenService.resolveToken(asset.symbol);
|
|
53
|
+
const required = this.tokenService.parseAmount(amount, token.decimals);
|
|
56
54
|
const balance = await publicClient.readContract({
|
|
57
|
-
address:
|
|
55
|
+
address: asset.aToken,
|
|
58
56
|
abi: erc20Abi,
|
|
59
57
|
functionName: "balanceOf",
|
|
60
58
|
args: [owner],
|
|
61
59
|
});
|
|
62
60
|
if (balance < required) {
|
|
63
|
-
throw new Error(`Insufficient Aave
|
|
61
|
+
throw new Error(`Insufficient Aave ${asset.symbol} supply balance. Required ${amount} ${asset.symbol}, available ${balance.toString()} raw aToken units.`);
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
|
-
async
|
|
64
|
+
async ensureAllowance(underlying, tokenSymbol, publicClient, wallet, from, account, chain, amountWei) {
|
|
67
65
|
const allowance = await publicClient.readContract({
|
|
68
|
-
address:
|
|
66
|
+
address: underlying,
|
|
69
67
|
abi: erc20Abi,
|
|
70
68
|
functionName: "allowance",
|
|
71
69
|
args: [from, AAVE_POOL],
|
|
@@ -76,7 +74,7 @@ export class AaveService {
|
|
|
76
74
|
const approvalHash = await wallet.writeContract({
|
|
77
75
|
chain,
|
|
78
76
|
account,
|
|
79
|
-
address:
|
|
77
|
+
address: underlying,
|
|
80
78
|
abi: erc20Abi,
|
|
81
79
|
functionName: "approve",
|
|
82
80
|
args: [AAVE_POOL, amountWei],
|
|
@@ -84,24 +82,25 @@ export class AaveService {
|
|
|
84
82
|
});
|
|
85
83
|
const receipt = await publicClient.waitForTransactionReceipt({ hash: approvalHash });
|
|
86
84
|
if (receipt.status === "reverted") {
|
|
87
|
-
throw new Error(
|
|
85
|
+
throw new Error(`${tokenSymbol} approval reverted: ${approvalHash}`);
|
|
88
86
|
}
|
|
89
87
|
return approvalHash;
|
|
90
88
|
}
|
|
91
|
-
async
|
|
92
|
-
const
|
|
89
|
+
async supply(token, amount) {
|
|
90
|
+
const asset = resolveAaveAsset(token);
|
|
91
|
+
const clients = this.requireClients();
|
|
93
92
|
const { publicClient, wallet, from, account, chain } = this.requireWallet(clients);
|
|
94
|
-
await this.
|
|
95
|
-
const
|
|
96
|
-
const amountWei = this.tokenService.parseAmount(amount,
|
|
97
|
-
const approvalHash = await this.
|
|
93
|
+
await this.assertUnderlyingBalance(asset, publicClient, from, amount);
|
|
94
|
+
const resolved = this.tokenService.resolveToken(asset.symbol);
|
|
95
|
+
const amountWei = this.tokenService.parseAmount(amount, resolved.decimals);
|
|
96
|
+
const approvalHash = await this.ensureAllowance(asset.underlying, asset.symbol, publicClient, wallet, from, account, chain, amountWei);
|
|
98
97
|
const hash = await wallet.writeContract({
|
|
99
98
|
chain,
|
|
100
99
|
account,
|
|
101
100
|
address: AAVE_POOL,
|
|
102
101
|
abi: aavePoolAbi,
|
|
103
102
|
functionName: "supply",
|
|
104
|
-
args: [
|
|
103
|
+
args: [asset.underlying, amountWei, from, 0],
|
|
105
104
|
dataSuffix: CELINA_DATA_SUFFIX,
|
|
106
105
|
});
|
|
107
106
|
const receipt = await publicClient.waitForTransactionReceipt({ hash });
|
|
@@ -111,33 +110,34 @@ export class AaveService {
|
|
|
111
110
|
return {
|
|
112
111
|
from,
|
|
113
112
|
amount,
|
|
114
|
-
token:
|
|
113
|
+
token: asset.symbol,
|
|
115
114
|
market: AAVE_POOL,
|
|
116
115
|
hash,
|
|
117
116
|
approvalHash,
|
|
118
117
|
operation: "SUPPLY",
|
|
119
118
|
};
|
|
120
119
|
}
|
|
121
|
-
async
|
|
122
|
-
const
|
|
120
|
+
async withdraw(token, amount, withdrawMax) {
|
|
121
|
+
const asset = resolveAaveAsset(token);
|
|
122
|
+
const clients = this.requireClients();
|
|
123
123
|
const { publicClient, wallet, from, account, chain } = this.requireWallet(clients);
|
|
124
124
|
if (!withdrawMax && !amount) {
|
|
125
125
|
throw new Error("Provide amount or set withdrawMax to true.");
|
|
126
126
|
}
|
|
127
127
|
if (!withdrawMax && amount) {
|
|
128
|
-
await this.
|
|
128
|
+
await this.assertATokenBalance(asset, publicClient, from, amount);
|
|
129
129
|
}
|
|
130
|
-
const
|
|
130
|
+
const resolved = this.tokenService.resolveToken(asset.symbol);
|
|
131
131
|
const amountWei = withdrawMax
|
|
132
132
|
? await publicClient.readContract({
|
|
133
|
-
address:
|
|
133
|
+
address: asset.aToken,
|
|
134
134
|
abi: erc20Abi,
|
|
135
135
|
functionName: "balanceOf",
|
|
136
136
|
args: [from],
|
|
137
137
|
})
|
|
138
|
-
: this.tokenService.parseAmount(amount,
|
|
138
|
+
: this.tokenService.parseAmount(amount, resolved.decimals);
|
|
139
139
|
if (amountWei === 0n) {
|
|
140
|
-
throw new Error(
|
|
140
|
+
throw new Error(`No supplied ${asset.symbol} balance to withdraw.`);
|
|
141
141
|
}
|
|
142
142
|
const hash = await wallet.writeContract({
|
|
143
143
|
chain,
|
|
@@ -145,7 +145,7 @@ export class AaveService {
|
|
|
145
145
|
address: AAVE_POOL,
|
|
146
146
|
abi: aavePoolAbi,
|
|
147
147
|
functionName: "withdraw",
|
|
148
|
-
args: [
|
|
148
|
+
args: [asset.underlying, amountWei, from],
|
|
149
149
|
dataSuffix: CELINA_DATA_SUFFIX,
|
|
150
150
|
});
|
|
151
151
|
const receipt = await publicClient.waitForTransactionReceipt({ hash });
|
|
@@ -155,7 +155,7 @@ export class AaveService {
|
|
|
155
155
|
return {
|
|
156
156
|
from,
|
|
157
157
|
amount: withdrawMax ? "max" : amount,
|
|
158
|
-
token:
|
|
158
|
+
token: asset.symbol,
|
|
159
159
|
market: AAVE_POOL,
|
|
160
160
|
hash,
|
|
161
161
|
operation: "WITHDRAW",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aave.service.js","sourceRoot":"","sources":["../../src/services/aave.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,
|
|
1
|
+
{"version":3,"file":"aave.service.js","sourceRoot":"","sources":["../../src/services/aave.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EACL,SAAS,EACT,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,WAAW;IAGO;IAFZ,YAAY,CAAe;IAE5C,YAA6B,aAAgC;QAAhC,kBAAa,GAAb,aAAa,CAAmB;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC;IAEO,cAAc;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,aAAa,CAAC,OAAoB;QACxC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAEvE,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,KAAgB,EAChB,YAAmC,EACnC,KAAoB,EACpB,MAAc;QAEd,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEvE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YAC9C,OAAO,EAAE,KAAK,CAAC,UAAU;YACzB,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,KAAK,CAAC;SACd,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;YACvB,MAAM,QAAQ,GACZ,KAAK,CAAC,MAAM,KAAK,MAAM;gBACrB,CAAC,CAAC,wDAAwD;gBAC1D,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,gBAAgB,KAAK,CAAC,MAAM,sBAAsB,MAAM,IAAI,KAAK,CAAC,MAAM,eAAe,OAAO,CAAC,QAAQ,EAAE,cAAc,QAAQ,EAAE,CAClI,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,KAAgB,EAChB,YAAmC,EACnC,KAAoB,EACpB,MAAc;QAEd,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEvE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YAC9C,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,KAAK,CAAC;SACd,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,CAAC,MAAM,6BAA6B,MAAM,IAAI,KAAK,CAAC,MAAM,eAAe,OAAO,CAAC,QAAQ,EAAE,oBAAoB,CAC1I,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,UAAyB,EACzB,WAAmB,EACnB,YAAmC,EACnC,MAA0C,EAC1C,IAAmB,EACnB,OAAmE,EACnE,KAAkD,EAClD,SAAiB;QAEjB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YAChD,OAAO,EAAE,UAAU;YACnB,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,CAAC,CAAC;QAEH,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YAC9C,KAAK;YACL,OAAO;YACP,OAAO,EAAE,UAAU;YACnB,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YAC5B,UAAU,EAAE,kBAAkB;SAC/B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACrF,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,uBAAuB,YAAY,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAAc;QACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEnF,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE3E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAC7C,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,MAAM,EACZ,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,OAAO,EACP,KAAK,EACL,SAAS,CACV,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACtC,KAAK;YACL,OAAO;YACP,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,WAAW;YAChB,YAAY,EAAE,QAAQ;YACtB,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,UAAU,EAAE,kBAAkB;SAC/B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,OAAO;YACL,IAAI;YACJ,MAAM;YACN,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,MAAM,EAAE,SAAS;YACjB,IAAI;YACJ,YAAY;YACZ,SAAS,EAAE,QAAQ;SACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,MAA0B,EAC1B,WAAqB;QAErB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEnF,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,WAAW;YAC3B,CAAC,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC;gBAC9B,OAAO,EAAE,KAAK,CAAC,MAAM;gBACrB,GAAG,EAAE,QAAQ;gBACb,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,CAAC,IAAI,CAAC;aACb,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE9D,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAC,MAAM,uBAAuB,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACtC,KAAK;YACL,OAAO;YACP,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,WAAW;YAChB,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC;YACzC,UAAU,EAAE,kBAAkB;SAC/B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAO;YACrC,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,MAAM,EAAE,SAAS;YACjB,IAAI;YACJ,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC;SAClC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -3,13 +3,12 @@ export interface MentoFxParams {
|
|
|
3
3
|
slippageTolerance?: number;
|
|
4
4
|
deadlineMinutes?: number;
|
|
5
5
|
recipient?: `0x${string}`;
|
|
6
|
-
encryptedPrivateKey?: string;
|
|
7
6
|
}
|
|
8
7
|
export declare class MentoFxService {
|
|
9
8
|
private readonly clientFactory;
|
|
10
9
|
private readonly tokenService;
|
|
11
10
|
constructor(clientFactory: CeloClientFactory);
|
|
12
|
-
private
|
|
11
|
+
private requireClients;
|
|
13
12
|
private getMentoClient;
|
|
14
13
|
private resolveMentoPair;
|
|
15
14
|
private fxOptions;
|
|
@@ -2,7 +2,6 @@ import { concat, decodeFunctionData, erc20Abi, formatUnits } from "viem";
|
|
|
2
2
|
import { ChainId, deadlineFromMinutes, Mento, RouteNotFoundError, FXMarketClosedError, } from "../clients/mento-sdk.js";
|
|
3
3
|
import { CELINA_DATA_SUFFIX } from "../config/celina-tag.js";
|
|
4
4
|
import { toMentoTokenAddress } from "../config/chains.js";
|
|
5
|
-
import { decryptPrivateKey } from "../crypto/wallet-key-crypto.js";
|
|
6
5
|
import { ALLOWANCE_MAPPING_SLOTS, erc20AllowanceStateOverride, isLikelyTransferFailed, } from "../utils/erc20-allowance-storage.js";
|
|
7
6
|
import { TokenService } from "./token.service.js";
|
|
8
7
|
const DEFAULT_SLIPPAGE = 0.5;
|
|
@@ -36,14 +35,10 @@ export class MentoFxService {
|
|
|
36
35
|
this.clientFactory = clientFactory;
|
|
37
36
|
this.tokenService = new TokenService(clientFactory);
|
|
38
37
|
}
|
|
39
|
-
|
|
40
|
-
if (encryptedPrivateKey) {
|
|
41
|
-
const privateKey = decryptPrivateKey(encryptedPrivateKey);
|
|
42
|
-
return this.clientFactory.getClientsForAccount(privateKey);
|
|
43
|
-
}
|
|
38
|
+
requireClients() {
|
|
44
39
|
const clients = this.clientFactory.getClients();
|
|
45
40
|
if (!clients.wallet || !clients.accountAddress) {
|
|
46
|
-
throw new Error("No wallet configured.
|
|
41
|
+
throw new Error("No wallet configured. Set CELO_PRIVATE_KEY in the MCP server env.");
|
|
47
42
|
}
|
|
48
43
|
return clients;
|
|
49
44
|
}
|
|
@@ -190,7 +185,7 @@ export class MentoFxService {
|
|
|
190
185
|
}
|
|
191
186
|
}
|
|
192
187
|
async estimateFx(tokenIn, tokenOut, amount, params) {
|
|
193
|
-
const { public: client, accountAddress: from } = this.
|
|
188
|
+
const { public: client, accountAddress: from } = this.requireClients();
|
|
194
189
|
if (!from) {
|
|
195
190
|
throw new Error("Wallet address unavailable.");
|
|
196
191
|
}
|
|
@@ -226,9 +221,9 @@ export class MentoFxService {
|
|
|
226
221
|
}
|
|
227
222
|
}
|
|
228
223
|
async executeFx(tokenIn, tokenOut, amount, params) {
|
|
229
|
-
const { public: client, wallet, accountAddress: from } = this.
|
|
224
|
+
const { public: client, wallet, accountAddress: from } = this.requireClients();
|
|
230
225
|
if (!wallet || !from) {
|
|
231
|
-
throw new Error("Wallet client unavailable.
|
|
226
|
+
throw new Error("Wallet client unavailable. Set CELO_PRIVATE_KEY in the MCP server env.");
|
|
232
227
|
}
|
|
233
228
|
const { resolvedIn, resolvedOut, mentoIn, mentoOut } = this.resolveMentoPair(tokenIn, tokenOut);
|
|
234
229
|
const recipient = params?.recipient ?? from;
|