@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.
- package/README.md +545 -812
- package/README.zh-CN.md +645 -342
- package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
- package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/arbitrage-service.integration.test.js +267 -0
- package/dist/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
- package/dist/__tests__/integration/data-api.integration.test.js +6 -3
- package/dist/__tests__/integration/data-api.integration.test.js.map +1 -1
- package/dist/__tests__/integration/market-service.integration.test.d.ts +10 -0
- package/dist/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/market-service.integration.test.js +173 -0
- package/dist/__tests__/integration/market-service.integration.test.js.map +1 -0
- package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
- package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
- package/dist/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
- package/dist/__tests__/integration/trading-service.integration.test.d.ts +10 -0
- package/dist/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/trading-service.integration.test.js +58 -0
- package/dist/__tests__/integration/trading-service.integration.test.js.map +1 -0
- package/dist/clients/clob-api.d.ts +73 -0
- package/dist/clients/clob-api.d.ts.map +1 -1
- package/dist/clients/clob-api.js +60 -0
- package/dist/clients/clob-api.js.map +1 -1
- package/dist/clients/data-api.d.ts +319 -14
- package/dist/clients/data-api.d.ts.map +1 -1
- package/dist/clients/data-api.js +342 -15
- package/dist/clients/data-api.js.map +1 -1
- package/dist/clients/subgraph.d.ts +196 -0
- package/dist/clients/subgraph.d.ts.map +1 -0
- package/dist/clients/subgraph.js +332 -0
- package/dist/clients/subgraph.js.map +1 -0
- package/dist/clients/websocket-manager.d.ts +3 -0
- package/dist/clients/websocket-manager.d.ts.map +1 -1
- package/dist/clients/websocket-manager.js +10 -3
- package/dist/clients/websocket-manager.js.map +1 -1
- package/dist/core/cache.d.ts +1 -0
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +1 -0
- package/dist/core/cache.js.map +1 -1
- package/dist/core/errors.d.ts +2 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +2 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/rate-limiter.d.ts +2 -1
- package/dist/core/rate-limiter.d.ts.map +1 -1
- package/dist/core/rate-limiter.js +5 -0
- package/dist/core/rate-limiter.js.map +1 -1
- package/dist/core/types.d.ts +100 -12
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/types.test.d.ts +7 -0
- package/dist/core/types.test.d.ts.map +1 -0
- package/dist/core/types.test.js +122 -0
- package/dist/core/types.test.js.map +1 -0
- package/dist/index.d.ts +76 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +125 -132
- package/dist/index.js.map +1 -1
- package/dist/services/arbitrage-service.d.ts +3 -2
- package/dist/services/arbitrage-service.d.ts.map +1 -1
- package/dist/services/arbitrage-service.js +58 -40
- package/dist/services/arbitrage-service.js.map +1 -1
- package/dist/services/market-service.d.ts +108 -8
- package/dist/services/market-service.d.ts.map +1 -1
- package/dist/services/market-service.js +352 -36
- package/dist/services/market-service.js.map +1 -1
- package/dist/services/onchain-service.d.ts +309 -0
- package/dist/services/onchain-service.d.ts.map +1 -0
- package/dist/services/onchain-service.js +417 -0
- package/dist/services/onchain-service.js.map +1 -0
- package/dist/services/realtime-service-v2.d.ts +361 -0
- package/dist/services/realtime-service-v2.d.ts.map +1 -0
- package/dist/services/realtime-service-v2.js +840 -0
- package/dist/services/realtime-service-v2.js.map +1 -0
- package/dist/services/realtime-service.d.ts +17 -17
- package/dist/services/realtime-service.d.ts.map +1 -1
- package/dist/services/realtime-service.js +91 -59
- package/dist/services/realtime-service.js.map +1 -1
- package/dist/services/smart-money-service.d.ts +196 -0
- package/dist/services/smart-money-service.d.ts.map +1 -0
- package/dist/services/smart-money-service.js +358 -0
- package/dist/services/smart-money-service.js.map +1 -0
- package/dist/services/trading-service.d.ts +156 -0
- package/dist/services/trading-service.d.ts.map +1 -0
- package/dist/services/trading-service.js +356 -0
- package/dist/services/trading-service.js.map +1 -0
- package/dist/services/wallet-service.d.ts +183 -2
- package/dist/services/wallet-service.d.ts.map +1 -1
- package/dist/services/wallet-service.js +458 -1
- package/dist/services/wallet-service.js.map +1 -1
- package/dist/utils/price-utils.test.d.ts +5 -0
- package/dist/utils/price-utils.test.d.ts.map +1 -0
- package/dist/utils/price-utils.test.js +192 -0
- package/dist/utils/price-utils.test.js.map +1 -0
- package/package.json +4 -3
- 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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"}
|