web3-tools-mcp 1.2.0 → 1.2.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.
Files changed (31) hide show
  1. package/README.md +91 -228
  2. package/package.json +5 -5
  3. package/dist/package.json +0 -63
  4. package/dist/test/tools/advanced.test.d.ts +0 -2
  5. package/dist/test/tools/advanced.test.d.ts.map +0 -1
  6. package/dist/test/tools/advanced.test.js +0 -235
  7. package/dist/test/tools/advanced.test.js.map +0 -1
  8. package/dist/test/tools/balance.test.d.ts +0 -2
  9. package/dist/test/tools/balance.test.d.ts.map +0 -1
  10. package/dist/test/tools/balance.test.js +0 -167
  11. package/dist/test/tools/balance.test.js.map +0 -1
  12. package/dist/test/tools/contract-info.test.d.ts +0 -2
  13. package/dist/test/tools/contract-info.test.d.ts.map +0 -1
  14. package/dist/test/tools/contract-info.test.js +0 -286
  15. package/dist/test/tools/contract-info.test.js.map +0 -1
  16. package/dist/test/tools/contract.test.d.ts +0 -2
  17. package/dist/test/tools/contract.test.d.ts.map +0 -1
  18. package/dist/test/tools/contract.test.js +0 -234
  19. package/dist/test/tools/contract.test.js.map +0 -1
  20. package/dist/test/tools/ens.test.d.ts +0 -2
  21. package/dist/test/tools/ens.test.d.ts.map +0 -1
  22. package/dist/test/tools/ens.test.js +0 -236
  23. package/dist/test/tools/ens.test.js.map +0 -1
  24. package/dist/test/tools/logs.test.d.ts +0 -2
  25. package/dist/test/tools/logs.test.d.ts.map +0 -1
  26. package/dist/test/tools/logs.test.js +0 -196
  27. package/dist/test/tools/logs.test.js.map +0 -1
  28. package/dist/test/tools/signatures.test.d.ts +0 -2
  29. package/dist/test/tools/signatures.test.d.ts.map +0 -1
  30. package/dist/test/tools/signatures.test.js +0 -112
  31. package/dist/test/tools/signatures.test.js.map +0 -1
