@catalyst-team/poly-sdk 0.2.1 → 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 (277) hide show
  1. package/README.md +665 -807
  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/ctf-client.d.ts +6 -4
  26. package/dist/clients/ctf-client.d.ts.map +1 -1
  27. package/dist/clients/ctf-client.js.map +1 -1
  28. package/dist/clients/data-api.d.ts +333 -15
  29. package/dist/clients/data-api.d.ts.map +1 -1
  30. package/dist/clients/data-api.js +398 -26
  31. package/dist/clients/data-api.js.map +1 -1
  32. package/dist/clients/gamma-api.d.ts +5 -0
  33. package/dist/clients/gamma-api.d.ts.map +1 -1
  34. package/dist/clients/gamma-api.js +2 -0
  35. package/dist/clients/gamma-api.js.map +1 -1
  36. package/dist/clients/subgraph.d.ts +196 -0
  37. package/dist/clients/subgraph.d.ts.map +1 -0
  38. package/dist/clients/subgraph.js +332 -0
  39. package/dist/clients/subgraph.js.map +1 -0
  40. package/dist/clients/websocket-manager.d.ts +3 -0
  41. package/dist/clients/websocket-manager.d.ts.map +1 -1
  42. package/dist/clients/websocket-manager.js +10 -3
  43. package/dist/clients/websocket-manager.js.map +1 -1
  44. package/dist/core/cache.d.ts +3 -0
  45. package/dist/core/cache.d.ts.map +1 -1
  46. package/dist/core/cache.js +5 -0
  47. package/dist/core/cache.js.map +1 -1
  48. package/dist/core/errors.d.ts +2 -1
  49. package/dist/core/errors.d.ts.map +1 -1
  50. package/dist/core/errors.js +2 -0
  51. package/dist/core/errors.js.map +1 -1
  52. package/dist/core/rate-limiter.d.ts +3 -1
  53. package/dist/core/rate-limiter.d.ts.map +1 -1
  54. package/dist/core/rate-limiter.js +12 -0
  55. package/dist/core/rate-limiter.js.map +1 -1
  56. package/dist/core/types.d.ts +205 -13
  57. package/dist/core/types.d.ts.map +1 -1
  58. package/dist/core/types.js +30 -0
  59. package/dist/core/types.js.map +1 -1
  60. package/dist/core/types.test.d.ts +7 -0
  61. package/dist/core/types.test.d.ts.map +1 -0
  62. package/dist/core/types.test.js +122 -0
  63. package/dist/core/types.test.js.map +1 -0
  64. package/dist/index.d.ts +84 -18
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +139 -132
  67. package/dist/index.js.map +1 -1
  68. package/dist/scripts/dip-arb/auto-trade.d.ts +20 -0
  69. package/dist/scripts/dip-arb/auto-trade.d.ts.map +1 -0
  70. package/dist/scripts/dip-arb/auto-trade.js +373 -0
  71. package/dist/scripts/dip-arb/auto-trade.js.map +1 -0
  72. package/dist/scripts/dip-arb/example-basic.d.ts +30 -0
  73. package/dist/scripts/dip-arb/example-basic.d.ts.map +1 -0
  74. package/dist/scripts/dip-arb/example-basic.js +222 -0
  75. package/dist/scripts/dip-arb/example-basic.js.map +1 -0
  76. package/dist/scripts/dip-arb/redeem-positions.d.ts +11 -0
  77. package/dist/scripts/dip-arb/redeem-positions.d.ts.map +1 -0
  78. package/dist/scripts/dip-arb/redeem-positions.js +201 -0
  79. package/dist/scripts/dip-arb/redeem-positions.js.map +1 -0
  80. package/dist/scripts/dip-arb/scan-markets.d.ts +6 -0
  81. package/dist/scripts/dip-arb/scan-markets.d.ts.map +1 -0
  82. package/dist/scripts/dip-arb/scan-markets.js +73 -0
  83. package/dist/scripts/dip-arb/scan-markets.js.map +1 -0
  84. package/dist/services/arbitrage-service.d.ts +3 -2
  85. package/dist/services/arbitrage-service.d.ts.map +1 -1
  86. package/dist/services/arbitrage-service.js +71 -43
  87. package/dist/services/arbitrage-service.js.map +1 -1
  88. package/dist/services/binance-service.d.ts +154 -0
  89. package/dist/services/binance-service.d.ts.map +1 -0
  90. package/dist/services/binance-service.js +266 -0
  91. package/dist/services/binance-service.js.map +1 -0
  92. package/dist/services/dip-arb-service.d.ts +209 -0
  93. package/dist/services/dip-arb-service.d.ts.map +1 -0
  94. package/dist/services/dip-arb-service.js +1602 -0
  95. package/dist/services/dip-arb-service.js.map +1 -0
  96. package/dist/services/dip-arb-types.d.ts +553 -0
  97. package/dist/services/dip-arb-types.d.ts.map +1 -0
  98. package/dist/services/dip-arb-types.js +164 -0
  99. package/dist/services/dip-arb-types.js.map +1 -0
  100. package/dist/services/market-service.d.ts +267 -8
  101. package/dist/services/market-service.d.ts.map +1 -1
  102. package/dist/services/market-service.js +771 -42
  103. package/dist/services/market-service.js.map +1 -1
  104. package/dist/services/onchain-service.d.ts +309 -0
  105. package/dist/services/onchain-service.d.ts.map +1 -0
  106. package/dist/services/onchain-service.js +417 -0
  107. package/dist/services/onchain-service.js.map +1 -0
  108. package/dist/services/realtime-service-v2.d.ts +362 -0
  109. package/dist/services/realtime-service-v2.d.ts.map +1 -0
  110. package/dist/services/realtime-service-v2.js +858 -0
  111. package/dist/services/realtime-service-v2.js.map +1 -0
  112. package/dist/services/realtime-service.d.ts +17 -17
  113. package/dist/services/realtime-service.d.ts.map +1 -1
  114. package/dist/services/realtime-service.js +91 -59
  115. package/dist/services/realtime-service.js.map +1 -1
  116. package/dist/services/smart-money-service.d.ts +352 -0
  117. package/dist/services/smart-money-service.d.ts.map +1 -0
  118. package/dist/services/smart-money-service.js +582 -0
  119. package/dist/services/smart-money-service.js.map +1 -0
  120. package/dist/services/trading-service.d.ts +177 -0
  121. package/dist/services/trading-service.d.ts.map +1 -0
  122. package/dist/services/trading-service.js +422 -0
  123. package/dist/services/trading-service.js.map +1 -0
  124. package/dist/services/wallet-service.d.ts +225 -3
  125. package/dist/services/wallet-service.d.ts.map +1 -1
  126. package/dist/services/wallet-service.js +511 -3
  127. package/dist/services/wallet-service.js.map +1 -1
  128. package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
  129. package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
  130. package/dist/src/__tests__/integration/arbitrage-service.integration.test.js +267 -0
  131. package/dist/src/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
  132. package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
  133. package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
  134. package/dist/src/__tests__/integration/bridge-client.integration.test.js +260 -0
  135. package/dist/src/__tests__/integration/bridge-client.integration.test.js.map +1 -0
  136. package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
  137. package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
  138. package/dist/src/__tests__/integration/ctf-client.integration.test.js +234 -0
  139. package/dist/src/__tests__/integration/ctf-client.integration.test.js.map +1 -0
  140. package/dist/src/__tests__/integration/data-api.integration.test.d.ts +9 -0
  141. package/dist/src/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
  142. package/dist/src/__tests__/integration/data-api.integration.test.js +164 -0
  143. package/dist/src/__tests__/integration/data-api.integration.test.js.map +1 -0
  144. package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
  145. package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
  146. package/dist/src/__tests__/integration/gamma-api.integration.test.js +170 -0
  147. package/dist/src/__tests__/integration/gamma-api.integration.test.js.map +1 -0
  148. package/dist/src/__tests__/integration/market-service.integration.test.d.ts +10 -0
  149. package/dist/src/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
  150. package/dist/src/__tests__/integration/market-service.integration.test.js +180 -0
  151. package/dist/src/__tests__/integration/market-service.integration.test.js.map +1 -0
  152. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
  153. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
  154. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
  155. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
  156. package/dist/src/__tests__/integration/trading-service.integration.test.d.ts +10 -0
  157. package/dist/src/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
  158. package/dist/src/__tests__/integration/trading-service.integration.test.js +58 -0
  159. package/dist/src/__tests__/integration/trading-service.integration.test.js.map +1 -0
  160. package/dist/src/__tests__/test-utils.d.ts +92 -0
  161. package/dist/src/__tests__/test-utils.d.ts.map +1 -0
  162. package/dist/src/__tests__/test-utils.js +143 -0
  163. package/dist/src/__tests__/test-utils.js.map +1 -0
  164. package/dist/src/clients/bridge-client.d.ts +388 -0
  165. package/dist/src/clients/bridge-client.d.ts.map +1 -0
  166. package/dist/src/clients/bridge-client.js +587 -0
  167. package/dist/src/clients/bridge-client.js.map +1 -0
  168. package/dist/src/clients/ctf-client.d.ts +475 -0
  169. package/dist/src/clients/ctf-client.d.ts.map +1 -0
  170. package/dist/src/clients/ctf-client.js +915 -0
  171. package/dist/src/clients/ctf-client.js.map +1 -0
  172. package/dist/src/clients/data-api.d.ts +452 -0
  173. package/dist/src/clients/data-api.d.ts.map +1 -0
  174. package/dist/src/clients/data-api.js +637 -0
  175. package/dist/src/clients/data-api.js.map +1 -0
  176. package/dist/src/clients/gamma-api.d.ts +421 -0
  177. package/dist/src/clients/gamma-api.d.ts.map +1 -0
  178. package/dist/src/clients/gamma-api.js +359 -0
  179. package/dist/src/clients/gamma-api.js.map +1 -0
  180. package/dist/src/clients/subgraph.d.ts +196 -0
  181. package/dist/src/clients/subgraph.d.ts.map +1 -0
  182. package/dist/src/clients/subgraph.js +332 -0
  183. package/dist/src/clients/subgraph.js.map +1 -0
  184. package/dist/src/core/cache-adapter-bridge.d.ts +36 -0
  185. package/dist/src/core/cache-adapter-bridge.d.ts.map +1 -0
  186. package/dist/src/core/cache-adapter-bridge.js +81 -0
  187. package/dist/src/core/cache-adapter-bridge.js.map +1 -0
  188. package/dist/src/core/cache.d.ts +43 -0
  189. package/dist/src/core/cache.d.ts.map +1 -0
  190. package/dist/src/core/cache.js +76 -0
  191. package/dist/src/core/cache.js.map +1 -0
  192. package/dist/src/core/errors.d.ts +39 -0
  193. package/dist/src/core/errors.d.ts.map +1 -0
  194. package/dist/src/core/errors.js +86 -0
  195. package/dist/src/core/errors.js.map +1 -0
  196. package/dist/src/core/rate-limiter.d.ts +33 -0
  197. package/dist/src/core/rate-limiter.d.ts.map +1 -0
  198. package/dist/src/core/rate-limiter.js +82 -0
  199. package/dist/src/core/rate-limiter.js.map +1 -0
  200. package/dist/src/core/types.d.ts +506 -0
  201. package/dist/src/core/types.d.ts.map +1 -0
  202. package/dist/src/core/types.js +49 -0
  203. package/dist/src/core/types.js.map +1 -0
  204. package/dist/src/core/types.test.d.ts +7 -0
  205. package/dist/src/core/types.test.d.ts.map +1 -0
  206. package/dist/src/core/types.test.js +122 -0
  207. package/dist/src/core/types.test.js.map +1 -0
  208. package/dist/src/core/unified-cache.d.ts +63 -0
  209. package/dist/src/core/unified-cache.d.ts.map +1 -0
  210. package/dist/src/core/unified-cache.js +114 -0
  211. package/dist/src/core/unified-cache.js.map +1 -0
  212. package/dist/src/index.d.ts +159 -0
  213. package/dist/src/index.d.ts.map +1 -0
  214. package/dist/src/index.js +262 -0
  215. package/dist/src/index.js.map +1 -0
  216. package/dist/src/services/arbitrage-service.d.ts +409 -0
  217. package/dist/src/services/arbitrage-service.d.ts.map +1 -0
  218. package/dist/src/services/arbitrage-service.js +1450 -0
  219. package/dist/src/services/arbitrage-service.js.map +1 -0
  220. package/dist/src/services/authorization-service.d.ts +97 -0
  221. package/dist/src/services/authorization-service.d.ts.map +1 -0
  222. package/dist/src/services/authorization-service.js +279 -0
  223. package/dist/src/services/authorization-service.js.map +1 -0
  224. package/dist/src/services/binance-service.d.ts +154 -0
  225. package/dist/src/services/binance-service.d.ts.map +1 -0
  226. package/dist/src/services/binance-service.js +266 -0
  227. package/dist/src/services/binance-service.js.map +1 -0
  228. package/dist/src/services/dip-arb-service.d.ts +245 -0
  229. package/dist/src/services/dip-arb-service.d.ts.map +1 -0
  230. package/dist/src/services/dip-arb-service.js +1865 -0
  231. package/dist/src/services/dip-arb-service.js.map +1 -0
  232. package/dist/src/services/dip-arb-types.d.ts +553 -0
  233. package/dist/src/services/dip-arb-types.d.ts.map +1 -0
  234. package/dist/src/services/dip-arb-types.js +164 -0
  235. package/dist/src/services/dip-arb-types.js.map +1 -0
  236. package/dist/src/services/market-service.d.ts +370 -0
  237. package/dist/src/services/market-service.d.ts.map +1 -0
  238. package/dist/src/services/market-service.js +1200 -0
  239. package/dist/src/services/market-service.js.map +1 -0
  240. package/dist/src/services/onchain-service.d.ts +309 -0
  241. package/dist/src/services/onchain-service.d.ts.map +1 -0
  242. package/dist/src/services/onchain-service.js +417 -0
  243. package/dist/src/services/onchain-service.js.map +1 -0
  244. package/dist/src/services/realtime-service-v2.d.ts +367 -0
  245. package/dist/src/services/realtime-service-v2.d.ts.map +1 -0
  246. package/dist/src/services/realtime-service-v2.js +876 -0
  247. package/dist/src/services/realtime-service-v2.js.map +1 -0
  248. package/dist/src/services/smart-money-service.d.ts +352 -0
  249. package/dist/src/services/smart-money-service.d.ts.map +1 -0
  250. package/dist/src/services/smart-money-service.js +582 -0
  251. package/dist/src/services/smart-money-service.js.map +1 -0
  252. package/dist/src/services/swap-service.d.ts +217 -0
  253. package/dist/src/services/swap-service.d.ts.map +1 -0
  254. package/dist/src/services/swap-service.js +695 -0
  255. package/dist/src/services/swap-service.js.map +1 -0
  256. package/dist/src/services/trading-service.d.ts +177 -0
  257. package/dist/src/services/trading-service.d.ts.map +1 -0
  258. package/dist/src/services/trading-service.js +422 -0
  259. package/dist/src/services/trading-service.js.map +1 -0
  260. package/dist/src/services/wallet-service.d.ts +316 -0
  261. package/dist/src/services/wallet-service.d.ts.map +1 -0
  262. package/dist/src/services/wallet-service.js +681 -0
  263. package/dist/src/services/wallet-service.js.map +1 -0
  264. package/dist/src/utils/price-utils.d.ts +153 -0
  265. package/dist/src/utils/price-utils.d.ts.map +1 -0
  266. package/dist/src/utils/price-utils.js +236 -0
  267. package/dist/src/utils/price-utils.js.map +1 -0
  268. package/dist/src/utils/price-utils.test.d.ts +5 -0
  269. package/dist/src/utils/price-utils.test.d.ts.map +1 -0
  270. package/dist/src/utils/price-utils.test.js +192 -0
  271. package/dist/src/utils/price-utils.test.js.map +1 -0
  272. package/dist/utils/price-utils.test.d.ts +5 -0
  273. package/dist/utils/price-utils.test.d.ts.map +1 -0
  274. package/dist/utils/price-utils.test.js +192 -0
  275. package/dist/utils/price-utils.test.js.map +1 -0
  276. package/package.json +6 -5
  277. package/README.en.md +0 -502
