@catalyst-team/poly-sdk 0.1.1 → 0.2.1

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 (191) hide show
  1. package/LICENSE +1 -1
  2. package/README.en.md +502 -0
  3. package/README.md +6 -1
  4. package/README.zh-CN.md +502 -0
  5. package/dist/__tests__/clob-api.test.d.ts +5 -0
  6. package/dist/__tests__/clob-api.test.d.ts.map +1 -0
  7. package/dist/__tests__/clob-api.test.js +240 -0
  8. package/dist/__tests__/clob-api.test.js.map +1 -0
  9. package/dist/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
  10. package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
  11. package/dist/__tests__/integration/bridge-client.integration.test.js +260 -0
  12. package/dist/__tests__/integration/bridge-client.integration.test.js.map +1 -0
  13. package/dist/__tests__/integration/clob-api.integration.test.d.ts +13 -0
  14. package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +1 -0
  15. package/dist/__tests__/integration/clob-api.integration.test.js +170 -0
  16. package/dist/__tests__/integration/clob-api.integration.test.js.map +1 -0
  17. package/dist/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
  18. package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
  19. package/dist/__tests__/integration/ctf-client.integration.test.js +234 -0
  20. package/dist/__tests__/integration/ctf-client.integration.test.js.map +1 -0
  21. package/dist/__tests__/integration/data-api.integration.test.d.ts +9 -0
  22. package/dist/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
  23. package/dist/__tests__/integration/data-api.integration.test.js +161 -0
  24. package/dist/__tests__/integration/data-api.integration.test.js.map +1 -0
  25. package/dist/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
  26. package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
  27. package/dist/__tests__/integration/gamma-api.integration.test.js +170 -0
  28. package/dist/__tests__/integration/gamma-api.integration.test.js.map +1 -0
  29. package/dist/__tests__/test-utils.d.ts +92 -0
  30. package/dist/__tests__/test-utils.d.ts.map +1 -0
  31. package/dist/__tests__/test-utils.js +143 -0
  32. package/dist/__tests__/test-utils.js.map +1 -0
  33. package/dist/clients/bridge-client.d.ts +388 -0
  34. package/dist/clients/bridge-client.d.ts.map +1 -0
  35. package/dist/clients/bridge-client.js +587 -0
  36. package/dist/clients/bridge-client.js.map +1 -0
  37. package/dist/clients/clob-api.d.ts +318 -0
  38. package/dist/clients/clob-api.d.ts.map +1 -0
  39. package/dist/clients/clob-api.js +388 -0
  40. package/dist/clients/clob-api.js.map +1 -0
  41. package/dist/clients/ctf-client.d.ts +473 -0
  42. package/dist/clients/ctf-client.d.ts.map +1 -0
  43. package/dist/clients/ctf-client.js +915 -0
  44. package/dist/clients/ctf-client.js.map +1 -0
  45. package/dist/clients/data-api.d.ts +134 -0
  46. package/dist/clients/data-api.d.ts.map +1 -0
  47. package/dist/clients/data-api.js +265 -0
  48. package/dist/clients/data-api.js.map +1 -0
  49. package/dist/clients/gamma-api.d.ts +401 -0
  50. package/dist/clients/gamma-api.d.ts.map +1 -0
  51. package/dist/clients/gamma-api.js +352 -0
  52. package/dist/clients/gamma-api.js.map +1 -0
  53. package/dist/clients/trading-client.d.ts +252 -0
  54. package/dist/clients/trading-client.d.ts.map +1 -0
  55. package/dist/clients/trading-client.js +543 -0
  56. package/dist/clients/trading-client.js.map +1 -0
  57. package/dist/clients/websocket-manager.d.ts +100 -0
  58. package/dist/clients/websocket-manager.d.ts.map +1 -0
  59. package/dist/clients/websocket-manager.js +193 -0
  60. package/dist/clients/websocket-manager.js.map +1 -0
  61. package/dist/core/cache-adapter-bridge.d.ts +36 -0
  62. package/dist/core/cache-adapter-bridge.d.ts.map +1 -0
  63. package/dist/core/cache-adapter-bridge.js +81 -0
  64. package/dist/core/cache-adapter-bridge.js.map +1 -0
  65. package/dist/core/cache.d.ts +40 -0
  66. package/dist/core/cache.d.ts.map +1 -0
  67. package/dist/core/cache.js +71 -0
  68. package/dist/core/cache.js.map +1 -0
  69. package/dist/core/errors.d.ts +38 -0
  70. package/dist/core/errors.d.ts.map +1 -0
  71. package/dist/core/errors.js +84 -0
  72. package/dist/core/errors.js.map +1 -0
  73. package/dist/core/rate-limiter.d.ts +31 -0
  74. package/dist/core/rate-limiter.d.ts.map +1 -0
  75. package/dist/core/rate-limiter.js +70 -0
  76. package/dist/core/rate-limiter.js.map +1 -0
  77. package/{src/core/types.ts → dist/core/types.d.ts} +169 -215
  78. package/dist/core/types.d.ts.map +1 -0
  79. package/dist/core/types.js +19 -0
  80. package/dist/core/types.js.map +1 -0
  81. package/dist/core/unified-cache.d.ts +63 -0
  82. package/dist/core/unified-cache.d.ts.map +1 -0
  83. package/dist/core/unified-cache.js +114 -0
  84. package/dist/core/unified-cache.js.map +1 -0
  85. package/dist/index.d.ts +93 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +255 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/services/arbitrage-service.d.ts +408 -0
  90. package/dist/services/arbitrage-service.d.ts.map +1 -0
  91. package/dist/services/arbitrage-service.js +1422 -0
  92. package/dist/services/arbitrage-service.js.map +1 -0
  93. package/dist/services/authorization-service.d.ts +97 -0
  94. package/dist/services/authorization-service.d.ts.map +1 -0
  95. package/dist/services/authorization-service.js +279 -0
  96. package/dist/services/authorization-service.js.map +1 -0
  97. package/dist/services/market-service.d.ts +108 -0
  98. package/dist/services/market-service.d.ts.map +1 -0
  99. package/dist/services/market-service.js +458 -0
  100. package/dist/services/market-service.js.map +1 -0
  101. package/dist/services/realtime-service.d.ts +82 -0
  102. package/dist/services/realtime-service.d.ts.map +1 -0
  103. package/dist/services/realtime-service.js +150 -0
  104. package/dist/services/realtime-service.js.map +1 -0
  105. package/dist/services/swap-service.d.ts +217 -0
  106. package/dist/services/swap-service.d.ts.map +1 -0
  107. package/dist/services/swap-service.js +695 -0
  108. package/dist/services/swap-service.js.map +1 -0
  109. package/dist/services/wallet-service.d.ts +94 -0
  110. package/dist/services/wallet-service.d.ts.map +1 -0
  111. package/dist/services/wallet-service.js +173 -0
  112. package/dist/services/wallet-service.js.map +1 -0
  113. package/dist/utils/price-utils.d.ts +153 -0
  114. package/dist/utils/price-utils.d.ts.map +1 -0
  115. package/dist/utils/price-utils.js +236 -0
  116. package/dist/utils/price-utils.js.map +1 -0
  117. package/package.json +7 -2
  118. package/docs/00-design.md +0 -760
  119. package/docs/02-API.md +0 -1148
  120. package/docs/arbitrage.md +0 -754
  121. package/docs/reports/smart-money-analysis-2025-12-23-cn.md +0 -840
  122. package/examples/01-basic-usage.ts +0 -68
  123. package/examples/02-smart-money.ts +0 -95
  124. package/examples/03-market-analysis.ts +0 -108
  125. package/examples/04-kline-aggregation.ts +0 -158
  126. package/examples/05-follow-wallet-strategy.ts +0 -156
  127. package/examples/06-services-demo.ts +0 -124
  128. package/examples/07-realtime-websocket.ts +0 -117
  129. package/examples/08-trading-orders.ts +0 -278
  130. package/examples/09-rewards-tracking.ts +0 -187
  131. package/examples/10-ctf-operations.ts +0 -336
  132. package/examples/11-live-arbitrage-scan.ts +0 -221
  133. package/examples/12-trending-arb-monitor.ts +0 -406
  134. package/examples/13-arbitrage-service.ts +0 -211
  135. package/examples/README.md +0 -179
  136. package/scripts/README.md +0 -163
  137. package/scripts/approvals/approve-erc1155.ts +0 -129
  138. package/scripts/approvals/approve-neg-risk-erc1155.ts +0 -149
  139. package/scripts/approvals/approve-neg-risk.ts +0 -102
  140. package/scripts/approvals/check-all-allowances.ts +0 -150
  141. package/scripts/approvals/check-allowance.ts +0 -129
  142. package/scripts/approvals/check-ctf-approval.ts +0 -158
  143. package/scripts/arb/faze-bo3-arb.ts +0 -385
  144. package/scripts/arb/settle-position.ts +0 -190
  145. package/scripts/arb/token-rebalancer.ts +0 -420
  146. package/scripts/datas/001-report.md +0 -486
  147. package/scripts/datas/clone-modal-screenshot.png +0 -0
  148. package/scripts/deposit/deposit-native-usdc.ts +0 -179
  149. package/scripts/deposit/deposit-usdc.ts +0 -155
  150. package/scripts/deposit/swap-usdc-to-usdce.ts +0 -375
  151. package/scripts/research/research-markets.ts +0 -166
  152. package/scripts/trading/check-orders.ts +0 -50
  153. package/scripts/trading/sell-nvidia-positions.ts +0 -206
  154. package/scripts/trading/test-order.ts +0 -172
  155. package/scripts/verify/test-approve-trading.ts +0 -98
  156. package/scripts/verify/test-provider-fix.ts +0 -43
  157. package/scripts/verify/test-search-mcp.ts +0 -113
  158. package/scripts/verify/verify-all-apis.ts +0 -160
  159. package/scripts/wallet/check-wallet-balances.ts +0 -75
  160. package/scripts/wallet/test-wallet-operations.ts +0 -191
  161. package/scripts/wallet/verify-wallet-tools.ts +0 -124
  162. package/src/__tests__/clob-api.test.ts +0 -301
  163. package/src/__tests__/integration/bridge-client.integration.test.ts +0 -314
  164. package/src/__tests__/integration/clob-api.integration.test.ts +0 -218
  165. package/src/__tests__/integration/ctf-client.integration.test.ts +0 -331
  166. package/src/__tests__/integration/data-api.integration.test.ts +0 -194
  167. package/src/__tests__/integration/gamma-api.integration.test.ts +0 -206
  168. package/src/__tests__/test-utils.ts +0 -170
  169. package/src/clients/bridge-client.ts +0 -841
  170. package/src/clients/clob-api.ts +0 -629
  171. package/src/clients/ctf-client.ts +0 -1216
  172. package/src/clients/data-api.ts +0 -469
  173. package/src/clients/gamma-api.ts +0 -597
  174. package/src/clients/trading-client.ts +0 -749
  175. package/src/clients/websocket-manager.ts +0 -267
  176. package/src/core/cache-adapter-bridge.ts +0 -94
  177. package/src/core/cache.ts +0 -85
  178. package/src/core/errors.ts +0 -117
  179. package/src/core/rate-limiter.ts +0 -74
  180. package/src/core/unified-cache.ts +0 -153
  181. package/src/index.ts +0 -461
  182. package/src/services/arbitrage-service.ts +0 -1807
  183. package/src/services/authorization-service.ts +0 -357
  184. package/src/services/market-service.ts +0 -544
  185. package/src/services/realtime-service.ts +0 -196
  186. package/src/services/swap-service.ts +0 -896
  187. package/src/services/wallet-service.ts +0 -259
  188. package/src/utils/price-utils.ts +0 -307
  189. package/tsconfig.json +0 -8
  190. package/vitest.config.ts +0 -19
  191. package/vitest.integration.config.ts +0 -18
