@catalyst-team/poly-sdk 0.4.0 → 0.4.5

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 (288) hide show
  1. package/README.md +8 -1
  2. package/README.zh-CN.md +2 -0
  3. package/dist/src/__tests__/integration/data-api.integration.test.js +21 -18
  4. package/dist/src/__tests__/integration/data-api.integration.test.js.map +1 -1
  5. package/dist/src/catalyst/catalyst-query-service.d.ts +109 -0
  6. package/dist/src/catalyst/catalyst-query-service.d.ts.map +1 -0
  7. package/dist/src/catalyst/catalyst-query-service.js +141 -0
  8. package/dist/src/catalyst/catalyst-query-service.js.map +1 -0
  9. package/dist/src/catalyst/catalyst-realtime-service.d.ts +40 -0
  10. package/dist/src/catalyst/catalyst-realtime-service.d.ts.map +1 -0
  11. package/dist/src/catalyst/catalyst-realtime-service.js +125 -0
  12. package/dist/src/catalyst/catalyst-realtime-service.js.map +1 -0
  13. package/dist/src/catalyst/index.d.ts +4 -0
  14. package/dist/src/catalyst/index.d.ts.map +1 -0
  15. package/dist/src/catalyst/index.js +4 -0
  16. package/dist/src/catalyst/index.js.map +1 -0
  17. package/dist/src/catalyst/types.d.ts +178 -0
  18. package/dist/src/catalyst/types.d.ts.map +1 -0
  19. package/dist/src/catalyst/types.js +2 -0
  20. package/dist/src/catalyst/types.js.map +1 -0
  21. package/dist/src/clients/data-api.d.ts +75 -14
  22. package/dist/src/clients/data-api.d.ts.map +1 -1
  23. package/dist/src/clients/data-api.js +40 -18
  24. package/dist/src/clients/data-api.js.map +1 -1
  25. package/dist/src/clients/gamma-api.d.ts +54 -0
  26. package/dist/src/clients/gamma-api.d.ts.map +1 -1
  27. package/dist/src/clients/gamma-api.js.map +1 -1
  28. package/dist/src/core/order-status.d.ts +159 -0
  29. package/dist/src/core/order-status.d.ts.map +1 -0
  30. package/dist/src/core/order-status.js +254 -0
  31. package/dist/src/core/order-status.js.map +1 -0
  32. package/dist/src/core/types.d.ts +124 -0
  33. package/dist/src/core/types.d.ts.map +1 -1
  34. package/dist/src/core/types.js +120 -0
  35. package/dist/src/core/types.js.map +1 -1
  36. package/dist/src/index.d.ts +20 -4
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/index.js +28 -2
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/insider-scan/index.d.ts +3 -0
  41. package/dist/src/insider-scan/index.d.ts.map +1 -0
  42. package/dist/src/insider-scan/index.js +3 -0
  43. package/dist/src/insider-scan/index.js.map +1 -0
  44. package/dist/src/insider-scan/insider-scan-service.d.ts +63 -0
  45. package/dist/src/insider-scan/insider-scan-service.d.ts.map +1 -0
  46. package/dist/src/insider-scan/insider-scan-service.js +153 -0
  47. package/dist/src/insider-scan/insider-scan-service.js.map +1 -0
  48. package/dist/src/insider-scan/types.d.ts +205 -0
  49. package/dist/src/insider-scan/types.d.ts.map +1 -0
  50. package/dist/src/insider-scan/types.js +7 -0
  51. package/dist/src/insider-scan/types.js.map +1 -0
  52. package/dist/src/services/ctf-detector.d.ts +215 -0
  53. package/dist/src/services/ctf-detector.d.ts.map +1 -0
  54. package/dist/src/services/ctf-detector.js +420 -0
  55. package/dist/src/services/ctf-detector.js.map +1 -0
  56. package/dist/src/services/ctf-manager.d.ts +202 -0
  57. package/dist/src/services/ctf-manager.d.ts.map +1 -0
  58. package/dist/src/services/ctf-manager.js +542 -0
  59. package/dist/src/services/ctf-manager.js.map +1 -0
  60. package/dist/src/services/market-service.d.ts +61 -0
  61. package/dist/src/services/market-service.d.ts.map +1 -1
  62. package/dist/src/services/market-service.js +58 -0
  63. package/dist/src/services/market-service.js.map +1 -1
  64. package/dist/src/services/onchain-service.d.ts +10 -2
  65. package/dist/src/services/onchain-service.d.ts.map +1 -1
  66. package/dist/src/services/onchain-service.js +8 -0
  67. package/dist/src/services/onchain-service.js.map +1 -1
  68. package/dist/src/services/order-manager.d.ts +281 -0
  69. package/dist/src/services/order-manager.d.ts.map +1 -0
  70. package/dist/src/services/order-manager.js +641 -0
  71. package/dist/src/services/order-manager.js.map +1 -0
  72. package/dist/src/services/order-manager.test.d.ts +8 -0
  73. package/dist/src/services/order-manager.test.d.ts.map +1 -0
  74. package/dist/src/services/order-manager.test.js +477 -0
  75. package/dist/src/services/order-manager.test.js.map +1 -0
  76. package/dist/src/services/smart-money-service.d.ts +420 -3
  77. package/dist/src/services/smart-money-service.d.ts.map +1 -1
  78. package/dist/src/services/smart-money-service.js +869 -3
  79. package/dist/src/services/smart-money-service.js.map +1 -1
  80. package/dist/src/services/trading-service.d.ts +94 -1
  81. package/dist/src/services/trading-service.d.ts.map +1 -1
  82. package/dist/src/services/trading-service.js +232 -1
  83. package/dist/src/services/trading-service.js.map +1 -1
  84. package/dist/src/services/wallet-service.d.ts +38 -2
  85. package/dist/src/services/wallet-service.d.ts.map +1 -1
  86. package/dist/src/services/wallet-service.js +72 -5
  87. package/dist/src/services/wallet-service.js.map +1 -1
  88. package/dist/src/signal/index.d.ts +8 -0
  89. package/dist/src/signal/index.d.ts.map +1 -0
  90. package/dist/src/signal/index.js +7 -0
  91. package/dist/src/signal/index.js.map +1 -0
  92. package/dist/src/signal/signal-service.d.ts +89 -0
  93. package/dist/src/signal/signal-service.d.ts.map +1 -0
  94. package/dist/src/signal/signal-service.js +226 -0
  95. package/dist/src/signal/signal-service.js.map +1 -0
  96. package/dist/src/signal/types.d.ts +280 -0
  97. package/dist/src/signal/types.d.ts.map +1 -0
  98. package/dist/src/signal/types.js +7 -0
  99. package/dist/src/signal/types.js.map +1 -0
  100. package/dist/src/wallet-report/index.d.ts +3 -0
  101. package/dist/src/wallet-report/index.d.ts.map +1 -0
  102. package/dist/src/wallet-report/index.js +3 -0
  103. package/dist/src/wallet-report/index.js.map +1 -0
  104. package/dist/src/wallet-report/types.d.ts +187 -0
  105. package/dist/src/wallet-report/types.d.ts.map +1 -0
  106. package/dist/src/wallet-report/types.js +7 -0
  107. package/dist/src/wallet-report/types.js.map +1 -0
  108. package/dist/src/wallet-report/wallet-report-service.d.ts +91 -0
  109. package/dist/src/wallet-report/wallet-report-service.d.ts.map +1 -0
  110. package/dist/src/wallet-report/wallet-report-service.js +208 -0
  111. package/dist/src/wallet-report/wallet-report-service.js.map +1 -0
  112. package/dist/src/wallets/hot-wallet-service.d.ts +162 -0
  113. package/dist/src/wallets/hot-wallet-service.d.ts.map +1 -0
  114. package/dist/src/wallets/hot-wallet-service.js +251 -0
  115. package/dist/src/wallets/hot-wallet-service.js.map +1 -0
  116. package/dist/src/wallets/index.d.ts +15 -0
  117. package/dist/src/wallets/index.d.ts.map +1 -0
  118. package/dist/src/wallets/index.js +26 -0
  119. package/dist/src/wallets/index.js.map +1 -0
  120. package/package.json +5 -5
  121. package/dist/__tests__/clob-api.test.d.ts +0 -5
  122. package/dist/__tests__/clob-api.test.d.ts.map +0 -1
  123. package/dist/__tests__/clob-api.test.js +0 -240
  124. package/dist/__tests__/clob-api.test.js.map +0 -1
  125. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts +0 -12
  126. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts.map +0 -1
  127. package/dist/__tests__/integration/arbitrage-service.integration.test.js +0 -267
  128. package/dist/__tests__/integration/arbitrage-service.integration.test.js.map +0 -1
  129. package/dist/__tests__/integration/bridge-client.integration.test.d.ts +0 -11
  130. package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +0 -1
  131. package/dist/__tests__/integration/bridge-client.integration.test.js +0 -260
  132. package/dist/__tests__/integration/bridge-client.integration.test.js.map +0 -1
  133. package/dist/__tests__/integration/clob-api.integration.test.d.ts +0 -13
  134. package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +0 -1
  135. package/dist/__tests__/integration/clob-api.integration.test.js +0 -170
  136. package/dist/__tests__/integration/clob-api.integration.test.js.map +0 -1
  137. package/dist/__tests__/integration/ctf-client.integration.test.d.ts +0 -17
  138. package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +0 -1
  139. package/dist/__tests__/integration/ctf-client.integration.test.js +0 -234
  140. package/dist/__tests__/integration/ctf-client.integration.test.js.map +0 -1
  141. package/dist/__tests__/integration/data-api.integration.test.d.ts +0 -9
  142. package/dist/__tests__/integration/data-api.integration.test.d.ts.map +0 -1
  143. package/dist/__tests__/integration/data-api.integration.test.js +0 -164
  144. package/dist/__tests__/integration/data-api.integration.test.js.map +0 -1
  145. package/dist/__tests__/integration/gamma-api.integration.test.d.ts +0 -9
  146. package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +0 -1
  147. package/dist/__tests__/integration/gamma-api.integration.test.js +0 -170
  148. package/dist/__tests__/integration/gamma-api.integration.test.js.map +0 -1
  149. package/dist/__tests__/integration/market-service.integration.test.d.ts +0 -10
  150. package/dist/__tests__/integration/market-service.integration.test.d.ts.map +0 -1
  151. package/dist/__tests__/integration/market-service.integration.test.js +0 -173
  152. package/dist/__tests__/integration/market-service.integration.test.js.map +0 -1
  153. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts +0 -10
  154. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +0 -1
  155. package/dist/__tests__/integration/realtime-service-v2.integration.test.js +0 -307
  156. package/dist/__tests__/integration/realtime-service-v2.integration.test.js.map +0 -1
  157. package/dist/__tests__/integration/trading-service.integration.test.d.ts +0 -10
  158. package/dist/__tests__/integration/trading-service.integration.test.d.ts.map +0 -1
  159. package/dist/__tests__/integration/trading-service.integration.test.js +0 -58
  160. package/dist/__tests__/integration/trading-service.integration.test.js.map +0 -1
  161. package/dist/__tests__/test-utils.d.ts +0 -92
  162. package/dist/__tests__/test-utils.d.ts.map +0 -1
  163. package/dist/__tests__/test-utils.js +0 -143
  164. package/dist/__tests__/test-utils.js.map +0 -1
  165. package/dist/clients/bridge-client.d.ts +0 -388
  166. package/dist/clients/bridge-client.d.ts.map +0 -1
  167. package/dist/clients/bridge-client.js +0 -587
  168. package/dist/clients/bridge-client.js.map +0 -1
  169. package/dist/clients/clob-api.d.ts +0 -391
  170. package/dist/clients/clob-api.d.ts.map +0 -1
  171. package/dist/clients/clob-api.js +0 -448
  172. package/dist/clients/clob-api.js.map +0 -1
  173. package/dist/clients/ctf-client.d.ts +0 -475
  174. package/dist/clients/ctf-client.d.ts.map +0 -1
  175. package/dist/clients/ctf-client.js +0 -915
  176. package/dist/clients/ctf-client.js.map +0 -1
  177. package/dist/clients/data-api.d.ts +0 -452
  178. package/dist/clients/data-api.d.ts.map +0 -1
  179. package/dist/clients/data-api.js +0 -637
  180. package/dist/clients/data-api.js.map +0 -1
  181. package/dist/clients/gamma-api.d.ts +0 -406
  182. package/dist/clients/gamma-api.d.ts.map +0 -1
  183. package/dist/clients/gamma-api.js +0 -354
  184. package/dist/clients/gamma-api.js.map +0 -1
  185. package/dist/clients/subgraph.d.ts +0 -196
  186. package/dist/clients/subgraph.d.ts.map +0 -1
  187. package/dist/clients/subgraph.js +0 -332
  188. package/dist/clients/subgraph.js.map +0 -1
  189. package/dist/clients/trading-client.d.ts +0 -252
  190. package/dist/clients/trading-client.d.ts.map +0 -1
  191. package/dist/clients/trading-client.js +0 -543
  192. package/dist/clients/trading-client.js.map +0 -1
  193. package/dist/clients/websocket-manager.d.ts +0 -103
  194. package/dist/clients/websocket-manager.d.ts.map +0 -1
  195. package/dist/clients/websocket-manager.js +0 -200
  196. package/dist/clients/websocket-manager.js.map +0 -1
  197. package/dist/core/cache-adapter-bridge.d.ts +0 -36
  198. package/dist/core/cache-adapter-bridge.d.ts.map +0 -1
  199. package/dist/core/cache-adapter-bridge.js +0 -81
  200. package/dist/core/cache-adapter-bridge.js.map +0 -1
  201. package/dist/core/cache.d.ts +0 -43
  202. package/dist/core/cache.d.ts.map +0 -1
  203. package/dist/core/cache.js +0 -76
  204. package/dist/core/cache.js.map +0 -1
  205. package/dist/core/errors.d.ts +0 -39
  206. package/dist/core/errors.d.ts.map +0 -1
  207. package/dist/core/errors.js +0 -86
  208. package/dist/core/errors.js.map +0 -1
  209. package/dist/core/rate-limiter.d.ts +0 -33
  210. package/dist/core/rate-limiter.d.ts.map +0 -1
  211. package/dist/core/rate-limiter.js +0 -82
  212. package/dist/core/rate-limiter.js.map +0 -1
  213. package/dist/core/types.d.ts +0 -506
  214. package/dist/core/types.d.ts.map +0 -1
  215. package/dist/core/types.js +0 -49
  216. package/dist/core/types.js.map +0 -1
  217. package/dist/core/types.test.d.ts +0 -7
  218. package/dist/core/types.test.d.ts.map +0 -1
  219. package/dist/core/types.test.js +0 -122
  220. package/dist/core/types.test.js.map +0 -1
  221. package/dist/core/unified-cache.d.ts +0 -63
  222. package/dist/core/unified-cache.d.ts.map +0 -1
  223. package/dist/core/unified-cache.js +0 -114
  224. package/dist/core/unified-cache.js.map +0 -1
  225. package/dist/index.d.ts +0 -159
  226. package/dist/index.d.ts.map +0 -1
  227. package/dist/index.js +0 -262
  228. package/dist/index.js.map +0 -1
  229. package/dist/services/arbitrage-service.d.ts +0 -409
  230. package/dist/services/arbitrage-service.d.ts.map +0 -1
  231. package/dist/services/arbitrage-service.js +0 -1450
  232. package/dist/services/arbitrage-service.js.map +0 -1
  233. package/dist/services/authorization-service.d.ts +0 -97
  234. package/dist/services/authorization-service.d.ts.map +0 -1
  235. package/dist/services/authorization-service.js +0 -279
  236. package/dist/services/authorization-service.js.map +0 -1
  237. package/dist/services/binance-service.d.ts +0 -154
  238. package/dist/services/binance-service.d.ts.map +0 -1
  239. package/dist/services/binance-service.js +0 -266
  240. package/dist/services/binance-service.js.map +0 -1
  241. package/dist/services/dip-arb-service.d.ts +0 -209
  242. package/dist/services/dip-arb-service.d.ts.map +0 -1
  243. package/dist/services/dip-arb-service.js +0 -1602
  244. package/dist/services/dip-arb-service.js.map +0 -1
  245. package/dist/services/dip-arb-types.d.ts +0 -553
  246. package/dist/services/dip-arb-types.d.ts.map +0 -1
  247. package/dist/services/dip-arb-types.js +0 -164
  248. package/dist/services/dip-arb-types.js.map +0 -1
  249. package/dist/services/market-service.d.ts +0 -367
  250. package/dist/services/market-service.d.ts.map +0 -1
  251. package/dist/services/market-service.js +0 -1187
  252. package/dist/services/market-service.js.map +0 -1
  253. package/dist/services/onchain-service.d.ts +0 -309
  254. package/dist/services/onchain-service.d.ts.map +0 -1
  255. package/dist/services/onchain-service.js +0 -417
  256. package/dist/services/onchain-service.js.map +0 -1
  257. package/dist/services/realtime-service-v2.d.ts +0 -362
  258. package/dist/services/realtime-service-v2.d.ts.map +0 -1
  259. package/dist/services/realtime-service-v2.js +0 -858
  260. package/dist/services/realtime-service-v2.js.map +0 -1
  261. package/dist/services/realtime-service.d.ts +0 -82
  262. package/dist/services/realtime-service.d.ts.map +0 -1
  263. package/dist/services/realtime-service.js +0 -182
  264. package/dist/services/realtime-service.js.map +0 -1
  265. package/dist/services/smart-money-service.d.ts +0 -352
  266. package/dist/services/smart-money-service.d.ts.map +0 -1
  267. package/dist/services/smart-money-service.js +0 -582
  268. package/dist/services/smart-money-service.js.map +0 -1
  269. package/dist/services/swap-service.d.ts +0 -217
  270. package/dist/services/swap-service.d.ts.map +0 -1
  271. package/dist/services/swap-service.js +0 -695
  272. package/dist/services/swap-service.js.map +0 -1
  273. package/dist/services/trading-service.d.ts +0 -177
  274. package/dist/services/trading-service.d.ts.map +0 -1
  275. package/dist/services/trading-service.js +0 -422
  276. package/dist/services/trading-service.js.map +0 -1
  277. package/dist/services/wallet-service.d.ts +0 -316
  278. package/dist/services/wallet-service.d.ts.map +0 -1
  279. package/dist/services/wallet-service.js +0 -681
  280. package/dist/services/wallet-service.js.map +0 -1
  281. package/dist/utils/price-utils.d.ts +0 -153
  282. package/dist/utils/price-utils.d.ts.map +0 -1
  283. package/dist/utils/price-utils.js +0 -236
  284. package/dist/utils/price-utils.js.map +0 -1
  285. package/dist/utils/price-utils.test.d.ts +0 -5
  286. package/dist/utils/price-utils.test.d.ts.map +0 -1
  287. package/dist/utils/price-utils.test.js +0 -192
  288. package/dist/utils/price-utils.test.js.map +0 -1