@@ -0,0 +1,475 @@
1
+ /**
2
+ * CTF (Conditional Token Framework) Client
3
+ *
4
+ * Provides on-chain operations for Polymarket's conditional tokens:
5
+ * - Split: USDC → YES + NO token pair
6
+ * - Merge: YES + NO → USDC
7
+ * - Redeem: Winning tokens → USDC (after market resolution)
8
+ *
9
+ * ⚠️ CRITICAL: Polymarket CTF uses USDC.e (bridged), NOT native USDC!
10
+ *
11
+ * | Token | Address | CTF Compatible |
12
+ * |---------------|--------------------------------------------|-----------------
13
+ * | USDC.e | 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 | ✅ Yes |
14
+ * | Native USDC | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | ❌ No |
15
+ *
16
+ * Common Mistake:
17
+ * - Your wallet has native USDC but CTF operations fail
18
+ * - Solution: Use SwapService.transferUsdcE() or swap native USDC to USDC.e
19
+ *
20
+ * Based on: docs/01-product-research/06-poly-sdk/05-ctf-integration-plan.md
21
+ *
22
+ * Contract: Gnosis Conditional Tokens on Polygon
23
+ * https://docs.polymarket.com/developers/CTF/overview
24
+ */
25
+ import { BigNumber } from 'ethers';
26
+ export declare const CTF_CONTRACT = "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045";
27
+ /**
28
+ * USDC.e (Bridged USDC) - The ONLY USDC accepted by Polymarket CTF
29
+ *
30
+ * ⚠️ WARNING: This is NOT native USDC (0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359)
31
+ *
32
+ * If your wallet has native USDC but CTF operations fail with "Insufficient USDC balance",
33
+ * you need to swap your native USDC to USDC.e first using:
34
+ * - SwapService.swap('USDC', 'USDC_E', amount)
35
+ * - Or transfer USDC.e using SwapService.transferUsdcE()
36
+ */
37
+ export declare const USDC_CONTRACT = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174";
38
+ /** Native USDC on Polygon - NOT compatible with CTF */
39
+ export declare const NATIVE_USDC_CONTRACT = "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359";
40
+ export declare const NEG_RISK_CTF_EXCHANGE = "0xC5d563A36AE78145C45a50134d48A1215220f80a";
41
+ export declare const NEG_RISK_ADAPTER = "0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296";
42
+ export declare const USDC_DECIMALS = 6;
43
+ export interface CTFConfig {
44
+ /** Private key for signing transactions */
45
+ privateKey: string;
46
+ /** RPC URL (default: Polygon mainnet) */
47
+ rpcUrl?: string;
48
+ /** Chain ID (default: 137 for Polygon) */
49
+ chainId?: number;
50
+ /** Gas price multiplier (default: 1.2) */
51
+ gasPriceMultiplier?: number;
52
+ /** Transaction confirmation blocks (default: 1) */
53
+ confirmations?: number;
54
+ /** Transaction timeout in ms (default: 60000) */
55
+ txTimeout?: number;
56
+ }
57
+ export interface GasEstimate {
58
+ /** Estimated gas units */
59
+ gasUnits: string;
60
+ /** Gas price in gwei */
61
+ gasPriceGwei: string;
62
+ /** Estimated cost in MATIC */
63
+ costMatic: string;
64
+ /** Estimated cost in USDC (at current MATIC price) */
65
+ costUsdc: string;
66
+ /** MATIC/USDC price used */
67
+ maticPrice: number;
68
+ }
69
+ export interface TransactionStatus {
70
+ txHash: string;
71
+ status: 'pending' | 'confirmed' | 'failed' | 'reverted';
72
+ confirmations: number;
73
+ blockNumber?: number;
74
+ gasUsed?: string;
75
+ effectiveGasPrice?: string;
76
+ errorReason?: string;
77
+ }
78
+ /** Common revert reasons */
79
+ export declare enum RevertReason {
80
+ INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
81
+ INSUFFICIENT_ALLOWANCE = "INSUFFICIENT_ALLOWANCE",
82
+ CONDITION_NOT_RESOLVED = "CONDITION_NOT_RESOLVED",
83
+ INVALID_PARTITION = "INVALID_PARTITION",
84
+ INVALID_CONDITION = "INVALID_CONDITION",
85
+ EXECUTION_REVERTED = "EXECUTION_REVERTED",
86
+ TIMEOUT = "TIMEOUT",
87
+ UNKNOWN = "UNKNOWN"
88
+ }
89
+ export interface SplitResult {
90
+ success: boolean;
91
+ txHash: string;
92
+ amount: string;
93
+ yesTokens: string;
94
+ noTokens: string;
95
+ gasUsed?: string;
96
+ }
97
+ export interface MergeResult {
98
+ success: boolean;
99
+ txHash: string;
100
+ amount: string;
101
+ usdcReceived: string;
102
+ gasUsed?: string;
103
+ }
104
+ export interface RedeemResult {
105
+ success: boolean;
106
+ txHash: string;
107
+ /** Winning outcome (e.g., 'YES', 'NO', 'Up', 'Down', 'Team1', 'Team2') */
108
+ outcome: string;
109
+ tokensRedeemed: string;
110
+ usdcReceived: string;
111
+ gasUsed?: string;
112
+ }
113
+ export interface PositionBalance {
114
+ conditionId: string;
115
+ yesBalance: string;
116
+ noBalance: string;
117
+ yesPositionId: string;
118
+ noPositionId: string;
119
+ }
120
+ export interface TokenIds {
121
+ yesTokenId: string;
122
+ noTokenId: string;
123
+ }
124
+ export interface MarketResolution {
125
+ conditionId: string;
126
+ isResolved: boolean;
127
+ /** Winning outcome (e.g., 'YES', 'NO') - determined by payout numerators */
128
+ winningOutcome?: string;
129
+ payoutNumerators: [number, number];
130
+ payoutDenominator: number;
131
+ }
132
+ export declare class CTFClient {
133
+ private provider;
134
+ private wallet;
135
+ private ctfContract;
136
+ private usdcContract;
137
+ private gasPriceMultiplier;
138
+ private confirmations;
139
+ private txTimeout;
140
+ private cachedMaticPrice;
141
+ private maticPriceLastUpdated;
142
+ constructor(config: CTFConfig);
143
+ /**
144
+ * Get wallet address
145
+ */
146
+ getAddress(): string;
147
+ /**
148
+ * Get USDC.e (bridged USDC) balance - the token used by Polymarket CTF
149
+ *
150
+ * ⚠️ Note: This returns USDC.e balance, NOT native USDC balance.
151
+ * Polymarket CTF only accepts USDC.e (0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174).
152
+ *
153
+ * Common issue: Your wallet shows USDC balance but this returns 0
154
+ * - This means you have native USDC, not USDC.e
155
+ * - Use SwapService.swap('USDC', 'USDC_E', amount) to convert
156
+ */
157
+ getUsdcBalance(): Promise<string>;
158
+ /**
159
+ * Get native USDC balance (for comparison/debugging)
160
+ *
161
+ * This is NOT the token used by CTF. Use getUsdcBalance() for CTF operations.
162
+ */
163
+ getNativeUsdcBalance(): Promise<string>;
164
+ /**
165
+ * Check if wallet is ready for CTF trading operations
166
+ *
167
+ * Verifies:
168
+ * - Has sufficient USDC.e (not native USDC)
169
+ * - Has MATIC for gas fees
170
+ *
171
+ * @param amount - Minimum USDC.e amount needed (e.g., "100" for 100 USDC.e)
172
+ * @returns Ready status with balances and suggestions
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const status = await ctf.checkReadyForCTF('100');
177
+ * if (!status.ready) {
178
+ * console.log(status.suggestion);
179
+ * // "You have 50 native USDC but 0 USDC.e. Swap native USDC to USDC.e first."
180
+ * }
181
+ * ```
182
+ */
183
+ checkReadyForCTF(amount: string): Promise<{
184
+ ready: boolean;
185
+ usdcEBalance: string;
186
+ nativeUsdcBalance: string;
187
+ maticBalance: string;
188
+ suggestion?: string;
189
+ }>;
190
+ /**
191
+ * Split USDC into YES + NO tokens
192
+ *
193
+ * @param conditionId - Market condition ID
194
+ * @param amount - USDC amount (e.g., "100" for 100 USDC)
195
+ * @returns SplitResult with transaction details
196
+ *
197
+ * @example
198
+ * ```typescript
199
+ * const result = await ctf.split(conditionId, "100");
200
+ * console.log(`Split ${result.amount} USDC into tokens`);
201
+ * console.log(`TX: ${result.txHash}`);
202
+ * ```
203
+ */
204
+ split(conditionId: string, amount: string): Promise<SplitResult>;
205
+ /**
206
+ * Merge YES + NO tokens back to USDC
207
+ *
208
+ * @param conditionId - Market condition ID
209
+ * @param amount - Number of token pairs to merge (e.g., "100" for 100 YES + 100 NO)
210
+ * @returns MergeResult with transaction details
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * // After buying 100 YES and 100 NO via TradingClient
215
+ * const result = await ctf.merge(conditionId, "100");
216
+ * console.log(`Received ${result.usdcReceived} USDC`);
217
+ * ```
218
+ */
219
+ merge(conditionId: string, amount: string): Promise<MergeResult>;
220
+ /**
221
+ * Merge YES and NO tokens back into USDC using explicit token IDs
222
+ *
223
+ * This method uses the provided token IDs for balance checking, which is
224
+ * necessary when working with Polymarket CLOB markets where token IDs
225
+ * don't match the calculated position IDs.
226
+ *
227
+ * @param conditionId - Market condition ID
228
+ * @param tokenIds - Token IDs from CLOB API
229
+ * @param amount - Amount of tokens to merge
230
+ * @returns MergeResult with transaction details
231
+ */
232
+ mergeByTokenIds(conditionId: string, tokenIds: TokenIds, amount: string): Promise<MergeResult>;
233
+ /**
234
+ * Redeem winning tokens after market resolution (Standard CTF)
235
+ *
236
+ * ⚠️ IMPORTANT: This method uses standard CTF position ID calculation.
237
+ * It is ONLY suitable for:
238
+ * - Standard Gnosis CTF markets (non-Polymarket)
239
+ * - Markets where position IDs are calculated from conditionId using standard formula
240
+ * - Direct CTF contract interactions without CLOB
241
+ *
242
+ * ❌ DO NOT USE for Polymarket CLOB markets!
243
+ * Polymarket uses custom token IDs that differ from standard CTF position IDs.
244
+ * For Polymarket, use `redeemByTokenIds()` instead.
245
+ *
246
+ * Position ID calculation: keccak256(collectionId, conditionId, indexSet)
247
+ * - This formula may NOT match Polymarket's token IDs
248
+ *
249
+ * @param conditionId - Market condition ID
250
+ * @param outcome - 'YES' or 'NO' (optional, auto-detects if not provided)
251
+ * @returns RedeemResult with transaction details
252
+ *
253
+ * @example
254
+ * ```typescript
255
+ * // For standard CTF markets (NOT Polymarket)
256
+ * const result = await ctf.redeem(conditionId);
257
+ * console.log(`Redeemed ${result.tokensRedeemed} ${result.outcome} tokens`);
258
+ * ```
259
+ *
260
+ * @see redeemByTokenIds - Use this for Polymarket CLOB markets
261
+ */
262
+ redeem(conditionId: string, outcome?: string): Promise<RedeemResult>;
263
+ /**
264
+ * Redeem winning tokens using Polymarket token IDs (Polymarket CLOB)
265
+ *
266
+ * ✅ USE THIS for Polymarket CLOB markets!
267
+ *
268
+ * Polymarket uses custom token IDs that are different from standard CTF position IDs.
269
+ * These token IDs are provided by the CLOB API and must be used for:
270
+ * - Querying balances (getPositionBalanceByTokenIds)
271
+ * - Redeeming positions (this method)
272
+ * - Trading via CLOB API
273
+ *
274
+ * Why Polymarket token IDs differ:
275
+ * - Polymarket wraps CTF positions into ERC-1155 tokens with custom IDs
276
+ * - The token IDs from CLOB API (e.g., "25064375...") are NOT the same as
277
+ * calculated position IDs from keccak256(collectionId, conditionId, indexSet)
278
+ *
279
+ * @param conditionId - The condition ID of the market
280
+ * @param tokenIds - The Polymarket token IDs for YES and NO outcomes (from CLOB API)
281
+ * @param outcome - Optional: which outcome to redeem ('YES' or 'NO'). Auto-detects if not provided.
282
+ * @returns RedeemResult with transaction details
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * // For Polymarket CLOB markets
287
+ * const tokenIds = {
288
+ * yesTokenId: '25064375110792967023484002819116042931016336431092144471807003884255851454283',
289
+ * noTokenId: '98190367690492181203391990709979106077460946443309150166954079213761598385827',
290
+ * };
291
+ * const result = await ctf.redeemByTokenIds(conditionId, tokenIds);
292
+ * console.log(`Redeemed ${result.tokensRedeemed} ${result.outcome} tokens`);
293
+ * console.log(`Received ${result.usdcReceived} USDC`);
294
+ * ```
295
+ *
296
+ * @see redeem - Only use for standard CTF markets (non-Polymarket)
297
+ */
298
+ redeemByTokenIds(conditionId: string, tokenIds: TokenIds, outcome?: string): Promise<RedeemResult>;
299
+ /**
300
+ * Get token balances for a market using calculated position IDs
301
+ *
302
+ * NOTE: This method calculates position IDs from conditionId, which may not match
303
+ * the token IDs used by Polymarket's CLOB API. For accurate balances when working
304
+ * with CLOB markets, use getPositionBalanceByTokenIds() with the token IDs from
305
+ * the CLOB API.
306
+ *
307
+ * @deprecated Use getPositionBalanceByTokenIds for CLOB markets
308
+ */
309
+ getPositionBalance(conditionId: string): Promise<PositionBalance>;
310
+ /**
311
+ * Get token balances using CLOB API token IDs
312
+ *
313
+ * This is the recommended method for checking balances when working with
314
+ * Polymarket CLOB markets. The token IDs should be obtained from the CLOB API
315
+ * (e.g., from ClobApiClient.getMarket()).
316
+ *
317
+ * @param conditionId - Market condition ID (for reference)
318
+ * @param tokenIds - Token IDs from CLOB API { yesTokenId, noTokenId }
319
+ * @returns PositionBalance with accurate balances
320
+ *
321
+ * @example
322
+ * ```typescript
323
+ * // Get token IDs from CLOB API
324
+ * const market = await clobApi.getMarket(conditionId);
325
+ * const tokenIds = {
326
+ * yesTokenId: market.tokens[0].tokenId,
327
+ * noTokenId: market.tokens[1].tokenId,
328
+ * };
329
+ *
330
+ * // Check balances
331
+ * const balance = await ctf.getPositionBalanceByTokenIds(conditionId, tokenIds);
332
+ * console.log(`YES: ${balance.yesBalance}, NO: ${balance.noBalance}`);
333
+ * ```
334
+ */
335
+ getPositionBalanceByTokenIds(conditionId: string, tokenIds: TokenIds): Promise<PositionBalance>;
336
+ /**
337
+ * Check if a market is resolved and get payout info
338
+ */
339
+ getMarketResolution(conditionId: string): Promise<MarketResolution>;
340
+ /**
341
+ * Estimate gas for split operation
342
+ */
343
+ estimateSplitGas(conditionId: string, amount: string): Promise<string>;
344
+ /**
345
+ * Estimate gas for merge operation
346
+ */
347
+ estimateMergeGas(conditionId: string, amount: string): Promise<string>;
348
+ /**
349
+ * Get detailed gas estimate for a split operation
350
+ */
351
+ getDetailedSplitGasEstimate(conditionId: string, amount: string): Promise<GasEstimate>;
352
+ /**
353
+ * Get detailed gas estimate for a merge operation
354
+ */
355
+ getDetailedMergeGasEstimate(conditionId: string, amount: string): Promise<GasEstimate>;
356
+ /**
357
+ * Get current gas price info
358
+ */
359
+ getGasPrice(): Promise<{
360
+ gwei: string;
361
+ wei: string;
362
+ }>;
363
+ /**
364
+ * Get or refresh MATIC price (cached for 5 minutes)
365
+ */
366
+ getMaticPrice(): Promise<number>;
367
+ /**
368
+ * Set MATIC price manually (for testing or when external price is available)
369
+ */
370
+ setMaticPrice(price: number): void;
371
+ /**
372
+ * Get transaction status with detailed info
373
+ */
374
+ getTransactionStatus(txHash: string): Promise<TransactionStatus>;
375
+ /**
376
+ * Wait for transaction confirmation with timeout
377
+ */
378
+ waitForTransaction(txHash: string, confirmations?: number): Promise<TransactionStatus>;
379
+ /**
380
+ * Parse revert reason from transaction
381
+ */
382
+ getRevertReason(txHash: string): Promise<string>;
383
+ /**
384
+ * Get all positions for the wallet across multiple markets
385
+ */
386
+ getAllPositions(conditionIds: string[]): Promise<PositionBalance[]>;
387
+ /**
388
+ * Check if wallet has sufficient tokens for merge
389
+ *
390
+ * @deprecated Use canMergeWithTokenIds for CLOB markets
391
+ */
392
+ canMerge(conditionId: string, amount: string): Promise<{
393
+ canMerge: boolean;
394
+ reason?: string;
395
+ }>;
396
+ /**
397
+ * Check if wallet has sufficient tokens for merge using CLOB token IDs
398
+ *
399
+ * @param conditionId - Market condition ID
400
+ * @param tokenIds - Token IDs from CLOB API
401
+ * @param amount - Amount to merge
402
+ */
403
+ canMergeWithTokenIds(conditionId: string, tokenIds: TokenIds, amount: string): Promise<{
404
+ canMerge: boolean;
405
+ reason?: string;
406
+ }>;
407
+ private checkMergeBalance;
408
+ /**
409
+ * Check if wallet has sufficient USDC for split
410
+ */
411
+ canSplit(amount: string): Promise<{
412
+ canSplit: boolean;
413
+ reason?: string;
414
+ }>;
415
+ /**
416
+ * Get total portfolio value across positions
417
+ */
418
+ getPortfolioValue(positions: PositionBalance[], prices: Map<string, {
419
+ yes: number;
420
+ no: number;
421
+ }>): Promise<{
422
+ totalValue: number;
423
+ breakdown: Array<{
424
+ conditionId: string;
425
+ yesValue: number;
426
+ noValue: number;
427
+ totalValue: number;
428
+ }>;
429
+ }>;
430
+ /**
431
+ * Calculate position ID for a given outcome (INTERNAL USE ONLY)
432
+ *
433
+ * ⚠️ WARNING: This calculation does NOT produce correct Polymarket token IDs!
434
+ *
435
+ * Polymarket uses custom token IDs that differ from standard CTF position ID calculation.
436
+ * The token IDs from CLOB API (e.g., "104173557214744537570424345347209544585775842950109756851652855913015295701992")
437
+ * are NOT the same as what this function calculates.
438
+ *
439
+ * For Polymarket CLOB markets, ALWAYS:
440
+ * 1. Get token IDs from CLOB API: https://clob.polymarket.com/markets/{conditionId}
441
+ * 2. Use getPositionBalanceByTokenIds() instead of getPositionBalance()
442
+ * 3. Use mergeByTokenIds() instead of merge()
443
+ * 4. Use redeemByTokenIds() instead of redeem()
444
+ *
445
+ * This method is kept for potential non-Polymarket CTF markets only.
446
+ *
447
+ * @deprecated Use CLOB API token IDs for Polymarket markets
448
+ */
449
+ private calculatePositionId;
450
+ /**
451
+ * Get gas options for Polygon network using EIP-1559
452
+ *
453
+ * Polygon requires higher priority fees than default ethers.js estimates.
454
+ * Uses minimum 30 gwei priority fee to ensure transactions don't get stuck.
455
+ */
456
+ private getGasOptions;
457
+ /**
458
+ * Calculate gas cost from gas units
459
+ */
460
+ private calculateGasCost;
461
+ }
462
+ /**
463
+ * Calculate condition ID from oracle, question ID, and outcome count
464
+ * This is rarely needed as Polymarket provides conditionId directly
465
+ */
466
+ export declare function calculateConditionId(oracle: string, questionId: string, outcomeSlotCount?: number): string;
467
+ /**
468
+ * Parse USDC amount to BigNumber (6 decimals)
469
+ */
470
+ export declare function parseUsdc(amount: string): BigNumber;
471
+ /**
472
+ * Format BigNumber to USDC string (6 decimals)
473
+ */
474
+ export declare function formatUsdc(amount: BigNumber): string;
475
+ //# sourceMappingURL=ctf-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ctf-client.d.ts","sourceRoot":"","sources":["../../../src/clients/ctf-client.ts"],"names":[],"mappings":"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"}