@@ -0,0 +1,408 @@
1
+ /**
2
+ * ArbitrageService - Real-time Arbitrage Detection and Execution
3
+ *
4
+ * Uses WebSocket for real-time orderbook monitoring and automatically
5
+ * detects arbitrage opportunities in Polymarket binary markets.
6
+ *
7
+ * Strategy:
8
+ * - Long Arb: Buy YES + NO (effective cost < $1) → Merge → $1 USDC
9
+ * - Short Arb: Sell pre-held YES + NO tokens (effective revenue > $1)
10
+ *
11
+ * Features:
12
+ * - Real-time orderbook monitoring via WebSocket
13
+ * - Automatic arbitrage detection using effective prices
14
+ * - Configurable profit threshold and trade sizes
15
+ * - Auto-execute mode or event-based manual mode
16
+ * - Balance tracking and position management
17
+ *
18
+ * Based on: scripts/arb/faze-bo3-arb.ts
19
+ * Docs: docs/arbitrage.md
20
+ */
21
+ import { EventEmitter } from 'events';
22
+ export interface ArbitrageMarketConfig {
23
+ /** Market name for logging */
24
+ name: string;
25
+ /** Condition ID */
26
+ conditionId: string;
27
+ /** YES token ID from CLOB API */
28
+ yesTokenId: string;
29
+ /** NO token ID from CLOB API */
30
+ noTokenId: string;
31
+ /** Outcome names [YES, NO] */
32
+ outcomes?: [string, string];
33
+ }
34
+ export interface ArbitrageServiceConfig {
35
+ /** Private key for trading (optional for monitor-only mode) */
36
+ privateKey?: string;
37
+ /** RPC URL for CTF operations */
38
+ rpcUrl?: string;
39
+ /** Minimum profit threshold (default: 0.005 = 0.5%) */
40
+ profitThreshold?: number;
41
+ /** Minimum trade size in USDC (default: 5) */
42
+ minTradeSize?: number;
43
+ /** Maximum single trade size in USDC (default: 100) */
44
+ maxTradeSize?: number;
45
+ /** Minimum token reserve for short arb (default: 10) */
46
+ minTokenReserve?: number;
47
+ /** Auto-execute mode (default: false) */
48
+ autoExecute?: boolean;
49
+ /** Enable logging (default: true) */
50
+ enableLogging?: boolean;
51
+ /** Cooldown between executions in ms (default: 5000) */
52
+ executionCooldown?: number;
53
+ /** Enable auto-rebalancing (default: false) */
54
+ enableRebalancer?: boolean;
55
+ /** Minimum USDC ratio 0-1 (default: 0.2 = 20%) - Split if below */
56
+ minUsdcRatio?: number;
57
+ /** Maximum USDC ratio 0-1 (default: 0.8 = 80%) - Merge if above */
58
+ maxUsdcRatio?: number;
59
+ /** Target USDC ratio when rebalancing (default: 0.5 = 50%) */
60
+ targetUsdcRatio?: number;
61
+ /** Max YES/NO imbalance before auto-fix (default: 5 tokens) */
62
+ imbalanceThreshold?: number;
63
+ /** Rebalance check interval in ms (default: 10000) */
64
+ rebalanceInterval?: number;
65
+ /** Minimum cooldown between rebalance actions in ms (default: 30000) */
66
+ rebalanceCooldown?: number;
67
+ /** Size safety factor 0-1 (default: 0.8) - use only 80% of orderbook depth to prevent partial fills */
68
+ sizeSafetyFactor?: number;
69
+ /** Auto-fix imbalance after failed execution (default: true) */
70
+ autoFixImbalance?: boolean;
71
+ }
72
+ export interface RebalanceAction {
73
+ type: 'split' | 'merge' | 'sell_yes' | 'sell_no' | 'none';
74
+ amount: number;
75
+ reason: string;
76
+ priority: number;
77
+ }
78
+ export interface RebalanceResult {
79
+ success: boolean;
80
+ action: RebalanceAction;
81
+ txHash?: string;
82
+ error?: string;
83
+ }
84
+ export interface SettleResult {
85
+ market: ArbitrageMarketConfig;
86
+ yesBalance: number;
87
+ noBalance: number;
88
+ pairedTokens: number;
89
+ unpairedYes: number;
90
+ unpairedNo: number;
91
+ merged: boolean;
92
+ mergeAmount?: number;
93
+ mergeTxHash?: string;
94
+ usdcRecovered?: number;
95
+ error?: string;
96
+ }
97
+ export interface ClearPositionResult {
98
+ market: ArbitrageMarketConfig;
99
+ marketStatus: 'active' | 'resolved' | 'unknown';
100
+ yesBalance: number;
101
+ noBalance: number;
102
+ actions: ClearAction[];
103
+ totalUsdcRecovered: number;
104
+ success: boolean;
105
+ error?: string;
106
+ }
107
+ export interface ClearAction {
108
+ type: 'merge' | 'sell_yes' | 'sell_no' | 'redeem';
109
+ amount: number;
110
+ usdcResult: number;
111
+ txHash?: string;
112
+ success: boolean;
113
+ error?: string;
114
+ }
115
+ export interface ScanCriteria {
116
+ /** Minimum 24h volume in USDC (default: 1000) */
117
+ minVolume24h?: number;
118
+ /** Maximum 24h volume (optional) */
119
+ maxVolume24h?: number;
120
+ /** Keywords to filter markets (optional) */
121
+ keywords?: string[];
122
+ /** Maximum number of markets to scan (default: 100) */
123
+ limit?: number;
124
+ }
125
+ export interface ScanResult {
126
+ /** Market config ready to use with start() */
127
+ market: ArbitrageMarketConfig;
128
+ /** Best arbitrage type */
129
+ arbType: 'long' | 'short' | 'none';
130
+ /** Profit rate (e.g., 0.01 = 1%) */
131
+ profitRate: number;
132
+ /** Profit percentage */
133
+ profitPercent: number;
134
+ /** Effective prices */
135
+ effectivePrices: {
136
+ buyYes: number;
137
+ buyNo: number;
138
+ sellYes: number;
139
+ sellNo: number;
140
+ longCost: number;
141
+ shortRevenue: number;
142
+ };
143
+ /** 24h volume */
144
+ volume24h: number;
145
+ /** Available size on orderbook */
146
+ availableSize: number;
147
+ /** Score 0-100 */
148
+ score: number;
149
+ /** Description */
150
+ description: string;
151
+ }
152
+ export interface OrderbookState {
153
+ yesBids: Array<{
154
+ price: number;
155
+ size: number;
156
+ }>;
157
+ yesAsks: Array<{
158
+ price: number;
159
+ size: number;
160
+ }>;
161
+ noBids: Array<{
162
+ price: number;
163
+ size: number;
164
+ }>;
165
+ noAsks: Array<{
166
+ price: number;
167
+ size: number;
168
+ }>;
169
+ lastUpdate: number;
170
+ }
171
+ export interface BalanceState {
172
+ usdc: number;
173
+ yesTokens: number;
174
+ noTokens: number;
175
+ lastUpdate: number;
176
+ }
177
+ export interface ArbitrageOpportunity {
178
+ type: 'long' | 'short';
179
+ /** Profit rate (0.01 = 1%) */
180
+ profitRate: number;
181
+ /** Profit in percentage */
182
+ profitPercent: number;
183
+ /** Effective buy/sell prices */
184
+ effectivePrices: {
185
+ buyYes: number;
186
+ buyNo: number;
187
+ sellYes: number;
188
+ sellNo: number;
189
+ };
190
+ /** Maximum executable size based on orderbook depth */
191
+ maxOrderbookSize: number;
192
+ /** Maximum executable size based on balance */
193
+ maxBalanceSize: number;
194
+ /** Recommended trade size */
195
+ recommendedSize: number;
196
+ /** Estimated profit in USDC */
197
+ estimatedProfit: number;
198
+ /** Description */
199
+ description: string;
200
+ /** Timestamp */
201
+ timestamp: number;
202
+ }
203
+ export interface ArbitrageExecutionResult {
204
+ success: boolean;
205
+ type: 'long' | 'short';
206
+ size: number;
207
+ profit: number;
208
+ txHashes: string[];
209
+ error?: string;
210
+ executionTimeMs: number;
211
+ }
212
+ export interface ArbitrageServiceEvents {
213
+ opportunity: (opportunity: ArbitrageOpportunity) => void;
214
+ execution: (result: ArbitrageExecutionResult) => void;
215
+ balanceUpdate: (balance: BalanceState) => void;
216
+ orderbookUpdate: (orderbook: OrderbookState) => void;
217
+ rebalance: (result: RebalanceResult) => void;
218
+ settle: (result: SettleResult) => void;
219
+ error: (error: Error) => void;
220
+ started: (market: ArbitrageMarketConfig) => void;
221
+ stopped: () => void;
222
+ }
223
+ export declare class ArbitrageService extends EventEmitter {
224
+ private wsManager;
225
+ private ctf;
226
+ private tradingClient;
227
+ private rateLimiter;
228
+ private market;
229
+ private config;
230
+ private orderbook;
231
+ private balance;
232
+ private isExecuting;
233
+ private lastExecutionTime;
234
+ private lastRebalanceTime;
235
+ private balanceUpdateInterval;
236
+ private rebalanceInterval;
237
+ private isRunning;
238
+ private totalCapital;
239
+ private stats;
240
+ constructor(config?: ArbitrageServiceConfig);
241
+ /**
242
+ * Start monitoring a market for arbitrage opportunities
243
+ */
244
+ start(market: ArbitrageMarketConfig): Promise<void>;
245
+ /**
246
+ * Stop monitoring
247
+ */
248
+ stop(): Promise<void>;
249
+ /**
250
+ * Get current orderbook state
251
+ */
252
+ getOrderbook(): OrderbookState;
253
+ /**
254
+ * Get current balance state
255
+ */
256
+ getBalance(): BalanceState;
257
+ /**
258
+ * Get statistics
259
+ */
260
+ getStats(): {
261
+ runningTimeMs: number;
262
+ opportunitiesDetected: number;
263
+ executionsAttempted: number;
264
+ executionsSucceeded: number;
265
+ totalProfit: number;
266
+ startTime: number;
267
+ };
268
+ /**
269
+ * Check for arbitrage opportunity based on current orderbook
270
+ */
271
+ checkOpportunity(): ArbitrageOpportunity | null;
272
+ /**
273
+ * Manually execute an arbitrage opportunity
274
+ */
275
+ execute(opportunity: ArbitrageOpportunity): Promise<ArbitrageExecutionResult>;
276
+ /**
277
+ * Calculate recommended rebalance action based on current state
278
+ */
279
+ calculateRebalanceAction(): RebalanceAction;
280
+ /**
281
+ * Execute a rebalance action
282
+ */
283
+ rebalance(action?: RebalanceAction): Promise<RebalanceResult>;
284
+ /**
285
+ * Settle a market position - merge paired tokens to recover USDC
286
+ * @param market Market to settle (defaults to current market)
287
+ * @param execute If true, execute the merge. If false, just return info.
288
+ */
289
+ settlePosition(market?: ArbitrageMarketConfig, execute?: boolean): Promise<SettleResult>;
290
+ /**
291
+ * Settle multiple markets at once
292
+ */
293
+ settleMultiple(markets: ArbitrageMarketConfig[], execute?: boolean): Promise<SettleResult[]>;
294
+ /**
295
+ * Clear all positions in a market using the best strategy
296
+ *
297
+ * Strategy:
298
+ * - Active market: Merge paired tokens → Sell remaining unpaired tokens
299
+ * - Resolved market: Redeem winning tokens
300
+ *
301
+ * @param market Market to clear positions from
302
+ * @param execute If true, execute the clearing. If false, just return info.
303
+ * @returns Result with all actions taken
304
+ *
305
+ * @example
306
+ * ```typescript
307
+ * const service = new ArbitrageService({ privateKey: '0x...' });
308
+ *
309
+ * // View clearing plan
310
+ * const plan = await service.clearPositions(market, false);
311
+ * console.log(`Will recover: $${plan.totalUsdcRecovered}`);
312
+ *
313
+ * // Execute clearing
314
+ * const result = await service.clearPositions(market, true);
315
+ * ```
316
+ */
317
+ clearPositions(market: ArbitrageMarketConfig, execute?: boolean): Promise<ClearPositionResult>;
318
+ /**
319
+ * Clear positions from multiple markets
320
+ *
321
+ * @param markets Markets to clear
322
+ * @param execute If true, execute clearing
323
+ * @returns Results for all markets
324
+ */
325
+ clearAllPositions(markets: ArbitrageMarketConfig[], execute?: boolean): Promise<ClearPositionResult[]>;
326
+ private handleBookUpdate;
327
+ private checkAndHandleOpportunity;
328
+ private checkAndRebalance;
329
+ /**
330
+ * Fix YES/NO imbalance immediately after partial execution
331
+ * This is critical when one side of a parallel order fails
332
+ */
333
+ private fixImbalanceIfNeeded;
334
+ private updateBalance;
335
+ private executeLongArb;
336
+ private executeShortArb;
337
+ private log;
338
+ /**
339
+ * Scan markets for arbitrage opportunities
340
+ *
341
+ * @param criteria Filter criteria for markets
342
+ * @param minProfit Minimum profit threshold (default: 0.005 = 0.5%)
343
+ * @returns Array of scan results sorted by profit
344
+ *
345
+ * @example
346
+ * ```typescript
347
+ * const service = new ArbitrageService({ privateKey: '0x...' });
348
+ *
349
+ * // Scan markets with at least $5000 volume
350
+ * const results = await service.scanMarkets({ minVolume24h: 5000 }, 0.005);
351
+ *
352
+ * // Start arbitraging the best opportunity
353
+ * if (results.length > 0 && results[0].arbType !== 'none') {
354
+ * await service.start(results[0].market);
355
+ * }
356
+ * ```
357
+ */
358
+ scanMarkets(criteria?: ScanCriteria, minProfit?: number): Promise<ScanResult[]>;
359
+ /**
360
+ * Quick scan for best arbitrage opportunities
361
+ *
362
+ * @param minProfit Minimum profit threshold (default: 0.005 = 0.5%)
363
+ * @param limit Maximum number of results to return (default: 10)
364
+ * @returns Top arbitrage opportunities
365
+ *
366
+ * @example
367
+ * ```typescript
368
+ * const service = new ArbitrageService({ privateKey: '0x...' });
369
+ *
370
+ * // Find best arbitrage opportunities
371
+ * const top = await service.quickScan(0.005, 5);
372
+ *
373
+ * // Print results
374
+ * for (const r of top) {
375
+ * console.log(`${r.market.name}: ${r.arbType} +${r.profitPercent.toFixed(2)}%`);
376
+ * }
377
+ *
378
+ * // Start the best one
379
+ * if (top.length > 0) {
380
+ * await service.start(top[0].market);
381
+ * }
382
+ * ```
383
+ */
384
+ quickScan(minProfit?: number, limit?: number): Promise<ScanResult[]>;
385
+ /**
386
+ * Find and start arbitraging the best opportunity
387
+ *
388
+ * @param minProfit Minimum profit threshold (default: 0.005 = 0.5%)
389
+ * @returns The scan result that was started, or null if none found
390
+ *
391
+ * @example
392
+ * ```typescript
393
+ * const service = new ArbitrageService({
394
+ * privateKey: '0x...',
395
+ * autoExecute: true,
396
+ * profitThreshold: 0.005,
397
+ * });
398
+ *
399
+ * // Find and start the best opportunity
400
+ * const started = await service.findAndStart(0.005);
401
+ * if (started) {
402
+ * console.log(`Started: ${started.market.name} (+${started.profitPercent.toFixed(2)}%)`);
403
+ * }
404
+ * ```
405
+ */
406
+ findAndStart(minProfit?: number): Promise<ScanResult | null>;
407
+ }
408
+ //# sourceMappingURL=arbitrage-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitrage-service.d.ts","sourceRoot":"","sources":["../../src/services/arbitrage-service.ts"],"names":[],"mappings":"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"}