@zeroexcore/trader 1.1.3 → 3.0.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 (141) hide show
  1. package/dist/cli.js +4 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/dca/cancel.d.ts +3 -0
  4. package/dist/commands/dca/cancel.d.ts.map +1 -0
  5. package/dist/commands/dca/cancel.js +44 -0
  6. package/dist/commands/dca/cancel.js.map +1 -0
  7. package/dist/commands/dca/create.d.ts +3 -0
  8. package/dist/commands/dca/create.d.ts.map +1 -0
  9. package/dist/commands/dca/create.js +88 -0
  10. package/dist/commands/dca/create.js.map +1 -0
  11. package/dist/commands/dca/index.d.ts +3 -0
  12. package/dist/commands/dca/index.d.ts.map +1 -0
  13. package/dist/commands/dca/index.js +10 -0
  14. package/dist/commands/dca/index.js.map +1 -0
  15. package/dist/commands/dca/list.d.ts +3 -0
  16. package/dist/commands/dca/list.d.ts.map +1 -0
  17. package/dist/commands/dca/list.js +48 -0
  18. package/dist/commands/dca/list.js.map +1 -0
  19. package/dist/commands/limit/cancel.d.ts +3 -0
  20. package/dist/commands/limit/cancel.d.ts.map +1 -0
  21. package/dist/commands/limit/cancel.js +45 -0
  22. package/dist/commands/limit/cancel.js.map +1 -0
  23. package/dist/commands/limit/create.d.ts +3 -0
  24. package/dist/commands/limit/create.d.ts.map +1 -0
  25. package/dist/commands/limit/create.js +68 -0
  26. package/dist/commands/limit/create.js.map +1 -0
  27. package/dist/commands/limit/index.d.ts +3 -0
  28. package/dist/commands/limit/index.d.ts.map +1 -0
  29. package/dist/commands/limit/index.js +10 -0
  30. package/dist/commands/limit/index.js.map +1 -0
  31. package/dist/commands/limit/list.d.ts +3 -0
  32. package/dist/commands/limit/list.d.ts.map +1 -0
  33. package/dist/commands/limit/list.js +40 -0
  34. package/dist/commands/limit/list.js.map +1 -0
  35. package/dist/commands/perps/close.d.ts +3 -0
  36. package/dist/commands/perps/close.d.ts.map +1 -0
  37. package/dist/commands/perps/close.js +48 -0
  38. package/dist/commands/perps/close.js.map +1 -0
  39. package/dist/commands/perps/decrease.d.ts +3 -0
  40. package/dist/commands/perps/decrease.d.ts.map +1 -0
  41. package/dist/commands/perps/decrease.js +55 -0
  42. package/dist/commands/perps/decrease.js.map +1 -0
  43. package/dist/commands/perps/increase.d.ts +3 -0
  44. package/dist/commands/perps/increase.d.ts.map +1 -0
  45. package/dist/commands/perps/increase.js +60 -0
  46. package/dist/commands/perps/increase.js.map +1 -0
  47. package/dist/commands/perps/index.d.ts.map +1 -1
  48. package/dist/commands/perps/index.js +8 -0
  49. package/dist/commands/perps/index.js.map +1 -1
  50. package/dist/commands/perps/open.d.ts +3 -0
  51. package/dist/commands/perps/open.d.ts.map +1 -0
  52. package/dist/commands/perps/open.js +60 -0
  53. package/dist/commands/perps/open.js.map +1 -0
  54. package/dist/commands/perps/pool.d.ts.map +1 -1
  55. package/dist/commands/perps/pool.js +37 -29
  56. package/dist/commands/perps/pool.js.map +1 -1
  57. package/dist/commands/perps/positions.d.ts.map +1 -1
  58. package/dist/commands/perps/positions.js +56 -61
  59. package/dist/commands/perps/positions.js.map +1 -1
  60. package/dist/commands/perps/show.d.ts.map +1 -1
  61. package/dist/commands/perps/show.js +45 -25
  62. package/dist/commands/perps/show.js.map +1 -1
  63. package/dist/commands/portfolio.d.ts.map +1 -1
  64. package/dist/commands/portfolio.js +65 -18
  65. package/dist/commands/portfolio.js.map +1 -1
  66. package/dist/commands/predict/buy.d.ts.map +1 -1
  67. package/dist/commands/predict/buy.js +3 -0
  68. package/dist/commands/predict/buy.js.map +1 -1
  69. package/dist/commands/predict/sell.d.ts.map +1 -1
  70. package/dist/commands/predict/sell.js +3 -0
  71. package/dist/commands/predict/sell.js.map +1 -1
  72. package/dist/commands/tokens/quote.d.ts.map +1 -1
  73. package/dist/commands/tokens/quote.js +4 -1
  74. package/dist/commands/tokens/quote.js.map +1 -1
  75. package/dist/commands/tokens/swap.d.ts.map +1 -1
  76. package/dist/commands/tokens/swap.js +6 -3
  77. package/dist/commands/tokens/swap.js.map +1 -1
  78. package/dist/config.d.ts +4 -1
  79. package/dist/config.d.ts.map +1 -1
  80. package/dist/config.js +5 -1
  81. package/dist/config.js.map +1 -1
  82. package/dist/utils/amounts.d.ts +0 -16
  83. package/dist/utils/amounts.d.ts.map +1 -1
  84. package/dist/utils/amounts.js +4 -36
  85. package/dist/utils/amounts.js.map +1 -1
  86. package/dist/utils/helius.d.ts +3 -23
  87. package/dist/utils/helius.d.ts.map +1 -1
  88. package/dist/utils/helius.js +0 -123
  89. package/dist/utils/helius.js.map +1 -1
  90. package/dist/utils/jupiter.d.ts +4 -8
  91. package/dist/utils/jupiter.d.ts.map +1 -1
  92. package/dist/utils/jupiter.js +1 -7
  93. package/dist/utils/jupiter.js.map +1 -1
  94. package/dist/utils/nft.d.ts +3 -37
  95. package/dist/utils/nft.d.ts.map +1 -1
  96. package/dist/utils/nft.js +0 -71
  97. package/dist/utils/nft.js.map +1 -1
  98. package/dist/utils/perps/index.d.ts +51 -10
  99. package/dist/utils/perps/index.d.ts.map +1 -1
  100. package/dist/utils/perps/index.js +249 -34
  101. package/dist/utils/perps/index.js.map +1 -1
  102. package/dist/utils/perps-api.d.ts +110 -0
  103. package/dist/utils/perps-api.d.ts.map +1 -0
  104. package/dist/utils/perps-api.js +260 -0
  105. package/dist/utils/perps-api.js.map +1 -0
  106. package/dist/utils/positions.d.ts +3 -77
  107. package/dist/utils/positions.d.ts.map +1 -1
  108. package/dist/utils/positions.js +3 -330
  109. package/dist/utils/positions.js.map +1 -1
  110. package/dist/utils/prediction.d.ts +6 -28
  111. package/dist/utils/prediction.d.ts.map +1 -1
  112. package/dist/utils/prediction.js +0 -37
  113. package/dist/utils/prediction.js.map +1 -1
  114. package/dist/utils/recurring.d.ts +79 -0
  115. package/dist/utils/recurring.d.ts.map +1 -0
  116. package/dist/utils/recurring.js +73 -0
  117. package/dist/utils/recurring.js.map +1 -0
  118. package/dist/utils/token-book.d.ts.map +1 -1
  119. package/dist/utils/token-book.js +17 -2
  120. package/dist/utils/token-book.js.map +1 -1
  121. package/dist/utils/token-info.d.ts +2 -1
  122. package/dist/utils/token-info.d.ts.map +1 -1
  123. package/dist/utils/token-info.js +5 -2
  124. package/dist/utils/token-info.js.map +1 -1
  125. package/dist/utils/trigger.d.ts +88 -0
  126. package/dist/utils/trigger.d.ts.map +1 -0
  127. package/dist/utils/trigger.js +114 -0
  128. package/dist/utils/trigger.js.map +1 -0
  129. package/dist/utils/wallet.d.ts +0 -9
  130. package/dist/utils/wallet.d.ts.map +1 -1
  131. package/dist/utils/wallet.js +14 -4
  132. package/dist/utils/wallet.js.map +1 -1
  133. package/package.json +8 -2
  134. package/dist/utils/perps/doves-idl.d.ts +0 -380
  135. package/dist/utils/perps/doves-idl.d.ts.map +0 -1
  136. package/dist/utils/perps/doves-idl.js +0 -379
  137. package/dist/utils/perps/doves-idl.js.map +0 -1
  138. package/dist/utils/perps/jupiter-perpetuals-idl.d.ts +0 -7243
  139. package/dist/utils/perps/jupiter-perpetuals-idl.d.ts.map +0 -1
  140. package/dist/utils/perps/jupiter-perpetuals-idl.js +0 -7242
  141. package/dist/utils/perps/jupiter-perpetuals-idl.js.map +0 -1
