agentpay-mcp 3.1.0 → 4.0.1

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.
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEscrowTool = exports.CreateEscrowSchema = void 0;
4
+ exports.handleCreateEscrow = handleCreateEscrow;
5
+ /**
6
+ * escrow.ts — create_escrow tool.
7
+ *
8
+ * Wraps agentwallet-sdk v6 MutualStakeEscrow for on-chain mutual-stake escrow creation.
9
+ */
10
+ const zod_1 = require("zod");
11
+ const agentwallet_sdk_1 = require("agentwallet-sdk");
12
+ const client_js_1 = require("../utils/client.js");
13
+ const format_js_1 = require("../utils/format.js");
14
+ // ─── Schema ────────────────────────────────────────────────────────────────
15
+ exports.CreateEscrowSchema = zod_1.z.object({
16
+ counterpartyAddress: zod_1.z
17
+ .string()
18
+ .describe('Seller / counterparty address (0x-prefixed)'),
19
+ stakeAmount: zod_1.z
20
+ .string()
21
+ .describe('Payment amount in human-readable USDC units, e.g. "100" for 100 USDC'),
22
+ terms: zod_1.z
23
+ .string()
24
+ .describe('Human-readable description of the escrow terms'),
25
+ factoryAddress: zod_1.z
26
+ .string()
27
+ .optional()
28
+ .describe('StakeVaultFactory contract address. ' +
29
+ 'Defaults to FACTORY_ADDRESS env var.'),
30
+ deadlineDays: zod_1.z
31
+ .number()
32
+ .int()
33
+ .min(1)
34
+ .optional()
35
+ .default(7)
36
+ .describe('Deadline in days from now (default: 7)'),
37
+ challengeWindowHours: zod_1.z
38
+ .number()
39
+ .int()
40
+ .min(1)
41
+ .optional()
42
+ .default(24)
43
+ .describe('Challenge window in hours after fulfillment (default: 24)'),
44
+ });
45
+ // ─── Tool definition ───────────────────────────────────────────────────────
46
+ exports.createEscrowTool = {
47
+ name: 'create_escrow',
48
+ description: 'Create a mutual-stake escrow vault between the Agent Wallet (buyer) and a counterparty (seller). ' +
49
+ 'Both parties lock collateral (equal to payment amount) ensuring aligned incentives. ' +
50
+ 'Uses USDC as the payment token. Requires FACTORY_ADDRESS env var or factoryAddress param.',
51
+ inputSchema: {
52
+ type: 'object',
53
+ properties: {
54
+ counterpartyAddress: {
55
+ type: 'string',
56
+ description: 'Seller / counterparty address (0x-prefixed)',
57
+ },
58
+ stakeAmount: {
59
+ type: 'string',
60
+ description: 'Payment amount in human-readable USDC units (e.g. "100")',
61
+ },
62
+ terms: {
63
+ type: 'string',
64
+ description: 'Human-readable description of the escrow terms',
65
+ },
66
+ factoryAddress: {
67
+ type: 'string',
68
+ description: 'StakeVaultFactory address (optional if FACTORY_ADDRESS env var set)',
69
+ },
70
+ deadlineDays: {
71
+ type: 'number',
72
+ description: 'Deadline in days from now (default: 7)',
73
+ default: 7,
74
+ },
75
+ challengeWindowHours: {
76
+ type: 'number',
77
+ description: 'Challenge window in hours (default: 24)',
78
+ default: 24,
79
+ },
80
+ },
81
+ required: ['counterpartyAddress', 'stakeAmount', 'terms'],
82
+ },
83
+ };
84
+ // ─── Handler ───────────────────────────────────────────────────────────────
85
+ async function handleCreateEscrow(input) {
86
+ try {
87
+ const wallet = (0, client_js_1.getWallet)();
88
+ const config = (0, client_js_1.getConfig)();
89
+ const factoryAddress = input.factoryAddress ??
90
+ config.factoryAddress;
91
+ if (!factoryAddress) {
92
+ throw new Error('factoryAddress is required. Pass it as a parameter or set FACTORY_ADDRESS env var.');
93
+ }
94
+ // Parse USDC amount (6 decimals)
95
+ const USDC_DECIMALS = 6;
96
+ const amountFloat = parseFloat(input.stakeAmount);
97
+ if (isNaN(amountFloat) || amountFloat <= 0) {
98
+ throw new Error(`Invalid stakeAmount: "${input.stakeAmount}". Must be a positive number.`);
99
+ }
100
+ const paymentAmount = BigInt(Math.round(amountFloat * 10 ** USDC_DECIMALS));
101
+ // Deadline: N days from now
102
+ const deadlineSecs = input.deadlineDays ?? 7;
103
+ const deadline = Math.floor(Date.now() / 1000) + deadlineSecs * 86400;
104
+ // Challenge window in seconds
105
+ const challengeWindowHours = input.challengeWindowHours ?? 24;
106
+ const challengeWindow = challengeWindowHours * 3600;
107
+ const escrow = new agentwallet_sdk_1.MutualStakeEscrow({
108
+ publicClient: wallet.publicClient,
109
+ walletClient: wallet.walletClient,
110
+ factoryAddress,
111
+ chainId: config.chainId,
112
+ });
113
+ const result = await escrow.create({
114
+ seller: input.counterpartyAddress,
115
+ paymentAmount,
116
+ buyerStake: paymentAmount,
117
+ sellerStake: paymentAmount,
118
+ verifier: 'optimistic',
119
+ deadline,
120
+ challengeWindow,
121
+ });
122
+ return {
123
+ content: [
124
+ (0, format_js_1.textContent)(JSON.stringify({
125
+ success: true,
126
+ vaultAddress: result.address,
127
+ txHash: result.txHash,
128
+ buyer: wallet.walletClient.account.address,
129
+ seller: input.counterpartyAddress,
130
+ paymentAmount: input.stakeAmount,
131
+ rawPaymentAmount: paymentAmount.toString(),
132
+ terms: input.terms,
133
+ deadline: new Date(deadline * 1000).toISOString(),
134
+ challengeWindowHours,
135
+ })),
136
+ ],
137
+ };
138
+ }
139
+ catch (error) {
140
+ return {
141
+ content: [(0, format_js_1.textContent)((0, format_js_1.formatError)(error, 'create_escrow'))],
142
+ isError: true,
143
+ };
144
+ }
145
+ }
146
+ //# sourceMappingURL=escrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escrow.js","sourceRoot":"","sources":["../../src/tools/escrow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * identity.ts — verify_agent_identity, get_reputation tools.
3
+ *
4
+ * Wraps agentwallet-sdk v6 ERC8004Client + ReputationClient.
5
+ */
6
+ import { z } from 'zod';
7
+ export declare const VerifyAgentIdentitySchema: z.ZodObject<{
8
+ agentAddress: z.ZodString;
9
+ }, "strip", z.ZodTypeAny, {
10
+ agentAddress: string;
11
+ }, {
12
+ agentAddress: string;
13
+ }>;
14
+ export type VerifyAgentIdentityInput = z.infer<typeof VerifyAgentIdentitySchema>;
15
+ export declare const verifyAgentIdentityTool: {
16
+ name: string;
17
+ description: string;
18
+ inputSchema: {
19
+ type: "object";
20
+ properties: {
21
+ agentAddress: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ };
26
+ required: string[];
27
+ };
28
+ };
29
+ export declare function handleVerifyAgentIdentity(input: VerifyAgentIdentityInput): Promise<{
30
+ content: Array<{
31
+ type: 'text';
32
+ text: string;
33
+ }>;
34
+ isError?: boolean;
35
+ }>;
36
+ export declare const GetReputationSchema: z.ZodObject<{
37
+ agentAddress: z.ZodString;
38
+ }, "strip", z.ZodTypeAny, {
39
+ agentAddress: string;
40
+ }, {
41
+ agentAddress: string;
42
+ }>;
43
+ export type GetReputationInput = z.infer<typeof GetReputationSchema>;
44
+ export declare const getReputationTool: {
45
+ name: string;
46
+ description: string;
47
+ inputSchema: {
48
+ type: "object";
49
+ properties: {
50
+ agentAddress: {
51
+ type: string;
52
+ description: string;
53
+ };
54
+ };
55
+ required: string[];
56
+ };
57
+ };
58
+ export declare function handleGetReputation(input: GetReputationInput): Promise<{
59
+ content: Array<{
60
+ type: 'text';
61
+ text: string;
62
+ }>;
63
+ isError?: boolean;
64
+ }>;
65
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/tools/identity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiCvB,eAAO,MAAM,yBAAyB;;;;;;EAIpC,CAAA;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEhF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;CAgBnC,CAAA;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA6ChF;AAID,eAAO,MAAM,mBAAmB;;;;;;EAI9B,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAEpE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAgB7B,CAAA;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAoDhF"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getReputationTool = exports.GetReputationSchema = exports.verifyAgentIdentityTool = exports.VerifyAgentIdentitySchema = void 0;
4
+ exports.handleVerifyAgentIdentity = handleVerifyAgentIdentity;
5
+ exports.handleGetReputation = handleGetReputation;
6
+ /**
7
+ * identity.ts — verify_agent_identity, get_reputation tools.
8
+ *
9
+ * Wraps agentwallet-sdk v6 ERC8004Client + ReputationClient.
10
+ */
11
+ const zod_1 = require("zod");
12
+ const agentwallet_sdk_1 = require("agentwallet-sdk");
13
+ const client_js_1 = require("../utils/client.js");
14
+ const format_js_1 = require("../utils/format.js");
15
+ const CHAIN_ID_TO_NAME = {
16
+ 1: 'ethereum',
17
+ 8453: 'base',
18
+ 84532: 'base-sepolia',
19
+ 42161: 'arbitrum',
20
+ 421614: 'arbitrum-sepolia',
21
+ 137: 'polygon',
22
+ };
23
+ function getChainName(chainId) {
24
+ const name = CHAIN_ID_TO_NAME[chainId];
25
+ if (!name)
26
+ throw new Error(`Unsupported chain ID for identity: ${chainId}`);
27
+ return name;
28
+ }
29
+ // ─── verify_agent_identity ─────────────────────────────────────────────────
30
+ exports.VerifyAgentIdentitySchema = zod_1.z.object({
31
+ agentAddress: zod_1.z
32
+ .string()
33
+ .describe('Agent owner address to verify identity for (0x-prefixed)'),
34
+ });
35
+ exports.verifyAgentIdentityTool = {
36
+ name: 'verify_agent_identity',
37
+ description: 'Verify an agent\'s on-chain identity using ERC-8004. ' +
38
+ 'Looks up the agent by owner address and returns identity details ' +
39
+ 'including agent ID, URI, and registration file.',
40
+ inputSchema: {
41
+ type: 'object',
42
+ properties: {
43
+ agentAddress: {
44
+ type: 'string',
45
+ description: 'Agent owner address (0x-prefixed)',
46
+ },
47
+ },
48
+ required: ['agentAddress'],
49
+ },
50
+ };
51
+ async function handleVerifyAgentIdentity(input) {
52
+ try {
53
+ const config = (0, client_js_1.getConfig)();
54
+ const chainName = getChainName(config.chainId);
55
+ const client = new agentwallet_sdk_1.ERC8004Client({ chain: chainName });
56
+ const identity = await client.lookupAgentByOwner(input.agentAddress);
57
+ if (!identity) {
58
+ return {
59
+ content: [
60
+ (0, format_js_1.textContent)(JSON.stringify({
61
+ found: false,
62
+ agentAddress: input.agentAddress,
63
+ chain: chainName,
64
+ })),
65
+ ],
66
+ };
67
+ }
68
+ return {
69
+ content: [
70
+ (0, format_js_1.textContent)(JSON.stringify({
71
+ found: true,
72
+ agentId: identity.agentId.toString(),
73
+ owner: identity.owner,
74
+ agentWallet: identity.agentWallet,
75
+ agentURI: identity.agentURI,
76
+ registrationFile: identity.registrationFile,
77
+ modelMetadata: identity.modelMetadata ?? null,
78
+ chain: chainName,
79
+ })),
80
+ ],
81
+ };
82
+ }
83
+ catch (error) {
84
+ return {
85
+ content: [(0, format_js_1.textContent)((0, format_js_1.formatError)(error, 'verify_agent_identity'))],
86
+ isError: true,
87
+ };
88
+ }
89
+ }
90
+ // ─── get_reputation ────────────────────────────────────────────────────────
91
+ exports.GetReputationSchema = zod_1.z.object({
92
+ agentAddress: zod_1.z
93
+ .string()
94
+ .describe('Agent owner address to look up reputation for (0x-prefixed)'),
95
+ });
96
+ exports.getReputationTool = {
97
+ name: 'get_reputation',
98
+ description: 'Get the on-chain reputation score for an agent. ' +
99
+ 'Resolves agent ID from owner address via ERC-8004, ' +
100
+ 'then queries the Reputation Registry for score and feedback.',
101
+ inputSchema: {
102
+ type: 'object',
103
+ properties: {
104
+ agentAddress: {
105
+ type: 'string',
106
+ description: 'Agent owner address (0x-prefixed)',
107
+ },
108
+ },
109
+ required: ['agentAddress'],
110
+ },
111
+ };
112
+ async function handleGetReputation(input) {
113
+ try {
114
+ const config = (0, client_js_1.getConfig)();
115
+ const chainName = getChainName(config.chainId);
116
+ // Step 1: resolve agentId from owner address
117
+ const identityClient = new agentwallet_sdk_1.ERC8004Client({ chain: chainName });
118
+ const identity = await identityClient.lookupAgentByOwner(input.agentAddress);
119
+ if (!identity) {
120
+ return {
121
+ content: [
122
+ (0, format_js_1.textContent)(JSON.stringify({
123
+ found: false,
124
+ agentAddress: input.agentAddress,
125
+ chain: chainName,
126
+ message: 'No registered agent identity found for this address.',
127
+ })),
128
+ ],
129
+ };
130
+ }
131
+ // Step 2: query reputation
132
+ const reputationClient = new agentwallet_sdk_1.ReputationClient({ chain: chainName });
133
+ const reputation = await reputationClient.getAgentReputation(identity.agentId);
134
+ return {
135
+ content: [
136
+ (0, format_js_1.textContent)(JSON.stringify({
137
+ found: true,
138
+ agentAddress: input.agentAddress,
139
+ agentId: identity.agentId.toString(),
140
+ chain: chainName,
141
+ reputation: {
142
+ count: reputation.count.toString(),
143
+ totalScore: reputation.totalScore.toString(),
144
+ avgCategory: reputation.avgCategory,
145
+ clients: reputation.clients,
146
+ },
147
+ })),
148
+ ],
149
+ };
150
+ }
151
+ catch (error) {
152
+ return {
153
+ content: [(0, format_js_1.textContent)((0, format_js_1.formatError)(error, 'get_reputation'))],
154
+ isError: true,
155
+ };
156
+ }
157
+ }
158
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/tools/identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * swap.ts — swap_tokens tool.
3
+ *
4
+ * Wraps agentwallet-sdk v6 attachSwap / SwapModule (Uniswap V3).
5
+ * Supported chains: base, arbitrum, optimism, polygon.
6
+ */
7
+ import { z } from 'zod';
8
+ export declare const SwapTokensSchema: z.ZodObject<{
9
+ fromSymbol: z.ZodString;
10
+ toSymbol: z.ZodString;
11
+ amount: z.ZodString;
12
+ chainId: z.ZodNumber;
13
+ slippageBps: z.ZodOptional<z.ZodNumber>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ chainId: number;
16
+ amount: string;
17
+ fromSymbol: string;
18
+ toSymbol: string;
19
+ slippageBps?: number | undefined;
20
+ }, {
21
+ chainId: number;
22
+ amount: string;
23
+ fromSymbol: string;
24
+ toSymbol: string;
25
+ slippageBps?: number | undefined;
26
+ }>;
27
+ export type SwapTokensInput = z.infer<typeof SwapTokensSchema>;
28
+ export declare const swapTokensTool: {
29
+ name: string;
30
+ description: string;
31
+ inputSchema: {
32
+ type: "object";
33
+ properties: {
34
+ fromSymbol: {
35
+ type: string;
36
+ description: string;
37
+ };
38
+ toSymbol: {
39
+ type: string;
40
+ description: string;
41
+ };
42
+ amount: {
43
+ type: string;
44
+ description: string;
45
+ };
46
+ chainId: {
47
+ type: string;
48
+ description: string;
49
+ };
50
+ slippageBps: {
51
+ type: string;
52
+ description: string;
53
+ };
54
+ };
55
+ required: string[];
56
+ };
57
+ };
58
+ export declare function handleSwapTokens(input: SwapTokensInput): Promise<{
59
+ content: Array<{
60
+ type: 'text';
61
+ text: string;
62
+ }>;
63
+ isError?: boolean;
64
+ }>;
65
+ //# sourceMappingURL=swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../src/tools/swap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAe3B,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAI9D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiB1B,CAAA;AAID,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAiEhF"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.swapTokensTool = exports.SwapTokensSchema = void 0;
4
+ exports.handleSwapTokens = handleSwapTokens;
5
+ /**
6
+ * swap.ts — swap_tokens tool.
7
+ *
8
+ * Wraps agentwallet-sdk v6 attachSwap / SwapModule (Uniswap V3).
9
+ * Supported chains: base, arbitrum, optimism, polygon.
10
+ */
11
+ const zod_1 = require("zod");
12
+ const agentwallet_sdk_1 = require("agentwallet-sdk");
13
+ const client_js_1 = require("../utils/client.js");
14
+ const format_js_1 = require("../utils/format.js");
15
+ // ─── Schema ────────────────────────────────────────────────────────────────
16
+ exports.SwapTokensSchema = zod_1.z.object({
17
+ fromSymbol: zod_1.z.string().describe('Symbol of the token to sell, e.g. "USDC"'),
18
+ toSymbol: zod_1.z.string().describe('Symbol of the token to buy, e.g. "WETH"'),
19
+ amount: zod_1.z.string().describe('Amount to sell in human-readable units, e.g. "100" for 100 USDC'),
20
+ chainId: zod_1.z
21
+ .number()
22
+ .int()
23
+ .describe('Chain ID where the swap will execute (e.g. 8453 for Base Mainnet)'),
24
+ slippageBps: zod_1.z
25
+ .number()
26
+ .int()
27
+ .min(0)
28
+ .max(10000)
29
+ .optional()
30
+ .describe('Slippage tolerance in basis points (default: 50 = 0.5%)'),
31
+ });
32
+ // ─── Tool definition ───────────────────────────────────────────────────────
33
+ exports.swapTokensTool = {
34
+ name: 'swap_tokens',
35
+ description: 'Swap one ERC-20 token for another using Uniswap V3. ' +
36
+ 'Resolves token addresses from the registry, executes the swap via SwapModule. ' +
37
+ 'Supported chains: base (8453), arbitrum (42161), optimism (10), polygon (137).',
38
+ inputSchema: {
39
+ type: 'object',
40
+ properties: {
41
+ fromSymbol: { type: 'string', description: 'Symbol of token to sell (e.g. "USDC")' },
42
+ toSymbol: { type: 'string', description: 'Symbol of token to buy (e.g. "WETH")' },
43
+ amount: { type: 'string', description: 'Amount to sell in human-readable units' },
44
+ chainId: { type: 'number', description: 'Chain ID (8453=Base, 42161=Arbitrum, 10=Optimism, 137=Polygon)' },
45
+ slippageBps: { type: 'number', description: 'Slippage in basis points (default: 50)' },
46
+ },
47
+ required: ['fromSymbol', 'toSymbol', 'amount', 'chainId'],
48
+ },
49
+ };
50
+ // ─── Handler ───────────────────────────────────────────────────────────────
51
+ async function handleSwapTokens(input) {
52
+ try {
53
+ const wallet = (0, client_js_1.getWallet)();
54
+ const registry = (0, agentwallet_sdk_1.getGlobalRegistry)();
55
+ const fromToken = registry.getToken(input.fromSymbol.toUpperCase(), input.chainId);
56
+ if (!fromToken) {
57
+ throw new Error(`Token "${input.fromSymbol}" not found for chain ${input.chainId}. ` +
58
+ 'Use add_custom_token to register it first.');
59
+ }
60
+ const toToken = registry.getToken(input.toSymbol.toUpperCase(), input.chainId);
61
+ if (!toToken) {
62
+ throw new Error(`Token "${input.toSymbol}" not found for chain ${input.chainId}. ` +
63
+ 'Use add_custom_token to register it first.');
64
+ }
65
+ const rawAmountIn = (0, agentwallet_sdk_1.parseAmount)(input.amount, fromToken.decimals);
66
+ const swapWallet = (0, agentwallet_sdk_1.attachSwap)(wallet);
67
+ const result = await swapWallet.swap(fromToken.address, toToken.address, rawAmountIn, { slippageBps: input.slippageBps });
68
+ return {
69
+ content: [
70
+ (0, format_js_1.textContent)(JSON.stringify({
71
+ success: true,
72
+ txHash: result.txHash,
73
+ feeTxHash: result.feeTxHash ?? null,
74
+ approvalRequired: result.approvalRequired,
75
+ approvalTxHash: result.approvalTxHash ?? null,
76
+ fromToken: fromToken.symbol,
77
+ toToken: toToken.symbol,
78
+ amountIn: input.amount,
79
+ rawAmountIn: rawAmountIn.toString(),
80
+ quote: result.quote
81
+ ? {
82
+ amountInNet: result.quote.amountInNet?.toString(),
83
+ amountOutMinimum: result.quote.amountOutMinimum?.toString(),
84
+ poolFeeTier: result.quote.poolFeeTier,
85
+ feeAmount: result.quote.feeAmount?.toString(),
86
+ gasEstimate: result.quote.gasEstimate?.toString(),
87
+ }
88
+ : null,
89
+ chainId: input.chainId,
90
+ })),
91
+ ],
92
+ };
93
+ }
94
+ catch (error) {
95
+ return {
96
+ content: [(0, format_js_1.textContent)((0, format_js_1.formatError)(error, 'swap_tokens'))],
97
+ isError: true,
98
+ };
99
+ }
100
+ }
101
+ //# sourceMappingURL=swap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/tools/swap.ts"],"names":[],"mappings":"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"}