web3agent 0.1.0 → 0.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.
package/dist/index.js CHANGED
@@ -1,44 +1,385 @@
1
- #!/usr/bin/env node
2
1
  import {
3
- VERSION
4
- } from "./chunk-4GQR4EEY.js";
2
+ getDefaultRuntime
3
+ } from "./chunk-7ITJ5WGE.js";
4
+ import {
5
+ clearTraceSupportCache,
6
+ confirmationQueue,
7
+ getRequiredApprovals,
8
+ getToolResultPayload,
9
+ listTokens,
10
+ normalizeEip712ForSigning,
11
+ pollSwapStatus,
12
+ prepareBridgeIntent,
13
+ prepareLimitIntent,
14
+ prepareOperation,
15
+ prepareSwapIntent,
16
+ prepareTwapIntent,
17
+ readAuditLog,
18
+ resolveCanonicalToken,
19
+ resolveCanonicalTokenSync,
20
+ resolveToken,
21
+ resolveTokenSync,
22
+ resumeOperation,
23
+ simulateTransaction,
24
+ submitSignedSwap,
25
+ submitSignedTwapOrder
26
+ } from "./chunk-B4LSSN7C.js";
27
+ import "./chunk-ETI3ZR2C.js";
28
+ import "./chunk-4G55KHRO.js";
29
+ import {
30
+ Web3AgentError,
31
+ lifiExecuteBridgeSchema,
32
+ lifiGetQuoteSchema,
33
+ lifiPrepareBridgeIntentSchema,
34
+ listChainTokensSchema,
35
+ operationActionResultSchema,
36
+ operationResumeStateSchema,
37
+ orbsGetQuoteSchema,
38
+ orbsGetRequiredApprovalsSchema,
39
+ orbsListOrdersSchema,
40
+ orbsPlaceLimitSchema,
41
+ orbsPlaceTwapSchema,
42
+ orbsPrepareLimitIntentSchema,
43
+ orbsPrepareSwapIntentSchema,
44
+ orbsPrepareTwapIntentSchema,
45
+ orbsSubmitSignedSwapSchema,
46
+ orbsSubmitSignedTwapOrderSchema,
47
+ orbsSwapSchema,
48
+ orbsSwapStatusSchema,
49
+ parseInput,
50
+ prepareOperationSchema,
51
+ resolveTokenSchema,
52
+ resumeOperationSchema,
53
+ transactionConfirmSchema,
54
+ transactionDenySchema,
55
+ transactionSimulateSchema,
56
+ walletActivateSchema,
57
+ walletDeriveAddressesSchema,
58
+ walletFromMnemonicSchema,
59
+ walletSetConfirmationSchema
60
+ } from "./chunk-BJUU5ESI.js";
61
+ import {
62
+ getWalletState
63
+ } from "./chunk-KPRIUALX.js";
64
+ import {
65
+ getChainById,
66
+ getChainByName,
67
+ getConfig,
68
+ isSupported,
69
+ parseEnv,
70
+ resetConfig,
71
+ setConfig
72
+ } from "./chunk-7QEKU2RP.js";
5
73
 
