@catalyst-team/poly-sdk 0.2.1 → 0.3.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 (97) hide show
  1. package/README.md +545 -812
  2. package/README.zh-CN.md +645 -342
  3. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
  4. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/integration/arbitrage-service.integration.test.js +267 -0
  6. package/dist/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
  7. package/dist/__tests__/integration/data-api.integration.test.js +6 -3
  8. package/dist/__tests__/integration/data-api.integration.test.js.map +1 -1
  9. package/dist/__tests__/integration/market-service.integration.test.d.ts +10 -0
  10. package/dist/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
  11. package/dist/__tests__/integration/market-service.integration.test.js +173 -0
  12. package/dist/__tests__/integration/market-service.integration.test.js.map +1 -0
  13. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
  14. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
  15. package/dist/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
  16. package/dist/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
  17. package/dist/__tests__/integration/trading-service.integration.test.d.ts +10 -0
  18. package/dist/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
  19. package/dist/__tests__/integration/trading-service.integration.test.js +58 -0
  20. package/dist/__tests__/integration/trading-service.integration.test.js.map +1 -0
  21. package/dist/clients/clob-api.d.ts +73 -0
  22. package/dist/clients/clob-api.d.ts.map +1 -1
  23. package/dist/clients/clob-api.js +60 -0
  24. package/dist/clients/clob-api.js.map +1 -1
  25. package/dist/clients/data-api.d.ts +319 -14
  26. package/dist/clients/data-api.d.ts.map +1 -1
  27. package/dist/clients/data-api.js +342 -15
  28. package/dist/clients/data-api.js.map +1 -1
  29. package/dist/clients/subgraph.d.ts +196 -0
  30. package/dist/clients/subgraph.d.ts.map +1 -0
  31. package/dist/clients/subgraph.js +332 -0
  32. package/dist/clients/subgraph.js.map +1 -0
  33. package/dist/clients/websocket-manager.d.ts +3 -0
  34. package/dist/clients/websocket-manager.d.ts.map +1 -1
  35. package/dist/clients/websocket-manager.js +10 -3
  36. package/dist/clients/websocket-manager.js.map +1 -1
  37. package/dist/core/cache.d.ts +1 -0
  38. package/dist/core/cache.d.ts.map +1 -1
  39. package/dist/core/cache.js +1 -0
  40. package/dist/core/cache.js.map +1 -1
  41. package/dist/core/errors.d.ts +2 -1
  42. package/dist/core/errors.d.ts.map +1 -1
  43. package/dist/core/errors.js +2 -0
  44. package/dist/core/errors.js.map +1 -1
  45. package/dist/core/rate-limiter.d.ts +2 -1
  46. package/dist/core/rate-limiter.d.ts.map +1 -1
  47. package/dist/core/rate-limiter.js +5 -0
  48. package/dist/core/rate-limiter.js.map +1 -1
  49. package/dist/core/types.d.ts +100 -12
  50. package/dist/core/types.d.ts.map +1 -1
  51. package/dist/core/types.js.map +1 -1
  52. package/dist/core/types.test.d.ts +7 -0
  53. package/dist/core/types.test.d.ts.map +1 -0
  54. package/dist/core/types.test.js +122 -0
  55. package/dist/core/types.test.js.map +1 -0
  56. package/dist/index.d.ts +76 -18
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +125 -132
  59. package/dist/index.js.map +1 -1
  60. package/dist/services/arbitrage-service.d.ts +3 -2
  61. package/dist/services/arbitrage-service.d.ts.map +1 -1
  62. package/dist/services/arbitrage-service.js +58 -40
  63. package/dist/services/arbitrage-service.js.map +1 -1
  64. package/dist/services/market-service.d.ts +108 -8
  65. package/dist/services/market-service.d.ts.map +1 -1
  66. package/dist/services/market-service.js +352 -36
  67. package/dist/services/market-service.js.map +1 -1
  68. package/dist/services/onchain-service.d.ts +309 -0
  69. package/dist/services/onchain-service.d.ts.map +1 -0
  70. package/dist/services/onchain-service.js +417 -0
  71. package/dist/services/onchain-service.js.map +1 -0
  72. package/dist/services/realtime-service-v2.d.ts +361 -0
  73. package/dist/services/realtime-service-v2.d.ts.map +1 -0
  74. package/dist/services/realtime-service-v2.js +840 -0
  75. package/dist/services/realtime-service-v2.js.map +1 -0
  76. package/dist/services/realtime-service.d.ts +17 -17
  77. package/dist/services/realtime-service.d.ts.map +1 -1
  78. package/dist/services/realtime-service.js +91 -59
  79. package/dist/services/realtime-service.js.map +1 -1
  80. package/dist/services/smart-money-service.d.ts +196 -0
  81. package/dist/services/smart-money-service.d.ts.map +1 -0
  82. package/dist/services/smart-money-service.js +358 -0
  83. package/dist/services/smart-money-service.js.map +1 -0
  84. package/dist/services/trading-service.d.ts +156 -0
  85. package/dist/services/trading-service.d.ts.map +1 -0
  86. package/dist/services/trading-service.js +356 -0
  87. package/dist/services/trading-service.js.map +1 -0
  88. package/dist/services/wallet-service.d.ts +183 -2
  89. package/dist/services/wallet-service.d.ts.map +1 -1
  90. package/dist/services/wallet-service.js +458 -1
  91. package/dist/services/wallet-service.js.map +1 -1
  92. package/dist/utils/price-utils.test.d.ts +5 -0
  93. package/dist/utils/price-utils.test.d.ts.map +1 -0
  94. package/dist/utils/price-utils.test.js +192 -0
  95. package/dist/utils/price-utils.test.js.map +1 -0
  96. package/package.json +4 -3
  97. package/README.en.md +0 -502
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ArbitrageService Integration Tests
3
+ *
4
+ * Tests the ArbitrageService market scanning and opportunity detection.
5
+ * These tests make REAL API calls to Polymarket.
6
+ *
7
+ * Note: Trading tests are skipped without a real private key.
8
+ *
9
+ * Run with: pnpm test:integration
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=arbitrage-service.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitrage-service.integration.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/integration/arbitrage-service.integration.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * ArbitrageService Integration Tests
3
+ *
4
+ * Tests the ArbitrageService market scanning and opportunity detection.
5
+ * These tests make REAL API calls to Polymarket.
6
+ *
7
+ * Note: Trading tests are skipped without a real private key.
8
+ *
9
+ * Run with: pnpm test:integration
10
+ */
11
+ import { describe, it, expect, beforeAll, afterEach } from 'vitest';
12
+ import { ArbitrageService } from '../../services/arbitrage-service.js';
13
+ describe('ArbitrageService Integration', () => {
14
+ let service;
15
+ let testMarket;
16
+ beforeAll(async () => {
17
+ // Find a liquid market for testing
18
+ const response = await fetch('https://gamma-api.polymarket.com/markets?active=true&limit=1&order=volume24hr&ascending=false');
19
+ const markets = await response.json();
20
+ if (markets.length === 0) {
21
+ throw new Error('No active markets found for testing');
22
+ }
23
+ const gammaMarket = markets[0];
24
+ console.log(`Using test market: "${gammaMarket.question.slice(0, 50)}..."`);
25
+ // Get token IDs from CLOB API
26
+ const clobResponse = await fetch(`https://clob.polymarket.com/markets/${gammaMarket.conditionId}`);
27
+ const clobMarket = await clobResponse.json();
28
+ const yesToken = clobMarket.tokens.find(t => t.outcome === 'Yes');
29
+ const noToken = clobMarket.tokens.find(t => t.outcome === 'No');
30
+ if (!yesToken || !noToken) {
31
+ throw new Error('Market does not have YES/NO tokens');
32
+ }
33
+ testMarket = {
34
+ name: gammaMarket.question.slice(0, 50),
35
+ conditionId: gammaMarket.conditionId,
36
+ yesTokenId: yesToken.token_id,
37
+ noTokenId: noToken.token_id,
38
+ outcomes: (gammaMarket.outcomes || ['Yes', 'No']),
39
+ };
40
+ }, 60000);
41
+ afterEach(async () => {
42
+ // Clean up service after each test
43
+ if (service) {
44
+ await service.stop();
45
+ }
46
+ });
47
+ describe('Market Scanning', () => {
48
+ it('should scan markets for arbitrage opportunities', async () => {
49
+ service = new ArbitrageService({ enableLogging: false });
50
+ const results = await service.scanMarkets({
51
+ minVolume24h: 1000,
52
+ limit: 10,
53
+ }, 0.001); // Very low threshold to find results
54
+ expect(Array.isArray(results)).toBe(true);
55
+ expect(results.length).toBeGreaterThan(0);
56
+ // Verify result structure
57
+ const result = results[0];
58
+ expect(result.market).toBeDefined();
59
+ expect(typeof result.market.name).toBe('string');
60
+ expect(typeof result.market.conditionId).toBe('string');
61
+ expect(typeof result.market.yesTokenId).toBe('string');
62
+ expect(typeof result.market.noTokenId).toBe('string');
63
+ expect(['long', 'short', 'none']).toContain(result.arbType);
64
+ expect(typeof result.profitRate).toBe('number');
65
+ expect(typeof result.profitPercent).toBe('number');
66
+ expect(typeof result.volume24h).toBe('number');
67
+ expect(typeof result.score).toBe('number');
68
+ // Verify effective prices
69
+ expect(typeof result.effectivePrices.buyYes).toBe('number');
70
+ expect(typeof result.effectivePrices.buyNo).toBe('number');
71
+ expect(typeof result.effectivePrices.sellYes).toBe('number');
72
+ expect(typeof result.effectivePrices.sellNo).toBe('number');
73
+ expect(typeof result.effectivePrices.longCost).toBe('number');
74
+ expect(typeof result.effectivePrices.shortRevenue).toBe('number');
75
+ console.log(`✓ Scanned ${results.length} markets`);
76
+ console.log(` Best: ${result.market.name.slice(0, 40)}...`);
77
+ console.log(` Type: ${result.arbType}, Profit: ${result.profitPercent.toFixed(3)}%`);
78
+ }, 120000);
79
+ it('should filter markets by keywords', async () => {
80
+ service = new ArbitrageService({ enableLogging: false });
81
+ const results = await service.scanMarkets({
82
+ minVolume24h: 100,
83
+ keywords: ['bitcoin', 'btc', 'crypto'],
84
+ limit: 20,
85
+ }, 0);
86
+ // Results may be empty if no crypto markets match
87
+ expect(Array.isArray(results)).toBe(true);
88
+ console.log(`✓ Found ${results.length} markets matching crypto keywords`);
89
+ }, 120000);
90
+ it('should quick scan for best opportunities', async () => {
91
+ service = new ArbitrageService({ enableLogging: false });
92
+ const results = await service.quickScan(0.001, 5);
93
+ expect(Array.isArray(results)).toBe(true);
94
+ expect(results.length).toBeLessThanOrEqual(5);
95
+ // Quick scan should only return markets with opportunities
96
+ for (const result of results) {
97
+ expect(['long', 'short']).toContain(result.arbType);
98
+ expect(result.profitRate).toBeGreaterThan(0);
99
+ }
100
+ console.log(`✓ Quick scan found ${results.length} opportunities`);
101
+ if (results.length > 0) {
102
+ console.log(` Best: ${results[0].arbType} +${results[0].profitPercent.toFixed(3)}%`);
103
+ }
104
+ }, 120000);
105
+ });
106
+ describe('Opportunity Detection', () => {
107
+ it('should start monitoring and receive orderbook updates', async () => {
108
+ service = new ArbitrageService({ enableLogging: false });
109
+ // Start monitoring
110
+ await service.start(testMarket);
111
+ // Wait for orderbook updates with timeout fallback
112
+ const orderbookPromise = new Promise((resolve) => {
113
+ const timeout = setTimeout(() => resolve(false), 45000);
114
+ service.on('orderbookUpdate', () => {
115
+ clearTimeout(timeout);
116
+ resolve(true);
117
+ });
118
+ });
119
+ const received = await orderbookPromise;
120
+ if (received) {
121
+ // Verify orderbook state
122
+ const orderbook = service.getOrderbook();
123
+ expect(orderbook.lastUpdate).toBeGreaterThan(0);
124
+ expect(Array.isArray(orderbook.yesBids)).toBe(true);
125
+ expect(Array.isArray(orderbook.yesAsks)).toBe(true);
126
+ expect(Array.isArray(orderbook.noBids)).toBe(true);
127
+ expect(Array.isArray(orderbook.noAsks)).toBe(true);
128
+ console.log(`✓ Received orderbook updates`);
129
+ console.log(` YES: ${orderbook.yesBids.length} bids, ${orderbook.yesAsks.length} asks`);
130
+ console.log(` NO: ${orderbook.noBids.length} bids, ${orderbook.noAsks.length} asks`);
131
+ }
132
+ else {
133
+ console.log(`✓ ArbitrageService started (no WebSocket data within timeout - may need market activity)`);
134
+ }
135
+ }, 60000);
136
+ it('should check for arbitrage opportunities', async () => {
137
+ service = new ArbitrageService({
138
+ enableLogging: false,
139
+ profitThreshold: 0.001, // Very low threshold to detect opportunities
140
+ });
141
+ // Start monitoring
142
+ await service.start(testMarket);
143
+ // Wait for orderbook to be populated with timeout fallback
144
+ const orderbookPromise = new Promise((resolve) => {
145
+ const timeout = setTimeout(() => resolve(false), 45000);
146
+ service.on('orderbookUpdate', (orderbook) => {
147
+ // Wait until we have data on both sides
148
+ if (orderbook.yesBids.length > 0 && orderbook.yesAsks.length > 0 &&
149
+ orderbook.noBids.length > 0 && orderbook.noAsks.length > 0) {
150
+ clearTimeout(timeout);
151
+ resolve(true);
152
+ }
153
+ });
154
+ });
155
+ const received = await orderbookPromise;
156
+ if (received) {
157
+ // Check for opportunity
158
+ const opportunity = service.checkOpportunity();
159
+ if (opportunity) {
160
+ expect(['long', 'short']).toContain(opportunity.type);
161
+ expect(typeof opportunity.profitRate).toBe('number');
162
+ expect(typeof opportunity.profitPercent).toBe('number');
163
+ expect(typeof opportunity.recommendedSize).toBe('number');
164
+ expect(typeof opportunity.estimatedProfit).toBe('number');
165
+ expect(typeof opportunity.description).toBe('string');
166
+ console.log(`✓ Found ${opportunity.type} opportunity`);
167
+ console.log(` Profit: ${opportunity.profitPercent.toFixed(3)}%`);
168
+ console.log(` Size: ${opportunity.recommendedSize.toFixed(2)}`);
169
+ console.log(` Est. Profit: $${opportunity.estimatedProfit.toFixed(2)}`);
170
+ }
171
+ else {
172
+ console.log(`✓ No arbitrage opportunity at current prices (normal for most markets)`);
173
+ }
174
+ }
175
+ else {
176
+ console.log(`✓ checkOpportunity available (no WebSocket data - requires market activity)`);
177
+ }
178
+ }, 60000);
179
+ it('should emit opportunity events', async () => {
180
+ service = new ArbitrageService({
181
+ enableLogging: false,
182
+ profitThreshold: 0, // Zero threshold to catch any opportunity
183
+ });
184
+ // Start monitoring
185
+ await service.start(testMarket);
186
+ // Wait for either an opportunity event or a timeout
187
+ const result = await Promise.race([
188
+ new Promise((resolve) => {
189
+ service.on('opportunity', () => resolve('opportunity'));
190
+ }),
191
+ new Promise((resolve) => {
192
+ setTimeout(() => resolve('timeout'), 30000);
193
+ }),
194
+ ]);
195
+ if (result === 'opportunity') {
196
+ console.log(`✓ Received opportunity event`);
197
+ }
198
+ else {
199
+ console.log(`✓ No opportunity event (prices are fair - no arbitrage, or no data received)`);
200
+ }
201
+ // Stats should be tracked
202
+ const stats = service.getStats();
203
+ expect(typeof stats.opportunitiesDetected).toBe('number');
204
+ expect(typeof stats.executionsAttempted).toBe('number');
205
+ expect(typeof stats.executionsSucceeded).toBe('number');
206
+ expect(typeof stats.totalProfit).toBe('number');
207
+ expect(typeof stats.runningTimeMs).toBe('number');
208
+ console.log(` Opportunities detected: ${stats.opportunitiesDetected}`);
209
+ }, 60000);
210
+ });
211
+ describe('Service State', () => {
212
+ it('should track statistics', async () => {
213
+ service = new ArbitrageService({ enableLogging: false });
214
+ const stats = service.getStats();
215
+ expect(typeof stats.opportunitiesDetected).toBe('number');
216
+ expect(stats.opportunitiesDetected).toBe(0);
217
+ expect(typeof stats.executionsAttempted).toBe('number');
218
+ expect(stats.executionsAttempted).toBe(0);
219
+ expect(typeof stats.executionsSucceeded).toBe('number');
220
+ expect(stats.executionsSucceeded).toBe(0);
221
+ expect(typeof stats.totalProfit).toBe('number');
222
+ expect(stats.totalProfit).toBe(0);
223
+ console.log(`✓ Statistics tracking works`);
224
+ });
225
+ it('should start and stop cleanly', async () => {
226
+ service = new ArbitrageService({ enableLogging: false });
227
+ // Track events
228
+ let startedEmitted = false;
229
+ let stoppedEmitted = false;
230
+ service.on('started', () => { startedEmitted = true; });
231
+ service.on('stopped', () => { stoppedEmitted = true; });
232
+ // Start
233
+ await service.start(testMarket);
234
+ expect(startedEmitted).toBe(true);
235
+ // Stop
236
+ await service.stop();
237
+ expect(stoppedEmitted).toBe(true);
238
+ console.log(`✓ Start/stop lifecycle works correctly`);
239
+ }, 30000);
240
+ it('should prevent double-start', async () => {
241
+ service = new ArbitrageService({ enableLogging: false });
242
+ await service.start(testMarket);
243
+ // Second start should throw
244
+ await expect(service.start(testMarket)).rejects.toThrow('already running');
245
+ console.log(`✓ Double-start prevention works`);
246
+ }, 30000);
247
+ });
248
+ describe('Rebalancer Configuration', () => {
249
+ it('should calculate rebalance actions (without wallet)', () => {
250
+ service = new ArbitrageService({
251
+ enableLogging: false,
252
+ enableRebalancer: true,
253
+ minUsdcRatio: 0.2,
254
+ maxUsdcRatio: 0.8,
255
+ targetUsdcRatio: 0.5,
256
+ });
257
+ // Without a market started, should return 'none'
258
+ const action = service.calculateRebalanceAction();
259
+ expect(action.type).toBe('none');
260
+ expect(typeof action.amount).toBe('number');
261
+ expect(typeof action.reason).toBe('string');
262
+ expect(typeof action.priority).toBe('number');
263
+ console.log(`✓ Rebalance action calculation works`);
264
+ });
265
+ });
266
+ });
267
+ //# sourceMappingURL=arbitrage-service.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitrage-service.integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/arbitrage-service.integration.test.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,10 @@ describe('DataApiClient Integration', () => {
55
55
  if (trades.length > 0) {
56
56
  // Verify trade structure
57
57
  for (const trade of trades) {
58
- expect(typeof trade.id).toBe('string');
58
+ // id may not be present in all API responses
59
+ if (trade.id !== undefined) {
60
+ expect(typeof trade.id).toBe('string');
61
+ }
59
62
  expect(['BUY', 'SELL']).toContain(trade.side);
60
63
  expect(typeof trade.price).toBe('number');
61
64
  expect(trade.price).toBeGreaterThanOrEqual(0);
@@ -139,8 +142,8 @@ describe('DataApiClient Integration', () => {
139
142
  if (activity.length > 0) {
140
143
  // Verify activity structure
141
144
  for (const act of activity) {
142
- // Polymarket has various activity types including YIELD for rewards
143
- expect(['TRADE', 'SPLIT', 'MERGE', 'REDEEM', 'CONVERSION', 'YIELD']).toContain(act.type);
145
+ // Polymarket has various activity types
146
+ expect(['TRADE', 'SPLIT', 'MERGE', 'REDEEM', 'CONVERSION', 'YIELD', 'REWARD']).toContain(act.type);
144
147
  // Side might be null for non-trade activities
145
148
  if (act.type === 'TRADE') {
146
149
  expect(['BUY', 'SELL']).toContain(act.side);
@@ -1 +1 @@
1
- {"version":3,"file":"data-api.integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/data-api.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-api.integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/data-api.integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * MarketService Integration Tests
3
+ *
4
+ * Tests the MarketService for market data operations.
5
+ * These tests make REAL API calls to Polymarket.
6
+ *
7
+ * Run with: pnpm test:integration
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=market-service.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-service.integration.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/integration/market-service.integration.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * MarketService Integration Tests
3
+ *
4
+ * Tests the MarketService for market data operations.
5
+ * These tests make REAL API calls to Polymarket.
6
+ *
7
+ * Run with: pnpm test:integration
8
+ */
9
+ import { describe, it, expect, beforeAll } from 'vitest';
10
+ import { MarketService } from '../../services/market-service.js';
11
+ import { RateLimiter } from '../../core/rate-limiter.js';
12
+ import { createUnifiedCache } from '../../core/unified-cache.js';
13
+ describe('MarketService Integration', () => {
14
+ let service;
15
+ let testConditionId;
16
+ let testYesTokenId;
17
+ let testNoTokenId;
18
+ beforeAll(async () => {
19
+ // Create MarketService without gammaApi/dataApi (CLOB-only mode)
20
+ service = new MarketService(undefined, // gammaApi not needed for CLOB tests
21
+ undefined, // dataApi not needed for CLOB tests
22
+ new RateLimiter(), createUnifiedCache());
23
+ // Find a liquid market for testing
24
+ const response = await fetch('https://gamma-api.polymarket.com/markets?active=true&limit=1&order=volume24hr&ascending=false');
25
+ const markets = (await response.json());
26
+ if (markets.length === 0) {
27
+ throw new Error('No active markets found for testing');
28
+ }
29
+ testConditionId = markets[0].conditionId;
30
+ console.log(`Using test market: "${markets[0].question.slice(0, 50)}..."`);
31
+ // Get token IDs
32
+ const market = await service.getClobMarket(testConditionId);
33
+ const yesToken = market.tokens.find((t) => t.outcome === 'Yes');
34
+ const noToken = market.tokens.find((t) => t.outcome === 'No');
35
+ if (!yesToken || !noToken) {
36
+ throw new Error('Market does not have YES/NO tokens');
37
+ }
38
+ testYesTokenId = yesToken.tokenId;
39
+ testNoTokenId = noToken.tokenId;
40
+ }, 60000);
41
+ describe('getClobMarket', () => {
42
+ it('should return valid market data from official client', async () => {
43
+ const market = await service.getClobMarket(testConditionId);
44
+ expect(market.conditionId).toBe(testConditionId);
45
+ expect(typeof market.question).toBe('string');
46
+ expect(market.question.length).toBeGreaterThan(0);
47
+ expect(Array.isArray(market.tokens)).toBe(true);
48
+ expect(market.tokens.length).toBeGreaterThanOrEqual(2);
49
+ // Verify tokens
50
+ const yesToken = market.tokens.find((t) => t.outcome === 'Yes');
51
+ const noToken = market.tokens.find((t) => t.outcome === 'No');
52
+ expect(yesToken).toBeDefined();
53
+ expect(noToken).toBeDefined();
54
+ console.log(`✓ getClobMarket: "${market.question.slice(0, 40)}..."`);
55
+ }, 30000);
56
+ });
57
+ describe('getTokenOrderbook', () => {
58
+ it('should return sorted orderbook', async () => {
59
+ const book = await service.getTokenOrderbook(testYesTokenId);
60
+ expect(Array.isArray(book.bids)).toBe(true);
61
+ expect(Array.isArray(book.asks)).toBe(true);
62
+ expect(typeof book.timestamp).toBe('number');
63
+ // Bids should be sorted descending
64
+ for (let i = 1; i < book.bids.length; i++) {
65
+ expect(book.bids[i].price).toBeLessThanOrEqual(book.bids[i - 1].price);
66
+ }
67
+ // Asks should be sorted ascending
68
+ for (let i = 1; i < book.asks.length; i++) {
69
+ expect(book.asks[i].price).toBeGreaterThanOrEqual(book.asks[i - 1].price);
70
+ }
71
+ console.log(`✓ getTokenOrderbook: ${book.bids.length} bids, ${book.asks.length} asks`);
72
+ }, 30000);
73
+ });
74
+ describe('getProcessedOrderbook', () => {
75
+ it('should return processed orderbook with analytics', async () => {
76
+ const processed = await service.getProcessedOrderbook(testConditionId);
77
+ // Verify YES/NO book data
78
+ expect(typeof processed.yes.bid).toBe('number');
79
+ expect(typeof processed.yes.ask).toBe('number');
80
+ expect(typeof processed.no.bid).toBe('number');
81
+ expect(typeof processed.no.ask).toBe('number');
82
+ // Verify summary
83
+ expect(typeof processed.summary.effectiveLongCost).toBe('number');
84
+ expect(typeof processed.summary.effectiveShortRevenue).toBe('number');
85
+ expect(typeof processed.summary.longArbProfit).toBe('number');
86
+ expect(typeof processed.summary.shortArbProfit).toBe('number');
87
+ console.log(`✓ getProcessedOrderbook:`);
88
+ console.log(` YES: bid=${processed.yes.bid.toFixed(3)}, ask=${processed.yes.ask.toFixed(3)}`);
89
+ console.log(` NO: bid=${processed.no.bid.toFixed(3)}, ask=${processed.no.ask.toFixed(3)}`);
90
+ }, 30000);
91
+ });
92
+ describe('getMidpoint', () => {
93
+ it('should return midpoint price or handle no orderbook', async () => {
94
+ try {
95
+ const midpoint = await service.getMidpoint(testYesTokenId);
96
+ expect(typeof midpoint).toBe('number');
97
+ // Midpoint can be NaN if no orderbook exists
98
+ if (!isNaN(midpoint)) {
99
+ expect(midpoint).toBeGreaterThanOrEqual(0);
100
+ expect(midpoint).toBeLessThanOrEqual(1);
101
+ console.log(`✓ getMidpoint: ${midpoint.toFixed(4)}`);
102
+ }
103
+ else {
104
+ console.log(`✓ getMidpoint: NaN (no orderbook exists - expected for some tokens)`);
105
+ }
106
+ }
107
+ catch {
108
+ // API may return error if no orderbook exists
109
+ console.log(`✓ getMidpoint: API error (no orderbook - expected for some tokens)`);
110
+ }
111
+ }, 30000);
112
+ });
113
+ describe('getSpread', () => {
114
+ it('should return spread or handle no orderbook', async () => {
115
+ try {
116
+ const spread = await service.getSpread(testYesTokenId);
117
+ expect(typeof spread).toBe('number');
118
+ // Spread can be NaN if no orderbook exists
119
+ if (!isNaN(spread)) {
120
+ expect(spread).toBeGreaterThanOrEqual(0);
121
+ console.log(`✓ getSpread: ${spread.toFixed(4)}`);
122
+ }
123
+ else {
124
+ console.log(`✓ getSpread: NaN (no orderbook exists - expected for some tokens)`);
125
+ }
126
+ }
127
+ catch {
128
+ // API may return error if no orderbook exists
129
+ console.log(`✓ getSpread: API error (no orderbook - expected for some tokens)`);
130
+ }
131
+ }, 30000);
132
+ });
133
+ describe('getPricesHistory', () => {
134
+ it('should return price history array', async () => {
135
+ try {
136
+ const history = await service.getPricesHistory({
137
+ tokenId: testYesTokenId,
138
+ interval: '1d',
139
+ });
140
+ expect(Array.isArray(history)).toBe(true);
141
+ if (history.length > 0) {
142
+ for (const point of history) {
143
+ expect(typeof point.timestamp).toBe('number');
144
+ expect(typeof point.price).toBe('number');
145
+ expect(point.price).toBeGreaterThanOrEqual(0);
146
+ expect(point.price).toBeLessThanOrEqual(1);
147
+ }
148
+ console.log(`✓ getPricesHistory: ${history.length} data points`);
149
+ }
150
+ else {
151
+ console.log(`✓ getPricesHistory: empty (no history available for this token)`);
152
+ }
153
+ }
154
+ catch {
155
+ // API may return error for some tokens
156
+ console.log(`✓ getPricesHistory: API error (no history - expected for some tokens)`);
157
+ }
158
+ }, 30000);
159
+ });
160
+ describe('getClobMarkets', () => {
161
+ it('should return paginated markets list', async () => {
162
+ const result = await service.getClobMarkets();
163
+ expect(Array.isArray(result.markets)).toBe(true);
164
+ expect(result.markets.length).toBeGreaterThan(0);
165
+ expect(typeof result.nextCursor).toBe('string');
166
+ const market = result.markets[0];
167
+ expect(typeof market.conditionId).toBe('string');
168
+ expect(typeof market.question).toBe('string');
169
+ console.log(`✓ getClobMarkets: ${result.markets.length} markets returned`);
170
+ }, 30000);
171
+ });
172
+ });
173
+ //# sourceMappingURL=market-service.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-service.integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/market-service.integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * RealtimeServiceV2 Integration Tests
3
+ *
4
+ * Tests the new RealtimeServiceV2 that uses @polymarket/real-time-data-client.
5
+ * These tests make REAL WebSocket connections to Polymarket.
6
+ *
7
+ * Run with: pnpm test:integration
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=realtime-service-v2.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-service-v2.integration.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/integration/realtime-service-v2.integration.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}