@catalyst-team/poly-sdk 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +545 -812
  2. package/README.zh-CN.md +645 -342
  3. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
  4. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/integration/arbitrage-service.integration.test.js +267 -0
  6. package/dist/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
  7. package/dist/__tests__/integration/data-api.integration.test.js +6 -3
  8. package/dist/__tests__/integration/data-api.integration.test.js.map +1 -1
  9. package/dist/__tests__/integration/market-service.integration.test.d.ts +10 -0
  10. package/dist/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
  11. package/dist/__tests__/integration/market-service.integration.test.js +173 -0
  12. package/dist/__tests__/integration/market-service.integration.test.js.map +1 -0
  13. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
  14. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
  15. package/dist/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
  16. package/dist/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
  17. package/dist/__tests__/integration/trading-service.integration.test.d.ts +10 -0
  18. package/dist/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
  19. package/dist/__tests__/integration/trading-service.integration.test.js +58 -0
  20. package/dist/__tests__/integration/trading-service.integration.test.js.map +1 -0
  21. package/dist/clients/clob-api.d.ts +73 -0
  22. package/dist/clients/clob-api.d.ts.map +1 -1
  23. package/dist/clients/clob-api.js +60 -0
  24. package/dist/clients/clob-api.js.map +1 -1
  25. package/dist/clients/data-api.d.ts +319 -14
  26. package/dist/clients/data-api.d.ts.map +1 -1
  27. package/dist/clients/data-api.js +342 -15
  28. package/dist/clients/data-api.js.map +1 -1
  29. package/dist/clients/subgraph.d.ts +196 -0
  30. package/dist/clients/subgraph.d.ts.map +1 -0
  31. package/dist/clients/subgraph.js +332 -0
  32. package/dist/clients/subgraph.js.map +1 -0
  33. package/dist/clients/websocket-manager.d.ts +3 -0
  34. package/dist/clients/websocket-manager.d.ts.map +1 -1
  35. package/dist/clients/websocket-manager.js +10 -3
  36. package/dist/clients/websocket-manager.js.map +1 -1
  37. package/dist/core/cache.d.ts +1 -0
  38. package/dist/core/cache.d.ts.map +1 -1
  39. package/dist/core/cache.js +1 -0
  40. package/dist/core/cache.js.map +1 -1
  41. package/dist/core/errors.d.ts +2 -1
  42. package/dist/core/errors.d.ts.map +1 -1
  43. package/dist/core/errors.js +2 -0
  44. package/dist/core/errors.js.map +1 -1
  45. package/dist/core/rate-limiter.d.ts +2 -1
  46. package/dist/core/rate-limiter.d.ts.map +1 -1
  47. package/dist/core/rate-limiter.js +5 -0
  48. package/dist/core/rate-limiter.js.map +1 -1
  49. package/dist/core/types.d.ts +100 -12
  50. package/dist/core/types.d.ts.map +1 -1
  51. package/dist/core/types.js.map +1 -1
  52. package/dist/core/types.test.d.ts +7 -0
  53. package/dist/core/types.test.d.ts.map +1 -0
  54. package/dist/core/types.test.js +122 -0
  55. package/dist/core/types.test.js.map +1 -0
  56. package/dist/index.d.ts +76 -18
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +125 -132
  59. package/dist/index.js.map +1 -1
  60. package/dist/services/arbitrage-service.d.ts +3 -2
  61. package/dist/services/arbitrage-service.d.ts.map +1 -1
  62. package/dist/services/arbitrage-service.js +58 -40
  63. package/dist/services/arbitrage-service.js.map +1 -1
  64. package/dist/services/market-service.d.ts +108 -8
  65. package/dist/services/market-service.d.ts.map +1 -1
  66. package/dist/services/market-service.js +352 -36
  67. package/dist/services/market-service.js.map +1 -1
  68. package/dist/services/onchain-service.d.ts +309 -0
  69. package/dist/services/onchain-service.d.ts.map +1 -0
  70. package/dist/services/onchain-service.js +417 -0
  71. package/dist/services/onchain-service.js.map +1 -0
  72. package/dist/services/realtime-service-v2.d.ts +361 -0
  73. package/dist/services/realtime-service-v2.d.ts.map +1 -0
  74. package/dist/services/realtime-service-v2.js +840 -0
  75. package/dist/services/realtime-service-v2.js.map +1 -0
  76. package/dist/services/realtime-service.d.ts +17 -17
  77. package/dist/services/realtime-service.d.ts.map +1 -1
  78. package/dist/services/realtime-service.js +91 -59
  79. package/dist/services/realtime-service.js.map +1 -1
  80. package/dist/services/smart-money-service.d.ts +196 -0
  81. package/dist/services/smart-money-service.d.ts.map +1 -0
  82. package/dist/services/smart-money-service.js +358 -0
  83. package/dist/services/smart-money-service.js.map +1 -0
  84. package/dist/services/trading-service.d.ts +156 -0
  85. package/dist/services/trading-service.d.ts.map +1 -0
  86. package/dist/services/trading-service.js +356 -0
  87. package/dist/services/trading-service.js.map +1 -0
  88. package/dist/services/wallet-service.d.ts +183 -2
  89. package/dist/services/wallet-service.d.ts.map +1 -1
  90. package/dist/services/wallet-service.js +458 -1
  91. package/dist/services/wallet-service.js.map +1 -1
  92. package/dist/utils/price-utils.test.d.ts +5 -0
  93. package/dist/utils/price-utils.test.d.ts.map +1 -0
  94. package/dist/utils/price-utils.test.js +192 -0
  95. package/dist/utils/price-utils.test.js.map +1 -0
  96. package/package.json +4 -3
  97. package/README.en.md +0 -502