@@ -1,286 +0,0 @@
1
- import { describe, it, expect, beforeAll } from 'vitest';
2
- import { config } from 'dotenv';
3
- import { initializeClientManager } from '../../src/client.js';
4
- import contractInfoTools from '../../src/tools/contract-info.js';
5
- // Load environment variables
6
- config();
7
- const USDC_ADDRESS = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
8
- const CHAIN = 'mainnet';
9
- const maybeDescribe = process.env.ETHERSCAN_API_KEY ? describe : describe.skip;
10
- maybeDescribe('Contract Info Tools (with Caching)', () => {
11
- beforeAll(() => {
12
- // Initialize client manager with config
13
- initializeClientManager({
14
- alchemyApiKey: process.env.ALCHEMY_API_KEY,
15
- infuraApiKey: process.env.INFURA_API_KEY,
16
- etherscanApiKey: process.env.ETHERSCAN_API_KEY,
17
- hypersyncApiKey: process.env.HYPERSYNC_API_KEY
18
- });
19
- });
20
- describe("get_contract_abi", () => {
21
- it("should fetch USDC contract ABI", async () => {
22
- const result = await contractInfoTools.get_contract_abi.handler({
23
- chain: CHAIN,
24
- address: USDC_ADDRESS,
25
- include: ["abi", "metadata"],
26
- });
27
- const data = JSON.parse(result.content[0].text);
28
- expect(data.address).toBe(USDC_ADDRESS);
29
- expect(data.chain).toBe(CHAIN);
30
- expect(data.abi).toBeDefined();
31
- expect(Array.isArray(data.abi)).toBe(true);
32
- expect(data.abi.length).toBeGreaterThan(0);
33
- expect(data.contractName).toBeDefined();
34
- expect(data.isVerified).toBe(true);
35
- });
36
- it("should include implementation ABI for proxy contracts", async () => {
37
- const result = await contractInfoTools.get_contract_abi.handler({
38
- chain: CHAIN,
39
- address: USDC_ADDRESS,
40
- include: ["abi", "implementationAbi", "metadata"],
41
- });
42
- const data = JSON.parse(result.content[0].text);
43
- expect(data.isProxy).toBe(true);
44
- expect(data.implementationAddress).toBeDefined();
45
- expect(data.implementationAbi).toBeDefined();
46
- expect(Array.isArray(data.implementationAbi)).toBe(true);
47
- });
48
- it("should include compilation info when requested", async () => {
49
- const result = await contractInfoTools.get_contract_abi.handler({
50
- chain: CHAIN,
51
- address: USDC_ADDRESS,
52
- include: ["abi", "metadata", "compilation"],
53
- });
54
- const data = JSON.parse(result.content[0].text);
55
- expect(data.compilerVersion).toBeDefined();
56
- expect(data.optimizationUsed).toBeDefined();
57
- });
58
- it('should include creation info when requested', async () => {
59
- const result = await contractInfoTools.get_contract_abi.handler({
60
- chain: CHAIN,
61
- address: USDC_ADDRESS,
62
- include: ['abi', 'metadata', 'creation']
63
- });
64
- const data = JSON.parse(result.content[0].text);
65
- expect(data.creationInfo).toBeDefined();
66
- expect(data.creationInfo.creator).toBeDefined();
67
- expect(data.creationInfo.transactionHash).toBeDefined();
68
- });
69
- it('should include ABI statistics when requested', async () => {
70
- const result = await contractInfoTools.get_contract_abi.handler({
71
- chain: CHAIN,
72
- address: USDC_ADDRESS,
73
- include: ['abi', 'metadata', 'stats']
74
- });
75
- const data = JSON.parse(result.content[0].text);
76
- expect(data.abiSize).toBeDefined();
77
- expect(data.functions).toBeGreaterThan(0);
78
- expect(data.events).toBeGreaterThan(0);
79
- });
80
- it("should use cached data on second call (no duplicate API call)", async () => {
81
- // First call - should hit API
82
- const result1 = await contractInfoTools.get_contract_abi.handler({
83
- chain: CHAIN,
84
- address: USDC_ADDRESS,
85
- include: ["abi", "metadata"],
86
- });
87
- // Second call - should use cache
88
- const result2 = await contractInfoTools.get_contract_abi.handler({
89
- chain: CHAIN,
90
- address: USDC_ADDRESS,
91
- include: ["abi", "metadata"],
92
- });
93
- const data1 = JSON.parse(result1.content[0].text);
94
- const data2 = JSON.parse(result2.content[0].text);
95
- // Data should be identical
96
- expect(data1.address).toBe(data2.address);
97
- expect(data1.contractName).toBe(data2.contractName);
98
- expect(data1.abi).toEqual(data2.abi);
99
- });
100
- });
101
- describe("get_contract_source_code", () => {
102
- it('should fetch USDC contract source code summary', async () => {
103
- const result = await contractInfoTools.get_contract_source_code.handler({
104
- chain: CHAIN,
105
- address: USDC_ADDRESS,
106
- includeImplementation: true,
107
- includeSource: 'summary'
108
- });
109
- const data = JSON.parse(result.content[0].text);
110
- expect(data.success).toBe(true);
111
- expect(data.isVerified).toBe(true);
112
- expect(data.contractName).toBe('FiatTokenProxy');
113
- expect(data.fileCount).toBeGreaterThan(0);
114
- expect(data.totalLines).toBeGreaterThan(0);
115
- expect(data.files).toBeDefined();
116
- expect(Array.isArray(data.files)).toBe(true);
117
- });
118
- it("should fetch full source code when requested", async () => {
119
- const result = await contractInfoTools.get_contract_source_code.handler({
120
- chain: CHAIN,
121
- address: USDC_ADDRESS,
122
- includeImplementation: false,
123
- includeSource: "full",
124
- });
125
- const data = JSON.parse(result.content[0].text);
126
- expect(data.sourceFiles).toBeDefined();
127
- expect(typeof data.sourceFiles).toBe('object');
128
- const firstFile = Object.values(data.sourceFiles)[0];
129
- expect(firstFile).toBeDefined();
130
- expect(firstFile.length).toBeGreaterThan(0);
131
- });
132
- it("should fetch metadata only when requested", async () => {
133
- const result = await contractInfoTools.get_contract_source_code.handler({
134
- chain: CHAIN,
135
- address: USDC_ADDRESS,
136
- includeImplementation: false,
137
- includeSource: "none",
138
- });
139
- const data = JSON.parse(result.content[0].text);
140
- expect(data.contractName).toBeDefined();
141
- expect(data.isVerified).toBe(true);
142
- expect(data.files).toBeUndefined();
143
- });
144
- it.skip("should include implementation source for proxy contracts", async () => {
145
- // TODO: This test depends on USDC being a proxy with accessible implementation
146
- const result = await contractInfoTools.get_contract_source_code.handler({
147
- chain: CHAIN,
148
- address: USDC_ADDRESS,
149
- includeImplementation: true,
150
- includeSource: "summary",
151
- });
152
- const data = JSON.parse(result.content[0].text);
153
- expect(data.isProxy).toBe(true);
154
- expect(data.implementationAddress).toBeDefined();
155
- expect(data.implementation).toBeDefined();
156
- expect(data.implementation.contractName).toBeDefined();
157
- expect(data.implementation.files).toBeDefined();
158
- });
159
- it("should reuse cached data from get_contract_abi", async () => {
160
- // Call get_contract_abi first
161
- await contractInfoTools.get_contract_abi.handler({
162
- chain: CHAIN,
163
- address: USDC_ADDRESS,
164
- include: ["abi", "metadata"],
165
- });
166
- // Call get_contract_source_code - should use cached rawInfo
167
- const result = await contractInfoTools.get_contract_source_code.handler({
168
- chain: CHAIN,
169
- address: USDC_ADDRESS,
170
- includeImplementation: false,
171
- includeSource: "summary",
172
- });
173
- const data = JSON.parse(result.content[0].text);
174
- expect(data.contractName).toBeDefined();
175
- expect(data.isVerified).toBe(true);
176
- });
177
- });
178
- describe("get_contract_source_file", () => {
179
- it("should list available files when no filePath specified", async () => {
180
- // First cache the contract
181
- await contractInfoTools.get_contract_source_code.handler({
182
- chain: CHAIN,
183
- address: USDC_ADDRESS,
184
- includeImplementation: false,
185
- includeSource: "full",
186
- });
187
- // Then list files
188
- const result = await contractInfoTools.get_contract_source_file.handler({
189
- chain: CHAIN,
190
- address: USDC_ADDRESS,
191
- useImplementation: false,
192
- });
193
- const data = JSON.parse(result.content[0].text);
194
- expect(data.files).toBeDefined();
195
- expect(Array.isArray(data.files)).toBe(true);
196
- expect(data.files.length).toBeGreaterThan(0);
197
- });
198
- it.skip("should fetch specific file content", async () => {
199
- // TODO: Fix caching behavior - test relies on proper sourceFiles caching
200
- // First cache the contract
201
- await contractInfoTools.get_contract_source_code.handler({
202
- chain: CHAIN,
203
- address: USDC_ADDRESS,
204
- includeImplementation: false,
205
- includeSource: "full",
206
- });
207
- // Get file list
208
- const listResult = await contractInfoTools.get_contract_source_file.handler({
209
- chain: CHAIN,
210
- address: USDC_ADDRESS,
211
- useImplementation: false,
212
- });
213
- const listData = JSON.parse(listResult.content[0].text);
214
- const firstFile = listData.files[0];
215
- // Get specific file
216
- const fileResult = await contractInfoTools.get_contract_source_file.handler({
217
- chain: CHAIN,
218
- address: USDC_ADDRESS,
219
- useImplementation: false,
220
- filePath: firstFile.path,
221
- });
222
- const fileData = JSON.parse(fileResult.content[0].text);
223
- expect(fileData.filePath).toBe(firstFile.path);
224
- expect(fileData.content).toBeDefined();
225
- expect(fileData.content.length).toBeGreaterThan(0);
226
- expect(fileData.size).toBe(firstFile.size);
227
- });
228
- it.skip("should error when requesting uncached contract", async () => {
229
- // TODO: Fix error handling - tool returns success:false instead of throwing
230
- const RANDOM_ADDRESS = "0x1234567890123456789012345678901234567890";
231
- await expect(contractInfoTools.get_contract_source_file.handler({
232
- chain: CHAIN,
233
- address: RANDOM_ADDRESS,
234
- useImplementation: false,
235
- })).rejects.toThrow();
236
- });
237
- });
238
- describe("Caching Optimization", () => {
239
- it.skip("should share cache between get_contract_abi and get_contract_source_code", async () => {
240
- // TODO: Verify caching behavior - test depends on specific contract metadata
241
- const TEST_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f"; // DAI
242
- // Call get_contract_abi first
243
- const abiResult = await contractInfoTools.get_contract_abi.handler({
244
- chain: CHAIN,
245
- address: TEST_ADDRESS,
246
- include: ["abi", "metadata"],
247
- });
248
- const abiData = JSON.parse(abiResult.content[0].text);
249
- // Call get_contract_source_code - should use cached data
250
- const sourceResult = await contractInfoTools.get_contract_source_code.handler({
251
- chain: CHAIN,
252
- address: TEST_ADDRESS,
253
- includeImplementation: false,
254
- includeSource: "summary",
255
- });
256
- const sourceData = JSON.parse(sourceResult.content[0].text);
257
- // Both should have same metadata
258
- expect(abiData.contractName).toBe(sourceData.contractName);
259
- expect(abiData.isVerified).toBe(sourceData.isVerified);
260
- expect(abiData.isProxy).toBe(sourceData.isProxy);
261
- });
262
- it("should cache rawInfo immediately on fetchContractInfo", async () => {
263
- const TEST_ADDRESS = "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"; // WBTC
264
- // First call should cache rawInfo
265
- await contractInfoTools.get_contract_abi.handler({
266
- chain: CHAIN,
267
- address: TEST_ADDRESS,
268
- include: ["abi"],
269
- });
270
- // Second call should use cached rawInfo (even with different include params)
271
- const result = await contractInfoTools.get_contract_abi.handler({
272
- chain: CHAIN,
273
- address: TEST_ADDRESS,
274
- include: ["abi", "metadata", "compilation", "creation", "stats"],
275
- });
276
- const data = JSON.parse(result.content[0].text);
277
- expect(data.contractName).toBeDefined();
278
- expect(data.compilerVersion).toBeDefined();
279
- expect(data.creationInfo).toBeDefined();
280
- expect(data.creationInfo.creator).toBeDefined();
281
- expect(data.abiSize).toBeDefined();
282
- expect(data.functions).toBeDefined();
283
- });
284
- });
285
- });
286
- //# sourceMappingURL=contract-info.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contract-info.test.js","sourceRoot":"","sources":["../../../test/tools/contract-info.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=contract.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contract.test.d.ts","sourceRoot":"","sources":["../../../test/tools/contract.test.ts"],"names":[],"mappings":""}
@@ -1,234 +0,0 @@
1
- import { describe, it, expect, beforeAll } from 'vitest';
2
- import { config } from 'dotenv';
3
- import { initializeClientManager } from '../../src/client.js';
4
- import contractTools from '../../src/tools/contract.js';
5
- // Load environment variables
6
- config();
7
- describe('Contract Tools', () => {
8
- beforeAll(() => {
9
- // Initialize client manager with config
10
- initializeClientManager({
11
- alchemyApiKey: process.env.ALCHEMY_API_KEY,
12
- infuraApiKey: process.env.INFURA_API_KEY,
13
- etherscanApiKey: process.env.ETHERSCAN_API_KEY,
14
- hypersyncApiKey: process.env.HYPERSYNC_API_KEY
15
- });
16
- });
17
- describe('is_contract', () => {
18
- it('should identify a contract address', async () => {
19
- const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
20
- const result = await contractTools.is_contract.handler({
21
- chain: 'mainnet',
22
- address: USDC_CONTRACT
23
- });
24
- const data = JSON.parse(result.content[0].text);
25
- expect(data.address).toBe(USDC_CONTRACT);
26
- expect(data.isContract).toBe(true);
27
- expect(data.bytecodeLength).toBeGreaterThan(0);
28
- }, 30000);
29
- it('should identify an EOA (wallet) address', async () => {
30
- // Use a random high address that's unlikely to have been used
31
- const TEST_EOA = '0x0000000000000000000000000000000000000003';
32
- const result = await contractTools.is_contract.handler({
33
- chain: 'mainnet',
34
- address: TEST_EOA
35
- });
36
- const data = JSON.parse(result.content[0].text);
37
- expect(data.address).toBe(TEST_EOA);
38
- expect(data.isContract).toBe(false);
39
- expect(data.bytecodeLength).toBe(0);
40
- }, 30000);
41
- it('should work with different chains', async () => {
42
- const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
43
- const result = await contractTools.is_contract.handler({
44
- chain: 'base',
45
- address: ZERO_ADDRESS
46
- });
47
- const data = JSON.parse(result.content[0].text);
48
- expect(data.chain).toBe('base');
49
- expect(data.isContract).toBe(false);
50
- }, 30000);
51
- });
52
- describe('call_contract_function', () => {
53
- it('should call USDC balanceOf function', async () => {
54
- const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
55
- const HOLDER_ADDRESS = '0x28C6c06298d514Db089934071355E5743bf21d60'; // Binance 14
56
- const result = await contractTools.call_contract_function.handler({
57
- calls: [
58
- {
59
- chain: 'mainnet',
60
- contractAddress: USDC_CONTRACT,
61
- functionAbi: 'function balanceOf(address owner) view returns (uint256)',
62
- args: [HOLDER_ADDRESS]
63
- }
64
- ]
65
- });
66
- const data = JSON.parse(result.content[0].text);
67
- expect(data.success).toBe(true);
68
- expect(data.results).toHaveLength(1);
69
- expect(data.results[0].success).toBe(true);
70
- expect(data.results[0].result).toBeDefined();
71
- expect(BigInt(data.results[0].result)).toBeGreaterThan(0n);
72
- }, 30000);
73
- it('should call USDC name, symbol, and decimals functions in batch', async () => {
74
- const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
75
- const result = await contractTools.call_contract_function.handler({
76
- calls: [
77
- {
78
- chain: 'mainnet',
79
- contractAddress: USDC_CONTRACT,
80
- functionAbi: 'function name() view returns (string)',
81
- label: 'name'
82
- },
83
- {
84
- chain: 'mainnet',
85
- contractAddress: USDC_CONTRACT,
86
- functionAbi: 'function symbol() view returns (string)',
87
- label: 'symbol'
88
- },
89
- {
90
- chain: 'mainnet',
91
- contractAddress: USDC_CONTRACT,
92
- functionAbi: 'function decimals() view returns (uint8)',
93
- label: 'decimals'
94
- }
95
- ]
96
- });
97
- const data = JSON.parse(result.content[0].text);
98
- expect(data.success).toBe(true);
99
- expect(data.results).toHaveLength(3);
100
- const nameResult = data.results.find((r) => r.label === 'name');
101
- expect(nameResult.success).toBe(true);
102
- expect(nameResult.result).toBe('USD Coin');
103
- const symbolResult = data.results.find((r) => r.label === 'symbol');
104
- expect(symbolResult.success).toBe(true);
105
- expect(symbolResult.result).toBe('USDC');
106
- const decimalsResult = data.results.find((r) => r.label === 'decimals');
107
- expect(decimalsResult.success).toBe(true);
108
- expect(decimalsResult.result).toBe(6);
109
- }, 30000);
110
- it('should call function at specific block number', async () => {
111
- const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
112
- const BLOCK_NUMBER = '18000000';
113
- const result = await contractTools.call_contract_function.handler({
114
- calls: [
115
- {
116
- chain: 'mainnet',
117
- contractAddress: USDC_CONTRACT,
118
- functionAbi: 'function totalSupply() view returns (uint256)',
119
- blockNumber: BLOCK_NUMBER
120
- }
121
- ]
122
- });
123
- const data = JSON.parse(result.content[0].text);
124
- expect(data.success).toBe(true);
125
- expect(data.results).toHaveLength(1);
126
- expect(data.results[0].success).toBe(true);
127
- expect(data.results[0].blockNumber).toBe(BLOCK_NUMBER);
128
- expect(data.results[0].result).toBeDefined();
129
- }, 30000);
130
- it('should handle function calls with multiple arguments', async () => {
131
- const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
132
- const OWNER = '0x28C6c06298d514Db089934071355E5743bf21d60';
133
- const SPENDER = '0x0000000000000000000000000000000000000001';
134
- const result = await contractTools.call_contract_function.handler({
135
- calls: [
136
- {
137
- chain: 'mainnet',
138
- contractAddress: USDC_CONTRACT,
139
- functionAbi: 'function allowance(address owner, address spender) view returns (uint256)',
140
- args: [OWNER, SPENDER]
141
- }
142
- ]
143
- });
144
- const data = JSON.parse(result.content[0].text);
145
- expect(data.success).toBe(true);
146
- expect(data.results).toHaveLength(1);
147
- expect(data.results[0].success).toBe(true);
148
- expect(data.results[0].result).toBeDefined();
149
- // Allowance might be 0, that's fine
150
- }, 30000);
151
- it('should handle calls to different chains in batch', async () => {
152
- const USDC_MAINNET = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
153
- const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
154
- const result = await contractTools.call_contract_function.handler({
155
- calls: [
156
- {
157
- chain: 'mainnet',
158
- contractAddress: USDC_MAINNET,
159
- functionAbi: 'function symbol() view returns (string)',
160
- label: 'mainnet-symbol'
161
- },
162
- {
163
- chain: 'base',
164
- contractAddress: USDC_BASE,
165
- functionAbi: 'function symbol() view returns (string)',
166
- label: 'base-symbol'
167
- }
168
- ]
169
- });
170
- const data = JSON.parse(result.content[0].text);
171
- expect(data.success).toBe(true);
172
- expect(data.results).toHaveLength(2);
173
- expect(data.results[0].label).toBe('mainnet-symbol');
174
- expect(data.results[0].chain).toBe('mainnet');
175
- expect(data.results[1].label).toBe('base-symbol');
176
- expect(data.results[1].chain).toBe('base');
177
- }, 30000);
178
- it('should handle boolean return values', async () => {
179
- const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
180
- const result = await contractTools.call_contract_function.handler({
181
- calls: [
182
- {
183
- chain: 'mainnet',
184
- contractAddress: USDC_CONTRACT,
185
- functionAbi: 'function paused() view returns (bool)'
186
- }
187
- ]
188
- });
189
- const data = JSON.parse(result.content[0].text);
190
- expect(data.success).toBe(true);
191
- expect(data.results).toHaveLength(1);
192
- expect(data.results[0].success).toBe(true);
193
- expect(typeof data.results[0].result).toBe('boolean');
194
- }, 30000);
195
- it('should handle functions returning multiple values', async () => {
196
- const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
197
- // USDC doesn't have a multi-return function in standard ERC20, but we can test the structure
198
- // Let's use a function that exists and check the result format
199
- const result = await contractTools.call_contract_function.handler({
200
- calls: [
201
- {
202
- chain: 'mainnet',
203
- contractAddress: USDC_CONTRACT,
204
- functionAbi: 'function name() view returns (string)'
205
- }
206
- ]
207
- });
208
- const data = JSON.parse(result.content[0].text);
209
- expect(data.success).toBe(true);
210
- expect(data.results).toHaveLength(1);
211
- expect(data.results[0].success).toBe(true);
212
- expect(data.results[0].contractAddress).toBe(USDC_CONTRACT);
213
- }, 30000);
214
- it('should handle reverted calls gracefully', async () => {
215
- const USDC_CONTRACT = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48';
216
- // Try to call a function that doesn't exist or will revert
217
- const result = await contractTools.call_contract_function.handler({
218
- calls: [
219
- {
220
- chain: 'mainnet',
221
- contractAddress: USDC_CONTRACT,
222
- functionAbi: 'function nonExistentFunction() view returns (uint256)'
223
- }
224
- ]
225
- });
226
- const data = JSON.parse(result.content[0].text);
227
- expect(data.success).toBe(true);
228
- expect(data.results).toHaveLength(1);
229
- expect(data.results[0].success).toBe(false);
230
- expect(data.results[0].error).toBeDefined();
231
- }, 30000);
232
- });
233
- });
234
- //# sourceMappingURL=contract.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contract.test.js","sourceRoot":"","sources":["../../../test/tools/contract.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ens.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ens.test.d.ts","sourceRoot":"","sources":["../../../test/tools/ens.test.ts"],"names":[],"mappings":""}