@@ -0,0 +1,205 @@
1
+ /**
2
+ * InsiderScan Service Types
3
+ *
4
+ * Types for querying the InsiderScanWorker API
5
+ */
6
+ /**
7
+ * Market type
8
+ */
9
+ export type MarketType = 'political' | 'crypto' | 'sports' | 'other';
10
+ /**
11
+ * Insider suspicion level
12
+ */
13
+ export type InsiderLevel = 'critical' | 'high' | 'medium' | 'low';
14
+ /**
15
+ * Insider characteristics details
16
+ */
17
+ export interface InsiderCharacteristics {
18
+ isNewWallet: boolean;
19
+ hasNoHistory: boolean;
20
+ singleSidedBet: boolean;
21
+ largePosition: boolean;
22
+ timingSensitive: boolean;
23
+ shortDepositWindow: boolean;
24
+ lowPriceSensitivity: boolean;
25
+ twoPhasePattern: boolean;
26
+ walletAgeDays: number;
27
+ totalTradeCount: number;
28
+ maxSingleTradeUsd: number;
29
+ yesBetRatio: number;
30
+ hoursBeforeEvent?: number;
31
+ depositToTradeMinutes?: number;
32
+ priceStandardDeviation?: number;
33
+ hasFailedTrades?: boolean;
34
+ successAfterFailure?: boolean;
35
+ returnMultiple: number;
36
+ marketType: MarketType;
37
+ crossChainCorrelation?: number;
38
+ domainCount?: number;
39
+ }
40
+ /**
41
+ * Suspicious trade record
42
+ */
43
+ export interface SuspiciousTrade {
44
+ txHash?: string;
45
+ timestamp: number;
46
+ conditionId: string;
47
+ marketTitle: string;
48
+ side: 'BUY' | 'SELL';
49
+ outcome: string;
50
+ size: number;
51
+ price: number;
52
+ usdcValue: number;
53
+ suspiciousReasons: string[];
54
+ potentialReturn: number;
55
+ returnMultiple: number;
56
+ }
57
+ /**
58
+ * Health response from InsiderScanWorker
59
+ */
60
+ export interface InsiderScanHealthResponse {
61
+ status: string;
62
+ service: string;
63
+ version: string;
64
+ now: number;
65
+ stats: {
66
+ totalCandidates: number;
67
+ criticalCount: number;
68
+ highCount: number;
69
+ mediumCount: number;
70
+ lowCount: number;
71
+ lastScanAt: number | null;
72
+ totalScans: number;
73
+ };
74
+ }
75
+ /**
76
+ * Candidate summary (list view)
77
+ */
78
+ export interface InsiderCandidateSummary {
79
+ address: string;
80
+ displayName?: string;
81
+ insiderScore: number;
82
+ level: InsiderLevel;
83
+ levelColor: string;
84
+ levelDescription: string;
85
+ totalVolume: number;
86
+ potentialProfit: number;
87
+ markets: number;
88
+ walletAgeDays: number;
89
+ analyzedAt: number;
90
+ tags: string[];
91
+ }
92
+ /**
93
+ * Full candidate details
94
+ */
95
+ export interface InsiderCandidateDetails extends InsiderCandidateSummary {
96
+ characteristics: InsiderCharacteristics;
97
+ suspiciousTrades: SuspiciousTrade[];
98
+ marketsList: string[];
99
+ firstSeen: number;
100
+ lastActivity: number;
101
+ analyzedBy: 'scanner' | 'manual' | 'agent';
102
+ }
103
+ /**
104
+ * Get candidates response
105
+ */
106
+ export interface GetCandidatesResponse {
107
+ candidates: InsiderCandidateSummary[];
108
+ pagination: {
109
+ limit: number;
110
+ offset: number;
111
+ total: number;
112
+ };
113
+ filters: {
114
+ minScore: number;
115
+ maxScore: number;
116
+ level?: InsiderLevel;
117
+ market?: string;
118
+ sortBy: string;
119
+ sortOrder: string;
120
+ };
121
+ }
122
+ /**
123
+ * Scan result
124
+ */
125
+ export interface ScanMarketResponse {
126
+ conditionId: string;
127
+ marketTitle: string;
128
+ tradesAnalyzed: number;
129
+ walletsScanned: number;
130
+ candidatesFound: number;
131
+ highScoreCount: number;
132
+ durationMs: number;
133
+ candidates: Array<{
134
+ address: string;
135
+ insiderScore: number;
136
+ level: InsiderLevel;
137
+ levelColor: string;
138
+ totalVolume: number;
139
+ potentialProfit: number;
140
+ }>;
141
+ }
142
+ /**
143
+ * Scan history record
144
+ */
145
+ export interface ScanHistoryItem {
146
+ id: string;
147
+ conditionId: string;
148
+ marketTitle: string;
149
+ tradesAnalyzed: number;
150
+ walletsScanned: number;
151
+ candidatesFound: number;
152
+ highScoreCount: number;
153
+ durationMs: number;
154
+ scannedAt: number;
155
+ }
156
+ /**
157
+ * Scan history response
158
+ */
159
+ export interface GetScanHistoryResponse {
160
+ history: ScanHistoryItem[];
161
+ pagination: {
162
+ limit: number;
163
+ offset: number;
164
+ };
165
+ }
166
+ /**
167
+ * Statistics response
168
+ */
169
+ export interface InsiderStatsResponse {
170
+ candidates: {
171
+ total: number;
172
+ byLevel: {
173
+ critical: number;
174
+ high: number;
175
+ medium: number;
176
+ low: number;
177
+ };
178
+ };
179
+ scans: {
180
+ total: number;
181
+ lastScanAt: number | null;
182
+ };
183
+ thresholds: {
184
+ critical: number;
185
+ high: number;
186
+ medium: number;
187
+ low: number;
188
+ };
189
+ }
190
+ export interface GetCandidatesParams {
191
+ minScore?: number;
192
+ maxScore?: number;
193
+ level?: InsiderLevel;
194
+ market?: string;
195
+ sortBy?: 'score' | 'analyzedAt' | 'potentialProfit' | 'totalVolume';
196
+ sortOrder?: 'asc' | 'desc';
197
+ limit?: number;
198
+ offset?: number;
199
+ }
200
+ export interface GetScanHistoryParams {
201
+ conditionId?: string;
202
+ limit?: number;
203
+ offset?: number;
204
+ }
205
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/insider-scan/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * InsiderScan Service Types
3
+ *
4
+ * Types for querying the InsiderScanWorker API
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/insider-scan/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * CTF Detector
3
+ *
4
+ * Monitors Conditional Token Framework (CTF) operations:
5
+ * - Split: USDC → YES + NO tokens
6
+ * - Merge: YES + NO tokens → USDC
7
+ * - Redeem: Winning token → USDC (after market resolution)
8
+ *
9
+ * Detection Methods:
10
+ * - WebSocket: ERC1155 Transfer events (primary, low-latency)
11
+ * - Polling: Balance changes (backup, reliable)
12
+ *
13
+ * ERC1155 Transfer Event Patterns:
14
+ * - Split: Transfer(from=0x0, to=user, tokenId=YES/NO, amount)
15
+ * - Merge: Transfer(from=user, to=0x0, tokenId=YES/NO, amount)
16
+ * - Redeem: Transfer(from=user, to=0x0, tokenId=winningToken, amount)
17
+ *
18
+ * Usage:
19
+ * ```ts
20
+ * const detector = new CTFDetector({
21
+ * privateKey: '0x...',
22
+ * market: { conditionId, primaryTokenId, secondaryTokenId },
23
+ * mode: 'hybrid',
24
+ * });
25
+ *
26
+ * detector.on('split', (operation) => console.log('Split detected:', operation));
27
+ * detector.on('merge', (operation) => console.log('Merge detected:', operation));
28
+ * detector.on('redeem', (operation) => console.log('Redeem detected:', operation));
29
+ *
30
+ * await detector.start();
31
+ * ```
32
+ */
33
+ import { EventEmitter } from 'events';
34
+ /**
35
+ * Detection mode
36
+ */
37
+ export type DetectionMode = 'websocket' | 'polling' | 'hybrid';
38
+ /**
39
+ * CTF operation types
40
+ */
41
+ export type CTFOperationType = 'split' | 'merge' | 'redeem';
42
+ /**
43
+ * CTF operation event base
44
+ */
45
+ interface CTFOperationBase {
46
+ /** Operation type */
47
+ type: CTFOperationType;
48
+ /** User address */
49
+ userAddress: string;
50
+ /** Market condition ID */
51
+ conditionId: string;
52
+ /** Amount of tokens involved */
53
+ amount: string;
54
+ /** Timestamp */
55
+ timestamp: number;
56
+ /** Transaction hash (if available) */
57
+ transactionHash?: string;
58
+ /** Block number (if available) */
59
+ blockNumber?: number;
60
+ }
61
+ /**
62
+ * Split operation event
63
+ * USDC → YES + NO tokens
64
+ */
65
+ export interface SplitOperation extends CTFOperationBase {
66
+ type: 'split';
67
+ /** Primary (YES) token ID */
68
+ primaryTokenId: string;
69
+ /** Secondary (NO) token ID */
70
+ secondaryTokenId: string;
71
+ }
72
+ /**
73
+ * Merge operation event
74
+ * YES + NO tokens → USDC
75
+ */
76
+ export interface MergeOperation extends CTFOperationBase {
77
+ type: 'merge';
78
+ /** Primary (YES) token ID */
79
+ primaryTokenId: string;
80
+ /** Secondary (NO) token ID */
81
+ secondaryTokenId: string;
82
+ }
83
+ /**
84
+ * Redeem operation event
85
+ * Winning token → USDC (after market resolution)
86
+ */
87
+ export interface RedeemOperation extends CTFOperationBase {
88
+ type: 'redeem';
89
+ /** Winning token ID */
90
+ winningTokenId: string;
91
+ }
92
+ /**
93
+ * CTF operation union type
94
+ */
95
+ export type CTFOperation = SplitOperation | MergeOperation | RedeemOperation;
96
+ /**
97
+ * CTF detector configuration
98
+ */
99
+ export interface CTFDetectorConfig {
100
+ /** Private key for wallet */
101
+ privateKey: string;
102
+ /** Market info (conditionId, token IDs) */
103
+ market: {
104
+ conditionId: string;
105
+ primaryTokenId: string;
106
+ secondaryTokenId: string;
107
+ };
108
+ /** RPC URL for Polygon network (optional) */
109
+ rpcUrl?: string;
110
+ /** Detection mode (default: 'hybrid') */
111
+ mode?: 'websocket' | 'polling' | 'hybrid';
112
+ /** Polling interval in ms (default: 10000) */
113
+ pollInterval?: number;
114
+ /** Polling fallback delay in ms (default: 60000) */
115
+ pollFallbackDelay?: number;
116
+ /** Chain ID (default: 137 Polygon mainnet) */
117
+ chainId?: number;
118
+ /** Enable debug logging (default: false) */
119
+ debug?: boolean;
120
+ }
121
+ /**
122
+ * CTF Detector
123
+ *
124
+ * Features:
125
+ * - WebSocket for low-latency detection (ERC1155 Transfer events)
126
+ * - Polling for reliability (balance changes)
127
+ * - Deduplication to prevent duplicate events
128
+ * - Hybrid mode for best reliability
129
+ */
130
+ export declare class CTFDetector extends EventEmitter {
131
+ private config;
132
+ private tradingService;
133
+ private ctfClient;
134
+ private realtimeService;
135
+ private rateLimiter;
136
+ private subscription;
137
+ private pollTimer;
138
+ private fallbackTimer;
139
+ private running;
140
+ private lastBalanceSnapshot;
141
+ private processedOperations;
142
+ private lastWebSocketUpdate;
143
+ private websocketConnected;
144
+ constructor(config: CTFDetectorConfig);
145
+ /**
146
+ * Start CTF operation detection
147
+ */
148
+ start(): Promise<void>;
149
+ /**
150
+ * Stop CTF operation detection
151
+ */
152
+ stop(): void;
153
+ /**
154
+ * Start WebSocket subscription
155
+ *
156
+ * Note: Currently poly-sdk RealtimeServiceV2 supports user_order and user_trade events.
157
+ * ERC1155 Transfer events would require additional WebSocket channel support.
158
+ * For now, this is a placeholder for future implementation.
159
+ */
160
+ private startWebSocket;
161
+ /**
162
+ * Wait for WebSocket connection
163
+ */
164
+ private waitForConnection;
165
+ /**
166
+ * Start polling
167
+ */
168
+ private startPolling;
169
+ /**
170
+ * Schedule fallback polling
171
+ *
172
+ * In hybrid mode, start polling after a delay if WebSocket hasn't received updates
173
+ */
174
+ private scheduleFallbackPolling;
175
+ /**
176
+ * Poll for CTF operations by checking balance changes
177
+ */
178
+ private pollForCTFOperations;
179
+ /**
180
+ * Update balance snapshot
181
+ */
182
+ private updateBalanceSnapshot;
183
+ /**
184
+ * Detect split operation
185
+ */
186
+ private detectSplit;
187
+ /**
188
+ * Detect merge operation
189
+ */
190
+ private detectMerge;
191
+ /**
192
+ * Detect redeem operation
193
+ */
194
+ private detectRedeem;
195
+ /**
196
+ * Get statistics
197
+ */
198
+ getStats(): {
199
+ websocketConnected: boolean;
200
+ lastWebSocketUpdate: number;
201
+ lastBalanceCheck: number | null;
202
+ mode: DetectionMode;
203
+ processedOperations: number;
204
+ };
205
+ /**
206
+ * Log message (if debug enabled)
207
+ */
208
+ private log;
209
+ }
210
+ /**
211
+ * Factory function to create CTFDetector
212
+ */
213
+ export declare function createCTFDetector(config: CTFDetectorConfig): CTFDetector;
214
+ export {};
215
+ //# sourceMappingURL=ctf-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ctf-detector.d.ts","sourceRoot":"","sources":["../../../src/services/ctf-detector.ts"],"names":[],"mappings":"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"}