@zeroexcore/trader 3.0.0 → 3.1.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.
@@ -12,6 +12,12 @@ declare const CUSTODY: {
12
12
  };
13
13
  declare const MARKET_MINTS: Record<string, PublicKey>;
14
14
  export type Side = "long" | "short";
15
+ export type TriggerOrder = {
16
+ pubkey: string;
17
+ triggerPrice: Big;
18
+ triggerAboveThreshold: boolean;
19
+ entirePosition: boolean;
20
+ };
15
21
  export type PerpsPosition = {
16
22
  publicKey: string;
17
23
  owner: string;
@@ -25,6 +31,7 @@ export type PerpsPosition = {
25
31
  leverage: number;
26
32
  unrealizedPnl: Big;
27
33
  liquidationPrice: Big;
34
+ triggerOrders: TriggerOrder[];
28
35
  };
29
36
  export type CustodyInfo = {
30
37
  name: string;
@@ -81,6 +88,37 @@ export declare function buildIncreasePositionTx(connection: Connection, req: Inc
81
88
  export declare function buildDecreasePositionTx(connection: Connection, req: DecreasePositionRequest): Promise<VersionedTransaction>;
82
89
  export declare function getPoolStats(connection: Connection): Promise<PoolStats>;
83
90
  export declare function getAllCustodyInfo(connection: Connection): Promise<CustodyInfo[]>;
84
- export declare function getOpenPositions(connection: Connection, walletPubkey: PublicKey | string): Promise<PerpsPosition[]>;
91
+ export declare function getOpenPositions(connection: Connection, walletPubkey: PublicKey | string,
92
+ /** Optional mark prices keyed by asset name (SOL, ETH, BTC). When provided, PnL + liquidation are computed. */
93
+ markPrices?: Record<string, number>): Promise<PerpsPosition[]>;
94
+ export type TpslRequest = {
95
+ owner: PublicKey;
96
+ positionPubkey: PublicKey;
97
+ desiredToken: string;
98
+ triggerPrice: BN;
99
+ triggerAboveThreshold: boolean;
100
+ entirePosition?: boolean;
101
+ sizeUsdDelta?: BN;
102
+ };
103
+ /**
104
+ * Build a createDecreasePositionRequest2 transaction with requestType: Trigger.
105
+ * Creates an on-chain TP or SL order. Keepers execute when trigger price is hit.
106
+ */
107
+ export declare function buildTpslTx(connection: Connection, req: TpslRequest): Promise<VersionedTransaction>;
108
+ /**
109
+ * Build a transaction with both TP and SL in a single tx (two instructions).
110
+ */
111
+ export declare function buildTpslPairTx(connection: Connection, tpReq: TpslRequest, slReq: TpslRequest): Promise<VersionedTransaction>;
112
+ export type UpdateTpslRequest = {
113
+ owner: PublicKey;
114
+ positionPubkey: PublicKey;
115
+ positionRequestPubkey: PublicKey;
116
+ triggerPrice: BN;
117
+ };
118
+ /**
119
+ * Build an updateDecreasePositionRequest2 transaction.
120
+ * Updates triggerPrice on an existing TP/SL PositionRequest. Owner-only.
121
+ */
122
+ export declare function buildUpdateTpslTx(connection: Connection, requests: UpdateTpslRequest[]): Promise<VersionedTransaction>;
85
123
  export { CUSTODY, POOL, PROGRAM_ID, MARKET_MINTS };
86
124
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/perps/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/perps/index.ts"],"names":[],"mappings":"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"}
@@ -85,7 +85,8 @@ function resolveInputMint(token) {
85
85
  async function fetchCustodyOracles(program, custodyPubkey) {
86
86
  const custody = await program.account.custody.fetch(custodyPubkey);
87
87
  return {
88
- dovesPriceAccount: custody.dovesOracle,
88
+ // dovesAgOracle is the current doves price feed (replaced the older dovesOracle)
89
+ dovesPriceAccount: (custody.dovesAgOracle ?? custody.dovesOracle),
89
90
  pythnetPriceAccount: custody.oracle.oracleAccount,
90
91
  tokenAccount: custody.tokenAccount,
91
92
  mint: custody.mint,
@@ -277,7 +278,9 @@ export async function getAllCustodyInfo(connection) {
277
278
  const markets = ["SOL", "ETH", "BTC"];
278
279
  return Promise.all(markets.map((m) => getCustodyInfo(connection, m)));
279
280
  }
280
- export async function getOpenPositions(connection, walletPubkey) {
281
+ export async function getOpenPositions(connection, walletPubkey,
282
+ /** Optional mark prices keyed by asset name (SOL, ETH, BTC). When provided, PnL + liquidation are computed. */
283
+ markPrices) {
281
284
  const wallet = typeof walletPubkey === "string" ? new PublicKey(walletPubkey) : walletPubkey;
282
285
  const program = createProgram(connection);
283
286
  const gpaResult = await connection.getProgramAccounts(program.programId, {
@@ -287,28 +290,225 @@ export async function getOpenPositions(connection, walletPubkey) {
287
290
  { memcmp: program.coder.accounts.memcmp("Position") },
288
291
  ],
289
292
  });
293
+ // Scan for trigger orders (TP/SL) — PositionRequest accounts with requestType: Trigger
294
+ const triggerGpa = await connection.getProgramAccounts(program.programId, {
295
+ commitment: "confirmed",
296
+ filters: [
297
+ { memcmp: { bytes: wallet.toBase58(), offset: 8 } },
298
+ { memcmp: program.coder.accounts.memcmp("PositionRequest") },
299
+ ],
300
+ });
301
+ const triggersByPosition = new Map();
302
+ for (const item of triggerGpa) {
303
+ try {
304
+ const req = program.coder.accounts.decode("PositionRequest", item.account.data);
305
+ // Only include trigger orders (not market orders), that haven't been executed
306
+ const isTrigger = !!req.requestType?.trigger;
307
+ if (!isTrigger || req.executed)
308
+ continue;
309
+ const posKey = req.position.toBase58();
310
+ const order = {
311
+ pubkey: item.pubkey.toBase58(),
312
+ triggerPrice: bnToBig(req.triggerPrice),
313
+ triggerAboveThreshold: !!req.triggerAboveThreshold,
314
+ entirePosition: !!req.entirePosition,
315
+ };
316
+ const existing = triggersByPosition.get(posKey) || [];
317
+ existing.push(order);
318
+ triggersByPosition.set(posKey, existing);
319
+ }
320
+ catch { /* skip decode errors */ }
321
+ }
290
322
  const positions = gpaResult.map((item) => {
291
323
  const account = program.coder.accounts.decode("Position", item.account.data);
292
324
  const custodyKey = account.custody.toBase58();
325
+ const assetName = CUSTODY_NAMES[custodyKey] || custodyKey;
293
326
  const sizeUsd = bnToBig(account.sizeUsd);
294
327
  const collateralUsd = bnToBig(account.collateralUsd);
328
+ const entryPrice = bnToBig(account.price);
329
+ const leverage = sizeUsd.div(collateralUsd.eq(0) ? Big(1) : collateralUsd).toNumber();
330
+ const side = (account.side.long ? "long" : "short");
331
+ // Compute mark-dependent fields if prices available
332
+ let unrealizedPnl = Big(0);
333
+ let liquidationPrice = Big(0);
334
+ const mark = markPrices?.[assetName];
335
+ if (mark && entryPrice.gt(0)) {
336
+ const markBig = Big(mark);
337
+ // PnL = sizeUsd * (markPrice - entryPrice) / entryPrice for longs, inverse for shorts
338
+ const priceDelta = side === "long"
339
+ ? markBig.minus(entryPrice).div(entryPrice)
340
+ : entryPrice.minus(markBig).div(entryPrice);
341
+ unrealizedPnl = sizeUsd.mul(priceDelta);
342
+ // Liquidation price: price at which collateral is wiped out
343
+ // Long: liqPrice = entryPrice * (1 - collateralUsd / sizeUsd)
344
+ // Short: liqPrice = entryPrice * (1 + collateralUsd / sizeUsd)
345
+ const collateralRatio = collateralUsd.div(sizeUsd.eq(0) ? Big(1) : sizeUsd);
346
+ liquidationPrice = side === "long"
347
+ ? entryPrice.mul(Big(1).minus(collateralRatio))
348
+ : entryPrice.mul(Big(1).plus(collateralRatio));
349
+ }
350
+ const posKey = item.pubkey.toBase58();
295
351
  return {
296
- publicKey: item.pubkey.toBase58(),
352
+ publicKey: posKey,
297
353
  owner: account.owner.toBase58(),
298
- side: (account.side.long ? "long" : "short"),
299
- custody: CUSTODY_NAMES[custodyKey] || custodyKey,
354
+ side,
355
+ custody: assetName,
300
356
  custodyPubkey: custodyKey,
301
357
  collateralCustodyPubkey: account.collateralCustody.toBase58(),
302
358
  sizeUsd,
303
359
  collateralUsd,
304
- entryPrice: bnToBig(account.price),
305
- leverage: sizeUsd.div(collateralUsd.eq(0) ? Big(1) : collateralUsd).toNumber(),
306
- unrealizedPnl: Big(0),
307
- liquidationPrice: Big(0),
360
+ entryPrice,
361
+ leverage,
362
+ unrealizedPnl,
363
+ liquidationPrice,
364
+ triggerOrders: triggersByPosition.get(posKey) || [],
308
365
  };
309
366
  });
310
367
  return positions.filter((p) => p.sizeUsd.gt(0));
311
368
  }
369
+ /**
370
+ * Build a createDecreasePositionRequest2 transaction with requestType: Trigger.
371
+ * Creates an on-chain TP or SL order. Keepers execute when trigger price is hit.
372
+ */
373
+ export async function buildTpslTx(connection, req) {
374
+ const program = createProgram(connection);
375
+ const desiredMint = resolveInputMint(req.desiredToken);
376
+ // Fetch position data for custody addresses
377
+ const position = await program.account.position.fetch(req.positionPubkey);
378
+ const owner = position.owner;
379
+ const custodyPubkey = position.custody;
380
+ const collateralCustodyPubkey = position.collateralCustody;
381
+ // Fetch oracle accounts (needed by createDecreasePositionRequest2 but not by market version)
382
+ const oracles = await fetchCustodyOracles(program, custodyPubkey);
383
+ const { positionRequest, counter } = derivePositionRequestPda(req.positionPubkey, "decrease");
384
+ const positionRequestAta = getAssociatedTokenAddressSync(desiredMint, positionRequest, true);
385
+ const receivingAccount = getAssociatedTokenAddressSync(desiredMint, owner, true);
386
+ const preInstructions = [];
387
+ const postInstructions = [];
388
+ // Ensure receiving ATA exists (for trigger orders the keeper executes later)
389
+ preInstructions.push(createAssociatedTokenAccountIdempotentInstruction(owner, receivingAccount, owner, desiredMint));
390
+ const tpslIx = await program.methods
391
+ .createDecreasePositionRequest2({
392
+ collateralUsdDelta: new BN(0),
393
+ sizeUsdDelta: req.sizeUsdDelta ?? new BN(0),
394
+ requestType: { trigger: {} },
395
+ priceSlippage: null,
396
+ jupiterMinimumOut: null,
397
+ triggerPrice: req.triggerPrice,
398
+ triggerAboveThreshold: req.triggerAboveThreshold,
399
+ entirePosition: req.entirePosition ?? true,
400
+ counter,
401
+ })
402
+ .accounts({
403
+ owner,
404
+ receivingAccount,
405
+ perpetuals: PERPETUALS_PDA,
406
+ pool: POOL,
407
+ position: req.positionPubkey,
408
+ positionRequest,
409
+ positionRequestAta,
410
+ custody: custodyPubkey,
411
+ custodyDovesPriceAccount: oracles.dovesPriceAccount,
412
+ custodyPythnetPriceAccount: oracles.pythnetPriceAccount,
413
+ collateralCustody: collateralCustodyPubkey,
414
+ desiredMint,
415
+ referral: null,
416
+ tokenProgram: TOKEN_PROGRAM_ID,
417
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
418
+ systemProgram: SystemProgram.programId,
419
+ eventAuthority: EVENT_AUTHORITY,
420
+ program: PROGRAM_ID,
421
+ })
422
+ .instruction();
423
+ return buildAndSimulateTx(connection, owner, [...preInstructions, tpslIx, ...postInstructions]);
424
+ }
425
+ /**
426
+ * Build a transaction with both TP and SL in a single tx (two instructions).
427
+ */
428
+ export async function buildTpslPairTx(connection, tpReq, slReq) {
429
+ const program = createProgram(connection);
430
+ const position = await program.account.position.fetch(tpReq.positionPubkey);
431
+ const owner = position.owner;
432
+ const custodyPubkey = position.custody;
433
+ const collateralCustodyPubkey = position.collateralCustody;
434
+ const oracles = await fetchCustodyOracles(program, custodyPubkey);
435
+ const instructions = [];
436
+ for (const req of [tpReq, slReq]) {
437
+ const desiredMint = resolveInputMint(req.desiredToken);
438
+ const { positionRequest, counter } = derivePositionRequestPda(req.positionPubkey, "decrease");
439
+ const positionRequestAta = getAssociatedTokenAddressSync(desiredMint, positionRequest, true);
440
+ const receivingAccount = getAssociatedTokenAddressSync(desiredMint, owner, true);
441
+ instructions.push(createAssociatedTokenAccountIdempotentInstruction(owner, receivingAccount, owner, desiredMint));
442
+ const ix = await program.methods
443
+ .createDecreasePositionRequest2({
444
+ collateralUsdDelta: new BN(0),
445
+ sizeUsdDelta: req.sizeUsdDelta ?? new BN(0),
446
+ requestType: { trigger: {} },
447
+ priceSlippage: null,
448
+ jupiterMinimumOut: null,
449
+ triggerPrice: req.triggerPrice,
450
+ triggerAboveThreshold: req.triggerAboveThreshold,
451
+ entirePosition: req.entirePosition ?? true,
452
+ counter,
453
+ })
454
+ .accounts({
455
+ owner,
456
+ receivingAccount,
457
+ perpetuals: PERPETUALS_PDA,
458
+ pool: POOL,
459
+ position: req.positionPubkey,
460
+ positionRequest,
461
+ positionRequestAta,
462
+ custody: custodyPubkey,
463
+ custodyDovesPriceAccount: oracles.dovesPriceAccount,
464
+ custodyPythnetPriceAccount: oracles.pythnetPriceAccount,
465
+ collateralCustody: collateralCustodyPubkey,
466
+ desiredMint,
467
+ referral: null,
468
+ tokenProgram: TOKEN_PROGRAM_ID,
469
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
470
+ systemProgram: SystemProgram.programId,
471
+ eventAuthority: EVENT_AUTHORITY,
472
+ program: PROGRAM_ID,
473
+ })
474
+ .instruction();
475
+ instructions.push(ix);
476
+ }
477
+ return buildAndSimulateTx(connection, owner, instructions);
478
+ }
479
+ /**
480
+ * Build an updateDecreasePositionRequest2 transaction.
481
+ * Updates triggerPrice on an existing TP/SL PositionRequest. Owner-only.
482
+ */
483
+ export async function buildUpdateTpslTx(connection, requests) {
484
+ const program = createProgram(connection);
485
+ const owner = requests[0].owner;
486
+ // Fetch oracle accounts once (all requests should be same custody)
487
+ const position = await program.account.position.fetch(requests[0].positionPubkey);
488
+ const custodyPubkey = position.custody;
489
+ const oracles = await fetchCustodyOracles(program, custodyPubkey);
490
+ const instructions = [];
491
+ for (const req of requests) {
492
+ const ix = await program.methods
493
+ .updateDecreasePositionRequest2({
494
+ sizeUsdDelta: new BN(0),
495
+ triggerPrice: req.triggerPrice,
496
+ })
497
+ .accounts({
498
+ owner,
499
+ perpetuals: PERPETUALS_PDA,
500
+ pool: POOL,
501
+ position: req.positionPubkey,
502
+ positionRequest: req.positionRequestPubkey,
503
+ custody: custodyPubkey,
504
+ custodyDovesPriceAccount: oracles.dovesPriceAccount,
505
+ custodyPythnetPriceAccount: oracles.pythnetPriceAccount,
506
+ })
507
+ .instruction();
508
+ instructions.push(ix);
509
+ }
510
+ return buildAndSimulateTx(connection, owner, instructions);
511
+ }
312
512
  // Re-export constants for use by commands
313
513
  export { CUSTODY, POOL, PROGRAM_ID, MARKET_MINTS };
314
514
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/perps/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/perps/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,13 @@ export declare const PERPS_ASSETS: readonly ["SOL", "ETH", "BTC"];
5
5
  export type PerpsAsset = (typeof PERPS_ASSETS)[number];
6
6
  export type PerpsSide = 'long' | 'short';
7
7
  export type PerpsToken = PerpsAsset | 'USDC';
8
+ export interface TriggerOrderInfo {
9
+ pubkey: string;
10
+ triggerPriceUsd: string;
11
+ triggerAboveThreshold: boolean;
12
+ entirePosition: boolean;
13
+ label: string;
14
+ }
8
15
  export interface PerpsPosition {
9
16
  asset: string;
10
17
  side: PerpsSide;
@@ -17,6 +24,9 @@ export interface PerpsPosition {
17
24
  pnlAfterFeesUsd: string;
18
25
  pnlAfterFeesPct: string;
19
26
  positionPubkey: string;
27
+ tpPriceUsd?: string;
28
+ slPriceUsd?: string;
29
+ triggerOrders: TriggerOrderInfo[];
20
30
  }
21
31
  export interface PerpsPositionsResponse {
22
32
  dataList: PerpsPosition[];
@@ -70,7 +80,7 @@ export interface DecreasePositionParams {
70
80
  export declare function computePriceSlippage(oraclePrice: number, slippageBps: number, side: PerpsSide, action: 'increase' | 'decrease'): BN;
71
81
  export declare function getMarketStats(mint: string): Promise<MarketStats>;
72
82
  export declare function getPoolInfo(mint: string): Promise<PoolInfo>;
73
- /** Fetch positions from on-chain (reliable, always has asset field) */
83
+ /** Fetch positions from on-chain with live mark prices, PnL, and liquidation */
74
84
  export declare function getPerpsPositions(walletAddress: string, connection: Connection): Promise<PerpsPositionsResponse>;
75
85
  /**
76
86
  * Build an increase-position (open) transaction on-chain.
@@ -98,6 +108,22 @@ positionInfo?: {
98
108
  * The keeper will automatically pick up the PositionRequest and execute the trade.
99
109
  */
100
110
  export declare function signAndSendPerps(connection: Connection, keypair: Keypair, tx: VersionedTransaction): Promise<string>;
111
+ export interface TpslParams {
112
+ positionPubkey: string;
113
+ side: PerpsSide;
114
+ asset: PerpsAsset;
115
+ receiveToken: PerpsToken;
116
+ tpPrice?: number;
117
+ slPrice?: number;
118
+ entirePosition?: boolean;
119
+ }
120
+ /**
121
+ * Build a TP/SL transaction. If both tp and sl are provided, bundles both into one tx.
122
+ */
123
+ export declare function buildTpslTransaction(connection: Connection, params: TpslParams): Promise<{
124
+ tx: VersionedTransaction;
125
+ positionPubkey: string;
126
+ }>;
101
127
  export declare function signAndExecutePerps(connection: Connection, keypair: Keypair, txBase64: string, _action: string): Promise<string>;
102
128
  /** Convert raw 6-decimal USD string to human-readable number */
103
129
  export declare function rawToUsd(raw: string | number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"perps-api.d.ts","sourceRoot":"","sources":["../../src/utils/perps-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"perps-api.d.ts","sourceRoot":"","sources":["../../src/utils/perps-api.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import BN from 'bn.js';
2
2
  import { PublicKey, VersionedTransaction } from '@solana/web3.js';
3
3
  import { apis, requireJupiterKey } from '../config.js';
4
4
  import { sendAndConfirmTransaction } from './solana.js';
5
- import { buildIncreasePositionTx, buildDecreasePositionTx, getOpenPositions as getOnChainPositions, resolveCustodies, derivePositionPda, } from './perps/index.js';
5
+ import { buildIncreasePositionTx, buildDecreasePositionTx, buildTpslTx, buildTpslPairTx, getOpenPositions as getOnChainPositions, resolveCustodies, derivePositionPda, } from './perps/index.js';
6
6
  // ============================================================================
7
7
  // Perps token mints
8
8
  // ============================================================================
@@ -86,26 +86,74 @@ function normalizeApiPosition(raw) {
86
86
  pnlAfterFeesUsd: raw.pnlAfterFees || raw.pnlAfterFeesUsd || '0',
87
87
  pnlAfterFeesPct: raw.pnlChangePctAfterFees || raw.pnlAfterFeesPct || '0',
88
88
  positionPubkey: raw.positionPubkey,
89
+ triggerOrders: [],
89
90
  };
90
91
  }
91
- /** Fetch positions from on-chain (reliable, always has asset field) */
92
+ /** Fetch positions from on-chain with live mark prices, PnL, and liquidation */
92
93
  export async function getPerpsPositions(walletAddress, connection) {
93
- const positions = await getOnChainPositions(connection, walletAddress);
94
+ // Fetch mark prices for all perps assets in parallel
95
+ const assetMints = Object.entries(PERPS_MINTS);
96
+ const statsResults = await Promise.allSettled(assetMints.map(([, mint]) => getMarketStats(mint)));
97
+ const markPrices = {};
98
+ assetMints.forEach(([name], i) => {
99
+ const r = statsResults[i];
100
+ if (r.status === 'fulfilled')
101
+ markPrices[name] = Number(r.value.price);
102
+ });
103
+ const positions = await getOnChainPositions(connection, walletAddress, markPrices);
94
104
  return {
95
105
  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
- })),
106
+ dataList: positions.map(p => {
107
+ const mark = markPrices[p.custody] ?? 0;
108
+ const pnlPct = p.collateralUsd.gt(0)
109
+ ? p.unrealizedPnl.div(p.collateralUsd).mul(100).toFixed(1)
110
+ : '0';
111
+ const isLong = p.side === 'long';
112
+ // Classify trigger orders as TP or SL based on side
113
+ const triggerOrders = p.triggerOrders.map(t => ({
114
+ pubkey: t.pubkey,
115
+ triggerPriceUsd: t.triggerPrice.mul(1_000_000).toFixed(0),
116
+ triggerAboveThreshold: t.triggerAboveThreshold,
117
+ entirePosition: t.entirePosition,
118
+ // Long: above=TP, below=SL. Short: above=SL, below=TP
119
+ label: (isLong === t.triggerAboveThreshold) ? 'TP' : 'SL',
120
+ }));
121
+ // Pick the effective TP and SL prices
122
+ const tpOrders = triggerOrders.filter(t => t.label === 'TP');
123
+ const slOrders = triggerOrders.filter(t => t.label === 'SL');
124
+ // For TP: use the nearest (lowest for long, highest for short)
125
+ // For SL: use the nearest (highest for long, lowest for short)
126
+ const tpPriceUsd = tpOrders.length > 0
127
+ ? tpOrders.reduce((best, t) => {
128
+ const price = Number(t.triggerPriceUsd);
129
+ const bestPrice = Number(best.triggerPriceUsd);
130
+ return isLong ? (price < bestPrice ? t : best) : (price > bestPrice ? t : best);
131
+ }).triggerPriceUsd
132
+ : undefined;
133
+ const slPriceUsd = slOrders.length > 0
134
+ ? slOrders.reduce((best, t) => {
135
+ const price = Number(t.triggerPriceUsd);
136
+ const bestPrice = Number(best.triggerPriceUsd);
137
+ return isLong ? (price > bestPrice ? t : best) : (price < bestPrice ? t : best);
138
+ }).triggerPriceUsd
139
+ : undefined;
140
+ return {
141
+ asset: p.custody,
142
+ side: p.side,
143
+ leverage: p.leverage.toFixed(1),
144
+ sizeUsd: p.sizeUsd.mul(1_000_000).toFixed(0),
145
+ collateralUsd: p.collateralUsd.mul(1_000_000).toFixed(0),
146
+ entryPriceUsd: p.entryPrice.mul(1_000_000).toFixed(0),
147
+ markPriceUsd: Math.floor(mark * 1_000_000).toString(),
148
+ liquidationPriceUsd: p.liquidationPrice.mul(1_000_000).toFixed(0),
149
+ pnlAfterFeesUsd: p.unrealizedPnl.mul(1_000_000).toFixed(0),
150
+ pnlAfterFeesPct: pnlPct,
151
+ positionPubkey: p.publicKey,
152
+ tpPriceUsd,
153
+ slPriceUsd,
154
+ triggerOrders,
155
+ };
156
+ }),
109
157
  };
110
158
  }
111
159
  // ============================================================================
@@ -222,6 +270,38 @@ export async function signAndSendPerps(connection, keypair, tx) {
222
270
  tx.sign([keypair]);
223
271
  return sendAndConfirmTransaction(connection, tx);
224
272
  }
273
+ /**
274
+ * Build a TP/SL transaction. If both tp and sl are provided, bundles both into one tx.
275
+ */
276
+ export async function buildTpslTransaction(connection, params) {
277
+ const positionPubkey = new PublicKey(params.positionPubkey);
278
+ const entirePosition = params.entirePosition ?? true;
279
+ // For longs: TP triggers above (price >= tp), SL triggers below (price <= sl)
280
+ // For shorts: TP triggers below (price <= tp), SL triggers above (price >= sl)
281
+ const isLong = params.side === 'long';
282
+ const makeReq = (price, isTP) => ({
283
+ owner: positionPubkey, // unused — fetched from position account
284
+ positionPubkey,
285
+ desiredToken: params.receiveToken,
286
+ triggerPrice: new BN(Math.round(price * 1_000_000)),
287
+ triggerAboveThreshold: isLong ? isTP : !isTP,
288
+ entirePosition,
289
+ });
290
+ let tx;
291
+ if (params.tpPrice && params.slPrice) {
292
+ tx = await buildTpslPairTx(connection, makeReq(params.tpPrice, true), makeReq(params.slPrice, false));
293
+ }
294
+ else if (params.tpPrice) {
295
+ tx = await buildTpslTx(connection, makeReq(params.tpPrice, true));
296
+ }
297
+ else if (params.slPrice) {
298
+ tx = await buildTpslTx(connection, makeReq(params.slPrice, false));
299
+ }
300
+ else {
301
+ throw new Error('At least one of --tp or --sl is required');
302
+ }
303
+ return { tx, positionPubkey: params.positionPubkey };
304
+ }
225
305
  // Legacy compat — kept for any code still using the old flow
226
306
  export async function signAndExecutePerps(connection, keypair, txBase64, _action) {
227
307
  const transaction = VersionedTransaction.deserialize(Buffer.from(txBase64, 'base64'));