@@ -0,0 +1,260 @@
1
+ import BN from 'bn.js';
2
+ import { PublicKey, VersionedTransaction } from '@solana/web3.js';
3
+ import { apis, requireJupiterKey } from '../config.js';
4
+ import { sendAndConfirmTransaction } from './solana.js';
5
+ import { buildIncreasePositionTx, buildDecreasePositionTx, getOpenPositions as getOnChainPositions, resolveCustodies, derivePositionPda, } from './perps/index.js';
6
+ // ============================================================================
7
+ // Perps token mints
8
+ // ============================================================================
9
+ export const PERPS_MINTS = {
10
+ SOL: 'So11111111111111111111111111111111111111112',
11
+ ETH: '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs',
12
+ BTC: '3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh',
13
+ };
14
+ export const PERPS_ASSETS = ['SOL', 'ETH', 'BTC'];
15
+ export const DEFAULT_SLIPPAGE_BPS = 30; // 0.3% — covers normal 45s keeper execution window
16
+ /**
17
+ * Compute priceSlippage from oracle price.
18
+ *
19
+ * priceSlippage is NOT a percentage — it's an absolute USD price (6 decimals).
20
+ * It acts as a guard rail; the keeper always fills at oracle price.
21
+ * Wider slippage does NOT give worse fills, it only reduces rejection risk.
22
+ *
23
+ * - increase long / decrease short: ceiling (current price + buffer)
24
+ * - decrease long / increase short: floor (current price - buffer)
25
+ */
26
+ export function computePriceSlippage(oraclePrice, slippageBps, side, action) {
27
+ const needCeiling = (action === 'increase' && side === 'long') ||
28
+ (action === 'decrease' && side === 'short');
29
+ const pct = slippageBps / 10000;
30
+ const multiplier = needCeiling ? (1 + pct) : (1 - pct);
31
+ return new BN(Math.round(oraclePrice * multiplier * 1_000_000));
32
+ }
33
+ // ============================================================================
34
+ // REST API fetch helper (for read-only endpoints that still work)
35
+ // ============================================================================
36
+ async function perpsFetch(path, options) {
37
+ const headers = {
38
+ 'Content-Type': 'application/json',
39
+ ...options?.headers,
40
+ };
41
+ // API key is optional for perps endpoints
42
+ try {
43
+ headers['x-api-key'] = requireJupiterKey();
44
+ }
45
+ catch { }
46
+ const response = await fetch(`${apis.jupiterPerps}${path}`, {
47
+ ...options,
48
+ headers,
49
+ });
50
+ if (!response.ok) {
51
+ const errorText = await response.text();
52
+ throw new Error(`Perps API error (${response.status}): ${errorText}`);
53
+ }
54
+ return response.json();
55
+ }
56
+ // ============================================================================
57
+ // Read-only API functions (REST — these still work)
58
+ // ============================================================================
59
+ export async function getMarketStats(mint) {
60
+ const params = new URLSearchParams({ mint });
61
+ return perpsFetch(`/market-stats?${params}`);
62
+ }
63
+ export async function getPoolInfo(mint) {
64
+ return perpsFetch(`/pool-info?${mkParams(mint)}`);
65
+ }
66
+ function mkParams(mint) {
67
+ return new URLSearchParams({ mint }).toString();
68
+ }
69
+ // Mint -> asset name mapping
70
+ const MINT_TO_ASSET = {
71
+ 'So11111111111111111111111111111111111111112': 'SOL',
72
+ '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs': 'ETH',
73
+ '3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh': 'BTC',
74
+ };
75
+ /** Normalize REST API position response to our PerpsPosition shape */
76
+ function normalizeApiPosition(raw) {
77
+ return {
78
+ asset: MINT_TO_ASSET[raw.marketMint] || raw.marketMint || raw.asset || 'UNKNOWN',
79
+ side: raw.side,
80
+ leverage: raw.leverage,
81
+ sizeUsd: raw.sizeUsdDelta || raw.sizeUsd || '0',
82
+ collateralUsd: raw.collateralUsd || '0',
83
+ entryPriceUsd: String(Math.floor(Number(raw.entryPrice || 0) * 1_000_000)),
84
+ markPriceUsd: String(Math.floor(Number(raw.markPrice || 0) * 1_000_000)),
85
+ liquidationPriceUsd: String(Math.floor(Number(raw.liquidationPrice || 0) * 1_000_000)),
86
+ pnlAfterFeesUsd: raw.pnlAfterFees || raw.pnlAfterFeesUsd || '0',
87
+ pnlAfterFeesPct: raw.pnlChangePctAfterFees || raw.pnlAfterFeesPct || '0',
88
+ positionPubkey: raw.positionPubkey,
89
+ };
90
+ }
91
+ /** Fetch positions from on-chain (reliable, always has asset field) */
92
+ export async function getPerpsPositions(walletAddress, connection) {
93
+ const positions = await getOnChainPositions(connection, walletAddress);
94
+ return {
95
+ count: positions.length,
96
+ dataList: positions.map(p => ({
97
+ asset: p.custody,
98
+ side: p.side,
99
+ leverage: p.leverage.toFixed(1),
100
+ sizeUsd: p.sizeUsd.mul(1_000_000).toFixed(0),
101
+ collateralUsd: p.collateralUsd.mul(1_000_000).toFixed(0),
102
+ entryPriceUsd: p.entryPrice.mul(1_000_000).toFixed(0),
103
+ markPriceUsd: '0',
104
+ liquidationPriceUsd: '0',
105
+ pnlAfterFeesUsd: '0',
106
+ pnlAfterFeesPct: '0',
107
+ positionPubkey: p.publicKey,
108
+ })),
109
+ };
110
+ }
111
+ // ============================================================================
112
+ // Trading functions (on-chain via Anchor — replaces broken REST endpoints)
113
+ // ============================================================================
114
+ /**
115
+ * Build an increase-position (open) transaction on-chain.
116
+ * Returns a VersionedTransaction ready for signing.
117
+ */
118
+ export async function buildIncreasePositionTransaction(connection, params) {
119
+ const owner = new PublicKey(params.walletAddress);
120
+ const collateralAmount = new BN(params.inputTokenAmount);
121
+ // Compute sizeUsdDelta from leverage if not provided directly
122
+ let sizeUsdDelta;
123
+ if (params.sizeUsdDelta) {
124
+ sizeUsdDelta = new BN(params.sizeUsdDelta);
125
+ }
126
+ else if (params.leverage) {
127
+ // Estimate: sizeUsd = collateral_in_usd * leverage
128
+ const decimals = perpsTokenDecimals(params.inputToken);
129
+ const tokenAmount = Number(params.inputTokenAmount) / Math.pow(10, decimals);
130
+ let collateralUsd;
131
+ if (params.inputToken === 'USDC') {
132
+ collateralUsd = tokenAmount; // USDC is 1:1 USD
133
+ }
134
+ else {
135
+ const mint = assetToMint(params.inputToken);
136
+ const tokenStats = await getMarketStats(mint);
137
+ collateralUsd = tokenAmount * Number(tokenStats.price);
138
+ }
139
+ sizeUsdDelta = new BN(Math.floor(collateralUsd * Number(params.leverage) * 1_000_000));
140
+ }
141
+ else {
142
+ throw new Error('Either sizeUsdDelta or leverage must be provided');
143
+ }
144
+ // Fetch oracle price and compute slippage guard
145
+ const assetMint = assetToMint(params.asset);
146
+ const stats = await getMarketStats(assetMint);
147
+ const slippageBps = params.slippageBps ?? DEFAULT_SLIPPAGE_BPS;
148
+ const oraclePrice = Number(stats.price);
149
+ const priceSlippage = computePriceSlippage(oraclePrice, slippageBps, params.side, 'increase');
150
+ // Derive position pubkey
151
+ const { custody, collateralCustody } = resolveCustodies(params.asset, params.side);
152
+ const positionPubkey = derivePositionPda(owner, custody, collateralCustody, params.side);
153
+ // jupiterMinimumOut is needed when inputToken differs from the collateral token,
154
+ // requiring the program to swap internally.
155
+ // - Longs: collateral = asset (SOL/ETH/BTC). Cross-token if inputToken != asset
156
+ // - Shorts: collateral = USDC. Cross-token if inputToken != USDC
157
+ let jupiterMinimumOut;
158
+ const collateralToken = params.side === 'long' ? params.asset : 'USDC';
159
+ const isCrossToken = params.inputToken.toUpperCase() !== collateralToken.toUpperCase();
160
+ if (isCrossToken) {
161
+ const decimals = perpsTokenDecimals(params.inputToken);
162
+ const inputAmount = Number(params.inputTokenAmount) / Math.pow(10, decimals);
163
+ const collateralDecimals = perpsTokenDecimals(collateralToken);
164
+ // Estimate output amount with 2% slippage buffer
165
+ let outAmount;
166
+ if (collateralToken === 'USDC') {
167
+ // Selling asset for USDC: inputAmount * assetPrice
168
+ outAmount = inputAmount * oraclePrice;
169
+ }
170
+ else {
171
+ // Buying asset with USDC (or other): inputAmount / assetPrice
172
+ outAmount = inputAmount / oraclePrice;
173
+ }
174
+ const minOut = Math.floor(outAmount * 0.98 * Math.pow(10, collateralDecimals));
175
+ jupiterMinimumOut = new BN(minOut);
176
+ }
177
+ const tx = await buildIncreasePositionTx(connection, {
178
+ owner,
179
+ market: params.asset,
180
+ side: params.side,
181
+ collateralToken: params.inputToken,
182
+ collateralAmount,
183
+ sizeUsdDelta,
184
+ priceSlippage,
185
+ jupiterMinimumOut,
186
+ });
187
+ return { tx, positionPubkey: positionPubkey.toBase58() };
188
+ }
189
+ /**
190
+ * Build a decrease-position (close/reduce) transaction on-chain.
191
+ * Fetches position data to determine side + asset for proper slippage.
192
+ */
193
+ export async function buildDecreasePositionTransaction(connection, params,
194
+ /** Pass side + asset if already known (avoids extra on-chain fetch for slippage calc) */
195
+ positionInfo) {
196
+ const positionPubkey = new PublicKey(params.positionPubkey);
197
+ const slippageBps = params.slippageBps ?? DEFAULT_SLIPPAGE_BPS;
198
+ if (!positionInfo)
199
+ throw new Error('positionInfo (side + asset) required for slippage calculation');
200
+ const { side, asset } = positionInfo;
201
+ // Fetch oracle price and compute slippage guard
202
+ const assetMint = assetToMint(asset);
203
+ const stats = await getMarketStats(assetMint);
204
+ const oraclePrice = Number(stats.price);
205
+ const priceSlippage = computePriceSlippage(oraclePrice, slippageBps, side, 'decrease');
206
+ const tx = await buildDecreasePositionTx(connection, {
207
+ owner: positionPubkey, // unused — fetched from position account
208
+ positionPubkey,
209
+ desiredToken: params.receiveToken,
210
+ sizeUsdDelta: params.sizeUsdDelta ? new BN(params.sizeUsdDelta) : undefined,
211
+ collateralUsdDelta: params.collateralUsdDelta ? new BN(params.collateralUsdDelta) : undefined,
212
+ priceSlippage,
213
+ entirePosition: params.entirePosition,
214
+ });
215
+ return { tx, positionPubkey: params.positionPubkey };
216
+ }
217
+ /**
218
+ * Sign a transaction and submit it on-chain.
219
+ * The keeper will automatically pick up the PositionRequest and execute the trade.
220
+ */
221
+ export async function signAndSendPerps(connection, keypair, tx) {
222
+ tx.sign([keypair]);
223
+ return sendAndConfirmTransaction(connection, tx);
224
+ }
225
+ // Legacy compat — kept for any code still using the old flow
226
+ export async function signAndExecutePerps(connection, keypair, txBase64, _action) {
227
+ const transaction = VersionedTransaction.deserialize(Buffer.from(txBase64, 'base64'));
228
+ transaction.sign([keypair]);
229
+ return sendAndConfirmTransaction(connection, transaction);
230
+ }
231
+ // ============================================================================
232
+ // Helpers
233
+ // ============================================================================
234
+ /** Convert raw 6-decimal USD string to human-readable number */
235
+ export function rawToUsd(raw) {
236
+ return Number(raw) / 1_000_000;
237
+ }
238
+ /** Convert raw 6-decimal USD string to formatted dollar string */
239
+ export function formatUsd(raw) {
240
+ const usd = rawToUsd(raw);
241
+ return `$${usd.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
242
+ }
243
+ /** Resolve asset name to mint */
244
+ export function assetToMint(asset) {
245
+ const upper = asset.toUpperCase();
246
+ const mint = PERPS_MINTS[upper];
247
+ if (!mint)
248
+ throw new Error(`Unknown perps asset: ${asset}. Available: ${PERPS_ASSETS.join(', ')}`);
249
+ return mint;
250
+ }
251
+ /** Token decimals for perps input tokens */
252
+ export function perpsTokenDecimals(token) {
253
+ switch (token) {
254
+ case 'SOL': return 9;
255
+ case 'ETH': return 8;
256
+ case 'BTC': return 8;
257
+ case 'USDC': return 6;
258
+ }
259
+ }
260
+ //# sourceMappingURL=perps-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perps-api.js","sourceRoot":"","sources":["../../src/utils/perps-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,EAAuB,SAAS,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,IAAI,mBAAmB,EACvC,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,GAAG,EAAE,6CAA6C;IAClD,GAAG,EAAE,8CAA8C;IACnD,GAAG,EAAE,8CAA8C;CACpD,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AA8C3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC,CAAC,mDAAmD;AAsB3F;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,WAAmB,EACnB,IAAe,EACf,MAA+B;IAE/B,MAAM,WAAW,GACf,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,CAAC;QAC1C,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,WAAW,GAAG,KAAK,CAAC;IAChC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACvD,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,+EAA+E;AAC/E,kEAAkE;AAClE,+EAA+E;AAE/E,KAAK,UAAU,UAAU,CAAI,IAAY,EAAE,OAAqB;IAC9D,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,GAAG,OAAO,EAAE,OAAiC;KAC9C,CAAC;IACF,0CAA0C;IAC1C,IAAI,CAAC;QAAC,OAAO,CAAC,WAAW,CAAC,GAAG,iBAAiB,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAE5D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,EAAE;QAC1D,GAAG,OAAO;QACV,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;AACvC,CAAC;AAED,+EAA+E;AAC/E,oDAAoD;AACpD,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,OAAO,UAAU,CAAc,iBAAiB,MAAM,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,OAAO,UAAU,CAAW,cAAc,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAClD,CAAC;AAED,6BAA6B;AAC7B,MAAM,aAAa,GAA2B;IAC5C,6CAA6C,EAAE,KAAK;IACpD,8CAA8C,EAAE,KAAK;IACrD,8CAA8C,EAAE,KAAK;CACtD,CAAC;AAEF,sEAAsE;AACtE,SAAS,oBAAoB,CAAC,GAAQ;IACpC,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,IAAI,SAAS;QAChF,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG;QAC/C,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,GAAG;QACvC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAC1E,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACxE,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACtF,eAAe,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG;QAC/D,eAAe,EAAE,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG;QACxE,cAAc,EAAE,GAAG,CAAC,cAAc;KACnC,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,aAAqB,EACrB,UAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACvE,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,MAAM;QACvB,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,KAAK,EAAE,CAAC,CAAC,OAAO;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,YAAY,EAAE,GAAG;YACjB,mBAAmB,EAAE,GAAG;YACxB,eAAe,EAAE,GAAG;YACpB,eAAe,EAAE,GAAG;YACpB,cAAc,EAAE,CAAC,CAAC,SAAS;SAC5B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,2EAA2E;AAC3E,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,UAAsB,EACtB,MAA8B;IAE9B,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEzD,8DAA8D;IAC9D,IAAI,YAAgB,CAAC;IACrB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,YAAY,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3B,mDAAmD;QACnD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC7E,IAAI,aAAqB,CAAC;QAC1B,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YACjC,aAAa,GAAG,WAAW,CAAC,CAAC,kBAAkB;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC9C,aAAa,GAAG,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;QACD,YAAY,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,gDAAgD;IAChD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAE9F,yBAAyB;IACzB,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzF,iFAAiF;IACjF,4CAA4C;IAC5C,gFAAgF;IAChF,iEAAiE;IACjE,IAAI,iBAAiC,CAAC;IACtC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,CAAC;IACvF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC7E,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,eAA6B,CAAC,CAAC;QAC7E,iDAAiD;QACjD,IAAI,SAAiB,CAAC;QACtB,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;YAC/B,mDAAmD;YACnD,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,8DAA8D;YAC9D,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;QACxC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC/E,iBAAiB,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE;QACnD,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,KAAY;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,eAAe,EAAE,MAAM,CAAC,UAAU;QAClC,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,iBAAiB;KAClB,CAAC,CAAC;IAEH,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,UAAsB,EACtB,MAA8B;AAC9B,yFAAyF;AACzF,YAAqD;IAErD,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAE/D,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACpG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IAErC,gDAAgD;IAChD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAEvF,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE;QACnD,KAAK,EAAE,cAAc,EAAE,yCAAyC;QAChE,cAAc;QACd,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3E,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7F,aAAa;QACb,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,CAAC;IAEH,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAsB,EACtB,OAAgB,EAChB,EAAwB;IAExB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACnB,OAAO,yBAAyB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAsB,EACtB,OAAgB,EAChB,QAAgB,EAChB,OAAe;IAEf,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtF,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5B,OAAO,yBAAyB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,gEAAgE;AAChE,MAAM,UAAU,QAAQ,CAAC,GAAoB;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACjC,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,SAAS,CAAC,GAAoB;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnG,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,gBAAgB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- export interface Position {
1
+ interface Position {
2
2
  id: string;
3
3
  type: 'long' | 'short' | 'prediction';
4
4
  token: string;
@@ -34,22 +34,6 @@ export interface Position {
34
34
  txSignature: string;
35
35
  };
36
36
  }
37
- export interface PositionsData {
38
- positions: Position[];
39
- lastUpdated: string;
40
- }
41
- /**
42
- * Load positions from file
43
- */
44
- export declare function loadPositions(): PositionsData;
45
- /**
46
- * Get the positions file path (for documentation/debugging)
47
- */
48
- export declare function getPositionsFilePath(): string;
49
- /**
50
- * Save positions to file with secure permissions
51
- */
52
- export declare function savePositions(data: PositionsData): void;
53
37
  /**
54
38
  * Open a new position
55
39
  */
@@ -65,62 +49,7 @@ export declare function openPosition(params: {
65
49
  tags?: string[];
66
50
  entryTxSignature?: string;
67
51
  }): Position;
68
- /**
69
- * Close a position
70
- */
71
- export declare function closePosition(positionId: string, exitPrice: number, exitAmount: number, options?: {
72
- exitTxSignature?: string;
73
- notes?: string;
74
- }): Position | null;
75
- /**
76
- * Get open positions
77
- */
78
- export declare function getOpenPositions(): Position[];
79
- /**
80
- * Get all positions
81
- */
82
- export declare function getAllPositions(): Position[];
83
- /**
84
- * Get position by ID
85
- */
86
- export declare function getPosition(positionId: string): Position | null;
87
- /**
88
- * Update position notes
89
- */
90
- export declare function updatePositionNotes(positionId: string, notes: string, append?: boolean): void;
91
- /**
92
- * Add tags to a position
93
- */
94
- export declare function addPositionTags(positionId: string, tags: string[]): void;
95
- /**
96
- * Get positions by tag
97
- */
98
- export declare function getPositionsByTag(tag: string): Position[];
99
- export interface PriceUpdateResult {
100
- positionId: string;
101
- tokenSymbol: string;
102
- previousPrice?: number;
103
- currentPrice: number;
104
- entryPrice: number;
105
- unrealizedPnl: number;
106
- unrealizedPnlPercent: number;
107
- }
108
- /**
109
- * Update current prices for all open positions
110
- */
111
- export declare function updatePositionPrices(): Promise<PriceUpdateResult[]>;
112
- /**
113
- * Display positions in a readable format
114
- */
115
- export declare function displayPositions(positions: Position[]): void;
116
- /**
117
- * Calculate total PnL from closed positions
118
- */
119
- export declare function calculateTotalPnL(): {
120
- realized: number;
121
- count: number;
122
- };
123
- export interface PositionStats {
52
+ interface PositionStats {
124
53
  totalPositions: number;
125
54
  openPositions: number;
126
55
  closedPositions: number;
@@ -191,8 +120,5 @@ export declare function findPredictionByMarket(marketId: string, side?: 'yes' |
191
120
  * Find prediction position by on-chain position pubkey
192
121
  */
193
122
  export declare function findPredictionByPubkey(positionPubkey: string): Position | null;
194
- /**
195
- * Get all prediction positions
196
- */
197
- export declare function getPredictionPositions(status?: 'open' | 'won' | 'lost' | 'all'): Position[];
123
+ export {};
198
124
  //# sourceMappingURL=positions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"positions.d.ts","sourceRoot":"","sources":["../../src/utils/positions.ts"],"names":[],"mappings":"AA+CA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,UAAU,CAAC,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,aAAa,CAoB7C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAavD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,QAAQ,CAwBX;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,QAAQ,GAAG,IAAI,CAkDjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,EAAE,CAG7C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAG5C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAG/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI,CAYpG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAUxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGzD;AAwED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuCzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CA8G5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAUvE;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvE,MAAM,EAAE;QACN,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACrC,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACtC,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5C,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAuFhD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,QAAQ,CA8BX;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,KAAK,GAAG,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ,GAAG,IAAI,CA6BjB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CAQ7F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAO9E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EAAE,CAO3F"}
1
+ {"version":3,"file":"positions.d.ts","sourceRoot":"","sources":["../../src/utils/positions.ts"],"names":[],"mappings":"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"}