@infiniteezverse/monskills-ezpath 0.1.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 (56) hide show
  1. package/.well-known/agent.json +241 -0
  2. package/.well-known/openapi.json +310 -0
  3. package/ARENA.md +551 -0
  4. package/DEPLOYMENT.md +460 -0
  5. package/LAUNCH.md +345 -0
  6. package/LICENSE +24 -0
  7. package/MANIFEST.md +356 -0
  8. package/MONAD.md +375 -0
  9. package/QUICKSTART.md +378 -0
  10. package/README.md +88 -0
  11. package/X402_IMPLEMENTATION.md +468 -0
  12. package/dist/agents/arena-agent.d.ts +166 -0
  13. package/dist/agents/arena-agent.d.ts.map +1 -0
  14. package/dist/agents/arena-agent.js +267 -0
  15. package/dist/agents/arena-agent.js.map +1 -0
  16. package/dist/agents/bankroll-manager.d.ts +114 -0
  17. package/dist/agents/bankroll-manager.d.ts.map +1 -0
  18. package/dist/agents/bankroll-manager.js +293 -0
  19. package/dist/agents/bankroll-manager.js.map +1 -0
  20. package/dist/agents/index.d.ts +9 -0
  21. package/dist/agents/index.d.ts.map +1 -0
  22. package/dist/agents/index.js +29 -0
  23. package/dist/agents/index.js.map +1 -0
  24. package/dist/agents/strategy.d.ts +48 -0
  25. package/dist/agents/strategy.d.ts.map +1 -0
  26. package/dist/agents/strategy.js +265 -0
  27. package/dist/agents/strategy.js.map +1 -0
  28. package/dist/agents/types.d.ts +197 -0
  29. package/dist/agents/types.d.ts.map +1 -0
  30. package/dist/agents/types.js +7 -0
  31. package/dist/agents/types.js.map +1 -0
  32. package/dist/config/monad.d.ts +175 -0
  33. package/dist/config/monad.d.ts.map +1 -0
  34. package/dist/config/monad.js +222 -0
  35. package/dist/config/monad.js.map +1 -0
  36. package/dist/index.d.ts +47 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +153 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/payments/eip3009.d.ts +210 -0
  41. package/dist/payments/eip3009.d.ts.map +1 -0
  42. package/dist/payments/eip3009.js +261 -0
  43. package/dist/payments/eip3009.js.map +1 -0
  44. package/dist/payments/index.d.ts +8 -0
  45. package/dist/payments/index.d.ts.map +1 -0
  46. package/dist/payments/index.js +25 -0
  47. package/dist/payments/index.js.map +1 -0
  48. package/dist/payments/quote-execution.d.ts +76 -0
  49. package/dist/payments/quote-execution.d.ts.map +1 -0
  50. package/dist/payments/quote-execution.js +285 -0
  51. package/dist/payments/quote-execution.js.map +1 -0
  52. package/dist/types/ezpath.d.ts +65 -0
  53. package/dist/types/ezpath.d.ts.map +1 -0
  54. package/dist/types/ezpath.js +7 -0
  55. package/dist/types/ezpath.js.map +1 -0
  56. package/package.json +42 -0
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Monad-Specific Configuration
3
+ * RPC endpoints, contract addresses, and optimization settings for Monad chain
4
+ */
5
+ export declare const MONAD_CONFIG: {
6
+ chainId: number;
7
+ name: string;
8
+ nativeToken: string;
9
+ rpc: {
10
+ primary: string;
11
+ fallbacks: string[];
12
+ };
13
+ blockExplorer: string;
14
+ tokens: {
15
+ MON: string;
16
+ USDC: string;
17
+ WMON: string;
18
+ WETH: string;
19
+ USDbC: string;
20
+ DAI: string;
21
+ USDT: string;
22
+ };
23
+ venues: {
24
+ aerodrome: {
25
+ router: string;
26
+ factory: string;
27
+ stable: boolean;
28
+ name: string;
29
+ priority: number;
30
+ features: string[];
31
+ };
32
+ uniswapV3: {
33
+ router: string;
34
+ factory: string;
35
+ name: string;
36
+ priority: number;
37
+ features: string[];
38
+ };
39
+ curve: {
40
+ router: string;
41
+ name: string;
42
+ priority: number;
43
+ features: string[];
44
+ };
45
+ balancer: {
46
+ vault: string;
47
+ name: string;
48
+ priority: number;
49
+ features: string[];
50
+ };
51
+ zerox: {
52
+ name: string;
53
+ priority: number;
54
+ features: string[];
55
+ };
56
+ paraswap: {
57
+ name: string;
58
+ priority: number;
59
+ features: string[];
60
+ };
61
+ oneInch: {
62
+ name: string;
63
+ priority: number;
64
+ features: string[];
65
+ };
66
+ cow: {
67
+ name: string;
68
+ priority: number;
69
+ features: string[];
70
+ };
71
+ };
72
+ gas: {
73
+ maxPriorityFee: bigint;
74
+ maxFeePerGas: bigint;
75
+ swapGasEstimate: {
76
+ simple: number;
77
+ multiHop: number;
78
+ complex: number;
79
+ };
80
+ };
81
+ performance: {
82
+ maxConcurrentQuotes: number;
83
+ quoteTimeoutMs: number;
84
+ targetLatency: number;
85
+ priceCache: {
86
+ ttl: number;
87
+ maxSize: number;
88
+ };
89
+ };
90
+ ecosystem: {
91
+ monadDAO: string;
92
+ staking: string;
93
+ governance: string;
94
+ };
95
+ settlement: {
96
+ confirmations: number;
97
+ confirmationTimeMs: number;
98
+ permit2: string;
99
+ };
100
+ rateLimit: {
101
+ requestsPerSecond: number;
102
+ burstSize: number;
103
+ retryDelayMs: number;
104
+ };
105
+ monitoring: {
106
+ priceDeviationAlert: number;
107
+ slippageWarn: number;
108
+ latencyWarn: number;
109
+ };
110
+ };
111
+ /**
112
+ * Get RPC endpoint with fallback support
113
+ */
114
+ export declare function getMonadRPC(): Promise<string>;
115
+ /**
116
+ * Check if a venue is available on Monad
117
+ */
118
+ export declare function isVenueAvailableOnMonad(venueName: string): boolean;
119
+ /**
120
+ * Get venue by priority for Monad
121
+ */
122
+ export declare function getVenuesByPriority(): ({
123
+ id: string;
124
+ router: string;
125
+ factory: string;
126
+ stable: boolean;
127
+ name: string;
128
+ priority: number;
129
+ features: string[];
130
+ } | {
131
+ id: string;
132
+ router: string;
133
+ factory: string;
134
+ name: string;
135
+ priority: number;
136
+ features: string[];
137
+ } | {
138
+ id: string;
139
+ router: string;
140
+ name: string;
141
+ priority: number;
142
+ features: string[];
143
+ } | {
144
+ id: string;
145
+ vault: string;
146
+ name: string;
147
+ priority: number;
148
+ features: string[];
149
+ } | {
150
+ id: string;
151
+ name: string;
152
+ priority: number;
153
+ features: string[];
154
+ } | {
155
+ id: string;
156
+ name: string;
157
+ priority: number;
158
+ features: string[];
159
+ } | {
160
+ id: string;
161
+ name: string;
162
+ priority: number;
163
+ features: string[];
164
+ } | {
165
+ id: string;
166
+ name: string;
167
+ priority: number;
168
+ features: string[];
169
+ })[];
170
+ /**
171
+ * Get recommended venue for specific token pair on Monad
172
+ */
173
+ export declare function recommendMonadVenue(tokenIn: string, tokenOut: string): string;
174
+ export default MONAD_CONFIG;
175
+ //# sourceMappingURL=monad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monad.d.ts","sourceRoot":"","sources":["../../src/config/monad.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6IxB,CAAC;AAEF;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CA0CnD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAIlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAOlC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAe7E;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ /**
3
+ * Monad-Specific Configuration
4
+ * RPC endpoints, contract addresses, and optimization settings for Monad chain
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MONAD_CONFIG = void 0;
8
+ exports.getMonadRPC = getMonadRPC;
9
+ exports.isVenueAvailableOnMonad = isVenueAvailableOnMonad;
10
+ exports.getVenuesByPriority = getVenuesByPriority;
11
+ exports.recommendMonadVenue = recommendMonadVenue;
12
+ exports.MONAD_CONFIG = {
13
+ // Chain identification
14
+ chainId: 10143,
15
+ name: 'Monad',
16
+ nativeToken: 'MON',
17
+ // RPC Endpoints (primary + fallbacks)
18
+ rpc: {
19
+ primary: 'https://mainnet.monad.xyz/rpc',
20
+ fallbacks: [
21
+ 'https://rpc-monad.monadscan.io',
22
+ 'https://monad-rpc.publicnode.com',
23
+ 'https://monad.drpc.org',
24
+ ],
25
+ },
26
+ // Block explorer
27
+ blockExplorer: 'https://monadiscan.io',
28
+ // Token addresses on Monad
29
+ tokens: {
30
+ MON: '0x0000000000000000000000000000000000000001', // Native
31
+ USDC: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // Bridged from Base
32
+ WMON: '0x0000000000000000000000000000000000000002', // Wrapped MON
33
+ WETH: '0x4200000000000000000000000000000000000006', // Bridged from Base
34
+ USDbC: '0x50c5725949A6F0c72EC20E08a6DE0146F30F1F75', // Bridged
35
+ DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F', // Bridged
36
+ USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7', // Bridged
37
+ },
38
+ // Primary routing venues on Monad
39
+ venues: {
40
+ // DEX routers with Monad support
41
+ aerodrome: {
42
+ router: '0x16AAB61dedBad9405299340D63Ee98D1bFd052d3',
43
+ factory: '0x420DD381b31aEf6683db6B902084cB0FFECe40Da',
44
+ stable: false, // Volatile pair routing
45
+ name: 'Aerodrome',
46
+ priority: 1, // Highest priority on Monad
47
+ features: ['volatile', 'stable', 'concentrated'],
48
+ },
49
+ uniswapV3: {
50
+ router: '0xE592427A0AEce92De3Edee1F18E0157C05861564',
51
+ factory: '0x1F98431c8aD98523631AE4a59f267346ea3113cD',
52
+ name: 'Uniswap V3',
53
+ priority: 2,
54
+ features: ['concentrated-liquidity', 'fee-tiers'],
55
+ },
56
+ curve: {
57
+ router: '0x99a58482BD75cbab83b27EC03ca68fF489ee5f38',
58
+ name: 'Curve',
59
+ priority: 3,
60
+ features: ['stable-swap', 'meta-pools'],
61
+ },
62
+ balancer: {
63
+ vault: '0xBA12222222228d8Ba445958a75a0704d566BF2C8',
64
+ name: 'Balancer',
65
+ priority: 4,
66
+ features: ['weighted-pools', 'stable-pools', 'liquidity-bootstrapping'],
67
+ },
68
+ // Aggregators
69
+ zerox: {
70
+ name: '0x',
71
+ priority: 5,
72
+ features: ['meta-aggregator'],
73
+ },
74
+ paraswap: {
75
+ name: 'ParaSwap',
76
+ priority: 6,
77
+ features: ['meta-aggregator'],
78
+ },
79
+ oneInch: {
80
+ name: '1Inch',
81
+ priority: 7,
82
+ features: ['meta-aggregator'],
83
+ },
84
+ cow: {
85
+ name: 'CoW',
86
+ priority: 8,
87
+ features: ['intents', 'batch-auctions'],
88
+ },
89
+ },
90
+ // Gas optimization settings
91
+ gas: {
92
+ // Monad has high throughput, lower gas costs
93
+ maxPriorityFee: BigInt('1000000000'), // 1 gwei (very low)
94
+ maxFeePerGas: BigInt('2000000000'), // 2 gwei
95
+ // Typical tx costs
96
+ swapGasEstimate: {
97
+ simple: 80000, // Single hop
98
+ multiHop: 150000, // Multi-hop
99
+ complex: 250000, // Complex route
100
+ },
101
+ },
102
+ // Performance settings
103
+ performance: {
104
+ // Monad's high TPS allows aggressive settings
105
+ maxConcurrentQuotes: 50, // 50 parallel venue queries
106
+ quoteTimeoutMs: 1500, // Tight timeout for high throughput
107
+ targetLatency: 800, // Target sub-1 second
108
+ // Caching strategy
109
+ priceCache: {
110
+ ttl: 3000, // 3-second cache (frequent updates)
111
+ maxSize: 1000, // Max cached pairs
112
+ },
113
+ },
114
+ // Monad ecosystem integration
115
+ ecosystem: {
116
+ monadDAO: '0x0000000000000000000000000000000000000000',
117
+ staking: '0x0000000000000000000000000000000000000000',
118
+ governance: '0x0000000000000000000000000000000000000000',
119
+ },
120
+ // Settlement settings
121
+ settlement: {
122
+ // Standard ERC20 transfers
123
+ confirmations: 1, // Monad finality is fast
124
+ confirmationTimeMs: 2000, // ~2 seconds per block
125
+ // Permit2 support (gas optimization)
126
+ permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3',
127
+ },
128
+ // Rate limiting (Monad nodes are fast)
129
+ rateLimit: {
130
+ requestsPerSecond: 100,
131
+ burstSize: 500,
132
+ retryDelayMs: 100,
133
+ },
134
+ // Monitoring & alerts
135
+ monitoring: {
136
+ priceDeviationAlert: 0.5, // Alert if price deviates >0.5% from average
137
+ slippageWarn: 0.1, // Warn if slippage >0.1%
138
+ latencyWarn: 2000, // Warn if quote takes >2s
139
+ },
140
+ };
141
+ /**
142
+ * Get RPC endpoint with fallback support
143
+ */
144
+ async function getMonadRPC() {
145
+ // Try primary first
146
+ try {
147
+ const response = await fetch(exports.MONAD_CONFIG.rpc.primary, {
148
+ method: 'POST',
149
+ headers: { 'Content-Type': 'application/json' },
150
+ body: JSON.stringify({
151
+ jsonrpc: '2.0',
152
+ method: 'eth_chainId',
153
+ params: [],
154
+ id: 1,
155
+ }),
156
+ });
157
+ if (response.ok)
158
+ return exports.MONAD_CONFIG.rpc.primary;
159
+ }
160
+ catch (err) {
161
+ console.warn('Primary Monad RPC failed, trying fallback');
162
+ }
163
+ // Try fallbacks
164
+ for (const fallback of exports.MONAD_CONFIG.rpc.fallbacks) {
165
+ try {
166
+ const response = await fetch(fallback, {
167
+ method: 'POST',
168
+ headers: { 'Content-Type': 'application/json' },
169
+ body: JSON.stringify({
170
+ jsonrpc: '2.0',
171
+ method: 'eth_chainId',
172
+ params: [],
173
+ id: 1,
174
+ }),
175
+ });
176
+ if (response.ok)
177
+ return fallback;
178
+ }
179
+ catch (err) {
180
+ continue;
181
+ }
182
+ }
183
+ // All failed, return primary anyway
184
+ console.error('All Monad RPC endpoints failed, using primary as fallback');
185
+ return exports.MONAD_CONFIG.rpc.primary;
186
+ }
187
+ /**
188
+ * Check if a venue is available on Monad
189
+ */
190
+ function isVenueAvailableOnMonad(venueName) {
191
+ return Object.values(exports.MONAD_CONFIG.venues).some(v => v.name.toLowerCase() === venueName.toLowerCase());
192
+ }
193
+ /**
194
+ * Get venue by priority for Monad
195
+ */
196
+ function getVenuesByPriority() {
197
+ return Object.entries(exports.MONAD_CONFIG.venues)
198
+ .map(([key, config]) => ({
199
+ ...config,
200
+ id: key,
201
+ }))
202
+ .sort((a, b) => a.priority - b.priority);
203
+ }
204
+ /**
205
+ * Get recommended venue for specific token pair on Monad
206
+ */
207
+ function recommendMonadVenue(tokenIn, tokenOut) {
208
+ // Aerodrome is default for MON pairs (highest priority)
209
+ if (tokenIn === exports.MONAD_CONFIG.tokens.MON ||
210
+ tokenOut === exports.MONAD_CONFIG.tokens.MON) {
211
+ return 'aerodrome';
212
+ }
213
+ // Uniswap V3 for stables
214
+ if ((tokenIn === exports.MONAD_CONFIG.tokens.USDC && tokenOut === exports.MONAD_CONFIG.tokens.USDT) ||
215
+ (tokenIn === exports.MONAD_CONFIG.tokens.USDT && tokenOut === exports.MONAD_CONFIG.tokens.USDC)) {
216
+ return 'curve'; // Curve is optimal for stables
217
+ }
218
+ // Default: use top-priority venue (Aerodrome)
219
+ return 'aerodrome';
220
+ }
221
+ exports.default = exports.MONAD_CONFIG;
222
+ //# sourceMappingURL=monad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monad.js","sourceRoot":"","sources":["../../src/config/monad.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * EZ-Path MONSKILLS Plugin
3
+ * Exposes EZ-Path DEX routing as a MONSKILLS skill for agent use
4
+ */
5
+ import { EZPathQuoteRequest, QuoteResult } from './types/ezpath';
6
+ /**
7
+ * Get a DEX price quote from EZ-Path
8
+ * Races 10 venues and returns the best price
9
+ *
10
+ * @param request - Quote parameters (chain, tokens, amount)
11
+ * @returns Quote result with price and sources
12
+ */
13
+ export declare function getQuote(request: EZPathQuoteRequest): Promise<QuoteResult>;
14
+ /**
15
+ * Get price for a token pair in human-readable format
16
+ * Convenience wrapper around getQuote
17
+ *
18
+ * @param chain - Blockchain (base, monad, etc.)
19
+ * @param sellToken - Token to sell (address)
20
+ * @param buyToken - Token to buy (address)
21
+ * @param amount - Amount in atomic units
22
+ * @returns Price as decimal string
23
+ */
24
+ export declare function getPrice(chain: string, sellToken: string, buyToken: string, amount: string): Promise<{
25
+ price: string;
26
+ sources: string[];
27
+ } | {
28
+ error: string;
29
+ }>;
30
+ /**
31
+ * Batch quote multiple pairs
32
+ * Useful for portfolio valuation
33
+ */
34
+ export declare function batchQuotes(requests: EZPathQuoteRequest[]): Promise<QuoteResult[]>;
35
+ export * from './types/ezpath';
36
+ export declare const skill: {
37
+ name: string;
38
+ version: string;
39
+ description: string;
40
+ handlers: {
41
+ getQuote: typeof getQuote;
42
+ getPrice: typeof getPrice;
43
+ batchQuotes: typeof batchQuotes;
44
+ };
45
+ };
46
+ export default skill;
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAkB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKjF;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CA4EhF;AAED;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAanE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,OAAO,CAAC,WAAW,EAAE,CAAC,CAExB;AAGD,cAAc,gBAAgB,CAAC;AAG/B,eAAO,MAAM,KAAK;;;;;;;;;CASjB,CAAC;AAEF,eAAe,KAAK,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ /**
3
+ * EZ-Path MONSKILLS Plugin
4
+ * Exposes EZ-Path DEX routing as a MONSKILLS skill for agent use
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.skill = void 0;
25
+ exports.getQuote = getQuote;
26
+ exports.getPrice = getPrice;
27
+ exports.batchQuotes = batchQuotes;
28
+ const axios_1 = __importDefault(require("axios"));
29
+ const EZPATH_URL = process.env.EZPATH_URL || 'https://ezpath.myezverse.xyz';
30
+ const API_ENDPOINT = `${EZPATH_URL}/api/v1/quote`;
31
+ /**
32
+ * Get a DEX price quote from EZ-Path
33
+ * Races 10 venues and returns the best price
34
+ *
35
+ * @param request - Quote parameters (chain, tokens, amount)
36
+ * @returns Quote result with price and sources
37
+ */
38
+ async function getQuote(request) {
39
+ try {
40
+ // Validate inputs
41
+ if (!request.sellToken || !request.buyToken || !request.sellAmount) {
42
+ return {
43
+ success: false,
44
+ error: 'Missing required parameters: sellToken, buyToken, sellAmount',
45
+ };
46
+ }
47
+ // Build query parameters
48
+ const params = new URLSearchParams({
49
+ chain: request.chain || 'base',
50
+ sellToken: request.sellToken,
51
+ buyToken: request.buyToken,
52
+ sellAmount: request.sellAmount,
53
+ });
54
+ if (request.slippagePercentage !== undefined) {
55
+ params.append('slippagePercentage', request.slippagePercentage.toString());
56
+ }
57
+ // Call EZ-Path endpoint
58
+ const response = await axios_1.default.get(`${API_ENDPOINT}?${params}`, {
59
+ timeout: 10000,
60
+ validateStatus: () => true, // Accept all statuses
61
+ });
62
+ // Handle 402 Payment Required
63
+ if (response.status === 402) {
64
+ const data = response.data;
65
+ return {
66
+ success: false,
67
+ paymentRequired: true,
68
+ estimatedFee: {
69
+ usd: data.unlock_fee_usd,
70
+ atomic: data.tiers?.basic?.min_atomic || '30000',
71
+ token: 'USDC',
72
+ },
73
+ error: `Payment required: ${data.unlock_fee_usd} USDC via X402 EIP-3009`,
74
+ };
75
+ }
76
+ // Handle successful quote
77
+ if (response.status === 200) {
78
+ const data = response.data;
79
+ return {
80
+ success: true,
81
+ data: {
82
+ status: 'ok',
83
+ request_id: data.request_id,
84
+ sellToken: data.sellToken,
85
+ buyToken: data.buyToken,
86
+ sellAmount: data.sellAmount,
87
+ buyAmount: data.buyAmount,
88
+ price: data.price,
89
+ sources: data.sources || [],
90
+ routingEngine: data.routingEngine || 'unknown',
91
+ tier: data.tier || 'basic',
92
+ settlement_tx: data.settlement_tx,
93
+ },
94
+ };
95
+ }
96
+ // Handle errors
97
+ return {
98
+ success: false,
99
+ error: `EZ-Path error (${response.status}): ${JSON.stringify(response.data)}`,
100
+ };
101
+ }
102
+ catch (err) {
103
+ const message = err instanceof Error ? err.message : String(err);
104
+ return {
105
+ success: false,
106
+ error: `Request failed: ${message}`,
107
+ };
108
+ }
109
+ }
110
+ /**
111
+ * Get price for a token pair in human-readable format
112
+ * Convenience wrapper around getQuote
113
+ *
114
+ * @param chain - Blockchain (base, monad, etc.)
115
+ * @param sellToken - Token to sell (address)
116
+ * @param buyToken - Token to buy (address)
117
+ * @param amount - Amount in atomic units
118
+ * @returns Price as decimal string
119
+ */
120
+ async function getPrice(chain, sellToken, buyToken, amount) {
121
+ const result = await getQuote({ chain: chain, sellToken, buyToken, sellAmount: amount });
122
+ if (result.success && result.data) {
123
+ return {
124
+ price: result.data.price,
125
+ sources: result.data.sources.map((s) => s.name),
126
+ };
127
+ }
128
+ return {
129
+ error: result.error || 'Failed to get price',
130
+ };
131
+ }
132
+ /**
133
+ * Batch quote multiple pairs
134
+ * Useful for portfolio valuation
135
+ */
136
+ async function batchQuotes(requests) {
137
+ return Promise.all(requests.map((req) => getQuote(req)));
138
+ }
139
+ // Export types
140
+ __exportStar(require("./types/ezpath"), exports);
141
+ // MONSKILLS-compatible exports
142
+ exports.skill = {
143
+ name: 'ez-path',
144
+ version: '0.1.0',
145
+ description: 'DEX price quotes via EZ-Path (races 10 venues)',
146
+ handlers: {
147
+ getQuote,
148
+ getPrice,
149
+ batchQuotes,
150
+ },
151
+ };
152
+ exports.default = exports.skill;
153
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}