6
- // src/index.ts
7
- var args = process.argv.slice(2);
8
- if (args[0] === "init") {
9
- import("./init-DKWQSYDZ.js").then(({ runInit }) => {
10
- runInit(args.slice(1)).catch((e) => {
11
- process.stderr.write(`Error: ${e.message}
12
- `);
13
- process.exit(1);
74
+ // src/api/shared.ts
75
+ async function getRuntime(options) {
76
+ if (options?.runtime) {
77
+ return options.runtime;
78
+ }
79
+ return getDefaultRuntime();
80
+ }
81
+ async function invokeAndRequireData(runtime, toolName, args = {}) {
82
+ const result = await runtime.invokeTool(toolName, args);
83
+ const payload = getToolResultPayload(result);
84
+ if (!payload.ok) {
85
+ throw new Web3AgentError({
86
+ code: payload.error.code ?? "TOOL_ERROR",
87
+ message: payload.error.message ?? `Tool invocation failed: ${toolName}`,
88
+ details: payload.error.details
14
89
  });
15
- });
16
- } else if (args.includes("--version")) {
17
- process.stderr.write(`web3agent ${VERSION}
18
- `);
19
- process.exit(0);
20
- } else if (args.includes("--help")) {
21
- process.stderr.write(
22
- `${[
23
- "web3agent \u2014 Web3 MCP proxy server",
24
- "",
25
- "Usage:",
26
- " web3agent Start MCP proxy server (stdio)",
27
- " web3agent init Configure your AI agent host",
28
- "",
29
- "Options:",
30
- " --version Print version",
31
- " --help Print this help"
32
- ].join("\n")}
33
- `
90
+ }
91
+ return payload.data;
92
+ }
93
+
94
+ // src/api/chains.ts
95
+ function getChain(id) {
96
+ return getChainById(id);
97
+ }
98
+ function findChainByName(name) {
99
+ return getChainByName(name);
100
+ }
101
+ function isSupportedChain(chainId) {
102
+ return isSupported(chainId);
103
+ }
104
+ async function listSupportedChains(options) {
105
+ const runtime = await getRuntime(options);
106
+ return invokeAndRequireData(runtime, "list_supported_chains");
107
+ }
108
+ async function listSupportedChainEntries(options) {
109
+ const result = await listSupportedChains(options);
110
+ return result.chains;
111
+ }
112
+
113
+ // src/api/write-results.ts
114
+ function isPendingConfirmation(value) {
115
+ if (!value || typeof value !== "object") return false;
116
+ const candidate = value;
117
+ return candidate.status === "pending_confirmation" && typeof candidate.id === "string" && typeof candidate.summary === "string";
118
+ }
119
+ function normalizeWriteResult(data) {
120
+ if (isPendingConfirmation(data)) {
121
+ return data;
122
+ }
123
+ return data ?? {};
124
+ }
125
+
126
+ // src/api/orders.ts
127
+ async function placeLimitOrder(params, options) {
128
+ const runtime = await getRuntime(options);
129
+ const input = parseInput(orbsPlaceLimitSchema, params);
130
+ const data = await invokeAndRequireData(runtime, "orbs_place_limit", input);
131
+ return normalizeWriteResult(data);
132
+ }
133
+ async function placeTwapOrder(params, options) {
134
+ const runtime = await getRuntime(options);
135
+ const input = parseInput(orbsPlaceTwapSchema, params);
136
+ const data = await invokeAndRequireData(runtime, "orbs_place_twap", input);
137
+ return normalizeWriteResult(data);
138
+ }
139
+ async function listOrders(params, options) {
140
+ const runtime = await getRuntime(options);
141
+ const input = parseInput(orbsListOrdersSchema, params);
142
+ return invokeAndRequireData(runtime, "orbs_list_orders", input);
143
+ }
144
+
145
+ // src/api/swaps.ts
146
+ async function getSwapQuote(params, options) {
147
+ const runtime = await getRuntime(options);
148
+ if ("fromChainId" in params) {
149
+ const input2 = parseInput(lifiGetQuoteSchema, params);
150
+ const quote2 = await invokeAndRequireData(
151
+ runtime,
152
+ "lifi_get_quote",
153
+ input2
154
+ );
155
+ return {
156
+ kind: "cross-chain",
157
+ provider: "lifi",
158
+ quote: quote2
159
+ };
160
+ }
161
+ const input = parseInput(orbsSwapSchema, params);
162
+ const quote = await invokeAndRequireData(
163
+ runtime,
164
+ "orbs_get_quote",
165
+ input
34
166
  );
35
- process.exit(0);
36
- } else {
37
- import("./startup-PHXZQ2SL.js").then(({ startServer }) => {
38
- startServer().catch((e) => {
39
- process.stderr.write(`Fatal: ${e.message}
40
- `);
41
- process.exit(1);
167
+ return {
168
+ kind: "same-chain",
169
+ provider: "orbs",
170
+ chainId: input.chainId ?? getConfig().chainId,
171
+ quote
172
+ };
173
+ }
174
+ async function isTokenSwappable(params, options) {
175
+ try {
176
+ const quote = await getSwapQuote(params, options);
177
+ return {
178
+ swappable: true,
179
+ provider: quote.provider,
180
+ kind: quote.kind
181
+ };
182
+ } catch (error) {
183
+ if ("fromChainId" in params) {
184
+ return {
185
+ swappable: false,
186
+ provider: "lifi",
187
+ kind: "cross-chain",
188
+ reason: error instanceof Error ? error.message : String(error)
189
+ };
190
+ }
191
+ return {
192
+ swappable: false,
193
+ provider: "orbs",
194
+ kind: "same-chain",
195
+ reason: error instanceof Error ? error.message : String(error)
196
+ };
197
+ }
198
+ }
199
+ async function executeSameChainSwap(params, options) {
200
+ const runtime = await getRuntime(options);
201
+ const input = parseInput(orbsSwapSchema, params);
202
+ const data = await invokeAndRequireData(runtime, "orbs_swap", input);
203
+ return normalizeWriteResult(data);
204
+ }
205
+ async function executeBridge(params, options) {
206
+ const runtime = await getRuntime(options);
207
+ const input = parseInput(lifiExecuteBridgeSchema, params);
208
+ const data = await invokeAndRequireData(runtime, "lifi_execute_bridge", input);
209
+ return normalizeWriteResult(data);
210
+ }
211
+ async function getSwapStatus(params, options) {
212
+ const runtime = await getRuntime(options);
213
+ const input = parseInput(orbsSwapStatusSchema, params);
214
+ const status = await invokeAndRequireData(
215
+ runtime,
216
+ "orbs_swap_status",
217
+ input
218
+ );
219
+ return {
220
+ provider: "orbs",
221
+ status
222
+ };
223
+ }
224
+ function mapOperationType(operationType) {
225
+ if (operationType === "orbs_swap") return "orbs";
226
+ if (operationType === "lifi_execute_bridge") return "lifi";
227
+ return null;
228
+ }
229
+ async function getSwapHistory(_params = {}) {
230
+ const walletAddress = _params.walletAddress ?? getWalletState().address;
231
+ const pendingEntries = confirmationQueue.list().filter((operation) => mapOperationType(operation.type) !== null).filter(
232
+ (operation) => walletAddress ? operation.walletAddress?.toLowerCase() === walletAddress.toLowerCase() : true
233
+ ).map((operation) => ({
234
+ id: operation.id,
235
+ provider: mapOperationType(operation.type) ?? "orbs",
236
+ status: "pending_confirmation",
237
+ walletAddress: operation.walletAddress,
238
+ description: operation.description,
239
+ timestamp: operation.createdAt.toISOString()
240
+ }));
241
+ const auditEntries = await readAuditLog();
242
+ const historyEntries = auditEntries.filter((entry) => mapOperationType(entry.operationType) !== null).filter(
243
+ (entry) => walletAddress ? entry.walletAddress?.toLowerCase() === walletAddress.toLowerCase() : true
244
+ ).map((entry) => ({
245
+ id: entry.operationId,
246
+ provider: mapOperationType(entry.operationType) ?? "orbs",
247
+ status: entry.action === "CONFIRMED" ? "confirmed" : entry.action.toLowerCase(),
248
+ walletAddress: entry.walletAddress,
249
+ description: entry.description,
250
+ timestamp: entry.timestamp
251
+ }));
252
+ return {
253
+ walletAddress,
254
+ entries: [...pendingEntries, ...historyEntries].sort(
255
+ (a, b) => a.timestamp < b.timestamp ? 1 : -1
256
+ )
257
+ };
258
+ }
259
+
260
+ // src/api/tokens.ts
261
+ async function resolveToken2(params) {
262
+ const { symbol, chainId } = parseInput(resolveTokenSchema, params);
263
+ const chain = getChainById(chainId);
264
+ if (!chain) {
265
+ throw new Web3AgentError({
266
+ code: "UNKNOWN_CHAIN",
267
+ message: `Chain ${chainId} is not a known EVM chain`
268
+ });
269
+ }
270
+ const result = await resolveToken(symbol, chainId);
271
+ if (!result) {
272
+ throw new Web3AgentError({
273
+ code: "TOKEN_NOT_FOUND",
274
+ message: `Token '${symbol}' not found on ${chain.name} (${chainId})`
275
+ });
276
+ }
277
+ return result;
278
+ }
279
+ async function resolveCanonicalToken2(params) {
280
+ const { symbol, chainId } = parseInput(resolveTokenSchema, params);
281
+ const chain = getChainById(chainId);
282
+ if (!chain) {
283
+ throw new Web3AgentError({
284
+ code: "UNKNOWN_CHAIN",
285
+ message: `Chain ${chainId} is not a known EVM chain`
286
+ });
287
+ }
288
+ const result = await resolveCanonicalToken(symbol, chainId);
289
+ if (!result) {
290
+ throw new Web3AgentError({
291
+ code: "TOKEN_NOT_FOUND",
292
+ message: `Canonical token '${symbol}' not found on ${chain.name} (${chainId}); call resolveToken() to use discovery fallback`
293
+ });
294
+ }
295
+ return result;
296
+ }
297
+ function resolveTokenSync2(params) {
298
+ const { symbol, chainId } = parseInput(resolveTokenSchema, params);
299
+ return resolveTokenSync(symbol, chainId);
300
+ }
301
+ function resolveCanonicalTokenSync2(params) {
302
+ const { symbol, chainId } = parseInput(resolveTokenSchema, params);
303
+ return resolveCanonicalTokenSync(symbol, chainId);
304
+ }
305
+ function listChainTokens(params) {
306
+ const { chainId } = parseInput(listChainTokensSchema, params);
307
+ const chain = getChainById(chainId);
308
+ if (!chain) {
309
+ throw new Web3AgentError({
310
+ code: "UNKNOWN_CHAIN",
311
+ message: `Chain ${chainId} is not a known EVM chain`
42
312
  });
43
- });
313
+ }
314
+ return {
315
+ chainId,
316
+ chainName: chain.name,
317
+ tokens: listTokens(chainId)
318
+ };
44
319
  }
320
+ export {
321
+ Web3AgentError,
322
+ clearTraceSupportCache,
323
+ executeBridge,
324
+ executeSameChainSwap,
325
+ findChainByName,
326
+ getChain,
327
+ getRequiredApprovals,
328
+ getSwapHistory,
329
+ getSwapQuote,
330
+ getSwapStatus,
331
+ isSupportedChain,
332
+ isTokenSwappable,
333
+ lifiExecuteBridgeSchema,
334
+ lifiGetQuoteSchema,
335
+ lifiPrepareBridgeIntentSchema,
336
+ listChainTokens,
337
+ listChainTokensSchema,
338
+ listOrders,
339
+ listSupportedChainEntries,
340
+ listSupportedChains,
341
+ normalizeEip712ForSigning,
342
+ operationActionResultSchema,
343
+ operationResumeStateSchema,
344
+ orbsGetQuoteSchema,
345
+ orbsGetRequiredApprovalsSchema,
346
+ orbsListOrdersSchema,
347
+ orbsPlaceLimitSchema,
348
+ orbsPlaceTwapSchema,
349
+ orbsPrepareLimitIntentSchema,
350
+ orbsPrepareSwapIntentSchema,
351
+ orbsPrepareTwapIntentSchema,
352
+ orbsSubmitSignedSwapSchema,
353
+ orbsSubmitSignedTwapOrderSchema,
354
+ orbsSwapSchema,
355
+ orbsSwapStatusSchema,
356
+ parseEnv,
357
+ placeLimitOrder,
358
+ placeTwapOrder,
359
+ pollSwapStatus,
360
+ prepareBridgeIntent,
361
+ prepareLimitIntent,
362
+ prepareOperation,
363
+ prepareOperationSchema,
364
+ prepareSwapIntent,
365
+ prepareTwapIntent,
366
+ resetConfig,
367
+ resolveCanonicalToken2 as resolveCanonicalToken,
368
+ resolveCanonicalTokenSync2 as resolveCanonicalTokenSync,
369
+ resolveToken2 as resolveToken,
370
+ resolveTokenSchema,
371
+ resolveTokenSync2 as resolveTokenSync,
372
+ resumeOperation,
373
+ resumeOperationSchema,
374
+ setConfig,
375
+ simulateTransaction,
376
+ submitSignedSwap,
377
+ submitSignedTwapOrder,
378
+ transactionConfirmSchema,
379
+ transactionDenySchema,
380
+ transactionSimulateSchema,
381
+ walletActivateSchema,
382
+ walletDeriveAddressesSchema,
383
+ walletFromMnemonicSchema,
384
+ walletSetConfirmationSchema
385
+ };
@@ -0,0 +1,157 @@
1
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import { b as RuntimeConfig, B as BackendStatus, j as BackendStatusCode, C as CreateRuntimeOptions, W as Web3AgentRuntime, k as WalletGenerateResult, l as WalletGenerateMnemonicResult, m as WalletAddressDerivationResult, n as WalletDerivedAddressEntry, o as WalletActiveResult, p as WalletDeactivationResult, q as WalletConfirmationResult, r as TransactionListResult, s as TransactionConfirmResult, t as TransactionDenyResult, R as RuntimeHealth, T as ToolCatalogEntry, c as RuntimeToolListener } from './types-B_VpZGqQ.js';
3
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
4
+
5
+ interface GoatToolSnapshot {
6
+ listOfTools: Array<{
7
+ name: string;
8
+ description: string;
9
+ inputSchema: object;
10
+ }>;
11
+ toolHandler: (toolName: string, params: unknown) => Promise<{
12
+ content: Array<{
13
+ type: string;
14
+ text: string;
15
+ }>;
16
+ }>;
17
+ chainId: number;
18
+ }
19
+
20
+ declare class GoatProvider {
21
+ private snapshots;
22
+ private pluginResult;
23
+ private referenceSnapshot;
24
+ private generation;
25
+ private runtimeConfig?;
26
+ private walletChangeHandler?;
27
+ private rebuildPromise;
28
+ initialize(config: RuntimeConfig): Promise<void>;
29
+ /** Wait for any in-flight rebuild triggered by a wallet change. */
30
+ waitForRebuild(): Promise<void>;
31
+ shutdown(): void;
32
+ private buildSnapshot;
33
+ getOrBuildSnapshot(chainId: number): Promise<GoatToolSnapshot | undefined>;
34
+ getReferenceSnapshot(): GoatToolSnapshot | undefined;
35
+ getAllToolNames(): string[];
36
+ getLoadedPlugins(): string[];
37
+ }
38
+
39
+ interface PrefixedTool extends Tool {
40
+ upstreamName: string;
41
+ prefix: string;
42
+ }
43
+ interface AdapterHealth extends BackendStatus {
44
+ restartCount?: number;
45
+ pid?: number;
46
+ uptimeMs?: number;
47
+ lastRestartAt?: Date;
48
+ }
49
+ interface UpstreamAdapter {
50
+ name: string;
51
+ initialize(): Promise<void>;
52
+ getTools(): PrefixedTool[];
53
+ callTool(name: string, args: Record<string, unknown>): Promise<unknown>;
54
+ getHealth(): AdapterHealth;
55
+ shutdown(): Promise<void>;
56
+ }
57
+
58
+ interface RemoteMcpAdapterConfig {
59
+ name: string;
60
+ prefix: string;
61
+ url: string;
62
+ initialStatus?: BackendStatusCode;
63
+ initialMessage?: string;
64
+ }
65
+ declare abstract class RemoteMcpAdapter implements UpstreamAdapter {
66
+ readonly name: string;
67
+ protected client: Client;
68
+ protected tools: PrefixedTool[];
69
+ protected routeMap: Map<string, string>;
70
+ protected health: AdapterHealth;
71
+ private readonly prefix;
72
+ private readonly url;
73
+ constructor(config: RemoteMcpAdapterConfig);
74
+ protected shouldSkipInit(): boolean;
75
+ protected getTransportOptions(): RequestInit | undefined;
76
+ protected postConnect(): Promise<void>;
77
+ protected filterTools(tools: Tool[]): Tool[];
78
+ protected transformDescription(description: string): string;
79
+ initialize(): Promise<void>;
80
+ getTools(): PrefixedTool[];
81
+ callTool(name: string, args: Record<string, unknown>): Promise<unknown>;
82
+ getHealth(): AdapterHealth;
83
+ shutdown(): Promise<void>;
84
+ }
85
+
86
+ declare class BlockscoutAdapter extends RemoteMcpAdapter {
87
+ constructor(url?: string);
88
+ protected postConnect(): Promise<void>;
89
+ protected filterTools(tools: Tool[]): Tool[];
90
+ protected transformDescription(desc: string): string;
91
+ }
92
+
93
+ declare class EtherscanAdapter extends RemoteMcpAdapter {
94
+ private readonly apiKey;
95
+ constructor(url?: string, apiKey?: string);
96
+ protected shouldSkipInit(): boolean;
97
+ protected getTransportOptions(): RequestInit | undefined;
98
+ }
99
+
100
+ declare class ManagedRuntime implements Web3AgentRuntime {
101
+ readonly config: RuntimeConfig;
102
+ private readonly blockscoutAdapter;
103
+ private readonly etherscanAdapter;
104
+ readonly wallet: {
105
+ generate: () => Promise<WalletGenerateResult>;
106
+ generateMnemonic: () => Promise<WalletGenerateMnemonicResult>;
107
+ fromMnemonic: (params: Record<string, unknown>) => Promise<WalletAddressDerivationResult>;
108
+ deriveAddresses: (params: Record<string, unknown>) => Promise<WalletDerivedAddressEntry[]>;
109
+ getActive: () => Promise<WalletActiveResult>;
110
+ activate: (params: Record<string, unknown>) => Promise<WalletActiveResult>;
111
+ deactivate: () => Promise<WalletDeactivationResult>;
112
+ setConfirmation: (params: Record<string, unknown>) => Promise<WalletConfirmationResult>;
113
+ };
114
+ readonly transactions: {
115
+ list: () => Promise<TransactionListResult>;
116
+ confirm: (id: string) => Promise<TransactionConfirmResult>;
117
+ deny: (id: string) => Promise<TransactionDenyResult>;
118
+ };
119
+ readonly status: {
120
+ server: () => Promise<RuntimeHealth>;
121
+ supportedChains: () => Promise<unknown>;
122
+ };
123
+ readonly pendingOpsRestored: number;
124
+ private readonly frameworkTools;
125
+ private readonly lifiTools;
126
+ private readonly orbsTools;
127
+ private readonly tokenTools;
128
+ private readonly x402Tools;
129
+ private readonly erc8183Tools;
130
+ private readonly acpVirtualsTools;
131
+ private readonly agdpTools;
132
+ private readonly erc8004Tools;
133
+ private readonly evmTools;
134
+ private readonly goatProvider;
135
+ private readonly listeners;
136
+ private readonly health;
137
+ private readonly toolRecords;
138
+ private walletChangeHandler?;
139
+ private closed;
140
+ constructor(config: RuntimeConfig, blockscoutAdapter: BlockscoutAdapter, etherscanAdapter: EtherscanAdapter, goatProvider: GoatProvider, pendingOpsRestored: number);
141
+ initialize(): void;
142
+ listTools(): ToolCatalogEntry[];
143
+ getTool(name: string): ToolCatalogEntry | undefined;
144
+ getMcpTools(): Tool[];
145
+ invokeTool(name: string, args?: Record<string, unknown>): Promise<CallToolResult>;
146
+ getHealth(): RuntimeHealth;
147
+ onToolsChanged(listener: RuntimeToolListener): () => void;
148
+ shutdown(): Promise<void>;
149
+ private requireToolData;
150
+ private emitToolsChanged;
151
+ private refreshHealthStatus;
152
+ private rebuildToolRegistry;
153
+ private getFrameworkSource;
154
+ }
155
+ declare function createRuntime(options?: CreateRuntimeOptions): Promise<ManagedRuntime>;
156
+
157
+ export { BlockscoutAdapter as B, EtherscanAdapter as E, GoatProvider as G, ManagedRuntime as M, createRuntime as c };
@@ -0,0 +1,21 @@
1
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
2
+ import { M as ManagedRuntime, B as BlockscoutAdapter, E as EtherscanAdapter, G as GoatProvider } from '../managed-runtime-DCLqOBjp.js';
3
+ import '@modelcontextprotocol/sdk/types.js';
4
+ import '../types-B_VpZGqQ.js';
5
+ import '@modelcontextprotocol/sdk/client/index.js';
6
+
7
+ declare class ProxyServer {
8
+ private readonly server;
9
+ private removeToolsChangedListener?;
10
+ private readonly runtime;
11
+ constructor(runtimeOrBlockscout: ManagedRuntime | BlockscoutAdapter, etherscanAdapter?: EtherscanAdapter, goatProviderInstance?: GoatProvider);
12
+ private registerHandlers;
13
+ private getAggregatedTools;
14
+ shutdown(): Promise<void>;
15
+ connect(transport: StdioServerTransport): Promise<void>;
16
+ start(): Promise<void>;
17
+ }
18
+
19
+ declare function startServer(): Promise<void>;
20
+
21
+ export { ProxyServer, startServer };