@catalyst-team/poly-sdk 0.3.0 → 0.4.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 (224) hide show
  1. package/README.md +125 -0
  2. package/dist/clients/ctf-client.d.ts +6 -4
  3. package/dist/clients/ctf-client.d.ts.map +1 -1
  4. package/dist/clients/ctf-client.js.map +1 -1
  5. package/dist/clients/data-api.d.ts +19 -6
  6. package/dist/clients/data-api.d.ts.map +1 -1
  7. package/dist/clients/data-api.js +79 -34
  8. package/dist/clients/data-api.js.map +1 -1
  9. package/dist/clients/gamma-api.d.ts +5 -0
  10. package/dist/clients/gamma-api.d.ts.map +1 -1
  11. package/dist/clients/gamma-api.js +2 -0
  12. package/dist/clients/gamma-api.js.map +1 -1
  13. package/dist/core/cache.d.ts +2 -0
  14. package/dist/core/cache.d.ts.map +1 -1
  15. package/dist/core/cache.js +4 -0
  16. package/dist/core/cache.js.map +1 -1
  17. package/dist/core/rate-limiter.d.ts +2 -1
  18. package/dist/core/rate-limiter.d.ts.map +1 -1
  19. package/dist/core/rate-limiter.js +7 -0
  20. package/dist/core/rate-limiter.js.map +1 -1
  21. package/dist/core/types.d.ts +105 -1
  22. package/dist/core/types.d.ts.map +1 -1
  23. package/dist/core/types.js +30 -0
  24. package/dist/core/types.js.map +1 -1
  25. package/dist/index.d.ts +11 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +16 -2
  28. package/dist/index.js.map +1 -1
  29. package/dist/scripts/dip-arb/auto-trade.d.ts +20 -0
  30. package/dist/scripts/dip-arb/auto-trade.d.ts.map +1 -0
  31. package/dist/scripts/dip-arb/auto-trade.js +373 -0
  32. package/dist/scripts/dip-arb/auto-trade.js.map +1 -0
  33. package/dist/scripts/dip-arb/example-basic.d.ts +30 -0
  34. package/dist/scripts/dip-arb/example-basic.d.ts.map +1 -0
  35. package/dist/scripts/dip-arb/example-basic.js +222 -0
  36. package/dist/scripts/dip-arb/example-basic.js.map +1 -0
  37. package/dist/scripts/dip-arb/redeem-positions.d.ts +11 -0
  38. package/dist/scripts/dip-arb/redeem-positions.d.ts.map +1 -0
  39. package/dist/scripts/dip-arb/redeem-positions.js +201 -0
  40. package/dist/scripts/dip-arb/redeem-positions.js.map +1 -0
  41. package/dist/scripts/dip-arb/scan-markets.d.ts +6 -0
  42. package/dist/scripts/dip-arb/scan-markets.d.ts.map +1 -0
  43. package/dist/scripts/dip-arb/scan-markets.js +73 -0
  44. package/dist/scripts/dip-arb/scan-markets.js.map +1 -0
  45. package/dist/services/arbitrage-service.d.ts.map +1 -1
  46. package/dist/services/arbitrage-service.js +14 -4
  47. package/dist/services/arbitrage-service.js.map +1 -1
  48. package/dist/services/binance-service.d.ts +154 -0
  49. package/dist/services/binance-service.d.ts.map +1 -0
  50. package/dist/services/binance-service.js +266 -0
  51. package/dist/services/binance-service.js.map +1 -0
  52. package/dist/services/dip-arb-service.d.ts +209 -0
  53. package/dist/services/dip-arb-service.d.ts.map +1 -0
  54. package/dist/services/dip-arb-service.js +1602 -0
  55. package/dist/services/dip-arb-service.js.map +1 -0
  56. package/dist/services/dip-arb-types.d.ts +553 -0
  57. package/dist/services/dip-arb-types.d.ts.map +1 -0
  58. package/dist/services/dip-arb-types.js +164 -0
  59. package/dist/services/dip-arb-types.js.map +1 -0
  60. package/dist/services/market-service.d.ts +162 -3
  61. package/dist/services/market-service.d.ts.map +1 -1
  62. package/dist/services/market-service.js +427 -14
  63. package/dist/services/market-service.js.map +1 -1
  64. package/dist/services/realtime-service-v2.d.ts +1 -0
  65. package/dist/services/realtime-service-v2.d.ts.map +1 -1
  66. package/dist/services/realtime-service-v2.js +20 -2
  67. package/dist/services/realtime-service-v2.js.map +1 -1
  68. package/dist/services/smart-money-service.d.ts +157 -1
  69. package/dist/services/smart-money-service.d.ts.map +1 -1
  70. package/dist/services/smart-money-service.js +224 -0
  71. package/dist/services/smart-money-service.js.map +1 -1
  72. package/dist/services/trading-service.d.ts +21 -0
  73. package/dist/services/trading-service.d.ts.map +1 -1
  74. package/dist/services/trading-service.js +67 -1
  75. package/dist/services/trading-service.js.map +1 -1
  76. package/dist/services/wallet-service.d.ts +43 -2
  77. package/dist/services/wallet-service.d.ts.map +1 -1
  78. package/dist/services/wallet-service.js +54 -3
  79. package/dist/services/wallet-service.js.map +1 -1
  80. package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
  81. package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
  82. package/dist/src/__tests__/integration/arbitrage-service.integration.test.js +267 -0
  83. package/dist/src/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
  84. package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
  85. package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
  86. package/dist/src/__tests__/integration/bridge-client.integration.test.js +260 -0
  87. package/dist/src/__tests__/integration/bridge-client.integration.test.js.map +1 -0
  88. package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
  89. package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
  90. package/dist/src/__tests__/integration/ctf-client.integration.test.js +234 -0
  91. package/dist/src/__tests__/integration/ctf-client.integration.test.js.map +1 -0
  92. package/dist/src/__tests__/integration/data-api.integration.test.d.ts +9 -0
  93. package/dist/src/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
  94. package/dist/src/__tests__/integration/data-api.integration.test.js +164 -0
  95. package/dist/src/__tests__/integration/data-api.integration.test.js.map +1 -0
  96. package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
  97. package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
  98. package/dist/src/__tests__/integration/gamma-api.integration.test.js +170 -0
  99. package/dist/src/__tests__/integration/gamma-api.integration.test.js.map +1 -0
  100. package/dist/src/__tests__/integration/market-service.integration.test.d.ts +10 -0
  101. package/dist/src/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
  102. package/dist/src/__tests__/integration/market-service.integration.test.js +180 -0
  103. package/dist/src/__tests__/integration/market-service.integration.test.js.map +1 -0
  104. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
  105. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
  106. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
  107. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
  108. package/dist/src/__tests__/integration/trading-service.integration.test.d.ts +10 -0
  109. package/dist/src/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
  110. package/dist/src/__tests__/integration/trading-service.integration.test.js +58 -0
  111. package/dist/src/__tests__/integration/trading-service.integration.test.js.map +1 -0
  112. package/dist/src/__tests__/test-utils.d.ts +92 -0
  113. package/dist/src/__tests__/test-utils.d.ts.map +1 -0
  114. package/dist/src/__tests__/test-utils.js +143 -0
  115. package/dist/src/__tests__/test-utils.js.map +1 -0
  116. package/dist/src/clients/bridge-client.d.ts +388 -0
  117. package/dist/src/clients/bridge-client.d.ts.map +1 -0
  118. package/dist/src/clients/bridge-client.js +587 -0
  119. package/dist/src/clients/bridge-client.js.map +1 -0
  120. package/dist/src/clients/ctf-client.d.ts +475 -0
  121. package/dist/src/clients/ctf-client.d.ts.map +1 -0
  122. package/dist/src/clients/ctf-client.js +915 -0
  123. package/dist/src/clients/ctf-client.js.map +1 -0
  124. package/dist/src/clients/data-api.d.ts +452 -0
  125. package/dist/src/clients/data-api.d.ts.map +1 -0
  126. package/dist/src/clients/data-api.js +637 -0
  127. package/dist/src/clients/data-api.js.map +1 -0
  128. package/dist/src/clients/gamma-api.d.ts +421 -0
  129. package/dist/src/clients/gamma-api.d.ts.map +1 -0
  130. package/dist/src/clients/gamma-api.js +359 -0
  131. package/dist/src/clients/gamma-api.js.map +1 -0
  132. package/dist/src/clients/subgraph.d.ts +196 -0
  133. package/dist/src/clients/subgraph.d.ts.map +1 -0
  134. package/dist/src/clients/subgraph.js +332 -0
  135. package/dist/src/clients/subgraph.js.map +1 -0
  136. package/dist/src/core/cache-adapter-bridge.d.ts +36 -0
  137. package/dist/src/core/cache-adapter-bridge.d.ts.map +1 -0
  138. package/dist/src/core/cache-adapter-bridge.js +81 -0
  139. package/dist/src/core/cache-adapter-bridge.js.map +1 -0
  140. package/dist/src/core/cache.d.ts +43 -0
  141. package/dist/src/core/cache.d.ts.map +1 -0
  142. package/dist/src/core/cache.js +76 -0
  143. package/dist/src/core/cache.js.map +1 -0
  144. package/dist/src/core/errors.d.ts +39 -0
  145. package/dist/src/core/errors.d.ts.map +1 -0
  146. package/dist/src/core/errors.js +86 -0
  147. package/dist/src/core/errors.js.map +1 -0
  148. package/dist/src/core/rate-limiter.d.ts +33 -0
  149. package/dist/src/core/rate-limiter.d.ts.map +1 -0
  150. package/dist/src/core/rate-limiter.js +82 -0
  151. package/dist/src/core/rate-limiter.js.map +1 -0
  152. package/dist/src/core/types.d.ts +506 -0
  153. package/dist/src/core/types.d.ts.map +1 -0
  154. package/dist/src/core/types.js +49 -0
  155. package/dist/src/core/types.js.map +1 -0
  156. package/dist/src/core/types.test.d.ts +7 -0
  157. package/dist/src/core/types.test.d.ts.map +1 -0
  158. package/dist/src/core/types.test.js +122 -0
  159. package/dist/src/core/types.test.js.map +1 -0
  160. package/dist/src/core/unified-cache.d.ts +63 -0
  161. package/dist/src/core/unified-cache.d.ts.map +1 -0
  162. package/dist/src/core/unified-cache.js +114 -0
  163. package/dist/src/core/unified-cache.js.map +1 -0
  164. package/dist/src/index.d.ts +159 -0
  165. package/dist/src/index.d.ts.map +1 -0
  166. package/dist/src/index.js +262 -0
  167. package/dist/src/index.js.map +1 -0
  168. package/dist/src/services/arbitrage-service.d.ts +409 -0
  169. package/dist/src/services/arbitrage-service.d.ts.map +1 -0
  170. package/dist/src/services/arbitrage-service.js +1450 -0
  171. package/dist/src/services/arbitrage-service.js.map +1 -0
  172. package/dist/src/services/authorization-service.d.ts +97 -0
  173. package/dist/src/services/authorization-service.d.ts.map +1 -0
  174. package/dist/src/services/authorization-service.js +279 -0
  175. package/dist/src/services/authorization-service.js.map +1 -0
  176. package/dist/src/services/binance-service.d.ts +154 -0
  177. package/dist/src/services/binance-service.d.ts.map +1 -0
  178. package/dist/src/services/binance-service.js +266 -0
  179. package/dist/src/services/binance-service.js.map +1 -0
  180. package/dist/src/services/dip-arb-service.d.ts +245 -0
  181. package/dist/src/services/dip-arb-service.d.ts.map +1 -0
  182. package/dist/src/services/dip-arb-service.js +1865 -0
  183. package/dist/src/services/dip-arb-service.js.map +1 -0
  184. package/dist/src/services/dip-arb-types.d.ts +553 -0
  185. package/dist/src/services/dip-arb-types.d.ts.map +1 -0
  186. package/dist/src/services/dip-arb-types.js +164 -0
  187. package/dist/src/services/dip-arb-types.js.map +1 -0
  188. package/dist/src/services/market-service.d.ts +370 -0
  189. package/dist/src/services/market-service.d.ts.map +1 -0
  190. package/dist/src/services/market-service.js +1200 -0
  191. package/dist/src/services/market-service.js.map +1 -0
  192. package/dist/src/services/onchain-service.d.ts +309 -0
  193. package/dist/src/services/onchain-service.d.ts.map +1 -0
  194. package/dist/src/services/onchain-service.js +417 -0
  195. package/dist/src/services/onchain-service.js.map +1 -0
  196. package/dist/src/services/realtime-service-v2.d.ts +367 -0
  197. package/dist/src/services/realtime-service-v2.d.ts.map +1 -0
  198. package/dist/src/services/realtime-service-v2.js +876 -0
  199. package/dist/src/services/realtime-service-v2.js.map +1 -0
  200. package/dist/src/services/smart-money-service.d.ts +352 -0
  201. package/dist/src/services/smart-money-service.d.ts.map +1 -0
  202. package/dist/src/services/smart-money-service.js +582 -0
  203. package/dist/src/services/smart-money-service.js.map +1 -0
  204. package/dist/src/services/swap-service.d.ts +217 -0
  205. package/dist/src/services/swap-service.d.ts.map +1 -0
  206. package/dist/src/services/swap-service.js +695 -0
  207. package/dist/src/services/swap-service.js.map +1 -0
  208. package/dist/src/services/trading-service.d.ts +177 -0
  209. package/dist/src/services/trading-service.d.ts.map +1 -0
  210. package/dist/src/services/trading-service.js +422 -0
  211. package/dist/src/services/trading-service.js.map +1 -0
  212. package/dist/src/services/wallet-service.d.ts +316 -0
  213. package/dist/src/services/wallet-service.d.ts.map +1 -0
  214. package/dist/src/services/wallet-service.js +681 -0
  215. package/dist/src/services/wallet-service.js.map +1 -0
  216. package/dist/src/utils/price-utils.d.ts +153 -0
  217. package/dist/src/utils/price-utils.d.ts.map +1 -0
  218. package/dist/src/utils/price-utils.js +236 -0
  219. package/dist/src/utils/price-utils.js.map +1 -0
  220. package/dist/src/utils/price-utils.test.d.ts +5 -0
  221. package/dist/src/utils/price-utils.test.d.ts.map +1 -0
  222. package/dist/src/utils/price-utils.test.js +192 -0
  223. package/dist/src/utils/price-utils.test.js.map +1 -0
  224. package/package.json +3 -3
