@andrewkimjoseph/celina 0.3.0 → 0.3.2
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/build/clients/ens-client.d.ts +10 -0
- package/build/clients/ens-client.js +23 -0
- package/build/clients/ens-client.js.map +1 -0
- package/build/config/env.d.ts +1 -0
- package/build/config/env.js +1 -0
- package/build/config/env.js.map +1 -1
- package/build/context/app-context.d.ts +4 -1
- package/build/context/app-context.js +3 -1
- package/build/context/app-context.js.map +1 -1
- package/build/schemas/common.d.ts +2 -0
- package/build/schemas/common.js +8 -0
- package/build/schemas/common.js.map +1 -1
- package/build/server/create-server.js +3 -1
- package/build/server/create-server.js.map +1 -1
- package/build/server/instructions.js +2 -1
- package/build/server/instructions.js.map +1 -1
- package/build/services/ens.service.d.ts +30 -0
- package/build/services/ens.service.js +78 -0
- package/build/services/ens.service.js.map +1 -0
- package/build/services/mento-fx.service.d.ts +5 -0
- package/build/services/mento-fx.service.js +35 -6
- package/build/services/mento-fx.service.js.map +1 -1
- package/build/tools/ens.tools.d.ts +2 -0
- package/build/tools/ens.tools.js +27 -0
- package/build/tools/ens.tools.js.map +1 -0
- package/build/tools/index.js +2 -0
- package/build/tools/index.js.map +1 -1
- package/build/tools/transaction.tools.js +11 -7
- package/build/tools/transaction.tools.js.map +1 -1
- package/build/utils/erc20-allowance-storage.d.ts +7 -0
- package/build/utils/erc20-allowance-storage.js +44 -0
- package/build/utils/erc20-allowance-storage.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type PublicClient } from "viem";
|
|
2
|
+
import type { AppConfig } from "../config/env.js";
|
|
3
|
+
export declare const DEFAULT_ETH_RPC_URL = "https://ethereum.publicnode.com";
|
|
4
|
+
export declare const ENS_CCIP_GATEWAY = "https://ccip.ens.xyz";
|
|
5
|
+
export declare class EnsClientFactory {
|
|
6
|
+
private readonly config;
|
|
7
|
+
private client;
|
|
8
|
+
constructor(config: AppConfig);
|
|
9
|
+
getClient(): PublicClient;
|
|
10
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createPublicClient, http } from "viem";
|
|
2
|
+
import { mainnet } from "viem/chains";
|
|
3
|
+
export const DEFAULT_ETH_RPC_URL = "https://ethereum.publicnode.com";
|
|
4
|
+
export const ENS_CCIP_GATEWAY = "https://ccip.ens.xyz";
|
|
5
|
+
export class EnsClientFactory {
|
|
6
|
+
config;
|
|
7
|
+
client = null;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
}
|
|
11
|
+
getClient() {
|
|
12
|
+
if (this.client) {
|
|
13
|
+
return this.client;
|
|
14
|
+
}
|
|
15
|
+
const rpcUrl = this.config.ethRpcUrl ?? DEFAULT_ETH_RPC_URL;
|
|
16
|
+
this.client = createPublicClient({
|
|
17
|
+
chain: mainnet,
|
|
18
|
+
transport: http(rpcUrl, { timeout: 15_000 }),
|
|
19
|
+
});
|
|
20
|
+
return this.client;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ens-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ens-client.js","sourceRoot":"","sources":["../../src/clients/ens-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAqB,MAAM,MAAM,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,iCAAiC,CAAC;AAErE,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,MAAM,OAAO,gBAAgB;IAGE;IAFrB,MAAM,GAAwB,IAAI,CAAC;IAE3C,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAElD,SAAS;QACP,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,mBAAmB,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC;YAC/B,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;SAC7C,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
package/build/config/env.d.ts
CHANGED
package/build/config/env.js
CHANGED
package/build/config/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,wBAAwB;QACpE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC1C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAA6C;QACrE,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAEpB;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CeloClientFactory } from "../clients/celo-client.js";
|
|
2
|
+
import type { EnsClientFactory } from "../clients/ens-client.js";
|
|
2
3
|
import { BlockchainService } from "../services/blockchain.service.js";
|
|
3
4
|
import { AccountService } from "../services/account.service.js";
|
|
4
5
|
import { TokenService } from "../services/token.service.js";
|
|
@@ -7,6 +8,7 @@ import { MentoFxService } from "../services/mento-fx.service.js";
|
|
|
7
8
|
import { GoodDollarService } from "../services/gooddollar.service.js";
|
|
8
9
|
import { AaveService } from "../services/aave.service.js";
|
|
9
10
|
import { SelfService } from "../services/self.service.js";
|
|
11
|
+
import { EnsService } from "../services/ens.service.js";
|
|
10
12
|
export interface AppContext {
|
|
11
13
|
config: {
|
|
12
14
|
hasWallet: boolean;
|
|
@@ -21,5 +23,6 @@ export interface AppContext {
|
|
|
21
23
|
gooddollar: GoodDollarService;
|
|
22
24
|
aave: AaveService;
|
|
23
25
|
self: SelfService;
|
|
26
|
+
ens: EnsService;
|
|
24
27
|
}
|
|
25
|
-
export declare function createAppContext(clientFactory: CeloClientFactory, walletAddress?: `0x${string}`, selfAgentPrivateKey?: `0x${string}`): AppContext;
|
|
28
|
+
export declare function createAppContext(clientFactory: CeloClientFactory, ensClientFactory: EnsClientFactory, walletAddress?: `0x${string}`, selfAgentPrivateKey?: `0x${string}`): AppContext;
|
|
@@ -6,7 +6,8 @@ import { MentoFxService } from "../services/mento-fx.service.js";
|
|
|
6
6
|
import { GoodDollarService } from "../services/gooddollar.service.js";
|
|
7
7
|
import { AaveService } from "../services/aave.service.js";
|
|
8
8
|
import { SelfService } from "../services/self.service.js";
|
|
9
|
-
|
|
9
|
+
import { EnsService } from "../services/ens.service.js";
|
|
10
|
+
export function createAppContext(clientFactory, ensClientFactory, walletAddress, selfAgentPrivateKey) {
|
|
10
11
|
return {
|
|
11
12
|
config: {
|
|
12
13
|
hasWallet: Boolean(walletAddress),
|
|
@@ -21,6 +22,7 @@ export function createAppContext(clientFactory, walletAddress, selfAgentPrivateK
|
|
|
21
22
|
gooddollar: new GoodDollarService(clientFactory),
|
|
22
23
|
aave: new AaveService(clientFactory),
|
|
23
24
|
self: new SelfService(clientFactory, selfAgentPrivateKey),
|
|
25
|
+
ens: new EnsService(ensClientFactory),
|
|
24
26
|
};
|
|
25
27
|
}
|
|
26
28
|
//# sourceMappingURL=app-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-context.js","sourceRoot":"","sources":["../../src/context/app-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-context.js","sourceRoot":"","sources":["../../src/context/app-context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAmBxD,MAAM,UAAU,gBAAgB,CAC9B,aAAgC,EAChC,gBAAkC,EAClC,aAA6B,EAC7B,mBAAmC;IAEnC,OAAO;QACL,MAAM,EAAE;YACN,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC;YACjC,aAAa;YACb,eAAe,EAAE,OAAO,CAAC,mBAAmB,CAAC;SAC9C;QACD,UAAU,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC;QAChD,OAAO,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC;QAC1C,KAAK,EAAE,IAAI,YAAY,CAAC,aAAa,CAAC;QACtC,WAAW,EAAE,IAAI,kBAAkB,CAAC,aAAa,CAAC;QAClD,OAAO,EAAE,IAAI,cAAc,CAAC,aAAa,CAAC;QAC1C,UAAU,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC;QAChD,IAAI,EAAE,IAAI,WAAW,CAAC,aAAa,CAAC;QACpC,IAAI,EAAE,IAAI,WAAW,CAAC,aAAa,EAAE,mBAAmB,CAAC;QACzD,GAAG,EAAE,IAAI,UAAU,CAAC,gBAAgB,CAAC;KACtC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const addressSchema: z.ZodString;
|
|
3
|
+
export declare const addressOrEnsSchema: z.ZodString;
|
|
3
4
|
export declare const blockIdSchema: z.ZodUnion<[z.ZodNumber, z.ZodString, z.ZodLiteral<"latest">, z.ZodLiteral<"pending">]>;
|
|
4
5
|
export declare const tokenSymbolSchema: z.ZodString;
|
|
6
|
+
export declare const ensNameSchema: z.ZodString;
|
package/build/schemas/common.js
CHANGED
|
@@ -2,6 +2,10 @@ import { z } from "zod";
|
|
|
2
2
|
export const addressSchema = z
|
|
3
3
|
.string()
|
|
4
4
|
.regex(/^0x[a-fA-F0-9]{40}$/, "Invalid Ethereum address");
|
|
5
|
+
export const addressOrEnsSchema = z
|
|
6
|
+
.string()
|
|
7
|
+
.min(3)
|
|
8
|
+
.describe("Recipient 0x address or ENS name (e.g. andrewkimjoseph.celo.eth, celina.eth)");
|
|
5
9
|
export const blockIdSchema = z
|
|
6
10
|
.union([
|
|
7
11
|
z.number().int().nonnegative(),
|
|
@@ -13,4 +17,8 @@ export const blockIdSchema = z
|
|
|
13
17
|
export const tokenSymbolSchema = z
|
|
14
18
|
.string()
|
|
15
19
|
.describe("Token symbol (e.g. CELO, USDm, G$, GoodDollar) or 0x contract address");
|
|
20
|
+
export const ensNameSchema = z
|
|
21
|
+
.string()
|
|
22
|
+
.min(3)
|
|
23
|
+
.describe("ENS name, e.g. celina.eth or vitalik.eth");
|
|
16
24
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,KAAK,CAAC,qBAAqB,EAAE,0BAA0B,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,KAAK,CAAC;IACL,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC9B,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAC1D,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;CACrB,CAAC;KACD,QAAQ,CAAC,uCAAuC,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,QAAQ,CAAC,uEAAuE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,KAAK,CAAC,qBAAqB,EAAE,0BAA0B,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,CACP,8EAA8E,CAC/E,CAAC;AAEJ,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,KAAK,CAAC;IACL,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC9B,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAC1D,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;CACrB,CAAC;KACD,QAAQ,CAAC,uCAAuC,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,QAAQ,CAAC,uEAAuE,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,CAAC,0CAA0C,CAAC,CAAC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { loadConfig } from "../config/env.js";
|
|
3
3
|
import { CeloClientFactory } from "../clients/celo-client.js";
|
|
4
|
+
import { EnsClientFactory } from "../clients/ens-client.js";
|
|
4
5
|
import { createAppContext } from "../context/app-context.js";
|
|
5
6
|
import { registerAllTools } from "../tools/index.js";
|
|
6
7
|
import { SERVER_INSTRUCTIONS } from "./instructions.js";
|
|
7
8
|
export function createServer() {
|
|
8
9
|
const config = loadConfig();
|
|
9
10
|
const clientFactory = new CeloClientFactory(config);
|
|
11
|
+
const ensClientFactory = new EnsClientFactory(config);
|
|
10
12
|
const clients = clientFactory.getClients();
|
|
11
13
|
const server = new McpServer({ name: "celina", version: "0.2.0" }, {
|
|
12
14
|
instructions: SERVER_INSTRUCTIONS,
|
|
@@ -15,7 +17,7 @@ export function createServer() {
|
|
|
15
17
|
logging: {},
|
|
16
18
|
},
|
|
17
19
|
});
|
|
18
|
-
registerAllTools(server, createAppContext(clientFactory, clients.accountAddress, config.selfAgentPrivateKey));
|
|
20
|
+
registerAllTools(server, createAppContext(clientFactory, ensClientFactory, clients.accountAddress, config.selfAgentPrivateKey));
|
|
19
21
|
return server;
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=create-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EACpC;QACE,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAC5B,OAAO,EAAE,EAAE;SACZ;KACF,CACF,CAAC;IAEF,gBAAgB,CACd,MAAM,EACN,gBAAgB,CACd,aAAa,EACb,OAAO,CAAC,cAAc,EACtB,MAAM,CAAC,mBAAmB,CAC3B,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EACpC;QACE,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAC5B,OAAO,EAAE,EAAE;SACZ;KACF,CACF,CAAC;IAEF,gBAAgB,CACd,MAAM,EACN,gBAAgB,CACd,aAAa,EACb,gBAAgB,EAChB,OAAO,CAAC,cAAc,EACtB,MAAM,CAAC,mBAAmB,CAC3B,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -2,7 +2,8 @@ export const SERVER_INSTRUCTIONS = `
|
|
|
2
2
|
You are connected to Celina, the Celo MCP server (mainnet only).
|
|
3
3
|
|
|
4
4
|
Guidelines:
|
|
5
|
-
- Prefer read-only tools (get_
|
|
5
|
+
- Prefer read-only tools (get_*, resolve_ens) before any write operation.
|
|
6
|
+
- send_token and estimate_send accept ENS names (e.g. andrewkimjoseph.celo.eth) directly; use resolve_ens for standalone lookups.
|
|
6
7
|
- Always call estimate_send before send_token when possible.
|
|
7
8
|
- For Mento FX conversions, call get_mento_fx_quote and estimate_mento_fx before execute_mento_fx.
|
|
8
9
|
- Write tools require CELO_PRIVATE_KEY in the server environment.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/server/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/server/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;CAoBlC,CAAC,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type EnsClientFactory } from "../clients/ens-client.js";
|
|
2
|
+
export type EnsResolveChain = "celo" | "ethereum";
|
|
3
|
+
export type ResolvedRecipient = {
|
|
4
|
+
address: `0x${string}`;
|
|
5
|
+
ens?: {
|
|
6
|
+
name: string;
|
|
7
|
+
normalizedName: string;
|
|
8
|
+
resolvedVia?: "celo" | "ethereum";
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare class EnsService {
|
|
12
|
+
private readonly ensClientFactory;
|
|
13
|
+
constructor(ensClientFactory: EnsClientFactory);
|
|
14
|
+
resolveEns(name: string, chain?: EnsResolveChain): Promise<{
|
|
15
|
+
name: string;
|
|
16
|
+
normalizedName: string;
|
|
17
|
+
address: `0x${string}`;
|
|
18
|
+
coinType: string;
|
|
19
|
+
chain: "ethereum";
|
|
20
|
+
resolvedVia?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
name: string;
|
|
23
|
+
normalizedName: string;
|
|
24
|
+
address: `0x${string}`;
|
|
25
|
+
coinType: string;
|
|
26
|
+
chain: "celo";
|
|
27
|
+
resolvedVia: "celo" | "ethereum";
|
|
28
|
+
}>;
|
|
29
|
+
resolveAddressOrEns(input: string): Promise<ResolvedRecipient>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { toCoinType } from "viem";
|
|
2
|
+
import { celo } from "viem/chains";
|
|
3
|
+
import { getEnsAddress, normalize } from "viem/ens";
|
|
4
|
+
import { ENS_CCIP_GATEWAY, } from "../clients/ens-client.js";
|
|
5
|
+
const ADDRESS_PATTERN = /^0x[a-fA-F0-9]{40}$/;
|
|
6
|
+
export class EnsService {
|
|
7
|
+
ensClientFactory;
|
|
8
|
+
constructor(ensClientFactory) {
|
|
9
|
+
this.ensClientFactory = ensClientFactory;
|
|
10
|
+
}
|
|
11
|
+
async resolveEns(name, chain = "celo") {
|
|
12
|
+
const trimmedName = name.trim();
|
|
13
|
+
const normalizedName = normalize(trimmedName);
|
|
14
|
+
const client = this.ensClientFactory.getClient();
|
|
15
|
+
const gatewayUrls = [ENS_CCIP_GATEWAY];
|
|
16
|
+
if (chain === "ethereum") {
|
|
17
|
+
const address = await getEnsAddress(client, {
|
|
18
|
+
name: normalizedName,
|
|
19
|
+
gatewayUrls,
|
|
20
|
+
});
|
|
21
|
+
if (!address) {
|
|
22
|
+
throw new Error(`ENS name "${trimmedName}" has no Ethereum address record`);
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
name: trimmedName,
|
|
26
|
+
normalizedName,
|
|
27
|
+
address,
|
|
28
|
+
coinType: "60",
|
|
29
|
+
chain: "ethereum",
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const celoCoinType = toCoinType(celo.id);
|
|
33
|
+
let address = await getEnsAddress(client, {
|
|
34
|
+
name: normalizedName,
|
|
35
|
+
coinType: celoCoinType,
|
|
36
|
+
gatewayUrls,
|
|
37
|
+
});
|
|
38
|
+
let coinType = celoCoinType.toString();
|
|
39
|
+
let resolvedVia = "celo";
|
|
40
|
+
if (!address) {
|
|
41
|
+
address = await getEnsAddress(client, {
|
|
42
|
+
name: normalizedName,
|
|
43
|
+
gatewayUrls,
|
|
44
|
+
});
|
|
45
|
+
coinType = "60";
|
|
46
|
+
resolvedVia = "ethereum";
|
|
47
|
+
}
|
|
48
|
+
if (!address) {
|
|
49
|
+
throw new Error(`ENS name "${trimmedName}" could not be resolved to an address`);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
name: trimmedName,
|
|
53
|
+
normalizedName,
|
|
54
|
+
address,
|
|
55
|
+
coinType,
|
|
56
|
+
chain: "celo",
|
|
57
|
+
resolvedVia,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async resolveAddressOrEns(input) {
|
|
61
|
+
const trimmed = input.trim();
|
|
62
|
+
if (ADDRESS_PATTERN.test(trimmed)) {
|
|
63
|
+
return { address: trimmed };
|
|
64
|
+
}
|
|
65
|
+
const resolved = await this.resolveEns(trimmed);
|
|
66
|
+
return {
|
|
67
|
+
address: resolved.address,
|
|
68
|
+
ens: {
|
|
69
|
+
name: resolved.name,
|
|
70
|
+
normalizedName: resolved.normalizedName,
|
|
71
|
+
...(resolved.chain === "celo"
|
|
72
|
+
? { resolvedVia: resolved.resolvedVia }
|
|
73
|
+
: {}),
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=ens.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ens.service.js","sourceRoot":"","sources":["../../src/services/ens.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EACL,gBAAgB,GAEjB,MAAM,0BAA0B,CAAC;AAIlC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAW9C,MAAM,OAAO,UAAU;IACQ;IAA7B,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAAG,CAAC;IAEnE,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,QAAyB,MAAM;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,WAAW,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEvC,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;gBAC1C,IAAI,EAAE,cAAc;gBACpB,WAAW;aACZ,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,aAAa,WAAW,kCAAkC,CAC3D,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,cAAc;gBACd,OAAO;gBACP,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,UAAmB;aAC3B,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;YACxC,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,YAAY;YACtB,WAAW;SACZ,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,WAAW,GAAwB,MAAM,CAAC;QAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;gBACpC,IAAI,EAAE,cAAc;gBACpB,WAAW;aACZ,CAAC,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC;YAChB,WAAW,GAAG,UAAU,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,aAAa,WAAW,uCAAuC,CAChE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,cAAc;YACd,OAAO;YACP,QAAQ;YACR,KAAK,EAAE,MAAe;YACtB,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAa;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAE7B,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,OAAwB,EAAE,CAAC;QAC/C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,OAAwB;YAC1C,GAAG,EAAE;gBACH,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM;oBAC3B,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE;oBACvC,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -16,6 +16,11 @@ export declare class MentoFxService {
|
|
|
16
16
|
private formatFxError;
|
|
17
17
|
private toSendParams;
|
|
18
18
|
private estimateCallGas;
|
|
19
|
+
/**
|
|
20
|
+
* Swap gas estimation runs transferFrom; without on-chain approval that reverts.
|
|
21
|
+
* Simulate sufficient allowance via eth_estimateGas stateOverride.
|
|
22
|
+
*/
|
|
23
|
+
private estimateSwapGasWithAllowance;
|
|
19
24
|
private executeCall;
|
|
20
25
|
private baseQuoteFields;
|
|
21
26
|
getFxQuote(tokenIn: string, tokenOut: string, amount: string): Promise<{
|
|
@@ -3,6 +3,7 @@ import { ChainId, deadlineFromMinutes, Mento, RouteNotFoundError, FXMarketClosed
|
|
|
3
3
|
import { CELINA_DATA_SUFFIX } from "../config/celina-tag.js";
|
|
4
4
|
import { toMentoTokenAddress } from "../config/chains.js";
|
|
5
5
|
import { decryptPrivateKey } from "../crypto/wallet-key-crypto.js";
|
|
6
|
+
import { ALLOWANCE_MAPPING_SLOTS, erc20AllowanceStateOverride, isLikelyTransferFailed, } from "../utils/erc20-allowance-storage.js";
|
|
6
7
|
import { TokenService } from "./token.service.js";
|
|
7
8
|
const DEFAULT_SLIPPAGE = 0.5;
|
|
8
9
|
const DEFAULT_DEADLINE_MINUTES = 5;
|
|
@@ -107,6 +108,33 @@ export class MentoFxService {
|
|
|
107
108
|
});
|
|
108
109
|
return gas.toString();
|
|
109
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Swap gas estimation runs transferFrom; without on-chain approval that reverts.
|
|
113
|
+
* Simulate sufficient allowance via eth_estimateGas stateOverride.
|
|
114
|
+
*/
|
|
115
|
+
async estimateSwapGasWithAllowance(client, from, params, approve) {
|
|
116
|
+
const request = {
|
|
117
|
+
account: from,
|
|
118
|
+
to: params.to,
|
|
119
|
+
data: params.data,
|
|
120
|
+
value: BigInt(params.value),
|
|
121
|
+
};
|
|
122
|
+
for (const mappingSlot of ALLOWANCE_MAPPING_SLOTS) {
|
|
123
|
+
try {
|
|
124
|
+
const gas = await client.estimateGas({
|
|
125
|
+
...request,
|
|
126
|
+
stateOverride: erc20AllowanceStateOverride(approve.token, from, approve.spender, approve.amount, mappingSlot),
|
|
127
|
+
});
|
|
128
|
+
return gas.toString();
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (!isLikelyTransferFailed(error)) {
|
|
132
|
+
throw error;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
throw new Error("Could not estimate Mento FX swap gas: failed to simulate ERC-20 allowance for this token.");
|
|
137
|
+
}
|
|
110
138
|
async executeCall(wallet, publicClient, params) {
|
|
111
139
|
const account = wallet.account;
|
|
112
140
|
if (!account) {
|
|
@@ -173,12 +201,13 @@ export class MentoFxService {
|
|
|
173
201
|
try {
|
|
174
202
|
const mento = await this.getMentoClient(client);
|
|
175
203
|
const { approval, swap } = await mento.swap.buildSwapTransaction(mentoIn, mentoOut, amountInWei, recipient, from, { slippageTolerance, deadline });
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
204
|
+
const approvalParsed = approval ? parseErc20Approve(approval) : null;
|
|
205
|
+
const approvalGas = approval
|
|
206
|
+
? await this.estimateCallGas(client, from, approval)
|
|
207
|
+
: undefined;
|
|
208
|
+
const fxGas = approvalParsed !== null
|
|
209
|
+
? await this.estimateSwapGasWithAllowance(client, from, swap.params, approvalParsed)
|
|
210
|
+
: await this.estimateCallGas(client, from, swap.params);
|
|
182
211
|
return {
|
|
183
212
|
...this.baseQuoteFields(resolvedIn, resolvedOut, amount, swap.expectedAmountOut, swap.route.path.length),
|
|
184
213
|
from,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mento-fx.service.js","sourceRoot":"","sources":["../../src/services/mento-fx.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mento-fx.service.js","sourceRoot":"","sources":["../../src/services/mento-fx.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ensNameSchema } from "../schemas/common.js";
|
|
3
|
+
import { err, ok } from "./helpers.js";
|
|
4
|
+
export const ensTools = {
|
|
5
|
+
register(server, ctx) {
|
|
6
|
+
server.registerTool("resolve_ens", {
|
|
7
|
+
title: "Resolve ENS",
|
|
8
|
+
description: "Resolve an ENS name (e.g. celina.eth) to a 0x address via Ethereum mainnet. Defaults to Celo: tries the Celo coin record first, then falls back to the standard Ethereum address.",
|
|
9
|
+
inputSchema: z.object({
|
|
10
|
+
name: ensNameSchema,
|
|
11
|
+
chain: z
|
|
12
|
+
.enum(["celo", "ethereum"])
|
|
13
|
+
.default("celo")
|
|
14
|
+
.describe("Target chain. celo: Celo coin record with Ethereum fallback. ethereum: Ethereum address only."),
|
|
15
|
+
}),
|
|
16
|
+
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
17
|
+
}, async ({ name, chain }) => {
|
|
18
|
+
try {
|
|
19
|
+
return ok(await ctx.ens.resolveEns(name, chain));
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
return err(error instanceof Error ? error.message : String(error));
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=ens.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ens.tools.js","sourceRoot":"","sources":["../../src/tools/ens.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAe;IAClC,QAAQ,CAAC,MAAiB,EAAE,GAAe;QACzC,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;YACE,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,mLAAmL;YACrL,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,CAAC;qBACL,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;qBAC1B,OAAO,CAAC,MAAM,CAAC;qBACf,QAAQ,CACP,+FAA+F,CAChG;aACJ,CAAC;YACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1D,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACxB,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
package/build/tools/index.js
CHANGED
|
@@ -6,9 +6,11 @@ import { transactionTools } from "./transaction.tools.js";
|
|
|
6
6
|
import { mentoFxTools } from "./mento-fx.tools.js";
|
|
7
7
|
import { aaveTools } from "./aave.tools.js";
|
|
8
8
|
import { walletTools } from "./wallet.tools.js";
|
|
9
|
+
import { ensTools } from "./ens.tools.js";
|
|
9
10
|
export const toolModules = [
|
|
10
11
|
blockchainTools,
|
|
11
12
|
accountTools,
|
|
13
|
+
ensTools,
|
|
12
14
|
tokenTools,
|
|
13
15
|
walletTools,
|
|
14
16
|
transactionTools,
|
package/build/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,eAAe;IACf,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,SAAS;IACT,eAAe;IACf,SAAS;CACV,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,GAAe;IACjE,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { addressOrEnsSchema, tokenSymbolSchema } from "../schemas/common.js";
|
|
3
3
|
import { err, ok } from "./helpers.js";
|
|
4
4
|
const encryptedPrivateKeySchema = z
|
|
5
5
|
.string()
|
|
@@ -9,9 +9,9 @@ export const transactionTools = {
|
|
|
9
9
|
register(server, ctx) {
|
|
10
10
|
server.registerTool("estimate_send", {
|
|
11
11
|
title: "Estimate Send",
|
|
12
|
-
description: "Estimates gas for sending CELO or an ERC-20 token on mainnet. Requires encryptedPrivateKey (hosted) or CELO_PRIVATE_KEY (local).",
|
|
12
|
+
description: "Estimates gas for sending CELO or an ERC-20 token on mainnet. Accepts a 0x address or ENS name as recipient. Requires encryptedPrivateKey (hosted) or CELO_PRIVATE_KEY (local).",
|
|
13
13
|
inputSchema: z.object({
|
|
14
|
-
to:
|
|
14
|
+
to: addressOrEnsSchema,
|
|
15
15
|
token: tokenSymbolSchema.default("CELO"),
|
|
16
16
|
amount: z.string().describe("Human-readable amount, e.g. 1.5"),
|
|
17
17
|
encryptedPrivateKey: encryptedPrivateKeySchema,
|
|
@@ -19,7 +19,9 @@ export const transactionTools = {
|
|
|
19
19
|
annotations: { readOnlyHint: true },
|
|
20
20
|
}, async ({ to, token, amount, encryptedPrivateKey }) => {
|
|
21
21
|
try {
|
|
22
|
-
|
|
22
|
+
const { address, ens } = await ctx.ens.resolveAddressOrEns(to);
|
|
23
|
+
const estimate = await ctx.transaction.estimateSend(address, token, amount, encryptedPrivateKey);
|
|
24
|
+
return ok(ens ? { ...estimate, ens } : estimate);
|
|
23
25
|
}
|
|
24
26
|
catch (error) {
|
|
25
27
|
return err(error instanceof Error ? error.message : String(error));
|
|
@@ -27,9 +29,9 @@ export const transactionTools = {
|
|
|
27
29
|
});
|
|
28
30
|
server.registerTool("send_token", {
|
|
29
31
|
title: "Send Token",
|
|
30
|
-
description: "Send CELO or an ERC-20 token on mainnet. User must encrypt their private key with the server's public key (get_wallet_encryption_public_key) before calling.",
|
|
32
|
+
description: "Send CELO or an ERC-20 token on mainnet. Accepts a 0x address or ENS name as recipient. User must encrypt their private key with the server's public key (get_wallet_encryption_public_key) before calling.",
|
|
31
33
|
inputSchema: z.object({
|
|
32
|
-
to:
|
|
34
|
+
to: addressOrEnsSchema,
|
|
33
35
|
token: tokenSymbolSchema.default("CELO"),
|
|
34
36
|
amount: z.string().describe("Human-readable amount, e.g. 0.01"),
|
|
35
37
|
encryptedPrivateKey: encryptedPrivateKeySchema,
|
|
@@ -40,7 +42,9 @@ export const transactionTools = {
|
|
|
40
42
|
},
|
|
41
43
|
}, async ({ to, token, amount, encryptedPrivateKey }) => {
|
|
42
44
|
try {
|
|
43
|
-
|
|
45
|
+
const { address, ens } = await ctx.ens.resolveAddressOrEns(to);
|
|
46
|
+
const result = await ctx.transaction.sendToken(address, token, amount, encryptedPrivateKey);
|
|
47
|
+
return ok(ens ? { ...result, ens } : result);
|
|
44
48
|
}
|
|
45
49
|
catch (error) {
|
|
46
50
|
return err(error instanceof Error ? error.message : String(error));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.tools.js","sourceRoot":"","sources":["../../src/tools/transaction.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"transaction.tools.js","sourceRoot":"","sources":["../../src/tools/transaction.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Address, type Hex, type StateOverride } from "viem";
|
|
2
|
+
/** Common base slots for ERC-20 allowance mappings (Mento stablecoins use 7). */
|
|
3
|
+
declare const ALLOWANCE_MAPPING_SLOTS: readonly [7n, 1n, 0n, 2n, 3n, 4n, 5n, 6n, 8n, 9n, 10n, 11n, 12n, 13n, 14n];
|
|
4
|
+
export declare function erc20AllowanceStorageSlot(owner: Address, spender: Address, mappingSlot: bigint): Hex;
|
|
5
|
+
export declare function erc20AllowanceStateOverride(token: Address, owner: Address, spender: Address, amount: bigint, mappingSlot: bigint): StateOverride;
|
|
6
|
+
export declare function isLikelyTransferFailed(error: unknown): boolean;
|
|
7
|
+
export { ALLOWANCE_MAPPING_SLOTS };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { encodeAbiParameters, keccak256, pad, parseAbiParameters, toHex, } from "viem";
|
|
2
|
+
/** Common base slots for ERC-20 allowance mappings (Mento stablecoins use 7). */
|
|
3
|
+
const ALLOWANCE_MAPPING_SLOTS = [
|
|
4
|
+
7n,
|
|
5
|
+
1n,
|
|
6
|
+
0n,
|
|
7
|
+
2n,
|
|
8
|
+
3n,
|
|
9
|
+
4n,
|
|
10
|
+
5n,
|
|
11
|
+
6n,
|
|
12
|
+
8n,
|
|
13
|
+
9n,
|
|
14
|
+
10n,
|
|
15
|
+
11n,
|
|
16
|
+
12n,
|
|
17
|
+
13n,
|
|
18
|
+
14n,
|
|
19
|
+
];
|
|
20
|
+
export function erc20AllowanceStorageSlot(owner, spender, mappingSlot) {
|
|
21
|
+
const ownerSlot = keccak256(encodeAbiParameters(parseAbiParameters("address, uint256"), [owner, mappingSlot]));
|
|
22
|
+
return keccak256(encodeAbiParameters(parseAbiParameters("address, bytes32"), [spender, ownerSlot]));
|
|
23
|
+
}
|
|
24
|
+
export function erc20AllowanceStateOverride(token, owner, spender, amount, mappingSlot) {
|
|
25
|
+
return [
|
|
26
|
+
{
|
|
27
|
+
address: token,
|
|
28
|
+
stateDiff: [
|
|
29
|
+
{
|
|
30
|
+
slot: erc20AllowanceStorageSlot(owner, spender, mappingSlot),
|
|
31
|
+
value: pad(toHex(amount)),
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
export function isLikelyTransferFailed(error) {
|
|
38
|
+
const message = error instanceof Error
|
|
39
|
+
? `${error.message} ${error.cause instanceof Error ? error.cause.message : ""}`
|
|
40
|
+
: String(error);
|
|
41
|
+
return /transfer failed/i.test(message);
|
|
42
|
+
}
|
|
43
|
+
export { ALLOWANCE_MAPPING_SLOTS };
|
|
44
|
+
//# sourceMappingURL=erc20-allowance-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erc20-allowance-storage.js","sourceRoot":"","sources":["../../src/utils/erc20-allowance-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,GAAG,EACH,kBAAkB,EAClB,KAAK,GAIN,MAAM,MAAM,CAAC;AAEd,iFAAiF;AACjF,MAAM,uBAAuB,GAAG;IAC9B,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AAEX,MAAM,UAAU,yBAAyB,CACvC,KAAc,EACd,OAAgB,EAChB,WAAmB;IAEnB,MAAM,SAAS,GAAG,SAAS,CACzB,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAClF,CAAC;IACF,OAAO,SAAS,CACd,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAClF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,KAAc,EACd,KAAc,EACd,OAAgB,EAChB,MAAc,EACd,WAAmB;IAEnB,OAAO;QACL;YACE,OAAO,EAAE,KAAK;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC;oBAC5D,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBAC1B;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/E,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
package/package.json
CHANGED