@catalyst-team/poly-sdk 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.
Files changed (201) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +538 -0
  3. package/README.md +357 -78
  4. package/docs/00-design.md +1 -1
  5. package/docs/02-API.md +21 -21
  6. package/docs/arb/test-plan.md +387 -0
  7. package/docs/arb/test-results.md +336 -0
  8. package/docs/arbitrage.md +754 -0
  9. package/docs/reports/smart-money-analysis-2025-12-23-cn.md +840 -0
  10. package/examples/13-arbitrage-service.ts +211 -0
  11. package/examples/README.md +1 -1
  12. package/package.json +19 -19
  13. package/scripts/arb/faze-bo3-arb.ts +385 -0
  14. package/scripts/arb/settle-position.ts +190 -0
  15. package/scripts/arb/token-rebalancer.ts +420 -0
  16. package/scripts/arb-tests/01-unit-tests.ts +495 -0
  17. package/scripts/arb-tests/02-integration-tests.ts +412 -0
  18. package/scripts/arb-tests/03-e2e-tests.ts +503 -0
  19. package/scripts/arb-tests/README.md +109 -0
  20. package/scripts/verify/verify-all-apis.ts +1 -1
  21. package/src/clients/clob-api.ts +1 -1
  22. package/src/clients/gamma-api.ts +1 -1
  23. package/src/core/cache-adapter-bridge.ts +1 -1
  24. package/src/core/types.ts +3 -3
  25. package/src/core/unified-cache.ts +1 -1
  26. package/src/index.ts +25 -19
  27. package/src/services/arbitrage-service.ts +1807 -0
  28. package/.env +0 -0
  29. package/dist/__tests__/clob-api.test.d.ts +0 -5
  30. package/dist/__tests__/clob-api.test.d.ts.map +0 -1
  31. package/dist/__tests__/clob-api.test.js +0 -240
  32. package/dist/__tests__/clob-api.test.js.map +0 -1
  33. package/dist/__tests__/integration/bridge-client.integration.test.d.ts +0 -11
  34. package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +0 -1
  35. package/dist/__tests__/integration/bridge-client.integration.test.js +0 -260
  36. package/dist/__tests__/integration/bridge-client.integration.test.js.map +0 -1
  37. package/dist/__tests__/integration/clob-api.integration.test.d.ts +0 -13
  38. package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +0 -1
  39. package/dist/__tests__/integration/clob-api.integration.test.js +0 -170
  40. package/dist/__tests__/integration/clob-api.integration.test.js.map +0 -1
  41. package/dist/__tests__/integration/ctf-client.integration.test.d.ts +0 -17
  42. package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +0 -1
  43. package/dist/__tests__/integration/ctf-client.integration.test.js +0 -234
  44. package/dist/__tests__/integration/ctf-client.integration.test.js.map +0 -1
  45. package/dist/__tests__/integration/data-api.integration.test.d.ts +0 -9
  46. package/dist/__tests__/integration/data-api.integration.test.d.ts.map +0 -1
  47. package/dist/__tests__/integration/data-api.integration.test.js +0 -161
  48. package/dist/__tests__/integration/data-api.integration.test.js.map +0 -1
  49. package/dist/__tests__/integration/gamma-api.integration.test.d.ts +0 -9
  50. package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +0 -1
  51. package/dist/__tests__/integration/gamma-api.integration.test.js +0 -170
  52. package/dist/__tests__/integration/gamma-api.integration.test.js.map +0 -1
  53. package/dist/__tests__/test-utils.d.ts +0 -92
  54. package/dist/__tests__/test-utils.d.ts.map +0 -1
  55. package/dist/__tests__/test-utils.js +0 -143
  56. package/dist/__tests__/test-utils.js.map +0 -1
  57. package/dist/clients/bridge-client.d.ts +0 -388
  58. package/dist/clients/bridge-client.d.ts.map +0 -1
  59. package/dist/clients/bridge-client.js +0 -587
  60. package/dist/clients/bridge-client.js.map +0 -1
  61. package/dist/clients/clob-api.d.ts +0 -318
  62. package/dist/clients/clob-api.d.ts.map +0 -1
  63. package/dist/clients/clob-api.js +0 -388
  64. package/dist/clients/clob-api.js.map +0 -1
  65. package/dist/clients/ctf-client.d.ts +0 -473
  66. package/dist/clients/ctf-client.d.ts.map +0 -1
  67. package/dist/clients/ctf-client.js +0 -915
  68. package/dist/clients/ctf-client.js.map +0 -1
  69. package/dist/clients/data-api.d.ts +0 -134
  70. package/dist/clients/data-api.d.ts.map +0 -1
  71. package/dist/clients/data-api.js +0 -265
  72. package/dist/clients/data-api.js.map +0 -1
  73. package/dist/clients/gamma-api.d.ts +0 -401
  74. package/dist/clients/gamma-api.d.ts.map +0 -1
  75. package/dist/clients/gamma-api.js +0 -352
  76. package/dist/clients/gamma-api.js.map +0 -1
  77. package/dist/clients/trading-client.d.ts +0 -252
  78. package/dist/clients/trading-client.d.ts.map +0 -1
  79. package/dist/clients/trading-client.js +0 -543
  80. package/dist/clients/trading-client.js.map +0 -1
  81. package/dist/clients/websocket-manager.d.ts +0 -100
  82. package/dist/clients/websocket-manager.d.ts.map +0 -1
  83. package/dist/clients/websocket-manager.js +0 -193
  84. package/dist/clients/websocket-manager.js.map +0 -1
  85. package/dist/core/cache-adapter-bridge.d.ts +0 -36
  86. package/dist/core/cache-adapter-bridge.d.ts.map +0 -1
  87. package/dist/core/cache-adapter-bridge.js +0 -81
  88. package/dist/core/cache-adapter-bridge.js.map +0 -1
  89. package/dist/core/cache.d.ts +0 -40
  90. package/dist/core/cache.d.ts.map +0 -1
  91. package/dist/core/cache.js +0 -71
  92. package/dist/core/cache.js.map +0 -1
  93. package/dist/core/errors.d.ts +0 -38
  94. package/dist/core/errors.d.ts.map +0 -1
  95. package/dist/core/errors.js +0 -84
  96. package/dist/core/errors.js.map +0 -1
  97. package/dist/core/rate-limiter.d.ts +0 -31
  98. package/dist/core/rate-limiter.d.ts.map +0 -1
  99. package/dist/core/rate-limiter.js +0 -70
  100. package/dist/core/rate-limiter.js.map +0 -1
  101. package/dist/core/types.d.ts +0 -314
  102. package/dist/core/types.d.ts.map +0 -1
  103. package/dist/core/types.js +0 -19
  104. package/dist/core/types.js.map +0 -1
  105. package/dist/core/unified-cache.d.ts +0 -63
  106. package/dist/core/unified-cache.d.ts.map +0 -1
  107. package/dist/core/unified-cache.js +0 -114
  108. package/dist/core/unified-cache.js.map +0 -1
  109. package/dist/index.d.ts +0 -94
  110. package/dist/index.d.ts.map +0 -1
  111. package/dist/index.js +0 -258
  112. package/dist/index.js.map +0 -1
  113. package/dist/mcp/errors.d.ts +0 -33
  114. package/dist/mcp/errors.d.ts.map +0 -1
  115. package/dist/mcp/errors.js +0 -86
  116. package/dist/mcp/errors.js.map +0 -1
  117. package/dist/mcp/index.d.ts +0 -62
  118. package/dist/mcp/index.d.ts.map +0 -1
  119. package/dist/mcp/index.js +0 -173
  120. package/dist/mcp/index.js.map +0 -1
  121. package/dist/mcp/server.d.ts +0 -17
  122. package/dist/mcp/server.d.ts.map +0 -1
  123. package/dist/mcp/server.js +0 -155
  124. package/dist/mcp/server.js.map +0 -1
  125. package/dist/mcp/tools/guide.d.ts +0 -12
  126. package/dist/mcp/tools/guide.d.ts.map +0 -1
  127. package/dist/mcp/tools/guide.js +0 -801
  128. package/dist/mcp/tools/guide.js.map +0 -1
  129. package/dist/mcp/tools/index.d.ts +0 -11
  130. package/dist/mcp/tools/index.d.ts.map +0 -1
  131. package/dist/mcp/tools/index.js +0 -27
  132. package/dist/mcp/tools/index.js.map +0 -1
  133. package/dist/mcp/tools/market.d.ts +0 -11
  134. package/dist/mcp/tools/market.d.ts.map +0 -1
  135. package/dist/mcp/tools/market.js +0 -314
  136. package/dist/mcp/tools/market.js.map +0 -1
  137. package/dist/mcp/tools/order.d.ts +0 -10
  138. package/dist/mcp/tools/order.d.ts.map +0 -1
  139. package/dist/mcp/tools/order.js +0 -258
  140. package/dist/mcp/tools/order.js.map +0 -1
  141. package/dist/mcp/tools/trade.d.ts +0 -38
  142. package/dist/mcp/tools/trade.d.ts.map +0 -1
  143. package/dist/mcp/tools/trade.js +0 -314
  144. package/dist/mcp/tools/trade.js.map +0 -1
  145. package/dist/mcp/tools/trader.d.ts +0 -11
  146. package/dist/mcp/tools/trader.d.ts.map +0 -1
  147. package/dist/mcp/tools/trader.js +0 -277
  148. package/dist/mcp/tools/trader.js.map +0 -1
  149. package/dist/mcp/tools/wallet.d.ts +0 -274
  150. package/dist/mcp/tools/wallet.d.ts.map +0 -1
  151. package/dist/mcp/tools/wallet.js +0 -579
  152. package/dist/mcp/tools/wallet.js.map +0 -1
  153. package/dist/mcp/types.d.ts +0 -413
  154. package/dist/mcp/types.d.ts.map +0 -1
  155. package/dist/mcp/types.js +0 -5
  156. package/dist/mcp/types.js.map +0 -1
  157. package/dist/services/authorization-service.d.ts +0 -97
  158. package/dist/services/authorization-service.d.ts.map +0 -1
  159. package/dist/services/authorization-service.js +0 -279
  160. package/dist/services/authorization-service.js.map +0 -1
  161. package/dist/services/market-service.d.ts +0 -108
  162. package/dist/services/market-service.d.ts.map +0 -1
  163. package/dist/services/market-service.js +0 -458
  164. package/dist/services/market-service.js.map +0 -1
  165. package/dist/services/realtime-service.d.ts +0 -82
  166. package/dist/services/realtime-service.d.ts.map +0 -1
  167. package/dist/services/realtime-service.js +0 -150
  168. package/dist/services/realtime-service.js.map +0 -1
  169. package/dist/services/swap-service.d.ts +0 -217
  170. package/dist/services/swap-service.d.ts.map +0 -1
  171. package/dist/services/swap-service.js +0 -695
  172. package/dist/services/swap-service.js.map +0 -1
  173. package/dist/services/wallet-service.d.ts +0 -94
  174. package/dist/services/wallet-service.d.ts.map +0 -1
  175. package/dist/services/wallet-service.js +0 -173
  176. package/dist/services/wallet-service.js.map +0 -1
  177. package/dist/utils/price-utils.d.ts +0 -153
  178. package/dist/utils/price-utils.d.ts.map +0 -1
  179. package/dist/utils/price-utils.js +0 -236
  180. package/dist/utils/price-utils.js.map +0 -1
  181. package/docs/01-mcp.md +0 -2041
  182. package/docs/e2e/01-trader-tools.md +0 -159
  183. package/docs/e2e/02-market-tools.md +0 -180
  184. package/docs/e2e/03-order-tools.md +0 -166
  185. package/docs/e2e/04-wallet-tools.md +0 -224
  186. package/docs/e2e/05-trading-tools.md +0 -327
  187. package/docs/e2e/06-integration-scenarios.md +0 -481
  188. package/docs/e2e/coordinator.md +0 -376
  189. package/scripts/truth.md +0 -440
  190. package/src/mcp/README.md +0 -380
  191. package/src/mcp/errors.ts +0 -124
  192. package/src/mcp/index.ts +0 -309
  193. package/src/mcp/server.ts +0 -183
  194. package/src/mcp/tools/guide.ts +0 -821
  195. package/src/mcp/tools/index.ts +0 -73
  196. package/src/mcp/tools/market.ts +0 -363
  197. package/src/mcp/tools/order.ts +0 -326
  198. package/src/mcp/tools/trade.ts +0 -417
  199. package/src/mcp/tools/trader.ts +0 -322
  200. package/src/mcp/tools/wallet.ts +0 -683
  201. package/src/mcp/types.ts +0 -472
