From 3a739bde57fca1395ef4b765fcb8c3b6a8653b4130e18c354b75cfaa9c109a4e Mon Sep 17 00:00:00 2001 From: Minimons Date: Mon, 29 Jun 2026 15:30:10 +0200 Subject: [PATCH] 19: Decode 'collateralUsd' --- .../AnchorIdlJupiterPerpsPositionDecoder.tjava | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionDecoder.tjava b/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionDecoder.tjava index 7661a5b..526eba9 100644 --- a/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionDecoder.tjava +++ b/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionDecoder.tjava @@ -38,11 +38,21 @@ class AnchorIdlJupiterPerpsPositionDecoder { .valueOf(rawEntryPrice) .movePointLeft(6); + long rawCollateralUsd = ByteBuffer + .wrap(data, COLLATERAL_USD_OFFSET, U64_LENGTH) + .order(ByteOrder.LITTLE_ENDIAN) + .getLong(); + + ΩUSDCAmountΩ collateralUsd = BigDecimal + .valueOf(rawCollateralUsd) + .movePointLeft(6); + JupiterPerpsPosition pos = new JupiterPerpsPosition( positionAccount, entryPrice, direction, - tradedTokenMint + tradedTokenMint, + collateralUsd ); return pos; @@ -104,11 +114,13 @@ class AnchorIdlJupiterPerpsPositionDecoder { private static final int OWNER_OFFSET = ANCHOR_DISCRIMINATOR_LENGTH; private static final int POOL_OFFSET = OWNER_OFFSET + PUBLIC_KEY_LENGTH; private static final int CUSTODY_OFFSET = POOL_OFFSET + PUBLIC_KEY_LENGTH; - private static final int COLLATERAL_CUSTODY_OFFSET = CUSTODY_OFFSET + PUBLIC_KEY_LENGTH; // custody + private static final int COLLATERAL_CUSTODY_OFFSET = CUSTODY_OFFSET + PUBLIC_KEY_LENGTH; private static final int OPEN_TIME_OFFSET = COLLATERAL_CUSTODY_OFFSET + PUBLIC_KEY_LENGTH; - private static final int UPDATE_TIME_OFFSET = OPEN_TIME_OFFSET + I64_LENGTH; // openTime + private static final int UPDATE_TIME_OFFSET = OPEN_TIME_OFFSET + I64_LENGTH; private static final int SIDE_OFFSET = UPDATE_TIME_OFFSET + I64_LENGTH; private static final int PRICE_OFFSET = SIDE_OFFSET + SIDE_ENUM_LENGTH; + private static final int SIZE_USD_OFFSET = PRICE_OFFSET + U64_LENGTH; + private static final int COLLATERAL_USD_OFFSET = SIZE_USD_OFFSET + U64_LENGTH; private static final Base58Codec base58 = new Base58CodecImpl(); } \ No newline at end of file