@t402/mcp 2.7.0 → 2.8.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/cjs/index.js +1401 -185
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/server/index.d.ts +36 -0
- package/dist/cjs/server/index.js +1401 -185
- package/dist/cjs/server/index.js.map +1 -1
- package/dist/cjs/tools/index.d.ts +689 -12
- package/dist/cjs/tools/index.js +1155 -29
- package/dist/cjs/tools/index.js.map +1 -1
- package/dist/esm/{chunk-B7X7H6NV.mjs → chunk-SUDCVXHQ.mjs} +1120 -30
- package/dist/esm/chunk-SUDCVXHQ.mjs.map +1 -0
- package/dist/esm/{chunk-3PMBXSJ3.mjs → chunk-XOPD7VTU.mjs} +195 -2
- package/dist/esm/chunk-XOPD7VTU.mjs.map +1 -0
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/server/index.d.mts +36 -0
- package/dist/esm/server/index.mjs +2 -2
- package/dist/esm/tools/index.d.mts +689 -12
- package/dist/esm/tools/index.mjs +70 -1
- package/package.json +14 -14
- package/dist/esm/chunk-3PMBXSJ3.mjs.map +0 -1
- package/dist/esm/chunk-B7X7H6NV.mjs.map +0 -1
|
@@ -7,29 +7,44 @@ import {
|
|
|
7
7
|
__publicField,
|
|
8
8
|
autoPayInputSchema,
|
|
9
9
|
bridgeInputSchema,
|
|
10
|
+
compareNetworkFeesInputSchema,
|
|
10
11
|
erc8004CheckReputationInputSchema,
|
|
11
12
|
erc8004ResolveAgentInputSchema,
|
|
12
13
|
erc8004VerifyWalletInputSchema,
|
|
14
|
+
estimatePaymentFeeInputSchema,
|
|
13
15
|
executeAutoPay,
|
|
14
16
|
executeAutoPayDemo,
|
|
15
17
|
executeBridge,
|
|
18
|
+
executeBridgeFromQuoteInputSchema,
|
|
19
|
+
executeCompareNetworkFees,
|
|
16
20
|
executeErc8004CheckReputation,
|
|
17
21
|
executeErc8004ResolveAgent,
|
|
18
22
|
executeErc8004VerifyWallet,
|
|
23
|
+
executeEstimatePaymentFee,
|
|
24
|
+
executeExecuteBridgeFromQuote,
|
|
25
|
+
executeExecuteBridgeFromQuoteDemo,
|
|
19
26
|
executeGetAllBalances,
|
|
20
27
|
executeGetBalance,
|
|
21
28
|
executeGetBridgeFee,
|
|
29
|
+
executeGetGasPrice,
|
|
30
|
+
executeGetTokenPrice,
|
|
22
31
|
executePay,
|
|
23
32
|
executePayGasless,
|
|
24
33
|
executePaymentPlan,
|
|
25
34
|
executePaymentPlanDemo,
|
|
35
|
+
executeQuoteBridge,
|
|
36
|
+
executeQuoteBridgeDemo,
|
|
26
37
|
executeSmartPay,
|
|
27
38
|
executeSmartPayDemo,
|
|
28
39
|
executeTonBridgeTool,
|
|
40
|
+
executeWdkExecuteSwap,
|
|
41
|
+
executeWdkExecuteSwapDemo,
|
|
29
42
|
executeWdkGetBalances,
|
|
30
43
|
executeWdkGetBalancesDemo,
|
|
31
44
|
executeWdkGetWallet,
|
|
32
45
|
executeWdkGetWalletDemo,
|
|
46
|
+
executeWdkQuoteSwap,
|
|
47
|
+
executeWdkQuoteSwapDemo,
|
|
33
48
|
executeWdkSwap,
|
|
34
49
|
executeWdkSwapDemo,
|
|
35
50
|
executeWdkTransfer,
|
|
@@ -38,14 +53,21 @@ import {
|
|
|
38
53
|
formatAutoPayResult,
|
|
39
54
|
formatBalanceResult,
|
|
40
55
|
formatBridgeFeeResult,
|
|
56
|
+
formatBridgeQuoteResult,
|
|
41
57
|
formatBridgeResult,
|
|
42
58
|
formatErc8004CheckReputationResult,
|
|
43
59
|
formatErc8004ResolveAgentResult,
|
|
44
60
|
formatErc8004VerifyWalletResult,
|
|
61
|
+
formatExecuteSwapResult,
|
|
62
|
+
formatGasPriceResult,
|
|
45
63
|
formatGaslessPaymentResult,
|
|
64
|
+
formatNetworkFeeComparison,
|
|
65
|
+
formatPaymentFeeEstimate,
|
|
46
66
|
formatPaymentPlanResult,
|
|
47
67
|
formatPaymentResult,
|
|
48
68
|
formatSmartPayResult,
|
|
69
|
+
formatSwapQuoteResult,
|
|
70
|
+
formatTokenPriceResult,
|
|
49
71
|
formatWdkBalancesResult,
|
|
50
72
|
formatWdkSwapResult,
|
|
51
73
|
formatWdkTransferResult,
|
|
@@ -53,15 +75,20 @@ import {
|
|
|
53
75
|
getAllBalancesInputSchema,
|
|
54
76
|
getBalanceInputSchema,
|
|
55
77
|
getBridgeFeeInputSchema,
|
|
78
|
+
getGasPriceInputSchema,
|
|
79
|
+
getTokenPriceInputSchema,
|
|
56
80
|
payGaslessInputSchema,
|
|
57
81
|
payInputSchema,
|
|
58
82
|
paymentPlanInputSchema,
|
|
83
|
+
quoteBridgeInputSchema,
|
|
59
84
|
smartPayInputSchema,
|
|
85
|
+
wdkExecuteSwapInputSchema,
|
|
60
86
|
wdkGetBalancesInputSchema,
|
|
61
87
|
wdkGetWalletInputSchema,
|
|
88
|
+
wdkQuoteSwapInputSchema,
|
|
62
89
|
wdkSwapInputSchema,
|
|
63
90
|
wdkTransferInputSchema
|
|
64
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-SUDCVXHQ.mjs";
|
|
65
92
|
|
|
66
93
|
// src/server/t402Server.ts
|
|
67
94
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
@@ -171,6 +198,24 @@ var T402McpServer = class {
|
|
|
171
198
|
return await this.handleSmartPay(args);
|
|
172
199
|
case "t402/paymentPlan":
|
|
173
200
|
return await this.handlePaymentPlan(args);
|
|
201
|
+
// Price and fee tools
|
|
202
|
+
case "t402/getTokenPrice":
|
|
203
|
+
return await this.handleGetTokenPrice(args);
|
|
204
|
+
case "t402/getGasPrice":
|
|
205
|
+
return await this.handleGetGasPrice(args);
|
|
206
|
+
case "t402/estimatePaymentFee":
|
|
207
|
+
return await this.handleEstimatePaymentFee(args);
|
|
208
|
+
case "t402/compareNetworkFees":
|
|
209
|
+
return await this.handleCompareNetworkFees(args);
|
|
210
|
+
// Quote-based tools
|
|
211
|
+
case "t402/quoteBridge":
|
|
212
|
+
return await this.handleQuoteBridge(args);
|
|
213
|
+
case "t402/executeBridgeQuote":
|
|
214
|
+
return await this.handleExecuteBridgeQuote(args);
|
|
215
|
+
case "wdk/quoteSwap":
|
|
216
|
+
return await this.handleWdkQuoteSwap(args);
|
|
217
|
+
case "wdk/executeSwap":
|
|
218
|
+
return await this.handleWdkExecuteSwap(args);
|
|
174
219
|
// ERC-8004 tools
|
|
175
220
|
case "erc8004/resolveAgent":
|
|
176
221
|
return await this.handleErc8004ResolveAgent(args);
|
|
@@ -232,6 +277,28 @@ var T402McpServer = class {
|
|
|
232
277
|
]
|
|
233
278
|
};
|
|
234
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Format a confirmation prompt for elicitation
|
|
282
|
+
*/
|
|
283
|
+
formatConfirmation(result) {
|
|
284
|
+
const detailLines = Object.entries(result.details).map(([key, value]) => `- **${key}:** ${value}`).join("\n");
|
|
285
|
+
return {
|
|
286
|
+
content: [
|
|
287
|
+
{
|
|
288
|
+
type: "text",
|
|
289
|
+
text: [
|
|
290
|
+
"## Confirmation Required",
|
|
291
|
+
"",
|
|
292
|
+
result.summary,
|
|
293
|
+
"",
|
|
294
|
+
detailLines,
|
|
295
|
+
"",
|
|
296
|
+
"_Call this tool again with `confirmed: true` to execute._"
|
|
297
|
+
].join("\n")
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
};
|
|
301
|
+
}
|
|
235
302
|
/**
|
|
236
303
|
* Handle t402/pay
|
|
237
304
|
*/
|
|
@@ -247,6 +314,9 @@ var T402McpServer = class {
|
|
|
247
314
|
rpcUrl: this.config.rpcUrls?.[input.network],
|
|
248
315
|
demoMode: this.config.demoMode
|
|
249
316
|
});
|
|
317
|
+
if ("needsConfirmation" in result) {
|
|
318
|
+
return this.formatConfirmation(result);
|
|
319
|
+
}
|
|
250
320
|
return {
|
|
251
321
|
content: [
|
|
252
322
|
{
|
|
@@ -283,6 +353,9 @@ var T402McpServer = class {
|
|
|
283
353
|
rpcUrl: this.config.rpcUrls?.[input.network],
|
|
284
354
|
demoMode: this.config.demoMode
|
|
285
355
|
});
|
|
356
|
+
if ("needsConfirmation" in result) {
|
|
357
|
+
return this.formatConfirmation(result);
|
|
358
|
+
}
|
|
286
359
|
return {
|
|
287
360
|
content: [
|
|
288
361
|
{
|
|
@@ -322,6 +395,9 @@ var T402McpServer = class {
|
|
|
322
395
|
rpcUrl: this.config.rpcUrls?.[input.fromChain],
|
|
323
396
|
demoMode: this.config.demoMode
|
|
324
397
|
});
|
|
398
|
+
if ("needsConfirmation" in result) {
|
|
399
|
+
return this.formatConfirmation(result);
|
|
400
|
+
}
|
|
325
401
|
return {
|
|
326
402
|
content: [
|
|
327
403
|
{
|
|
@@ -358,6 +434,9 @@ var T402McpServer = class {
|
|
|
358
434
|
async handleWdkTransfer(args) {
|
|
359
435
|
const input = wdkTransferInputSchema.parse(args);
|
|
360
436
|
const result = this.config.demoMode || !this.wdk ? executeWdkTransferDemo(input) : await executeWdkTransfer(input, this.wdk);
|
|
437
|
+
if ("needsConfirmation" in result) {
|
|
438
|
+
return this.formatConfirmation(result);
|
|
439
|
+
}
|
|
361
440
|
return {
|
|
362
441
|
content: [{ type: "text", text: formatWdkTransferResult(result) }]
|
|
363
442
|
};
|
|
@@ -368,6 +447,9 @@ var T402McpServer = class {
|
|
|
368
447
|
async handleWdkSwap(args) {
|
|
369
448
|
const input = wdkSwapInputSchema.parse(args);
|
|
370
449
|
const result = this.config.demoMode || !this.wdk ? executeWdkSwapDemo(input) : await executeWdkSwap(input, this.wdk);
|
|
450
|
+
if ("needsConfirmation" in result) {
|
|
451
|
+
return this.formatConfirmation(result);
|
|
452
|
+
}
|
|
371
453
|
return {
|
|
372
454
|
content: [{ type: "text", text: formatWdkSwapResult(result) }]
|
|
373
455
|
};
|
|
@@ -378,6 +460,9 @@ var T402McpServer = class {
|
|
|
378
460
|
async handleAutoPay(args) {
|
|
379
461
|
const input = autoPayInputSchema.parse(args);
|
|
380
462
|
const result = this.config.demoMode || !this.wdk ? executeAutoPayDemo(input) : await executeAutoPay(input, this.wdk);
|
|
463
|
+
if ("needsConfirmation" in result) {
|
|
464
|
+
return this.formatConfirmation(result);
|
|
465
|
+
}
|
|
381
466
|
return {
|
|
382
467
|
content: [{ type: "text", text: formatAutoPayResult(result) }]
|
|
383
468
|
};
|
|
@@ -389,6 +474,9 @@ var T402McpServer = class {
|
|
|
389
474
|
async handleSmartPay(args) {
|
|
390
475
|
const input = smartPayInputSchema.parse(args);
|
|
391
476
|
const result = this.config.demoMode || !this.wdk ? executeSmartPayDemo(input) : await executeSmartPay(input, this.wdk);
|
|
477
|
+
if ("needsConfirmation" in result) {
|
|
478
|
+
return this.formatConfirmation(result);
|
|
479
|
+
}
|
|
392
480
|
return {
|
|
393
481
|
content: [{ type: "text", text: formatSmartPayResult(result) }]
|
|
394
482
|
};
|
|
@@ -403,6 +491,111 @@ var T402McpServer = class {
|
|
|
403
491
|
content: [{ type: "text", text: formatPaymentPlanResult(result) }]
|
|
404
492
|
};
|
|
405
493
|
}
|
|
494
|
+
// ---- Price and Fee Tool Handlers ----
|
|
495
|
+
/**
|
|
496
|
+
* Handle t402/getTokenPrice
|
|
497
|
+
*/
|
|
498
|
+
async handleGetTokenPrice(args) {
|
|
499
|
+
const input = getTokenPriceInputSchema.parse(args);
|
|
500
|
+
const result = await executeGetTokenPrice(input, { demoMode: this.config.demoMode });
|
|
501
|
+
return {
|
|
502
|
+
content: [{ type: "text", text: formatTokenPriceResult(result) }]
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Handle t402/getGasPrice
|
|
507
|
+
*/
|
|
508
|
+
async handleGetGasPrice(args) {
|
|
509
|
+
const input = getGasPriceInputSchema.parse(args);
|
|
510
|
+
const result = await executeGetGasPrice(input, {
|
|
511
|
+
rpcUrl: this.config.rpcUrls?.[input.network],
|
|
512
|
+
demoMode: this.config.demoMode
|
|
513
|
+
});
|
|
514
|
+
return {
|
|
515
|
+
content: [{ type: "text", text: formatGasPriceResult(result) }]
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Handle t402/estimatePaymentFee
|
|
520
|
+
*/
|
|
521
|
+
async handleEstimatePaymentFee(args) {
|
|
522
|
+
const input = estimatePaymentFeeInputSchema.parse(args);
|
|
523
|
+
const result = await executeEstimatePaymentFee(input, {
|
|
524
|
+
rpcUrl: this.config.rpcUrls?.[input.network],
|
|
525
|
+
demoMode: this.config.demoMode
|
|
526
|
+
});
|
|
527
|
+
return {
|
|
528
|
+
content: [{ type: "text", text: formatPaymentFeeEstimate(result) }]
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Handle t402/compareNetworkFees
|
|
533
|
+
*/
|
|
534
|
+
async handleCompareNetworkFees(args) {
|
|
535
|
+
const input = compareNetworkFeesInputSchema.parse(args);
|
|
536
|
+
const result = await executeCompareNetworkFees(input, {
|
|
537
|
+
rpcUrls: this.config.rpcUrls,
|
|
538
|
+
demoMode: this.config.demoMode
|
|
539
|
+
});
|
|
540
|
+
return {
|
|
541
|
+
content: [{ type: "text", text: formatNetworkFeeComparison(result) }]
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
// ---- Quote-based Tool Handlers ----
|
|
545
|
+
/**
|
|
546
|
+
* Handle t402/quoteBridge
|
|
547
|
+
*/
|
|
548
|
+
async handleQuoteBridge(args) {
|
|
549
|
+
const input = quoteBridgeInputSchema.parse(args);
|
|
550
|
+
const result = this.config.demoMode ? executeQuoteBridgeDemo(input) : await executeQuoteBridge(input, this.config.rpcUrls);
|
|
551
|
+
return {
|
|
552
|
+
content: [{ type: "text", text: formatBridgeQuoteResult(result) }]
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
/**
|
|
556
|
+
* Handle t402/executeBridgeQuote
|
|
557
|
+
*/
|
|
558
|
+
async handleExecuteBridgeQuote(args) {
|
|
559
|
+
if (!this.config.privateKey && !this.config.demoMode) {
|
|
560
|
+
throw new Error(
|
|
561
|
+
"Private key not configured. Set T402_PRIVATE_KEY environment variable or enable demo mode."
|
|
562
|
+
);
|
|
563
|
+
}
|
|
564
|
+
const input = executeBridgeFromQuoteInputSchema.parse(args);
|
|
565
|
+
const result = this.config.demoMode ? executeExecuteBridgeFromQuoteDemo(input) : await executeExecuteBridgeFromQuote(input, {
|
|
566
|
+
privateKey: this.config.privateKey || "0x",
|
|
567
|
+
demoMode: this.config.demoMode
|
|
568
|
+
});
|
|
569
|
+
if ("needsConfirmation" in result) {
|
|
570
|
+
return this.formatConfirmation(result);
|
|
571
|
+
}
|
|
572
|
+
return {
|
|
573
|
+
content: [{ type: "text", text: formatBridgeResult(result) }]
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* Handle wdk/quoteSwap
|
|
578
|
+
*/
|
|
579
|
+
async handleWdkQuoteSwap(args) {
|
|
580
|
+
const input = wdkQuoteSwapInputSchema.parse(args);
|
|
581
|
+
const result = this.config.demoMode || !this.wdk ? executeWdkQuoteSwapDemo(input) : await executeWdkQuoteSwap(input, this.wdk);
|
|
582
|
+
return {
|
|
583
|
+
content: [{ type: "text", text: formatSwapQuoteResult(result) }]
|
|
584
|
+
};
|
|
585
|
+
}
|
|
586
|
+
/**
|
|
587
|
+
* Handle wdk/executeSwap
|
|
588
|
+
*/
|
|
589
|
+
async handleWdkExecuteSwap(args) {
|
|
590
|
+
const input = wdkExecuteSwapInputSchema.parse(args);
|
|
591
|
+
const result = this.config.demoMode || !this.wdk ? executeWdkExecuteSwapDemo(input) : await executeWdkExecuteSwap(input, this.wdk);
|
|
592
|
+
if ("needsConfirmation" in result) {
|
|
593
|
+
return this.formatConfirmation(result);
|
|
594
|
+
}
|
|
595
|
+
return {
|
|
596
|
+
content: [{ type: "text", text: formatExecuteSwapResult(result) }]
|
|
597
|
+
};
|
|
598
|
+
}
|
|
406
599
|
// ---- ERC-8004 Tool Handlers ----
|
|
407
600
|
/**
|
|
408
601
|
* Handle erc8004/resolveAgent
|
|
@@ -515,4 +708,4 @@ export {
|
|
|
515
708
|
createT402McpServer,
|
|
516
709
|
loadConfigFromEnv
|
|
517
710
|
};
|
|
518
|
-
//# sourceMappingURL=chunk-
|
|
711
|
+
//# sourceMappingURL=chunk-XOPD7VTU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/server/t402Server.ts"],"sourcesContent":["/**\n * t402 MCP Server - Main server implementation\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'\nimport type { McpServerConfig, SupportedNetwork } from '../types.js'\nimport {\n TOOL_DEFINITIONS,\n WDK_TOOL_DEFINITIONS,\n UNIFIED_TOOL_DEFINITIONS,\n executeGetBalance,\n formatBalanceResult,\n getBalanceInputSchema,\n executeGetAllBalances,\n formatAllBalancesResult,\n getAllBalancesInputSchema,\n executePay,\n formatPaymentResult,\n payInputSchema,\n executePayGasless,\n formatGaslessPaymentResult,\n payGaslessInputSchema,\n executeGetBridgeFee,\n formatBridgeFeeResult,\n getBridgeFeeInputSchema,\n executeBridge,\n formatBridgeResult,\n bridgeInputSchema,\n // WDK tools\n wdkGetWalletInputSchema,\n executeWdkGetWallet,\n executeWdkGetWalletDemo,\n formatWdkWalletResult,\n wdkGetBalancesInputSchema,\n executeWdkGetBalances,\n executeWdkGetBalancesDemo,\n formatWdkBalancesResult,\n wdkTransferInputSchema,\n executeWdkTransfer,\n executeWdkTransferDemo,\n formatWdkTransferResult,\n wdkSwapInputSchema,\n executeWdkSwap,\n executeWdkSwapDemo,\n formatWdkSwapResult,\n autoPayInputSchema,\n executeAutoPay,\n executeAutoPayDemo,\n formatAutoPayResult,\n // Unified tools\n smartPayInputSchema,\n executeSmartPay,\n executeSmartPayDemo,\n formatSmartPayResult,\n paymentPlanInputSchema,\n executePaymentPlan,\n executePaymentPlanDemo,\n formatPaymentPlanResult,\n // Price and fee tools\n getTokenPriceInputSchema,\n executeGetTokenPrice,\n formatTokenPriceResult,\n getGasPriceInputSchema,\n executeGetGasPrice,\n formatGasPriceResult,\n estimatePaymentFeeInputSchema,\n executeEstimatePaymentFee,\n formatPaymentFeeEstimate,\n compareNetworkFeesInputSchema,\n executeCompareNetworkFees,\n formatNetworkFeeComparison,\n // Quote-based tools\n quoteBridgeInputSchema,\n executeQuoteBridge,\n executeQuoteBridgeDemo,\n formatBridgeQuoteResult,\n executeBridgeFromQuoteInputSchema,\n executeExecuteBridgeFromQuote,\n executeExecuteBridgeFromQuoteDemo,\n formatExecuteBridgeFromQuoteResult,\n wdkQuoteSwapInputSchema,\n executeWdkQuoteSwap,\n executeWdkQuoteSwapDemo,\n formatSwapQuoteResult,\n wdkExecuteSwapInputSchema,\n executeWdkExecuteSwap,\n executeWdkExecuteSwapDemo,\n formatExecuteSwapResult,\n // TON bridge tools\n TON_BRIDGE_TOOLS,\n executeTonBridgeTool,\n type TonMcpBridgeConfig,\n // ERC-8004 tools\n ERC8004_TOOL_DEFINITIONS,\n erc8004ResolveAgentInputSchema,\n executeErc8004ResolveAgent,\n formatErc8004ResolveAgentResult,\n erc8004CheckReputationInputSchema,\n executeErc8004CheckReputation,\n formatErc8004CheckReputationResult,\n erc8004VerifyWalletInputSchema,\n executeErc8004VerifyWallet,\n formatErc8004VerifyWalletResult,\n} from '../tools/index.js'\nimport type { T402WDK } from '@t402/wdk'\n\n/**\n * t402 MCP Server\n *\n * Provides payment tools for AI agents via the Model Context Protocol.\n * When a WDK seed phrase is configured, additional wallet management tools are available.\n */\nexport class T402McpServer {\n private server: Server\n private config: McpServerConfig\n private wdk: T402WDK | null = null\n\n constructor(config: McpServerConfig = {}) {\n this.config = config\n this.server = new Server(\n {\n name: 't402',\n version: '1.0.0',\n },\n {\n capabilities: {\n tools: {},\n },\n },\n )\n\n this.setupHandlers()\n }\n\n /**\n * Initialize the WDK instance from seed phrase\n */\n async initWdk(): Promise<void> {\n if (!this.config.seedPhrase) return\n\n try {\n const { T402WDK } = await import('@t402/wdk')\n const rpcUrls: Record<string, string> = {}\n\n if (this.config.rpcUrls) {\n for (const [network, url] of Object.entries(this.config.rpcUrls)) {\n if (url) rpcUrls[network] = url\n }\n }\n\n this.wdk = new T402WDK(this.config.seedPhrase, rpcUrls)\n } catch {\n console.error('Warning: Failed to initialize WDK. WDK tools will not be available.')\n }\n }\n\n /** TON MCP bridge configuration */\n private tonBridgeConfig: TonMcpBridgeConfig | null = null\n\n /**\n * Register TON bridge tools\n *\n * Enables AI agents to use @ton/mcp tools through the t402 MCP server.\n */\n registerTonBridge(config: TonMcpBridgeConfig): void {\n this.tonBridgeConfig = config\n }\n\n /**\n * Get all tool definitions (base + WDK if configured + unified if enabled + TON bridge if registered)\n */\n private getToolDefinitions() {\n const tools = { ...TOOL_DEFINITIONS, ...ERC8004_TOOL_DEFINITIONS }\n if (this.wdk || this.config.demoMode) {\n Object.assign(tools, WDK_TOOL_DEFINITIONS)\n }\n if (this.config.unifiedMode && (this.wdk || this.config.demoMode)) {\n Object.assign(tools, UNIFIED_TOOL_DEFINITIONS)\n }\n if (this.tonBridgeConfig) {\n Object.assign(tools, TON_BRIDGE_TOOLS)\n }\n return tools\n }\n\n /**\n * Set up MCP request handlers\n */\n private setupHandlers(): void {\n // List available tools\n this.server.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: Object.values(this.getToolDefinitions()),\n }\n })\n\n // Handle tool calls\n this.server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params\n\n try {\n switch (name) {\n case 't402/getBalance':\n return await this.handleGetBalance(args)\n\n case 't402/getAllBalances':\n return await this.handleGetAllBalances(args)\n\n case 't402/pay':\n return await this.handlePay(args)\n\n case 't402/payGasless':\n return await this.handlePayGasless(args)\n\n case 't402/getBridgeFee':\n return await this.handleGetBridgeFee(args)\n\n case 't402/bridge':\n return await this.handleBridge(args)\n\n // WDK tools\n case 'wdk/getWallet':\n return await this.handleWdkGetWallet(args)\n\n case 'wdk/getBalances':\n return await this.handleWdkGetBalances(args)\n\n case 'wdk/transfer':\n return await this.handleWdkTransfer(args)\n\n case 'wdk/swap':\n return await this.handleWdkSwap(args)\n\n case 't402/autoPay':\n return await this.handleAutoPay(args)\n\n // Unified tools\n case 't402/smartPay':\n return await this.handleSmartPay(args)\n\n case 't402/paymentPlan':\n return await this.handlePaymentPlan(args)\n\n // Price and fee tools\n case 't402/getTokenPrice':\n return await this.handleGetTokenPrice(args)\n\n case 't402/getGasPrice':\n return await this.handleGetGasPrice(args)\n\n case 't402/estimatePaymentFee':\n return await this.handleEstimatePaymentFee(args)\n\n case 't402/compareNetworkFees':\n return await this.handleCompareNetworkFees(args)\n\n // Quote-based tools\n case 't402/quoteBridge':\n return await this.handleQuoteBridge(args)\n\n case 't402/executeBridgeQuote':\n return await this.handleExecuteBridgeQuote(args)\n\n case 'wdk/quoteSwap':\n return await this.handleWdkQuoteSwap(args)\n\n case 'wdk/executeSwap':\n return await this.handleWdkExecuteSwap(args)\n\n // ERC-8004 tools\n case 'erc8004/resolveAgent':\n return await this.handleErc8004ResolveAgent(args)\n\n case 'erc8004/checkReputation':\n return await this.handleErc8004CheckReputation(args)\n\n case 'erc8004/verifyWallet':\n return await this.handleErc8004VerifyWallet(args)\n\n // TON bridge tools\n case 'ton/getBalance':\n case 'ton/transfer':\n case 'ton/getJettonBalance':\n case 'ton/swapJettons':\n case 'ton/getTransactionStatus':\n return await this.handleTonBridgeTool(name, args)\n\n default:\n throw new Error(`Unknown tool: ${name}`)\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: ${message}`,\n },\n ],\n isError: true,\n }\n }\n })\n }\n\n /**\n * Handle t402/getBalance\n */\n private async handleGetBalance(args: unknown) {\n const input = getBalanceInputSchema.parse(args)\n const result = await executeGetBalance(input, this.config.rpcUrls)\n return {\n content: [\n {\n type: 'text' as const,\n text: formatBalanceResult(result),\n },\n ],\n }\n }\n\n /**\n * Handle t402/getAllBalances\n */\n private async handleGetAllBalances(args: unknown) {\n const input = getAllBalancesInputSchema.parse(args)\n const result = await executeGetAllBalances(input, this.config.rpcUrls)\n return {\n content: [\n {\n type: 'text' as const,\n text: formatAllBalancesResult(result),\n },\n ],\n }\n }\n\n /**\n * Format a confirmation prompt for elicitation\n */\n private formatConfirmation(result: {\n needsConfirmation: true\n summary: string\n details: Record<string, string>\n }) {\n const detailLines = Object.entries(result.details)\n .map(([key, value]) => `- **${key}:** ${value}`)\n .join('\\n')\n return {\n content: [\n {\n type: 'text' as const,\n text: [\n '## Confirmation Required',\n '',\n result.summary,\n '',\n detailLines,\n '',\n '_Call this tool again with `confirmed: true` to execute._',\n ].join('\\n'),\n },\n ],\n }\n }\n\n /**\n * Handle t402/pay\n */\n private async handlePay(args: unknown) {\n if (!this.config.privateKey && !this.config.demoMode) {\n throw new Error(\n 'Private key not configured. Set T402_PRIVATE_KEY environment variable or enable demo mode.',\n )\n }\n\n const input = payInputSchema.parse(args)\n const result = await executePay(input, {\n privateKey: this.config.privateKey || '0x',\n rpcUrl: this.config.rpcUrls?.[input.network as SupportedNetwork],\n demoMode: this.config.demoMode,\n })\n\n if ('needsConfirmation' in result) {\n return this.formatConfirmation(result)\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: formatPaymentResult(result),\n },\n ],\n }\n }\n\n /**\n * Handle t402/payGasless\n */\n private async handlePayGasless(args: unknown) {\n if (!this.config.privateKey && !this.config.demoMode) {\n throw new Error(\n 'Private key not configured. Set T402_PRIVATE_KEY environment variable or enable demo mode.',\n )\n }\n\n if (!this.config.bundlerUrl && !this.config.demoMode) {\n throw new Error(\n 'Bundler URL not configured. Set T402_BUNDLER_URL environment variable or enable demo mode.',\n )\n }\n\n if (!this.config.paymasterUrl && !this.config.demoMode) {\n throw new Error(\n 'Paymaster URL not configured. Set T402_PAYMASTER_URL environment variable or enable demo mode.',\n )\n }\n\n const input = payGaslessInputSchema.parse(args)\n const result = await executePayGasless(input, {\n privateKey: this.config.privateKey || '0x',\n bundlerUrl: this.config.bundlerUrl || '',\n paymasterUrl: this.config.paymasterUrl || '',\n rpcUrl: this.config.rpcUrls?.[input.network as SupportedNetwork],\n demoMode: this.config.demoMode,\n })\n\n if ('needsConfirmation' in result) {\n return this.formatConfirmation(result)\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: formatGaslessPaymentResult(result),\n },\n ],\n }\n }\n\n /**\n * Handle t402/getBridgeFee\n */\n private async handleGetBridgeFee(args: unknown) {\n const input = getBridgeFeeInputSchema.parse(args)\n const result = await executeGetBridgeFee(input, this.config.rpcUrls)\n return {\n content: [\n {\n type: 'text' as const,\n text: formatBridgeFeeResult(result),\n },\n ],\n }\n }\n\n /**\n * Handle t402/bridge\n */\n private async handleBridge(args: unknown) {\n if (!this.config.privateKey && !this.config.demoMode) {\n throw new Error(\n 'Private key not configured. Set T402_PRIVATE_KEY environment variable or enable demo mode.',\n )\n }\n\n const input = bridgeInputSchema.parse(args)\n const result = await executeBridge(input, {\n privateKey: this.config.privateKey || '0x',\n rpcUrl: this.config.rpcUrls?.[input.fromChain as SupportedNetwork],\n demoMode: this.config.demoMode,\n })\n\n if ('needsConfirmation' in result) {\n return this.formatConfirmation(result)\n }\n\n return {\n content: [\n {\n type: 'text' as const,\n text: formatBridgeResult(result),\n },\n ],\n }\n }\n\n // ---- WDK Tool Handlers ----\n\n /**\n * Handle wdk/getWallet\n */\n private async handleWdkGetWallet(args: unknown) {\n wdkGetWalletInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkGetWalletDemo()\n : await executeWdkGetWallet({}, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatWdkWalletResult(result) }],\n }\n }\n\n /**\n * Handle wdk/getBalances\n */\n private async handleWdkGetBalances(args: unknown) {\n const input = wdkGetBalancesInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkGetBalancesDemo()\n : await executeWdkGetBalances(input, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatWdkBalancesResult(result) }],\n }\n }\n\n /**\n * Handle wdk/transfer\n */\n private async handleWdkTransfer(args: unknown) {\n const input = wdkTransferInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkTransferDemo(input)\n : await executeWdkTransfer(input, this.wdk)\n\n if ('needsConfirmation' in result) {\n return this.formatConfirmation(result)\n }\n\n return {\n content: [{ type: 'text' as const, text: formatWdkTransferResult(result) }],\n }\n }\n\n /**\n * Handle wdk/swap\n */\n private async handleWdkSwap(args: unknown) {\n const input = wdkSwapInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkSwapDemo(input)\n : await executeWdkSwap(input, this.wdk)\n\n if ('needsConfirmation' in result) {\n return this.formatConfirmation(result)\n }\n\n return {\n content: [{ type: 'text' as const, text: formatWdkSwapResult(result) }],\n }\n }\n\n /**\n * Handle t402/autoPay\n */\n private async handleAutoPay(args: unknown) {\n const input = autoPayInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeAutoPayDemo(input)\n : await executeAutoPay(input, this.wdk)\n\n if ('needsConfirmation' in result) {\n return this.formatConfirmation(result)\n }\n\n return {\n content: [{ type: 'text' as const, text: formatAutoPayResult(result) }],\n }\n }\n\n // ---- Unified Tool Handlers ----\n\n /**\n * Handle t402/smartPay\n */\n private async handleSmartPay(args: unknown) {\n const input = smartPayInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeSmartPayDemo(input)\n : await executeSmartPay(input, this.wdk)\n\n if ('needsConfirmation' in result) {\n return this.formatConfirmation(result)\n }\n\n return {\n content: [{ type: 'text' as const, text: formatSmartPayResult(result) }],\n }\n }\n\n /**\n * Handle t402/paymentPlan\n */\n private async handlePaymentPlan(args: unknown) {\n const input = paymentPlanInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executePaymentPlanDemo(input)\n : await executePaymentPlan(input, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatPaymentPlanResult(result) }],\n }\n }\n\n // ---- Price and Fee Tool Handlers ----\n\n /**\n * Handle t402/getTokenPrice\n */\n private async handleGetTokenPrice(args: unknown) {\n const input = getTokenPriceInputSchema.parse(args)\n const result = await executeGetTokenPrice(input, { demoMode: this.config.demoMode })\n return {\n content: [{ type: 'text' as const, text: formatTokenPriceResult(result) }],\n }\n }\n\n /**\n * Handle t402/getGasPrice\n */\n private async handleGetGasPrice(args: unknown) {\n const input = getGasPriceInputSchema.parse(args)\n const result = await executeGetGasPrice(input, {\n rpcUrl: this.config.rpcUrls?.[input.network as SupportedNetwork],\n demoMode: this.config.demoMode,\n })\n return {\n content: [{ type: 'text' as const, text: formatGasPriceResult(result) }],\n }\n }\n\n /**\n * Handle t402/estimatePaymentFee\n */\n private async handleEstimatePaymentFee(args: unknown) {\n const input = estimatePaymentFeeInputSchema.parse(args)\n const result = await executeEstimatePaymentFee(input, {\n rpcUrl: this.config.rpcUrls?.[input.network as SupportedNetwork],\n demoMode: this.config.demoMode,\n })\n return {\n content: [{ type: 'text' as const, text: formatPaymentFeeEstimate(result) }],\n }\n }\n\n /**\n * Handle t402/compareNetworkFees\n */\n private async handleCompareNetworkFees(args: unknown) {\n const input = compareNetworkFeesInputSchema.parse(args)\n const result = await executeCompareNetworkFees(input, {\n rpcUrls: this.config.rpcUrls,\n demoMode: this.config.demoMode,\n })\n return {\n content: [{ type: 'text' as const, text: formatNetworkFeeComparison(result) }],\n }\n }\n\n // ---- Quote-based Tool Handlers ----\n\n /**\n * Handle t402/quoteBridge\n */\n private async handleQuoteBridge(args: unknown) {\n const input = quoteBridgeInputSchema.parse(args)\n\n const result = this.config.demoMode\n ? executeQuoteBridgeDemo(input)\n : await executeQuoteBridge(input, this.config.rpcUrls)\n\n return {\n content: [{ type: 'text' as const, text: formatBridgeQuoteResult(result) }],\n }\n }\n\n /**\n * Handle t402/executeBridgeQuote\n */\n private async handleExecuteBridgeQuote(args: unknown) {\n if (!this.config.privateKey && !this.config.demoMode) {\n throw new Error(\n 'Private key not configured. Set T402_PRIVATE_KEY environment variable or enable demo mode.',\n )\n }\n\n const input = executeBridgeFromQuoteInputSchema.parse(args)\n\n const result = this.config.demoMode\n ? executeExecuteBridgeFromQuoteDemo(input)\n : await executeExecuteBridgeFromQuote(input, {\n privateKey: this.config.privateKey || '0x',\n demoMode: this.config.demoMode,\n })\n\n if ('needsConfirmation' in result) {\n return this.formatConfirmation(result)\n }\n\n return {\n content: [{ type: 'text' as const, text: formatExecuteBridgeFromQuoteResult(result) }],\n }\n }\n\n /**\n * Handle wdk/quoteSwap\n */\n private async handleWdkQuoteSwap(args: unknown) {\n const input = wdkQuoteSwapInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkQuoteSwapDemo(input)\n : await executeWdkQuoteSwap(input, this.wdk)\n\n return {\n content: [{ type: 'text' as const, text: formatSwapQuoteResult(result) }],\n }\n }\n\n /**\n * Handle wdk/executeSwap\n */\n private async handleWdkExecuteSwap(args: unknown) {\n const input = wdkExecuteSwapInputSchema.parse(args)\n\n const result =\n this.config.demoMode || !this.wdk\n ? executeWdkExecuteSwapDemo(input)\n : await executeWdkExecuteSwap(input, this.wdk)\n\n if ('needsConfirmation' in result) {\n return this.formatConfirmation(result)\n }\n\n return {\n content: [{ type: 'text' as const, text: formatExecuteSwapResult(result) }],\n }\n }\n\n // ---- ERC-8004 Tool Handlers ----\n\n /**\n * Handle erc8004/resolveAgent\n */\n private async handleErc8004ResolveAgent(args: unknown) {\n const input = erc8004ResolveAgentInputSchema.parse(args)\n const result = await executeErc8004ResolveAgent(input, this.config.rpcUrls)\n return {\n content: [{ type: 'text' as const, text: formatErc8004ResolveAgentResult(result) }],\n }\n }\n\n /**\n * Handle erc8004/checkReputation\n */\n private async handleErc8004CheckReputation(args: unknown) {\n const input = erc8004CheckReputationInputSchema.parse(args)\n const result = await executeErc8004CheckReputation(input, this.config.rpcUrls)\n return {\n content: [{ type: 'text' as const, text: formatErc8004CheckReputationResult(result) }],\n }\n }\n\n /**\n * Handle erc8004/verifyWallet\n */\n private async handleErc8004VerifyWallet(args: unknown) {\n const input = erc8004VerifyWalletInputSchema.parse(args)\n const result = await executeErc8004VerifyWallet(input, this.config.rpcUrls)\n return {\n content: [{ type: 'text' as const, text: formatErc8004VerifyWalletResult(result) }],\n }\n }\n\n // ---- TON Bridge Tool Handler ----\n\n /**\n * Handle TON bridge tool calls\n */\n private async handleTonBridgeTool(name: string, args: unknown) {\n if (!this.tonBridgeConfig) {\n throw new Error('TON bridge not configured. Call registerTonBridge() to enable TON tools.')\n }\n\n return executeTonBridgeTool(name, (args ?? {}) as Record<string, unknown>, this.tonBridgeConfig)\n }\n\n /**\n * Start the server using stdio transport\n */\n async run(): Promise<void> {\n // Initialize WDK if seed phrase is configured\n await this.initWdk()\n\n const transport = new StdioServerTransport()\n await this.server.connect(transport)\n console.error('t402 MCP Server running on stdio')\n }\n}\n\n/**\n * Create a new t402 MCP server instance\n */\nexport function createT402McpServer(config?: McpServerConfig): T402McpServer {\n return new T402McpServer(config)\n}\n\n/**\n * Load configuration from environment variables\n */\nexport function loadConfigFromEnv(): McpServerConfig {\n const config: McpServerConfig = {}\n\n // Private key\n if (process.env.T402_PRIVATE_KEY) {\n config.privateKey = process.env.T402_PRIVATE_KEY\n }\n\n // Demo mode\n if (process.env.T402_DEMO_MODE === 'true') {\n config.demoMode = true\n }\n\n // ERC-4337 configuration\n if (process.env.T402_BUNDLER_URL) {\n config.bundlerUrl = process.env.T402_BUNDLER_URL\n }\n if (process.env.T402_PAYMASTER_URL) {\n config.paymasterUrl = process.env.T402_PAYMASTER_URL\n }\n\n // WDK configuration\n if (process.env.T402_WDK_SEED_PHRASE) {\n config.seedPhrase = process.env.T402_WDK_SEED_PHRASE\n }\n if (process.env.T402_WDK_CHAINS) {\n config.wdkChains = process.env.T402_WDK_CHAINS.split(',').map((c) => c.trim())\n }\n\n // Unified mode\n if (process.env.T402_UNIFIED_MODE === 'true') {\n config.unifiedMode = true\n }\n\n // Custom RPC URLs\n const rpcUrls: Partial<Record<SupportedNetwork, string>> = {}\n const networks: SupportedNetwork[] = [\n 'ethereum',\n 'base',\n 'arbitrum',\n 'optimism',\n 'polygon',\n 'avalanche',\n 'ink',\n 'berachain',\n 'unichain',\n ]\n\n for (const network of networks) {\n const envVar = `T402_RPC_${network.toUpperCase()}`\n if (process.env[envVar]) {\n rpcUrls[network] = process.env[envVar]\n }\n }\n\n if (Object.keys(rpcUrls).length > 0) {\n config.rpcUrls = rpcUrls\n }\n\n // TON MCP bridge configuration\n if (process.env.T402_TON_MCP_ENDPOINT) {\n config.tonMcpEndpoint = process.env.T402_TON_MCP_ENDPOINT\n }\n if (process.env.T402_TON_API_KEY) {\n config.tonApiKey = process.env.T402_TON_API_KEY\n }\n\n return config\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,cAAc;AACvB,SAAS,4BAA4B;AACrC,SAAS,uBAAuB,8BAA8B;AA4GvD,IAAM,gBAAN,MAAoB;AAAA,EAKzB,YAAY,SAA0B,CAAC,GAAG;AAJ1C,wBAAQ;AACR,wBAAQ;AACR,wBAAQ,OAAsB;AA0C9B;AAAA,wBAAQ,mBAA6C;AAvCnD,SAAK,SAAS;AACd,SAAK,SAAS,IAAI;AAAA,MAChB;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,cAAc;AAAA,UACZ,OAAO,CAAC;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAEA,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAyB;AAC7B,QAAI,CAAC,KAAK,OAAO,WAAY;AAE7B,QAAI;AACF,YAAM,EAAE,QAAQ,IAAI,MAAM,OAAO,WAAW;AAC5C,YAAM,UAAkC,CAAC;AAEzC,UAAI,KAAK,OAAO,SAAS;AACvB,mBAAW,CAAC,SAAS,GAAG,KAAK,OAAO,QAAQ,KAAK,OAAO,OAAO,GAAG;AAChE,cAAI,IAAK,SAAQ,OAAO,IAAI;AAAA,QAC9B;AAAA,MACF;AAEA,WAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,YAAY,OAAO;AAAA,IACxD,QAAQ;AACN,cAAQ,MAAM,qEAAqE;AAAA,IACrF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,kBAAkB,QAAkC;AAClD,SAAK,kBAAkB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKQ,qBAAqB;AAC3B,UAAM,QAAQ,EAAE,GAAG,kBAAkB,GAAG,yBAAyB;AACjE,QAAI,KAAK,OAAO,KAAK,OAAO,UAAU;AACpC,aAAO,OAAO,OAAO,oBAAoB;AAAA,IAC3C;AACA,QAAI,KAAK,OAAO,gBAAgB,KAAK,OAAO,KAAK,OAAO,WAAW;AACjE,aAAO,OAAO,OAAO,wBAAwB;AAAA,IAC/C;AACA,QAAI,KAAK,iBAAiB;AACxB,aAAO,OAAO,OAAO,gBAAgB;AAAA,IACvC;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,gBAAsB;AAE5B,SAAK,OAAO,kBAAkB,wBAAwB,YAAY;AAChE,aAAO;AAAA,QACL,OAAO,OAAO,OAAO,KAAK,mBAAmB,CAAC;AAAA,MAChD;AAAA,IACF,CAAC;AAGD,SAAK,OAAO,kBAAkB,uBAAuB,OAAO,YAAY;AACtE,YAAM,EAAE,MAAM,WAAW,KAAK,IAAI,QAAQ;AAE1C,UAAI;AACF,gBAAQ,MAAM;AAAA,UACZ,KAAK;AACH,mBAAO,MAAM,KAAK,iBAAiB,IAAI;AAAA,UAEzC,KAAK;AACH,mBAAO,MAAM,KAAK,qBAAqB,IAAI;AAAA,UAE7C,KAAK;AACH,mBAAO,MAAM,KAAK,UAAU,IAAI;AAAA,UAElC,KAAK;AACH,mBAAO,MAAM,KAAK,iBAAiB,IAAI;AAAA,UAEzC,KAAK;AACH,mBAAO,MAAM,KAAK,mBAAmB,IAAI;AAAA,UAE3C,KAAK;AACH,mBAAO,MAAM,KAAK,aAAa,IAAI;AAAA;AAAA,UAGrC,KAAK;AACH,mBAAO,MAAM,KAAK,mBAAmB,IAAI;AAAA,UAE3C,KAAK;AACH,mBAAO,MAAM,KAAK,qBAAqB,IAAI;AAAA,UAE7C,KAAK;AACH,mBAAO,MAAM,KAAK,kBAAkB,IAAI;AAAA,UAE1C,KAAK;AACH,mBAAO,MAAM,KAAK,cAAc,IAAI;AAAA,UAEtC,KAAK;AACH,mBAAO,MAAM,KAAK,cAAc,IAAI;AAAA;AAAA,UAGtC,KAAK;AACH,mBAAO,MAAM,KAAK,eAAe,IAAI;AAAA,UAEvC,KAAK;AACH,mBAAO,MAAM,KAAK,kBAAkB,IAAI;AAAA;AAAA,UAG1C,KAAK;AACH,mBAAO,MAAM,KAAK,oBAAoB,IAAI;AAAA,UAE5C,KAAK;AACH,mBAAO,MAAM,KAAK,kBAAkB,IAAI;AAAA,UAE1C,KAAK;AACH,mBAAO,MAAM,KAAK,yBAAyB,IAAI;AAAA,UAEjD,KAAK;AACH,mBAAO,MAAM,KAAK,yBAAyB,IAAI;AAAA;AAAA,UAGjD,KAAK;AACH,mBAAO,MAAM,KAAK,kBAAkB,IAAI;AAAA,UAE1C,KAAK;AACH,mBAAO,MAAM,KAAK,yBAAyB,IAAI;AAAA,UAEjD,KAAK;AACH,mBAAO,MAAM,KAAK,mBAAmB,IAAI;AAAA,UAE3C,KAAK;AACH,mBAAO,MAAM,KAAK,qBAAqB,IAAI;AAAA;AAAA,UAG7C,KAAK;AACH,mBAAO,MAAM,KAAK,0BAA0B,IAAI;AAAA,UAElD,KAAK;AACH,mBAAO,MAAM,KAAK,6BAA6B,IAAI;AAAA,UAErD,KAAK;AACH,mBAAO,MAAM,KAAK,0BAA0B,IAAI;AAAA;AAAA,UAGlD,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,MAAM,KAAK,oBAAoB,MAAM,IAAI;AAAA,UAElD;AACE,kBAAM,IAAI,MAAM,iBAAiB,IAAI,EAAE;AAAA,QAC3C;AAAA,MACF,SAAS,OAAO;AACd,cAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,UAAU,OAAO;AAAA,YACzB;AAAA,UACF;AAAA,UACA,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,iBAAiB,MAAe;AAC5C,UAAM,QAAQ,sBAAsB,MAAM,IAAI;AAC9C,UAAM,SAAS,MAAM,kBAAkB,OAAO,KAAK,OAAO,OAAO;AACjE,WAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,MAAM,oBAAoB,MAAM;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,qBAAqB,MAAe;AAChD,UAAM,QAAQ,0BAA0B,MAAM,IAAI;AAClD,UAAM,SAAS,MAAM,sBAAsB,OAAO,KAAK,OAAO,OAAO;AACrE,WAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,MAAM,wBAAwB,MAAM;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,mBAAmB,QAIxB;AACD,UAAM,cAAc,OAAO,QAAQ,OAAO,OAAO,EAC9C,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,OAAO,GAAG,OAAO,KAAK,EAAE,EAC9C,KAAK,IAAI;AACZ,WAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,YACJ;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,EAAE,KAAK,IAAI;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,UAAU,MAAe;AACrC,QAAI,CAAC,KAAK,OAAO,cAAc,CAAC,KAAK,OAAO,UAAU;AACpD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,QAAQ,eAAe,MAAM,IAAI;AACvC,UAAM,SAAS,MAAM,WAAW,OAAO;AAAA,MACrC,YAAY,KAAK,OAAO,cAAc;AAAA,MACtC,QAAQ,KAAK,OAAO,UAAU,MAAM,OAA2B;AAAA,MAC/D,UAAU,KAAK,OAAO;AAAA,IACxB,CAAC;AAED,QAAI,uBAAuB,QAAQ;AACjC,aAAO,KAAK,mBAAmB,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,MAAM,oBAAoB,MAAM;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,iBAAiB,MAAe;AAC5C,QAAI,CAAC,KAAK,OAAO,cAAc,CAAC,KAAK,OAAO,UAAU;AACpD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,KAAK,OAAO,cAAc,CAAC,KAAK,OAAO,UAAU;AACpD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,KAAK,OAAO,gBAAgB,CAAC,KAAK,OAAO,UAAU;AACtD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,QAAQ,sBAAsB,MAAM,IAAI;AAC9C,UAAM,SAAS,MAAM,kBAAkB,OAAO;AAAA,MAC5C,YAAY,KAAK,OAAO,cAAc;AAAA,MACtC,YAAY,KAAK,OAAO,cAAc;AAAA,MACtC,cAAc,KAAK,OAAO,gBAAgB;AAAA,MAC1C,QAAQ,KAAK,OAAO,UAAU,MAAM,OAA2B;AAAA,MAC/D,UAAU,KAAK,OAAO;AAAA,IACxB,CAAC;AAED,QAAI,uBAAuB,QAAQ;AACjC,aAAO,KAAK,mBAAmB,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,MAAM,2BAA2B,MAAM;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmB,MAAe;AAC9C,UAAM,QAAQ,wBAAwB,MAAM,IAAI;AAChD,UAAM,SAAS,MAAM,oBAAoB,OAAO,KAAK,OAAO,OAAO;AACnE,WAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,MAAM,sBAAsB,MAAM;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,aAAa,MAAe;AACxC,QAAI,CAAC,KAAK,OAAO,cAAc,CAAC,KAAK,OAAO,UAAU;AACpD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,QAAQ,kBAAkB,MAAM,IAAI;AAC1C,UAAM,SAAS,MAAM,cAAc,OAAO;AAAA,MACxC,YAAY,KAAK,OAAO,cAAc;AAAA,MACtC,QAAQ,KAAK,OAAO,UAAU,MAAM,SAA6B;AAAA,MACjE,UAAU,KAAK,OAAO;AAAA,IACxB,CAAC;AAED,QAAI,uBAAuB,QAAQ;AACjC,aAAO,KAAK,mBAAmB,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,MAAM,mBAAmB,MAAM;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,mBAAmB,MAAe;AAC9C,4BAAwB,MAAM,IAAI;AAElC,UAAM,SACJ,KAAK,OAAO,YAAY,CAAC,KAAK,MAC1B,wBAAwB,IACxB,MAAM,oBAAoB,CAAC,GAAG,KAAK,GAAG;AAE5C,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,sBAAsB,MAAM,EAAE,CAAC;AAAA,IAC1E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,qBAAqB,MAAe;AAChD,UAAM,QAAQ,0BAA0B,MAAM,IAAI;AAElD,UAAM,SACJ,KAAK,OAAO,YAAY,CAAC,KAAK,MAC1B,0BAA0B,IAC1B,MAAM,sBAAsB,OAAO,KAAK,GAAG;AAEjD,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,wBAAwB,MAAM,EAAE,CAAC;AAAA,IAC5E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,kBAAkB,MAAe;AAC7C,UAAM,QAAQ,uBAAuB,MAAM,IAAI;AAE/C,UAAM,SACJ,KAAK,OAAO,YAAY,CAAC,KAAK,MAC1B,uBAAuB,KAAK,IAC5B,MAAM,mBAAmB,OAAO,KAAK,GAAG;AAE9C,QAAI,uBAAuB,QAAQ;AACjC,aAAO,KAAK,mBAAmB,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,wBAAwB,MAAM,EAAE,CAAC;AAAA,IAC5E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,cAAc,MAAe;AACzC,UAAM,QAAQ,mBAAmB,MAAM,IAAI;AAE3C,UAAM,SACJ,KAAK,OAAO,YAAY,CAAC,KAAK,MAC1B,mBAAmB,KAAK,IACxB,MAAM,eAAe,OAAO,KAAK,GAAG;AAE1C,QAAI,uBAAuB,QAAQ;AACjC,aAAO,KAAK,mBAAmB,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,oBAAoB,MAAM,EAAE,CAAC;AAAA,IACxE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,cAAc,MAAe;AACzC,UAAM,QAAQ,mBAAmB,MAAM,IAAI;AAE3C,UAAM,SACJ,KAAK,OAAO,YAAY,CAAC,KAAK,MAC1B,mBAAmB,KAAK,IACxB,MAAM,eAAe,OAAO,KAAK,GAAG;AAE1C,QAAI,uBAAuB,QAAQ;AACjC,aAAO,KAAK,mBAAmB,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,oBAAoB,MAAM,EAAE,CAAC;AAAA,IACxE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,eAAe,MAAe;AAC1C,UAAM,QAAQ,oBAAoB,MAAM,IAAI;AAE5C,UAAM,SACJ,KAAK,OAAO,YAAY,CAAC,KAAK,MAC1B,oBAAoB,KAAK,IACzB,MAAM,gBAAgB,OAAO,KAAK,GAAG;AAE3C,QAAI,uBAAuB,QAAQ;AACjC,aAAO,KAAK,mBAAmB,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,qBAAqB,MAAM,EAAE,CAAC;AAAA,IACzE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,kBAAkB,MAAe;AAC7C,UAAM,QAAQ,uBAAuB,MAAM,IAAI;AAE/C,UAAM,SACJ,KAAK,OAAO,YAAY,CAAC,KAAK,MAC1B,uBAAuB,KAAK,IAC5B,MAAM,mBAAmB,OAAO,KAAK,GAAG;AAE9C,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,wBAAwB,MAAM,EAAE,CAAC;AAAA,IAC5E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,oBAAoB,MAAe;AAC/C,UAAM,QAAQ,yBAAyB,MAAM,IAAI;AACjD,UAAM,SAAS,MAAM,qBAAqB,OAAO,EAAE,UAAU,KAAK,OAAO,SAAS,CAAC;AACnF,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,uBAAuB,MAAM,EAAE,CAAC;AAAA,IAC3E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,kBAAkB,MAAe;AAC7C,UAAM,QAAQ,uBAAuB,MAAM,IAAI;AAC/C,UAAM,SAAS,MAAM,mBAAmB,OAAO;AAAA,MAC7C,QAAQ,KAAK,OAAO,UAAU,MAAM,OAA2B;AAAA,MAC/D,UAAU,KAAK,OAAO;AAAA,IACxB,CAAC;AACD,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,qBAAqB,MAAM,EAAE,CAAC;AAAA,IACzE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,yBAAyB,MAAe;AACpD,UAAM,QAAQ,8BAA8B,MAAM,IAAI;AACtD,UAAM,SAAS,MAAM,0BAA0B,OAAO;AAAA,MACpD,QAAQ,KAAK,OAAO,UAAU,MAAM,OAA2B;AAAA,MAC/D,UAAU,KAAK,OAAO;AAAA,IACxB,CAAC;AACD,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,yBAAyB,MAAM,EAAE,CAAC;AAAA,IAC7E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,yBAAyB,MAAe;AACpD,UAAM,QAAQ,8BAA8B,MAAM,IAAI;AACtD,UAAM,SAAS,MAAM,0BAA0B,OAAO;AAAA,MACpD,SAAS,KAAK,OAAO;AAAA,MACrB,UAAU,KAAK,OAAO;AAAA,IACxB,CAAC;AACD,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,2BAA2B,MAAM,EAAE,CAAC;AAAA,IAC/E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,kBAAkB,MAAe;AAC7C,UAAM,QAAQ,uBAAuB,MAAM,IAAI;AAE/C,UAAM,SAAS,KAAK,OAAO,WACvB,uBAAuB,KAAK,IAC5B,MAAM,mBAAmB,OAAO,KAAK,OAAO,OAAO;AAEvD,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,wBAAwB,MAAM,EAAE,CAAC;AAAA,IAC5E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,yBAAyB,MAAe;AACpD,QAAI,CAAC,KAAK,OAAO,cAAc,CAAC,KAAK,OAAO,UAAU;AACpD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,QAAQ,kCAAkC,MAAM,IAAI;AAE1D,UAAM,SAAS,KAAK,OAAO,WACvB,kCAAkC,KAAK,IACvC,MAAM,8BAA8B,OAAO;AAAA,MACzC,YAAY,KAAK,OAAO,cAAc;AAAA,MACtC,UAAU,KAAK,OAAO;AAAA,IACxB,CAAC;AAEL,QAAI,uBAAuB,QAAQ;AACjC,aAAO,KAAK,mBAAmB,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,mBAAmC,MAAM,EAAE,CAAC;AAAA,IACvF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmB,MAAe;AAC9C,UAAM,QAAQ,wBAAwB,MAAM,IAAI;AAEhD,UAAM,SACJ,KAAK,OAAO,YAAY,CAAC,KAAK,MAC1B,wBAAwB,KAAK,IAC7B,MAAM,oBAAoB,OAAO,KAAK,GAAG;AAE/C,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,sBAAsB,MAAM,EAAE,CAAC;AAAA,IAC1E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,qBAAqB,MAAe;AAChD,UAAM,QAAQ,0BAA0B,MAAM,IAAI;AAElD,UAAM,SACJ,KAAK,OAAO,YAAY,CAAC,KAAK,MAC1B,0BAA0B,KAAK,IAC/B,MAAM,sBAAsB,OAAO,KAAK,GAAG;AAEjD,QAAI,uBAAuB,QAAQ;AACjC,aAAO,KAAK,mBAAmB,MAAM;AAAA,IACvC;AAEA,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,wBAAwB,MAAM,EAAE,CAAC;AAAA,IAC5E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,0BAA0B,MAAe;AACrD,UAAM,QAAQ,+BAA+B,MAAM,IAAI;AACvD,UAAM,SAAS,MAAM,2BAA2B,OAAO,KAAK,OAAO,OAAO;AAC1E,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,gCAAgC,MAAM,EAAE,CAAC;AAAA,IACpF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,6BAA6B,MAAe;AACxD,UAAM,QAAQ,kCAAkC,MAAM,IAAI;AAC1D,UAAM,SAAS,MAAM,8BAA8B,OAAO,KAAK,OAAO,OAAO;AAC7E,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,mCAAmC,MAAM,EAAE,CAAC;AAAA,IACvF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,0BAA0B,MAAe;AACrD,UAAM,QAAQ,+BAA+B,MAAM,IAAI;AACvD,UAAM,SAAS,MAAM,2BAA2B,OAAO,KAAK,OAAO,OAAO;AAC1E,WAAO;AAAA,MACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,gCAAgC,MAAM,EAAE,CAAC;AAAA,IACpF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,oBAAoB,MAAc,MAAe;AAC7D,QAAI,CAAC,KAAK,iBAAiB;AACzB,YAAM,IAAI,MAAM,0EAA0E;AAAA,IAC5F;AAEA,WAAO,qBAAqB,MAAO,QAAQ,CAAC,GAA+B,KAAK,eAAe;AAAA,EACjG;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAqB;AAEzB,UAAM,KAAK,QAAQ;AAEnB,UAAM,YAAY,IAAI,qBAAqB;AAC3C,UAAM,KAAK,OAAO,QAAQ,SAAS;AACnC,YAAQ,MAAM,kCAAkC;AAAA,EAClD;AACF;AAKO,SAAS,oBAAoB,QAAyC;AAC3E,SAAO,IAAI,cAAc,MAAM;AACjC;AAKO,SAAS,oBAAqC;AACnD,QAAM,SAA0B,CAAC;AAGjC,MAAI,QAAQ,IAAI,kBAAkB;AAChC,WAAO,aAAa,QAAQ,IAAI;AAAA,EAClC;AAGA,MAAI,QAAQ,IAAI,mBAAmB,QAAQ;AACzC,WAAO,WAAW;AAAA,EACpB;AAGA,MAAI,QAAQ,IAAI,kBAAkB;AAChC,WAAO,aAAa,QAAQ,IAAI;AAAA,EAClC;AACA,MAAI,QAAQ,IAAI,oBAAoB;AAClC,WAAO,eAAe,QAAQ,IAAI;AAAA,EACpC;AAGA,MAAI,QAAQ,IAAI,sBAAsB;AACpC,WAAO,aAAa,QAAQ,IAAI;AAAA,EAClC;AACA,MAAI,QAAQ,IAAI,iBAAiB;AAC/B,WAAO,YAAY,QAAQ,IAAI,gBAAgB,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,EAC/E;AAGA,MAAI,QAAQ,IAAI,sBAAsB,QAAQ;AAC5C,WAAO,cAAc;AAAA,EACvB;AAGA,QAAM,UAAqD,CAAC;AAC5D,QAAM,WAA+B;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,aAAW,WAAW,UAAU;AAC9B,UAAM,SAAS,YAAY,QAAQ,YAAY,CAAC;AAChD,QAAI,QAAQ,IAAI,MAAM,GAAG;AACvB,cAAQ,OAAO,IAAI,QAAQ,IAAI,MAAM;AAAA,IACvC;AAAA,EACF;AAEA,MAAI,OAAO,KAAK,OAAO,EAAE,SAAS,GAAG;AACnC,WAAO,UAAU;AAAA,EACnB;AAGA,MAAI,QAAQ,IAAI,uBAAuB;AACrC,WAAO,iBAAiB,QAAQ,IAAI;AAAA,EACtC;AACA,MAAI,QAAQ,IAAI,kBAAkB;AAChC,WAAO,YAAY,QAAQ,IAAI;AAAA,EACjC;AAEA,SAAO;AACT;","names":[]}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
T402McpServer,
|
|
3
3
|
createT402McpServer,
|
|
4
4
|
loadConfigFromEnv
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XOPD7VTU.mjs";
|
|
6
6
|
import {
|
|
7
7
|
BRIDGEABLE_CHAINS,
|
|
8
8
|
CHAIN_IDS,
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
paymentPlanInputSchema,
|
|
48
48
|
smartPayInputSchema,
|
|
49
49
|
supportsToken
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-SUDCVXHQ.mjs";
|
|
51
51
|
export {
|
|
52
52
|
BRIDGEABLE_CHAINS,
|
|
53
53
|
CHAIN_IDS,
|
|
@@ -44,6 +44,10 @@ declare class T402McpServer {
|
|
|
44
44
|
* Handle t402/getAllBalances
|
|
45
45
|
*/
|
|
46
46
|
private handleGetAllBalances;
|
|
47
|
+
/**
|
|
48
|
+
* Format a confirmation prompt for elicitation
|
|
49
|
+
*/
|
|
50
|
+
private formatConfirmation;
|
|
47
51
|
/**
|
|
48
52
|
* Handle t402/pay
|
|
49
53
|
*/
|
|
@@ -88,6 +92,38 @@ declare class T402McpServer {
|
|
|
88
92
|
* Handle t402/paymentPlan
|
|
89
93
|
*/
|
|
90
94
|
private handlePaymentPlan;
|
|
95
|
+
/**
|
|
96
|
+
* Handle t402/getTokenPrice
|
|
97
|
+
*/
|
|
98
|
+
private handleGetTokenPrice;
|
|
99
|
+
/**
|
|
100
|
+
* Handle t402/getGasPrice
|
|
101
|
+
*/
|
|
102
|
+
private handleGetGasPrice;
|
|
103
|
+
/**
|
|
104
|
+
* Handle t402/estimatePaymentFee
|
|
105
|
+
*/
|
|
106
|
+
private handleEstimatePaymentFee;
|
|
107
|
+
/**
|
|
108
|
+
* Handle t402/compareNetworkFees
|
|
109
|
+
*/
|
|
110
|
+
private handleCompareNetworkFees;
|
|
111
|
+
/**
|
|
112
|
+
* Handle t402/quoteBridge
|
|
113
|
+
*/
|
|
114
|
+
private handleQuoteBridge;
|
|
115
|
+
/**
|
|
116
|
+
* Handle t402/executeBridgeQuote
|
|
117
|
+
*/
|
|
118
|
+
private handleExecuteBridgeQuote;
|
|
119
|
+
/**
|
|
120
|
+
* Handle wdk/quoteSwap
|
|
121
|
+
*/
|
|
122
|
+
private handleWdkQuoteSwap;
|
|
123
|
+
/**
|
|
124
|
+
* Handle wdk/executeSwap
|
|
125
|
+
*/
|
|
126
|
+
private handleWdkExecuteSwap;
|
|
91
127
|
/**
|
|
92
128
|
* Handle erc8004/resolveAgent
|
|
93
129
|
*/
|