@@ -0,0 +1,553 @@
1
+ /**
2
+ * Dip Arbitrage Service Types
3
+ *
4
+ * 暴跌套利服务类型定义
5
+ *
6
+ * 策略原理:
7
+ * 在 Polymarket 的 BTC/ETH/SOL/XRP UP/DOWN 短期市场中:
8
+ *
9
+ * 1. 每个市场有一个 "price to beat"(开盘时的 Chainlink 价格)
10
+ * 2. 结算规则:
11
+ * - UP 赢:结束时价格 >= price to beat
12
+ * - DOWN 赢:结束时价格 < price to beat
13
+ *
14
+ * 3. 套利流程:
15
+ * - Leg1:检测暴跌 → 买入暴跌侧
16
+ * - Leg2:等待对冲条件 → 买入另一侧
17
+ * - 利润:总成本 < $1 时获得无风险利润
18
+ */
19
+ /**
20
+ * DipArbService 配置
21
+ */
22
+ export interface DipArbServiceConfig {
23
+ /**
24
+ * 每次交易的份额数量
25
+ * @default 20
26
+ */
27
+ shares?: number;
28
+ /**
29
+ * 对冲价格阈值 (sumTarget)
30
+ * 只有当 leg1Price + leg2Price <= sumTarget 时才执行对冲
31
+ * @default 0.95
32
+ */
33
+ sumTarget?: number;
34
+ /**
35
+ * 暴跌触发阈值
36
+ * 价格相对开盘价下跌超过此比例时触发 Leg1
37
+ * 0.15 = 15%
38
+ * @default 0.15
39
+ */
40
+ dipThreshold?: number;
41
+ /**
42
+ * 交易窗口(分钟)
43
+ * 每轮开始后,只在此时间窗口内触发 Leg1
44
+ * @default 2
45
+ */
46
+ windowMinutes?: number;
47
+ /**
48
+ * 滑动窗口时长(毫秒)
49
+ * 用于检测瞬时暴跌:比较当前价格与 N 毫秒前的价格
50
+ *
51
+ * 重要:这是策略的核心参数!
52
+ * - 3000ms (3秒) 跌 15% = 异常事件 ✅ 触发
53
+ * - 5分钟跌 15% = 趋势下行 ❌ 不触发
54
+ *
55
+ * @default 3000
56
+ */
57
+ slidingWindowMs?: number;
58
+ /**
59
+ * 最大滑点
60
+ * 下单价格 = 市场价 * (1 + maxSlippage)
61
+ * @default 0.02
62
+ */
63
+ maxSlippage?: number;
64
+ /**
65
+ * 最小利润率
66
+ * 只有预期利润率 > minProfitRate 时才生成信号
67
+ * @default 0.03
68
+ */
69
+ minProfitRate?: number;
70
+ /**
71
+ * Leg1 成交后等待 Leg2 的最大时间(秒)
72
+ * 超时后放弃当前轮次
73
+ * @default 300
74
+ */
75
+ leg2TimeoutSeconds?: number;
76
+ /**
77
+ * 启用暴涨检测
78
+ * 当 token 价格暴涨时,买入对手 token(预期均值回归)
79
+ * @default true
80
+ */
81
+ enableSurge?: boolean;
82
+ /**
83
+ * 暴涨触发阈值
84
+ * 价格相对开盘价上涨超过此比例时触发
85
+ * @default 0.15
86
+ */
87
+ surgeThreshold?: number;
88
+ /**
89
+ * 完成双腿后自动合并回 USDC
90
+ * YES + NO tokens → USDC
91
+ * @default true
92
+ */
93
+ autoMerge?: boolean;
94
+ /**
95
+ * 自动执行交易
96
+ * 检测到信号后自动下单
97
+ * @default false
98
+ */
99
+ autoExecute?: boolean;
100
+ /**
101
+ * 执行冷却时间(毫秒)
102
+ * 两次交易之间的最小间隔
103
+ * @default 3000
104
+ */
105
+ executionCooldown?: number;
106
+ /**
107
+ * 拆分订单数量
108
+ * 将 shares 拆分成多笔订单执行
109
+ * 例如: shares=30, splitOrders=3 → 每笔 10 shares
110
+ * @default 1 (不拆分)
111
+ */
112
+ splitOrders?: number;
113
+ /**
114
+ * 拆分订单间隔(毫秒)
115
+ * 多笔订单之间的间隔时间
116
+ * @default 500
117
+ */
118
+ orderIntervalMs?: number;
119
+ /**
120
+ * 启用调试日志
121
+ * @default false
122
+ */
123
+ debug?: boolean;
124
+ /**
125
+ * 自定义日志处理函数
126
+ * 如果设置,所有日志将通过此函数输出
127
+ * @example
128
+ * logHandler: (msg) => {
129
+ * console.log(`[${Date.now()}] ${msg}`);
130
+ * logs.push(msg);
131
+ * }
132
+ */
133
+ logHandler?: (message: string) => void;
134
+ }
135
+ /**
136
+ * 内部配置类型(不包含 logHandler,因为它是纯可选的回调函数)
137
+ */
138
+ export type DipArbConfigInternal = Required<Omit<DipArbServiceConfig, 'logHandler'>> & {
139
+ logHandler?: (message: string) => void;
140
+ };
141
+ /**
142
+ * 默认配置
143
+ */
144
+ export declare const DEFAULT_DIP_ARB_CONFIG: DipArbConfigInternal;
145
+ /** 支持的底层资产 */
146
+ export type DipArbUnderlying = 'BTC' | 'ETH' | 'SOL' | 'XRP';
147
+ /** 市场时长 */
148
+ export type DipArbDuration = 5 | 15;
149
+ /**
150
+ * 市场配置
151
+ */
152
+ export interface DipArbMarketConfig {
153
+ /** 市场名称(用于日志) */
154
+ name: string;
155
+ /** 市场 slug (e.g., 'btc-updown-15m-1767165300') */
156
+ slug: string;
157
+ /** Condition ID */
158
+ conditionId: string;
159
+ /** UP token ID */
160
+ upTokenId: string;
161
+ /** DOWN token ID */
162
+ downTokenId: string;
163
+ /** 底层资产 */
164
+ underlying: DipArbUnderlying;
165
+ /** 市场时长(分钟) */
166
+ durationMinutes: DipArbDuration;
167
+ /** 市场结束时间 */
168
+ endTime: Date;
169
+ }
170
+ /** 轮次阶段 */
171
+ export type DipArbPhase = 'waiting' | 'leg1_filled' | 'completed' | 'expired';
172
+ /** 交易侧 */
173
+ export type DipArbSide = 'UP' | 'DOWN';
174
+ /**
175
+ * Leg 信息
176
+ */
177
+ export interface DipArbLegInfo {
178
+ /** 买入侧 */
179
+ side: DipArbSide;
180
+ /** 成交价格 */
181
+ price: number;
182
+ /** 份额数量 */
183
+ shares: number;
184
+ /** 成交时间 */
185
+ timestamp: number;
186
+ /** Token ID */
187
+ tokenId: string;
188
+ }
189
+ /**
190
+ * 轮次状态
191
+ */
192
+ export interface DipArbRoundState {
193
+ /** 轮次 ID */
194
+ roundId: string;
195
+ /** 轮次开始时间 (Unix ms) */
196
+ startTime: number;
197
+ /** 轮次结束时间 (Unix ms) */
198
+ endTime: number;
199
+ /** Price to Beat - 开盘时的底层资产价格(Chainlink) */
200
+ priceToBeat: number;
201
+ /** 开盘时的 token 价格 */
202
+ openPrices: {
203
+ up: number;
204
+ down: number;
205
+ };
206
+ /** 当前阶段 */
207
+ phase: DipArbPhase;
208
+ /** Leg1 信息(如果已成交) */
209
+ leg1?: DipArbLegInfo;
210
+ /** Leg2 信息(如果已成交) */
211
+ leg2?: DipArbLegInfo;
212
+ /** 总成本 */
213
+ totalCost?: number;
214
+ /** 实际利润 */
215
+ profit?: number;
216
+ }
217
+ /**
218
+ * Leg1 信号
219
+ */
220
+ export interface DipArbLeg1Signal {
221
+ type: 'leg1';
222
+ /** 轮次 ID */
223
+ roundId: string;
224
+ /** 买入侧 */
225
+ dipSide: DipArbSide;
226
+ /** 当前价格 */
227
+ currentPrice: number;
228
+ /** 开盘价格 */
229
+ openPrice: number;
230
+ /** 下跌/上涨幅度 */
231
+ dropPercent: number;
232
+ /** 目标价格(包含滑点) */
233
+ targetPrice: number;
234
+ /** 份额数量 */
235
+ shares: number;
236
+ /** Token ID */
237
+ tokenId: string;
238
+ /** 对手侧当前 ask 价格 */
239
+ oppositeAsk: number;
240
+ /** 预估总成本 */
241
+ estimatedTotalCost: number;
242
+ /** 预估利润率 */
243
+ estimatedProfitRate: number;
244
+ /** 信号来源 */
245
+ source: 'dip' | 'surge' | 'mispricing';
246
+ /** BTC 信息(用于定价偏差检测) */
247
+ btcInfo?: {
248
+ btcPrice: number;
249
+ priceToBeat: number;
250
+ btcChangePercent: number;
251
+ estimatedWinRate: number;
252
+ };
253
+ }
254
+ /**
255
+ * Leg2 信号
256
+ */
257
+ export interface DipArbLeg2Signal {
258
+ type: 'leg2';
259
+ /** 轮次 ID */
260
+ roundId: string;
261
+ /** 对冲侧 */
262
+ hedgeSide: DipArbSide;
263
+ /** Leg1 信息 */
264
+ leg1: DipArbLegInfo;
265
+ /** 当前价格 */
266
+ currentPrice: number;
267
+ /** 目标价格(包含滑点) */
268
+ targetPrice: number;
269
+ /** 总成本 (leg1 + leg2) */
270
+ totalCost: number;
271
+ /** 预期利润率 */
272
+ expectedProfitRate: number;
273
+ /** 份额数量 */
274
+ shares: number;
275
+ /** Token ID */
276
+ tokenId: string;
277
+ }
278
+ /** 信号类型 */
279
+ export type DipArbSignal = DipArbLeg1Signal | DipArbLeg2Signal;
280
+ /**
281
+ * 执行结果
282
+ */
283
+ export interface DipArbExecutionResult {
284
+ /** 是否成功 */
285
+ success: boolean;
286
+ /** 执行的 leg */
287
+ leg: 'leg1' | 'leg2' | 'merge' | 'exit';
288
+ /** 轮次 ID */
289
+ roundId: string;
290
+ /** 交易侧 */
291
+ side?: DipArbSide;
292
+ /** 成交价格 */
293
+ price?: number;
294
+ /** 成交份额 */
295
+ shares?: number;
296
+ /** 订单 ID */
297
+ orderId?: string;
298
+ /** 交易哈希(merge 操作) */
299
+ txHash?: string;
300
+ /** 错误信息 */
301
+ error?: string;
302
+ /** 执行时间(毫秒) */
303
+ executionTimeMs: number;
304
+ }
305
+ /**
306
+ * 轮次完成结果
307
+ */
308
+ export interface DipArbRoundResult {
309
+ /** 轮次 ID */
310
+ roundId: string;
311
+ /** 状态 */
312
+ status: 'completed' | 'expired' | 'partial';
313
+ /** Leg1 信息 */
314
+ leg1?: DipArbLegInfo;
315
+ /** Leg2 信息 */
316
+ leg2?: DipArbLegInfo;
317
+ /** 总成本 */
318
+ totalCost?: number;
319
+ /** 实际利润 */
320
+ profit?: number;
321
+ /** 利润率 */
322
+ profitRate?: number;
323
+ /** 是否已合并 */
324
+ merged: boolean;
325
+ /** 合并交易哈希 */
326
+ mergeTxHash?: string;
327
+ /** Leg1 退出结果(Leg2 超时时) */
328
+ exitResult?: DipArbExecutionResult | null;
329
+ }
330
+ /**
331
+ * 服务统计
332
+ */
333
+ export interface DipArbStats {
334
+ /** 开始时间 */
335
+ startTime: number;
336
+ /** 运行时长(毫秒) */
337
+ runningTimeMs: number;
338
+ /** 监控的轮次数 */
339
+ roundsMonitored: number;
340
+ /** 完成的轮次数 */
341
+ roundsCompleted: number;
342
+ /** 成功的轮次数(双腿完成) */
343
+ roundsSuccessful: number;
344
+ /** 过期的轮次数 */
345
+ roundsExpired: number;
346
+ /** 检测到的信号数 */
347
+ signalsDetected: number;
348
+ /** Leg1 成交次数 */
349
+ leg1Filled: number;
350
+ /** Leg2 成交次数 */
351
+ leg2Filled: number;
352
+ /** 总花费 (USDC) */
353
+ totalSpent: number;
354
+ /** 总收益 (USDC) */
355
+ totalProfit: number;
356
+ /** 平均利润率 */
357
+ avgProfitRate: number;
358
+ /** 当前轮次信息 */
359
+ currentRound?: {
360
+ roundId: string;
361
+ phase: DipArbPhase;
362
+ priceToBeat: number;
363
+ leg1?: {
364
+ side: DipArbSide;
365
+ price: number;
366
+ };
367
+ };
368
+ }
369
+ /**
370
+ * 新轮次事件数据
371
+ */
372
+ export interface DipArbNewRoundEvent {
373
+ roundId: string;
374
+ priceToBeat: number;
375
+ upOpen: number;
376
+ downOpen: number;
377
+ startTime: number;
378
+ endTime: number;
379
+ }
380
+ /**
381
+ * 价格更新事件数据
382
+ */
383
+ export interface DipArbPriceUpdateEvent {
384
+ underlying: DipArbUnderlying;
385
+ value: number;
386
+ priceToBeat: number;
387
+ changePercent: number;
388
+ }
389
+ /**
390
+ * 服务事件
391
+ */
392
+ export interface DipArbServiceEvents {
393
+ started: (market: DipArbMarketConfig) => void;
394
+ stopped: () => void;
395
+ newRound: (event: DipArbNewRoundEvent) => void;
396
+ signal: (signal: DipArbSignal) => void;
397
+ execution: (result: DipArbExecutionResult) => void;
398
+ roundComplete: (result: DipArbRoundResult) => void;
399
+ priceUpdate: (event: DipArbPriceUpdateEvent) => void;
400
+ error: (error: Error) => void;
401
+ }
402
+ /**
403
+ * 市场扫描选项
404
+ */
405
+ export interface DipArbScanOptions {
406
+ /** 筛选底层资产 */
407
+ coin?: DipArbUnderlying | 'all';
408
+ /** 筛选时长 */
409
+ duration?: '5m' | '15m' | 'all';
410
+ /** 距离结束的最小分钟数 */
411
+ minMinutesUntilEnd?: number;
412
+ /** 距离结束的最大分钟数 */
413
+ maxMinutesUntilEnd?: number;
414
+ /** 返回数量限制 */
415
+ limit?: number;
416
+ }
417
+ /**
418
+ * 自动启动选项
419
+ */
420
+ export interface DipArbFindAndStartOptions {
421
+ /** 偏好的底层资产 */
422
+ coin?: DipArbUnderlying;
423
+ /** 偏好的时长 */
424
+ preferDuration?: '5m' | '15m';
425
+ }
426
+ /**
427
+ * 自动轮换配置
428
+ */
429
+ export interface DipArbAutoRotateConfig {
430
+ /** 是否启用自动轮换 */
431
+ enabled: boolean;
432
+ /** 监控的底层资产列表 */
433
+ underlyings: DipArbUnderlying[];
434
+ /** 偏好的时长 */
435
+ duration: '5m' | '15m';
436
+ /** 市场结束前多少分钟开始寻找下一个市场 */
437
+ preloadMinutes?: number;
438
+ /** 市场结束后自动结算 */
439
+ autoSettle?: boolean;
440
+ /** 结算策略: 'redeem' 赎回 (等结算) 或 'sell' 立即卖出 */
441
+ settleStrategy?: 'redeem' | 'sell';
442
+ /** Redeem 等待时间(分钟)- 市场结束后等待 Oracle 结算的时间,默认 5 分钟 */
443
+ redeemWaitMinutes?: number;
444
+ /** Redeem 重试间隔(秒)- 每次检查 resolution 的间隔,默认 30 秒 */
445
+ redeemRetryIntervalSeconds?: number;
446
+ }
447
+ /**
448
+ * 默认自动轮换配置
449
+ */
450
+ export declare const DEFAULT_AUTO_ROTATE_CONFIG: Required<DipArbAutoRotateConfig>;
451
+ /**
452
+ * 结算结果
453
+ */
454
+ export interface DipArbSettleResult {
455
+ /** 是否成功 */
456
+ success: boolean;
457
+ /** 结算策略 */
458
+ strategy: 'redeem' | 'sell';
459
+ /** 市场信息 */
460
+ market?: DipArbMarketConfig;
461
+ /** UP token 数量 */
462
+ upBalance?: number;
463
+ /** DOWN token 数量 */
464
+ downBalance?: number;
465
+ /** 收到的金额 (USDC) */
466
+ amountReceived?: number;
467
+ /** 交易哈希 */
468
+ txHash?: string;
469
+ /** 错误信息 */
470
+ error?: string;
471
+ /** 执行时间(毫秒) */
472
+ executionTimeMs: number;
473
+ }
474
+ /**
475
+ * 待赎回的仓位
476
+ * 用于跟踪市场结束后需要赎回的仓位
477
+ */
478
+ export interface DipArbPendingRedemption {
479
+ /** 市场配置 */
480
+ market: DipArbMarketConfig;
481
+ /** 轮次状态(包含持仓信息) */
482
+ round: DipArbRoundState;
483
+ /** 市场结束时间 */
484
+ marketEndTime: number;
485
+ /** 添加到队列的时间 */
486
+ addedAt: number;
487
+ /** 重试次数 */
488
+ retryCount: number;
489
+ /** 最后一次尝试时间 */
490
+ lastRetryAt?: number;
491
+ }
492
+ /**
493
+ * 市场轮换事件
494
+ */
495
+ export interface DipArbRotateEvent {
496
+ /** 旧市场 condition ID */
497
+ previousMarket?: string;
498
+ /** 新市场 condition ID */
499
+ newMarket: string;
500
+ /** 轮换原因 */
501
+ reason: 'marketEnded' | 'manual' | 'error';
502
+ /** 时间戳 */
503
+ timestamp: number;
504
+ /** 结算结果(如果有) */
505
+ settleResult?: DipArbSettleResult;
506
+ }
507
+ /**
508
+ * 创建初始统计
509
+ */
510
+ export declare function createDipArbInitialStats(): DipArbStats;
511
+ /**
512
+ * 创建新轮次状态
513
+ */
514
+ export declare function createDipArbRoundState(roundId: string, priceToBeat: number, upPrice: number, downPrice: number, durationMinutes?: number): DipArbRoundState;
515
+ /**
516
+ * 计算利润率
517
+ */
518
+ export declare function calculateDipArbProfitRate(totalCost: number): number;
519
+ /**
520
+ * 计算基于底层资产价格变化的"真实"胜率
521
+ *
522
+ * @param currentPrice - 当前价格
523
+ * @param priceToBeat - 开盘价格
524
+ * @returns UP 的真实胜率估计 (0-1)
525
+ */
526
+ export declare function estimateUpWinRate(currentPrice: number, priceToBeat: number): number;
527
+ /**
528
+ * 检测定价偏差
529
+ *
530
+ * @param tokenPrice - token 当前价格(隐含胜率)
531
+ * @param estimatedWinRate - 基于价格估计的真实胜率
532
+ * @returns 偏差程度(正数 = 被低估,负数 = 被高估)
533
+ */
534
+ export declare function detectMispricing(tokenPrice: number, estimatedWinRate: number): number;
535
+ /**
536
+ * 从 slug 解析底层资产
537
+ * e.g., 'btc-updown-15m-1767165300' → 'BTC'
538
+ */
539
+ export declare function parseUnderlyingFromSlug(slug: string): DipArbUnderlying;
540
+ /**
541
+ * 从 slug 解析时长
542
+ * e.g., 'btc-updown-15m-1767165300' → 15
543
+ */
544
+ export declare function parseDurationFromSlug(slug: string): DipArbDuration;
545
+ /**
546
+ * 类型守卫:检查是否为 Leg1 信号
547
+ */
548
+ export declare function isDipArbLeg1Signal(signal: DipArbSignal): signal is DipArbLeg1Signal;
549
+ /**
550
+ * 类型守卫:检查是否为 Leg2 信号
551
+ */
552
+ export declare function isDipArbLeg2Signal(signal: DipArbSignal): signal is DipArbLeg2Signal;
553
+ //# sourceMappingURL=dip-arb-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dip-arb-types.d.ts","sourceRoot":"","sources":["../../../src/services/dip-arb-types.ts"],"names":[],"mappings":"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"}