web3-tools-mcp 1.0.1 → 1.2.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.
Files changed (93) hide show
  1. package/README.md +46 -230
  2. package/dist/package.json +63 -0
  3. package/dist/src/client.d.ts +1653 -0
  4. package/dist/src/client.d.ts.map +1 -0
  5. package/dist/src/client.js +142 -0
  6. package/dist/src/client.js.map +1 -0
  7. package/dist/src/index.d.ts +3 -0
  8. package/dist/src/index.d.ts.map +1 -0
  9. package/dist/src/index.js +88 -0
  10. package/dist/src/index.js.map +1 -0
  11. package/dist/src/tools/advanced.d.ts +75 -0
  12. package/dist/src/tools/advanced.d.ts.map +1 -0
  13. package/dist/src/tools/advanced.js +234 -0
  14. package/dist/src/tools/advanced.js.map +1 -0
  15. package/dist/src/tools/balance.d.ts +55 -0
  16. package/dist/src/tools/balance.d.ts.map +1 -0
  17. package/dist/src/tools/balance.js +146 -0
  18. package/dist/src/tools/balance.js.map +1 -0
  19. package/dist/src/tools/contract-info.d.ts +79 -0
  20. package/dist/src/tools/contract-info.d.ts.map +1 -0
  21. package/dist/src/tools/contract-info.js +450 -0
  22. package/dist/src/tools/contract-info.js.map +1 -0
  23. package/dist/src/tools/contract.d.ts +79 -0
  24. package/dist/src/tools/contract.d.ts.map +1 -0
  25. package/dist/src/tools/contract.js +140 -0
  26. package/dist/src/tools/contract.js.map +1 -0
  27. package/dist/src/tools/ens.d.ts +119 -0
  28. package/dist/src/tools/ens.d.ts.map +1 -0
  29. package/dist/src/tools/ens.js +425 -0
  30. package/dist/src/tools/ens.js.map +1 -0
  31. package/dist/src/tools/index.d.ts +3 -0
  32. package/dist/src/tools/index.d.ts.map +1 -0
  33. package/dist/src/tools/index.js +29 -0
  34. package/dist/src/tools/index.js.map +1 -0
  35. package/dist/src/tools/logs.d.ts +39 -0
  36. package/dist/src/tools/logs.d.ts.map +1 -0
  37. package/dist/src/tools/logs.js +231 -0
  38. package/dist/src/tools/logs.js.map +1 -0
  39. package/dist/src/tools/signatures.d.ts +83 -0
  40. package/dist/src/tools/signatures.d.ts.map +1 -0
  41. package/dist/src/tools/signatures.js +93 -0
  42. package/dist/src/tools/signatures.js.map +1 -0
  43. package/dist/src/types.d.ts +22 -0
  44. package/dist/src/types.d.ts.map +1 -0
  45. package/dist/src/types.js +2 -0
  46. package/dist/src/types.js.map +1 -0
  47. package/dist/src/utils.d.ts +22 -0
  48. package/dist/src/utils.d.ts.map +1 -0
  49. package/dist/src/utils.js +183 -0
  50. package/dist/src/utils.js.map +1 -0
  51. package/dist/test/tools/advanced.test.d.ts +2 -0
  52. package/dist/test/tools/advanced.test.d.ts.map +1 -0
  53. package/dist/test/tools/advanced.test.js +235 -0
  54. package/dist/test/tools/advanced.test.js.map +1 -0
  55. package/dist/test/tools/balance.test.d.ts +2 -0
  56. package/dist/test/tools/balance.test.d.ts.map +1 -0
  57. package/dist/test/tools/balance.test.js +167 -0
  58. package/dist/test/tools/balance.test.js.map +1 -0
  59. package/dist/test/tools/contract-info.test.d.ts +2 -0
  60. package/dist/test/tools/contract-info.test.d.ts.map +1 -0
  61. package/dist/test/tools/contract-info.test.js +286 -0
  62. package/dist/test/tools/contract-info.test.js.map +1 -0
  63. package/dist/test/tools/contract.test.d.ts +2 -0
  64. package/dist/test/tools/contract.test.d.ts.map +1 -0
  65. package/dist/test/tools/contract.test.js +234 -0
  66. package/dist/test/tools/contract.test.js.map +1 -0
  67. package/dist/test/tools/ens.test.d.ts +2 -0
  68. package/dist/test/tools/ens.test.d.ts.map +1 -0
  69. package/dist/test/tools/ens.test.js +236 -0
  70. package/dist/test/tools/ens.test.js.map +1 -0
  71. package/dist/test/tools/logs.test.d.ts +2 -0
  72. package/dist/test/tools/logs.test.d.ts.map +1 -0
  73. package/dist/test/tools/logs.test.js +196 -0
  74. package/dist/test/tools/logs.test.js.map +1 -0
  75. package/dist/test/tools/signatures.test.d.ts +2 -0
  76. package/dist/test/tools/signatures.test.d.ts.map +1 -0
  77. package/dist/test/tools/signatures.test.js +112 -0
  78. package/dist/test/tools/signatures.test.js.map +1 -0
  79. package/package.json +37 -22
  80. package/src/client.ts +160 -0
  81. package/src/index.ts +96 -0
  82. package/src/tools/advanced.ts +262 -0
  83. package/src/tools/balance.ts +176 -0
  84. package/src/tools/contract-info.ts +582 -0
  85. package/src/tools/contract.ts +180 -0
  86. package/src/tools/ens.ts +493 -0
  87. package/src/tools/index.ts +37 -0
  88. package/src/tools/logs.ts +291 -0
  89. package/src/tools/signatures.ts +126 -0
  90. package/src/types.ts +29 -0
  91. package/src/utils.ts +222 -0
  92. package/dist/hypersync-client.darwin-arm64-7fegfwn5.node +0 -0
  93. package/dist/index.js +0 -28282