@@ -1,150 +0,0 @@
1
- /**
2
- * Realtime Service
3
- *
4
- * High-level wrapper for WebSocket subscriptions:
5
- * - Market subscription management
6
- * - Price caching and access
7
- * - Event handler registration
8
- */
9
- import { WebSocketManager } from '../clients/websocket-manager.js';
10
- export class RealtimeService {
11
- wsManager;
12
- subscriptions = new Map();
13
- subscriptionIdCounter = 0;
14
- constructor(wsManager) {
15
- this.wsManager = wsManager || new WebSocketManager();
16
- }
17
- // ===== Market Subscriptions =====
18
- /**
19
- * Subscribe to market price updates
20
- * @param assetIds - Token IDs to subscribe to
21
- * @param handlers - Event handlers
22
- * @returns Subscription object with unsubscribe method
23
- */
24
- async subscribeMarkets(assetIds, handlers) {
25
- const subscriptionId = `sub_${++this.subscriptionIdCounter}`;
26
- // Register event handlers (filtered by assetIds)
27
- const priceHandler = (update) => {
28
- if (assetIds.includes(update.assetId)) {
29
- handlers.onPriceUpdate?.(update);
30
- }
31
- };
32
- const bookHandler = (update) => {
33
- if (assetIds.includes(update.assetId)) {
34
- handlers.onBookUpdate?.(update);
35
- }
36
- };
37
- const tradeHandler = (trade) => {
38
- if (assetIds.includes(trade.assetId)) {
39
- handlers.onLastTrade?.(trade);
40
- }
41
- };
42
- const errorHandler = (error) => {
43
- handlers.onError?.(error);
44
- };
45
- // Attach listeners
46
- this.wsManager.on('priceUpdate', priceHandler);
47
- this.wsManager.on('bookUpdate', bookHandler);
48
- this.wsManager.on('lastTrade', tradeHandler);
49
- this.wsManager.on('error', errorHandler);
50
- // Subscribe to WebSocket
51
- await this.wsManager.subscribe(assetIds);
52
- // Create subscription object
53
- const subscription = {
54
- id: subscriptionId,
55
- assetIds,
56
- unsubscribe: async () => {
57
- this.wsManager.off('priceUpdate', priceHandler);
58
- this.wsManager.off('bookUpdate', bookHandler);
59
- this.wsManager.off('lastTrade', tradeHandler);
60
- this.wsManager.off('error', errorHandler);
61
- await this.wsManager.unsubscribe(assetIds);
62
- this.subscriptions.delete(subscriptionId);
63
- },
64
- };
65
- this.subscriptions.set(subscriptionId, subscription);
66
- return subscription;
67
- }
68
- /**
69
- * Subscribe to a single market (both YES and NO tokens)
70
- * @param yesTokenId - YES token ID
71
- * @param noTokenId - NO token ID
72
- * @param handlers - Event handlers
73
- */
74
- async subscribeMarket(yesTokenId, noTokenId, handlers) {
75
- let lastYesUpdate;
76
- let lastNoUpdate;
77
- const checkPairUpdate = () => {
78
- if (lastYesUpdate && lastNoUpdate && handlers.onPairUpdate) {
79
- handlers.onPairUpdate({
80
- yes: lastYesUpdate,
81
- no: lastNoUpdate,
82
- spread: lastYesUpdate.price + lastNoUpdate.price,
83
- });
84
- }
85
- };
86
- return this.subscribeMarkets([yesTokenId, noTokenId], {
87
- onPriceUpdate: (update) => {
88
- if (update.assetId === yesTokenId) {
89
- lastYesUpdate = update;
90
- }
91
- else if (update.assetId === noTokenId) {
92
- lastNoUpdate = update;
93
- }
94
- handlers.onPriceUpdate?.(update);
95
- checkPairUpdate();
96
- },
97
- onBookUpdate: handlers.onBookUpdate,
98
- onLastTrade: handlers.onLastTrade,
99
- onError: handlers.onError,
100
- });
101
- }
102
- // ===== Price Access =====
103
- /**
104
- * Get cached price for an asset
105
- */
106
- getPrice(assetId) {
107
- return this.wsManager.getPrice(assetId);
108
- }
109
- /**
110
- * Get all cached prices
111
- */
112
- getAllPrices() {
113
- return this.wsManager.getAllPrices();
114
- }
115
- /**
116
- * Get cached order book for an asset
117
- */
118
- getBook(assetId) {
119
- return this.wsManager.getBook(assetId);
120
- }
121
- // ===== State Management =====
122
- /**
123
- * Get all active subscriptions
124
- */
125
- getActiveSubscriptions() {
126
- return Array.from(this.subscriptions.values());
127
- }
128
- /**
129
- * Get subscription by ID
130
- */
131
- getSubscription(id) {
132
- return this.subscriptions.get(id);
133
- }
134
- /**
135
- * Unsubscribe from all markets
136
- */
137
- async unsubscribeAll() {
138
- for (const sub of this.subscriptions.values()) {
139
- await sub.unsubscribe();
140
- }
141
- this.subscriptions.clear();
142
- }
143
- /**
144
- * Get WebSocket manager for advanced usage
145
- */
146
- getWebSocketManager() {
147
- return this.wsManager;
148
- }
149
- }
150
- //# sourceMappingURL=realtime-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"realtime-service.js","sourceRoot":"","sources":["../../src/services/realtime-service.ts"],"names":[],"mappings":"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"}
@@ -1,217 +0,0 @@
1
- /**
2
- * Swap Service
3
- *
4
- * Provides DEX swap functionality on Polygon using QuickSwap V3.
5
- * Supports swapping between various tokens including MATIC, WETH, USDC, USDC.e, USDT, DAI.
6
- */
7
- import { ethers } from 'ethers';
8
- export declare const QUICKSWAP_ROUTER = "0xf5b509bB0909a69B1c207E495f687a596C168E12";
9
- export declare const QUICKSWAP_QUOTER = "0xa15F0D7377B2A0C0c10db057f641beD21028FC89";
10
- export declare const QUICKSWAP_FACTORY = "0x411b0fAcC3489691f28ad58c47006AF5E3Ab3A28";
11
- export declare const WMATIC = "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270";
12
- /**
13
- * Supported tokens on Polygon
14
- *
15
- * ⚠️ IMPORTANT: USDC vs USDC.e for Polymarket CTF
16
- *
17
- * | Token | Address | Polymarket CTF |
18
- * |-------------|--------------------------------------------|-----------------
19
- * | USDC_E | 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 | ✅ Required |
20
- * | USDC/NATIVE | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | ❌ Not accepted|
21
- *
22
- * For Polymarket CTF operations (split/merge/redeem):
23
- * - Use transferUsdcE() to send USDC.e
24
- * - Use swap('USDC', 'USDC_E', amount) to convert native USDC to USDC.e
25
- *
26
- * For general transfers:
27
- * - transferUsdc() sends native USDC (most DEXs, CEXs use this)
28
- * - transferUsdcE() sends bridged USDC.e (Polymarket CTF requires this)
29
- */
30
- export declare const POLYGON_TOKENS: {
31
- readonly MATIC: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270";
32
- readonly WMATIC: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270";
33
- readonly USDC: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359";
34
- readonly NATIVE_USDC: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359";
35
- readonly USDC_E: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174";
36
- readonly USDT: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F";
37
- readonly DAI: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063";
38
- readonly WETH: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619";
39
- };
40
- export declare const TOKEN_DECIMALS: Record<string, number>;
41
- export type SupportedToken = keyof typeof POLYGON_TOKENS;
42
- export interface SwapQuote {
43
- tokenIn: string;
44
- tokenOut: string;
45
- amountIn: string;
46
- estimatedAmountOut: string;
47
- minAmountOut: string;
48
- slippage: number;
49
- priceImpact: string;
50
- }
51
- /** Quote result from Quoter contract */
52
- export interface QuoteResult {
53
- possible: boolean;
54
- tokenIn: string;
55
- tokenOut: string;
56
- amountIn: string;
57
- amountOut: string | null;
58
- route: string[];
59
- poolExists: boolean;
60
- reason?: string;
61
- }
62
- /** Pool info */
63
- export interface PoolInfo {
64
- tokenA: string;
65
- tokenB: string;
66
- poolAddress: string | null;
67
- exists: boolean;
68
- }
69
- export interface SwapResult {
70
- success: boolean;
71
- transactionHash: string;
72
- tokenIn: string;
73
- tokenOut: string;
74
- amountIn: string;
75
- amountOut: string;
76
- gasUsed: string;
77
- }
78
- export interface TokenBalance {
79
- token: string;
80
- symbol: string;
81
- balance: string;
82
- decimals: number;
83
- }
84
- export interface TransferResult {
85
- success: boolean;
86
- transactionHash: string;
87
- token: string;
88
- to: string;
89
- amount: string;
90
- gasUsed: string;
91
- }
92
- export declare class SwapService {
93
- private signer;
94
- private provider;
95
- private router;
96
- private quoter;
97
- private factory;
98
- constructor(signer: ethers.Wallet);
99
- /**
100
- * Get dynamic gas options for Polygon network
101
- * Uses RPC fee data with minimum priority fee of 30 gwei
102
- */
103
- private getGasOptions;
104
- /**
105
- * Get the wallet address
106
- */
107
- get address(): string;
108
- /**
109
- * Get token address from symbol
110
- */
111
- getTokenAddress(token: string): string;
112
- /**
113
- * Get token decimals
114
- */
115
- getTokenDecimals(token: string): number;
116
- /**
117
- * Check if a pool exists for a token pair
118
- */
119
- checkPool(tokenA: string, tokenB: string): Promise<PoolInfo>;
120
- /**
121
- * Get all available pools for supported tokens
122
- */
123
- getAvailablePools(): Promise<PoolInfo[]>;
124
- /**
125
- * Get a quote for a swap (checks if route is possible)
126
- */
127
- getQuote(tokenIn: string, tokenOut: string, amountIn: string): Promise<QuoteResult>;
128
- /**
129
- * Execute a multi-hop swap
130
- */
131
- swapMultiHop(tokenIn: string, tokenOut: string, amountIn: string, route: string[], options?: {
132
- slippage?: number;
133
- deadline?: number;
134
- }): Promise<SwapResult>;
135
- /**
136
- * Get balances for all supported tokens
137
- */
138
- getBalances(): Promise<TokenBalance[]>;
139
- /**
140
- * Get balance for a specific token
141
- */
142
- getBalance(token: string): Promise<string>;
143
- /**
144
- * Wrap native MATIC to WMATIC
145
- */
146
- wrapMatic(amount: string): Promise<SwapResult>;
147
- /**
148
- * Unwrap WMATIC to native MATIC
149
- */
150
- unwrapMatic(amount: string): Promise<SwapResult>;
151
- /**
152
- * Execute a token swap using QuickSwap V3
153
- */
154
- swap(tokenIn: string, tokenOut: string, amountIn: string, options?: {
155
- slippage?: number;
156
- deadline?: number;
157
- }): Promise<SwapResult>;
158
- /**
159
- * Swap any supported token to USDC (for deposit)
160
- */
161
- swapToUsdc(tokenIn: string, amountIn: string, options?: {
162
- usdcType?: 'NATIVE_USDC' | 'USDC_E';
163
- slippage?: number;
164
- }): Promise<SwapResult>;
165
- /**
166
- * Get list of supported tokens
167
- */
168
- getSupportedTokens(): string[];
169
- /**
170
- * Get balances for any wallet address (static method, no signer required)
171
- */
172
- static getWalletBalances(address: string, provider?: ethers.providers.Provider): Promise<TokenBalance[]>;
173
- /**
174
- * Get balance for a specific token for any wallet (static)
175
- */
176
- static getWalletBalance(address: string, token: string, provider?: ethers.providers.Provider): Promise<string>;
177
- /**
178
- * Transfer native MATIC (POL) to another address
179
- */
180
- transferMatic(to: string, amount: string): Promise<TransferResult>;
181
- /**
182
- * Transfer an ERC20 token to another address
183
- */
184
- transfer(token: string, to: string, amount: string): Promise<TransferResult>;
185
- /**
186
- * Transfer native USDC to another address
187
- *
188
- * ⚠️ WARNING: This transfers NATIVE USDC (0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359)
189
- *
190
- * For Polymarket CTF operations, you need USDC.e instead.
191
- * Use transferUsdcE() for Polymarket CTF compatibility.
192
- *
193
- * @see transferUsdcE - For Polymarket CTF operations
194
- */
195
- transferUsdc(to: string, amount: string): Promise<TransferResult>;
196
- /**
197
- * Transfer USDC.e (bridged USDC) to another address
198
- *
199
- * ✅ This is the correct method for Polymarket CTF operations.
200
- *
201
- * Polymarket's Conditional Token Framework (CTF) only accepts
202
- * USDC.e (0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174).
203
- *
204
- * If you're funding a wallet for CTF trading, use this method.
205
- *
206
- * @example
207
- * ```typescript
208
- * // Fund a session wallet for Polymarket trading
209
- * await swapService.transferUsdcE(sessionWallet, '100');
210
- *
211
- * // The session wallet can now perform CTF operations
212
- * await ctf.split(conditionId, '100');
213
- * ```
214
- */
215
- transferUsdcE(to: string, amount: string): Promise<TransferResult>;
216
- }
217
- //# sourceMappingURL=swap-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"swap-service.d.ts","sourceRoot":"","sources":["../../src/services/swap-service.ts"],"names":[],"mappings":"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"}