@@ -0,0 +1,309 @@
1
+ /**
2
+ * OnchainService - Unified interface for all on-chain operations
3
+ *
4
+ * Consolidates:
5
+ * - CTF operations (split, merge, redeem)
6
+ * - Authorization (ERC20/ERC1155 approvals)
7
+ * - Swaps (QuickSwap V3)
8
+ *
9
+ * This service provides a single entry point for all blockchain interactions
10
+ * required for Polymarket trading. It shares wallet/provider configuration
11
+ * across all underlying services.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const onchain = new OnchainService({
16
+ * privateKey: '0x...',
17
+ * rpcUrl: 'https://polygon-rpc.com', // optional
18
+ * });
19
+ *
20
+ * // Check if ready for trading
21
+ * const status = await onchain.checkReadyForCTF('100');
22
+ * if (!status.ready) {
23
+ * // Set up approvals
24
+ * await onchain.approveAll();
25
+ * }
26
+ *
27
+ * // Execute CTF operations
28
+ * await onchain.split(conditionId, '100');
29
+ * await onchain.merge(conditionId, '100');
30
+ *
31
+ * // Swap tokens
32
+ * await onchain.swap('MATIC', 'USDC_E', '10');
33
+ * ```
34
+ */
35
+ import { ethers } from 'ethers';
36
+ import { CTFClient, type SplitResult, type MergeResult, type RedeemResult, type PositionBalance, type MarketResolution, type GasEstimate, type TransactionStatus, type TokenIds } from '../clients/ctf-client.js';
37
+ import { AuthorizationService, type AllowancesResult, type ApprovalsResult, type ApprovalTxResult } from './authorization-service.js';
38
+ import { SwapService, type SwapQuote, type SwapResult, type TokenBalance, type TransferResult, type QuoteResult, type PoolInfo } from './swap-service.js';
39
+ export interface OnchainServiceConfig {
40
+ /** Private key for signing transactions */
41
+ privateKey: string;
42
+ /** RPC URL (default: Polygon mainnet) */
43
+ rpcUrl?: string;
44
+ /** Chain ID (default: 137 for Polygon) */
45
+ chainId?: number;
46
+ /** Gas price multiplier for CTF operations (default: 1.2) */
47
+ gasPriceMultiplier?: number;
48
+ /** Transaction confirmation blocks (default: 1) */
49
+ confirmations?: number;
50
+ /** Transaction timeout in ms (default: 60000) */
51
+ txTimeout?: number;
52
+ }
53
+ export interface ReadyStatus {
54
+ ready: boolean;
55
+ usdcEBalance: string;
56
+ nativeUsdcBalance: string;
57
+ maticBalance: string;
58
+ tradingReady: boolean;
59
+ issues: string[];
60
+ suggestion?: string;
61
+ }
62
+ export interface TokenBalances {
63
+ matic: string;
64
+ usdc: string;
65
+ usdcE: string;
66
+ usdt: string;
67
+ dai: string;
68
+ weth: string;
69
+ wmatic: string;
70
+ }
71
+ export type { SplitResult, MergeResult, RedeemResult, PositionBalance, MarketResolution, GasEstimate, TransactionStatus, TokenIds, AllowancesResult, ApprovalsResult, ApprovalTxResult, SwapQuote, SwapResult, TokenBalance, TransferResult, QuoteResult, PoolInfo, };
72
+ /**
73
+ * Unified service for all on-chain operations on Polymarket
74
+ *
75
+ * This service wraps:
76
+ * - CTFClient: Conditional Token Framework operations (split, merge, redeem)
77
+ * - AuthorizationService: ERC20 and ERC1155 approvals
78
+ * - SwapService: DEX swaps on Polygon via QuickSwap V3
79
+ *
80
+ * All services share the same wallet and provider configuration.
81
+ */
82
+ export declare class OnchainService {
83
+ private wallet;
84
+ private provider;
85
+ private ctfClient;
86
+ private authService;
87
+ private swapService;
88
+ constructor(config: OnchainServiceConfig);
89
+ /**
90
+ * Get the wallet address
91
+ */
92
+ getAddress(): string;
93
+ /**
94
+ * Get native MATIC balance
95
+ */
96
+ getMaticBalance(): Promise<string>;
97
+ /**
98
+ * Get all token balances
99
+ */
100
+ getTokenBalances(): Promise<TokenBalances>;
101
+ /**
102
+ * Check all ERC20 and ERC1155 allowances required for trading
103
+ *
104
+ * @returns Status of all allowances and whether trading is ready
105
+ */
106
+ checkAllowances(): Promise<AllowancesResult>;
107
+ /**
108
+ * Set up all required approvals for trading
109
+ *
110
+ * @returns Results of all approval transactions
111
+ */
112
+ approveAll(): Promise<ApprovalsResult>;
113
+ /**
114
+ * Approve USDC spending for a specific contract
115
+ */
116
+ approveUsdc(spenderAddress: string, amount?: ethers.BigNumber): Promise<ApprovalTxResult>;
117
+ /**
118
+ * Set approval for an ERC1155 operator
119
+ */
120
+ setErc1155Approval(operatorAddress: string, approved?: boolean): Promise<ApprovalTxResult>;
121
+ /**
122
+ * Split USDC into YES + NO tokens
123
+ *
124
+ * @param conditionId - Market condition ID
125
+ * @param amount - USDC amount (e.g., "100" for 100 USDC)
126
+ * @returns SplitResult with transaction details
127
+ */
128
+ split(conditionId: string, amount: string): Promise<SplitResult>;
129
+ /**
130
+ * Merge YES + NO tokens back to USDC
131
+ *
132
+ * @param conditionId - Market condition ID
133
+ * @param amount - Number of token pairs to merge
134
+ * @returns MergeResult with transaction details
135
+ */
136
+ merge(conditionId: string, amount: string): Promise<MergeResult>;
137
+ /**
138
+ * Merge YES and NO tokens using explicit token IDs
139
+ *
140
+ * Use this for Polymarket CLOB markets where token IDs
141
+ * don't match the calculated position IDs.
142
+ */
143
+ mergeByTokenIds(conditionId: string, tokenIds: TokenIds, amount: string): Promise<MergeResult>;
144
+ /**
145
+ * Redeem winning tokens after market resolution (Standard CTF)
146
+ *
147
+ * WARNING: Use redeemByTokenIds for Polymarket CLOB markets.
148
+ */
149
+ redeem(conditionId: string, outcome?: 'YES' | 'NO'): Promise<RedeemResult>;
150
+ /**
151
+ * Redeem winning tokens using Polymarket token IDs (Polymarket CLOB)
152
+ *
153
+ * This is the correct method for Polymarket CLOB markets.
154
+ */
155
+ redeemByTokenIds(conditionId: string, tokenIds: TokenIds, outcome?: 'YES' | 'NO'): Promise<RedeemResult>;
156
+ /**
157
+ * Get USDC.e (bridged USDC) balance - the token used by Polymarket CTF
158
+ */
159
+ getUsdcBalance(): Promise<string>;
160
+ /**
161
+ * Get native USDC balance (not compatible with CTF)
162
+ */
163
+ getNativeUsdcBalance(): Promise<string>;
164
+ /**
165
+ * Get token balances for a market using calculated position IDs
166
+ *
167
+ * @deprecated Use getPositionBalanceByTokenIds for CLOB markets
168
+ */
169
+ getPositionBalance(conditionId: string): Promise<PositionBalance>;
170
+ /**
171
+ * Get token balances using CLOB API token IDs
172
+ *
173
+ * This is the recommended method for checking balances when working with
174
+ * Polymarket CLOB markets.
175
+ */
176
+ getPositionBalanceByTokenIds(conditionId: string, tokenIds: TokenIds): Promise<PositionBalance>;
177
+ /**
178
+ * Check if wallet is ready for CTF trading operations
179
+ *
180
+ * Combines CTF readiness check with authorization status.
181
+ */
182
+ checkReadyForCTF(amount: string): Promise<ReadyStatus>;
183
+ /**
184
+ * Check if wallet has sufficient tokens for merge
185
+ */
186
+ canMerge(conditionId: string, amount: string): Promise<{
187
+ canMerge: boolean;
188
+ reason?: string;
189
+ }>;
190
+ /**
191
+ * Check if wallet has sufficient tokens for merge using CLOB token IDs
192
+ */
193
+ canMergeWithTokenIds(conditionId: string, tokenIds: TokenIds, amount: string): Promise<{
194
+ canMerge: boolean;
195
+ reason?: string;
196
+ }>;
197
+ /**
198
+ * Check if wallet has sufficient USDC for split
199
+ */
200
+ canSplit(amount: string): Promise<{
201
+ canSplit: boolean;
202
+ reason?: string;
203
+ }>;
204
+ /**
205
+ * Check if a market is resolved and get payout info
206
+ */
207
+ getMarketResolution(conditionId: string): Promise<MarketResolution>;
208
+ /**
209
+ * Get detailed gas estimate for a split operation
210
+ */
211
+ estimateSplitGas(conditionId: string, amount: string): Promise<GasEstimate>;
212
+ /**
213
+ * Get detailed gas estimate for a merge operation
214
+ */
215
+ estimateMergeGas(conditionId: string, amount: string): Promise<GasEstimate>;
216
+ /**
217
+ * Get current gas price info
218
+ */
219
+ getGasPrice(): Promise<{
220
+ gwei: string;
221
+ wei: string;
222
+ }>;
223
+ /**
224
+ * Get transaction status with detailed info
225
+ */
226
+ getTransactionStatus(txHash: string): Promise<TransactionStatus>;
227
+ /**
228
+ * Wait for transaction confirmation with timeout
229
+ */
230
+ waitForTransaction(txHash: string, confirmations?: number): Promise<TransactionStatus>;
231
+ /**
232
+ * Get a quote for a swap (checks if route is possible)
233
+ */
234
+ getSwapQuote(tokenIn: string, tokenOut: string, amount: string): Promise<QuoteResult>;
235
+ /**
236
+ * Execute a token swap using QuickSwap V3
237
+ *
238
+ * @param tokenIn - Token to swap from (e.g., 'MATIC', 'USDC', 'USDT')
239
+ * @param tokenOut - Token to swap to (e.g., 'USDC_E', 'WETH')
240
+ * @param amount - Amount to swap in token units
241
+ * @param slippage - Slippage tolerance in percent (default: 0.5)
242
+ */
243
+ swap(tokenIn: string, tokenOut: string, amount: string, slippage?: number): Promise<SwapResult>;
244
+ /**
245
+ * Swap any supported token to USDC.e and deposit to Polymarket
246
+ *
247
+ * This is a convenience method for converting tokens to the USDC.e
248
+ * format required by Polymarket CTF operations.
249
+ */
250
+ swapAndDeposit(token: string, amount: string, slippage?: number): Promise<SwapResult>;
251
+ /**
252
+ * Get all available liquidity pools on QuickSwap V3
253
+ */
254
+ getAvailablePools(): Promise<PoolInfo[]>;
255
+ /**
256
+ * Check if a pool exists for a token pair
257
+ */
258
+ checkPool(tokenA: string, tokenB: string): Promise<PoolInfo>;
259
+ /**
260
+ * Transfer an ERC20 token to another address
261
+ */
262
+ transfer(token: string, to: string, amount: string): Promise<TransferResult>;
263
+ /**
264
+ * Transfer native MATIC to another address
265
+ */
266
+ transferMatic(to: string, amount: string): Promise<TransferResult>;
267
+ /**
268
+ * Transfer native USDC to another address
269
+ *
270
+ * WARNING: This transfers NATIVE USDC, not USDC.e.
271
+ * For Polymarket CTF operations, use transferUsdcE() instead.
272
+ */
273
+ transferUsdc(to: string, amount: string): Promise<TransferResult>;
274
+ /**
275
+ * Transfer USDC.e (bridged USDC) to another address
276
+ *
277
+ * This is the correct method for Polymarket CTF operations.
278
+ */
279
+ transferUsdcE(to: string, amount: string): Promise<TransferResult>;
280
+ /**
281
+ * Wrap native MATIC to WMATIC
282
+ */
283
+ wrapMatic(amount: string): Promise<SwapResult>;
284
+ /**
285
+ * Unwrap WMATIC to native MATIC
286
+ */
287
+ unwrapMatic(amount: string): Promise<SwapResult>;
288
+ /**
289
+ * Get the underlying CTFClient for advanced operations
290
+ */
291
+ getCTFClient(): CTFClient;
292
+ /**
293
+ * Get the underlying AuthorizationService for advanced operations
294
+ */
295
+ getAuthorizationService(): AuthorizationService;
296
+ /**
297
+ * Get the underlying SwapService for advanced operations
298
+ */
299
+ getSwapService(): SwapService;
300
+ /**
301
+ * Get the shared wallet instance
302
+ */
303
+ getWallet(): ethers.Wallet;
304
+ /**
305
+ * Get the shared provider instance
306
+ */
307
+ getProvider(): ethers.providers.JsonRpcProvider;
308
+ }
309
+ //# sourceMappingURL=onchain-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onchain-service.d.ts","sourceRoot":"","sources":["../../src/services/onchain-service.ts"],"names":[],"mappings":"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"}