@@ -0,0 +1,425 @@
1
+ import { isAddress, namehash } from "viem";
2
+ import { normalize } from "viem/ens";
3
+ import { z } from "zod";
4
+ import { getClientManager, SUPPORTED_CHAINS } from "../client.js";
5
+ import { createTool, formatResponse } from "../utils.js";
6
+ // Base ENS Contract Addresses
7
+ const BASE_ENS_CONTRACTS = {
8
+ registry: "0xb94704422c2a1e396835a571837aa5ae53285a95",
9
+ reverseRegistrar: "0x79ea96012eea67a83431f1701b3dff7e37f9e282",
10
+ l2Resolver: "0xC6d566A56A1aFf6508b41f6c90ff131615583BCD",
11
+ };
12
+ // Helper function for Base ENS reverse resolution
13
+ async function reverseResolveBase(address) {
14
+ const clientManager = getClientManager();
15
+ const client = clientManager.getClient("base");
16
+ try {
17
+ // Get the reverse node from ReverseRegistrar
18
+ const reverseNode = await client.readContract({
19
+ address: BASE_ENS_CONTRACTS.reverseRegistrar,
20
+ abi: [
21
+ {
22
+ name: "node",
23
+ type: "function",
24
+ stateMutability: "pure",
25
+ inputs: [{ name: "addr", type: "address" }],
26
+ outputs: [{ name: "", type: "bytes32" }],
27
+ },
28
+ ],
29
+ functionName: "node",
30
+ args: [address],
31
+ });
32
+ // Query the L2Resolver for the name
33
+ const name = await client.readContract({
34
+ address: BASE_ENS_CONTRACTS.l2Resolver,
35
+ abi: [
36
+ {
37
+ name: "name",
38
+ type: "function",
39
+ stateMutability: "view",
40
+ inputs: [{ name: "node", type: "bytes32" }],
41
+ outputs: [{ name: "", type: "string" }],
42
+ },
43
+ ],
44
+ functionName: "name",
45
+ args: [reverseNode],
46
+ });
47
+ return name || null;
48
+ }
49
+ catch (error) {
50
+ return null;
51
+ }
52
+ }
53
+ // Helper function for Base ENS forward resolution
54
+ async function resolveNameBase(name) {
55
+ const clientManager = getClientManager();
56
+ const client = clientManager.getClient("base");
57
+ try {
58
+ const node = namehash(name);
59
+ // Get resolver from registry
60
+ const resolver = await client.readContract({
61
+ address: BASE_ENS_CONTRACTS.registry,
62
+ abi: [
63
+ {
64
+ name: "resolver",
65
+ type: "function",
66
+ stateMutability: "view",
67
+ inputs: [{ name: "node", type: "bytes32" }],
68
+ outputs: [{ name: "", type: "address" }],
69
+ },
70
+ ],
71
+ functionName: "resolver",
72
+ args: [node],
73
+ });
74
+ if (!resolver || resolver === "0x0000000000000000000000000000000000000000") {
75
+ return null;
76
+ }
77
+ // Get address from resolver
78
+ const address = await client.readContract({
79
+ address: resolver,
80
+ abi: [
81
+ {
82
+ name: "addr",
83
+ type: "function",
84
+ stateMutability: "view",
85
+ inputs: [{ name: "node", type: "bytes32" }],
86
+ outputs: [{ name: "", type: "address" }],
87
+ },
88
+ ],
89
+ functionName: "addr",
90
+ args: [node],
91
+ });
92
+ return address;
93
+ }
94
+ catch (error) {
95
+ return null;
96
+ }
97
+ }
98
+ // Helper function for Base ENS text records
99
+ async function getTextRecordBase(name, key) {
100
+ const clientManager = getClientManager();
101
+ const client = clientManager.getClient("base");
102
+ try {
103
+ const node = namehash(name);
104
+ // Get resolver from registry
105
+ const resolver = await client.readContract({
106
+ address: BASE_ENS_CONTRACTS.registry,
107
+ abi: [
108
+ {
109
+ name: "resolver",
110
+ type: "function",
111
+ stateMutability: "view",
112
+ inputs: [{ name: "node", type: "bytes32" }],
113
+ outputs: [{ name: "", type: "address" }],
114
+ },
115
+ ],
116
+ functionName: "resolver",
117
+ args: [node],
118
+ });
119
+ if (!resolver || resolver === "0x0000000000000000000000000000000000000000") {
120
+ return null;
121
+ }
122
+ // Get text record from resolver
123
+ const textRecord = await client.readContract({
124
+ address: resolver,
125
+ abi: [
126
+ {
127
+ name: "text",
128
+ type: "function",
129
+ stateMutability: "view",
130
+ inputs: [
131
+ { name: "node", type: "bytes32" },
132
+ { name: "key", type: "string" },
133
+ ],
134
+ outputs: [{ name: "", type: "string" }],
135
+ },
136
+ ],
137
+ functionName: "text",
138
+ args: [node, key],
139
+ });
140
+ return textRecord || null;
141
+ }
142
+ catch (error) {
143
+ return null;
144
+ }
145
+ }
146
+ const EnsResolveSchema = z.object({
147
+ chain: z
148
+ .enum(SUPPORTED_CHAINS)
149
+ .default("mainnet")
150
+ .describe("Blockchain network (defaults to mainnet, as ENS is primarily on Ethereum)"),
151
+ name: z
152
+ .string()
153
+ .describe("ENS name to resolve to an address (e.g., 'vitalik.eth', 'example.eth')"),
154
+ universalResolver: z
155
+ .boolean()
156
+ .optional()
157
+ .describe("Use universal resolver for cross-chain resolution (defaults to true)"),
158
+ });
159
+ const EnsReverseResolveSchema = z.object({
160
+ chain: z
161
+ .enum(SUPPORTED_CHAINS)
162
+ .default("mainnet")
163
+ .describe("Blockchain network (defaults to mainnet)"),
164
+ address: z.string().describe("Ethereum address to resolve to an ENS name"),
165
+ universalResolver: z
166
+ .boolean()
167
+ .optional()
168
+ .describe("Use universal resolver for cross-chain resolution (defaults to true)"),
169
+ });
170
+ const EnsTextRecordSchema = z.object({
171
+ chain: z
172
+ .enum(SUPPORTED_CHAINS)
173
+ .default("mainnet")
174
+ .describe("Blockchain network (defaults to mainnet)"),
175
+ name: z.string().describe("ENS name to query text records from"),
176
+ key: z
177
+ .string()
178
+ .describe("Text record key (e.g., 'avatar', 'description', 'email', 'url', 'com.twitter', 'com.github')"),
179
+ universalResolver: z
180
+ .boolean()
181
+ .optional()
182
+ .describe("Use universal resolver for cross-chain resolution (defaults to true)"),
183
+ });
184
+ const EnsBatchResolveSchema = z.object({
185
+ chain: z
186
+ .enum(SUPPORTED_CHAINS)
187
+ .default("mainnet")
188
+ .describe("Blockchain network (defaults to mainnet)"),
189
+ names: z
190
+ .array(z.string())
191
+ .describe("Array of ENS names to resolve to addresses in a single batch"),
192
+ universalResolver: z
193
+ .boolean()
194
+ .optional()
195
+ .describe("Use universal resolver for cross-chain resolution (defaults to true)"),
196
+ });
197
+ export default {
198
+ resolve_ens_name: createTool("Resolve ENS Name to Address", "Resolve an ENS name to its Ethereum address. ENS names are human-readable identifiers (like vitalik.eth) that resolve to Ethereum addresses.", EnsResolveSchema, async (args) => {
199
+ try {
200
+ // Normalize the ENS name
201
+ const normalizedName = normalize(args.name);
202
+ let address = null;
203
+ // Use Base-specific logic for Base chain
204
+ if (args.chain === "base") {
205
+ address = await resolveNameBase(normalizedName);
206
+ }
207
+ else {
208
+ // Use viem's built-in ENS resolution for other chains
209
+ const clientManager = getClientManager();
210
+ const client = clientManager.getClient(args.chain);
211
+ address = await client.getEnsAddress({
212
+ name: normalizedName,
213
+ universalResolverAddress: args.universalResolver !== false ? undefined : undefined,
214
+ });
215
+ }
216
+ if (!address) {
217
+ return formatResponse({
218
+ success: false,
219
+ name: args.name,
220
+ normalizedName,
221
+ address: null,
222
+ chain: args.chain,
223
+ message: "ENS name does not resolve to an address",
224
+ });
225
+ }
226
+ return formatResponse({
227
+ success: true,
228
+ name: args.name,
229
+ normalizedName,
230
+ address,
231
+ chain: args.chain,
232
+ });
233
+ }
234
+ catch (error) {
235
+ throw new Error(`Failed to resolve ENS name: ${error}`);
236
+ }
237
+ }),
238
+ reverse_resolve_ens: createTool("Reverse Resolve Address to ENS Name", "Reverse resolve an Ethereum address to its primary ENS name. Returns the ENS name if the address has set a reverse record.", EnsReverseResolveSchema, async (args) => {
239
+ if (!isAddress(args.address)) {
240
+ throw new Error(`Invalid Ethereum address: ${args.address}`);
241
+ }
242
+ try {
243
+ let ensName = null;
244
+ // Use Base-specific logic for Base chain
245
+ if (args.chain === "base") {
246
+ ensName = await reverseResolveBase(args.address);
247
+ }
248
+ else {
249
+ // Use viem's built-in ENS resolution for other chains
250
+ const clientManager = getClientManager();
251
+ const client = clientManager.getClient(args.chain);
252
+ ensName = await client.getEnsName({
253
+ address: args.address,
254
+ universalResolverAddress: args.universalResolver !== false ? undefined : undefined,
255
+ });
256
+ }
257
+ if (!ensName) {
258
+ return formatResponse({
259
+ success: false,
260
+ address: args.address,
261
+ name: null,
262
+ chain: args.chain,
263
+ message: "Address does not have a primary ENS name set",
264
+ });
265
+ }
266
+ return formatResponse({
267
+ success: true,
268
+ address: args.address,
269
+ name: ensName,
270
+ chain: args.chain,
271
+ });
272
+ }
273
+ catch (error) {
274
+ throw new Error(`Failed to reverse resolve address: ${error}`);
275
+ }
276
+ }),
277
+ get_ens_text_record: createTool("Get ENS Text Record", "Retrieve a text record from an ENS name. Common keys include 'avatar', 'description', 'email', 'url', 'com.twitter', 'com.github'.", EnsTextRecordSchema, async (args) => {
278
+ try {
279
+ // Normalize the ENS name
280
+ const normalizedName = normalize(args.name);
281
+ let textRecord = null;
282
+ // Use Base-specific logic for Base chain
283
+ if (args.chain === "base") {
284
+ textRecord = await getTextRecordBase(normalizedName, args.key);
285
+ }
286
+ else {
287
+ // Use viem's built-in ENS resolution for other chains
288
+ const clientManager = getClientManager();
289
+ const client = clientManager.getClient(args.chain);
290
+ textRecord = await client.getEnsText({
291
+ name: normalizedName,
292
+ key: args.key,
293
+ universalResolverAddress: args.universalResolver !== false ? undefined : undefined,
294
+ });
295
+ }
296
+ if (!textRecord) {
297
+ return formatResponse({
298
+ success: false,
299
+ name: args.name,
300
+ normalizedName,
301
+ key: args.key,
302
+ value: null,
303
+ chain: args.chain,
304
+ message: `Text record '${args.key}' not found for ${args.name}`,
305
+ });
306
+ }
307
+ return formatResponse({
308
+ success: true,
309
+ name: args.name,
310
+ normalizedName,
311
+ key: args.key,
312
+ value: textRecord,
313
+ chain: args.chain,
314
+ });
315
+ }
316
+ catch (error) {
317
+ throw new Error(`Failed to get ENS text record: ${error}`);
318
+ }
319
+ }),
320
+ get_ens_avatar: createTool("Get ENS Avatar", "Get the avatar URI for an ENS name. Returns the avatar URL if set.", z.object({
321
+ chain: z
322
+ .enum(SUPPORTED_CHAINS)
323
+ .default("mainnet")
324
+ .describe("Blockchain network (defaults to mainnet)"),
325
+ name: z.string().describe("ENS name to get avatar from"),
326
+ universalResolver: z
327
+ .boolean()
328
+ .optional()
329
+ .describe("Use universal resolver for cross-chain resolution (defaults to true)"),
330
+ }), async (args) => {
331
+ try {
332
+ // Normalize the ENS name
333
+ const normalizedName = normalize(args.name);
334
+ let avatar = null;
335
+ // Use Base-specific logic for Base chain
336
+ if (args.chain === "base") {
337
+ avatar = await getTextRecordBase(normalizedName, "avatar");
338
+ }
339
+ else {
340
+ // Use viem's built-in ENS resolution for other chains
341
+ const clientManager = getClientManager();
342
+ const client = clientManager.getClient(args.chain);
343
+ avatar = await client.getEnsAvatar({
344
+ name: normalizedName,
345
+ universalResolverAddress: args.universalResolver !== false ? undefined : undefined,
346
+ });
347
+ }
348
+ if (!avatar) {
349
+ return formatResponse({
350
+ success: false,
351
+ name: args.name,
352
+ normalizedName,
353
+ avatar: null,
354
+ chain: args.chain,
355
+ message: `No avatar set for ${args.name}`,
356
+ });
357
+ }
358
+ return formatResponse({
359
+ success: true,
360
+ name: args.name,
361
+ normalizedName,
362
+ avatar,
363
+ chain: args.chain,
364
+ });
365
+ }
366
+ catch (error) {
367
+ throw new Error(`Failed to get ENS avatar: ${error}`);
368
+ }
369
+ }),
370
+ batch_resolve_ens_names: createTool("Batch Resolve ENS Names", "Resolve multiple ENS names to addresses in a single batch for efficiency.", EnsBatchResolveSchema, async (args) => {
371
+ try {
372
+ // Resolve all ENS names in parallel
373
+ const results = await Promise.allSettled(args.names.map(async (name) => {
374
+ const normalizedName = normalize(name);
375
+ let address = null;
376
+ // Use Base-specific logic for Base chain
377
+ if (args.chain === "base") {
378
+ address = await resolveNameBase(normalizedName);
379
+ }
380
+ else {
381
+ // Use viem's built-in ENS resolution for other chains
382
+ const clientManager = getClientManager();
383
+ const client = clientManager.getClient(args.chain);
384
+ address = await client.getEnsAddress({
385
+ name: normalizedName,
386
+ universalResolverAddress: args.universalResolver !== false ? undefined : undefined,
387
+ });
388
+ }
389
+ return {
390
+ name,
391
+ normalizedName,
392
+ address,
393
+ success: !!address,
394
+ };
395
+ }));
396
+ // Process results
397
+ const resolved = results.map((result, index) => {
398
+ if (result.status === "fulfilled") {
399
+ return result.value;
400
+ }
401
+ return {
402
+ name: args.names[index],
403
+ normalizedName: args.names[index],
404
+ address: null,
405
+ success: false,
406
+ error: result.reason instanceof Error ? result.reason.message : String(result.reason),
407
+ };
408
+ });
409
+ const successCount = resolved.filter((r) => r.success).length;
410
+ const failCount = resolved.filter((r) => !r.success).length;
411
+ return formatResponse({
412
+ success: true,
413
+ chain: args.chain,
414
+ totalNames: args.names.length,
415
+ successfulResolves: successCount,
416
+ failedResolves: failCount,
417
+ results: resolved,
418
+ });
419
+ }
420
+ catch (error) {
421
+ throw new Error(`Failed to batch resolve ENS names: ${error}`);
422
+ }
423
+ }),
424
+ };
425
+ //# sourceMappingURL=ens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ens.js","sourceRoot":"","sources":["../../../src/tools/ens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerAllTools(server: McpServer): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAsBnE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAcjD"}
@@ -0,0 +1,29 @@
1
+ import advancedTools from './advanced.js';
2
+ import balanceTools from './balance.js';
3
+ import contractTools from './contract.js';
4
+ import contractInfoTools from './contract-info.js';
5
+ import ensTools from './ens.js';
6
+ import logTools from './logs.js';
7
+ import signatureTools from './signatures.js';
8
+ const allToolDefinitions = {
9
+ ...signatureTools,
10
+ ...contractTools,
11
+ ...contractInfoTools,
12
+ ...balanceTools,
13
+ ...logTools,
14
+ ...advancedTools,
15
+ ...ensTools
16
+ };
17
+ // Register all tools with the MCP server
18
+ export function registerAllTools(server) {
19
+ Object.entries(allToolDefinitions).forEach(([name, tool]) => {
20
+ server.registerTool(name, {
21
+ title: tool.title,
22
+ description: tool.description,
23
+ inputSchema: tool.schema.shape
24
+ }, async (args, _extra) => {
25
+ return await tool.handler(args);
26
+ });
27
+ });
28
+ }
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,eAAe,CAAA;AACzC,OAAO,YAAY,MAAM,cAAc,CAAA;AACvC,OAAO,aAAa,MAAM,eAAe,CAAA;AACzC,OAAO,iBAAiB,MAAM,oBAAoB,CAAA;AAClD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,cAAc,MAAM,iBAAiB,CAAA;AAE5C,MAAM,kBAAkB,GAAG;IACzB,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,iBAAiB;IACpB,GAAG,YAAY;IACf,GAAG,QAAQ;IACX,GAAG,aAAa;IAChB,GAAG,QAAQ;CACH,CAAA;AAEV,yCAAyC;AACzC,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1D,MAAM,CAAC,YAAY,CACjB,IAAI,EACJ;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SAC/B,EACD,KAAK,EAAE,IAAS,EAAE,MAA8D,EAAE,EAAE;YAClF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+ declare const _default: {
3
+ get_logs: {
4
+ title: string;
5
+ description: string;
6
+ schema: z.ZodObject<{
7
+ chain: z.ZodEnum<["mainnet", "base", "arbitrum", "polygon", "optimism", "celo", "localhost"]>;
8
+ eventAbi: z.ZodString;
9
+ address: z.ZodOptional<z.ZodString>;
10
+ fromBlock: z.ZodOptional<z.ZodString>;
11
+ toBlock: z.ZodOptional<z.ZodString>;
12
+ eventArgs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">]>>>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ chain: "mainnet" | "base" | "arbitrum" | "polygon" | "optimism" | "celo" | "localhost";
15
+ eventAbi: string;
16
+ address?: string | undefined;
17
+ fromBlock?: string | undefined;
18
+ toBlock?: string | undefined;
19
+ eventArgs?: Record<string, string | number | boolean | (string | number | boolean)[]> | undefined;
20
+ }, {
21
+ chain: "mainnet" | "base" | "arbitrum" | "polygon" | "optimism" | "celo" | "localhost";
22
+ eventAbi: string;
23
+ address?: string | undefined;
24
+ fromBlock?: string | undefined;
25
+ toBlock?: string | undefined;
26
+ eventArgs?: Record<string, string | number | boolean | (string | number | boolean)[]> | undefined;
27
+ }>;
28
+ handler: (args: {
29
+ chain: "mainnet" | "base" | "arbitrum" | "polygon" | "optimism" | "celo" | "localhost";
30
+ eventAbi: string;
31
+ address?: string | undefined;
32
+ fromBlock?: string | undefined;
33
+ toBlock?: string | undefined;
34
+ eventArgs?: Record<string, string | number | boolean | (string | number | boolean)[]> | undefined;
35
+ }) => Promise<import("../types.js").ToolResult>;
36
+ };
37
+ };
38
+ export default _default;
39
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/tools/logs.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+GvB,wBAyKC"}