From 94b37e1396096465e5718f6a9b429e17452b2ee0a8821b45b447675722c8ec82 Mon Sep 17 00:00:00 2001 From: Minimons Date: Sat, 4 Jul 2026 23:57:57 +0200 Subject: [PATCH] X: Clean-up decoding (BROKEN) --- ...AnchorIdlJupiterPerpsPositionDecoder.tjava | 41 ++--------- .../AnchorIdlJupiterPerpsServiceImpl.tjava | 69 ++++++++++++++++++- 2 files changed, 72 insertions(+), 38 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 8d132e2..c910f84 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 @@ -2,26 +2,17 @@ package com.r35157.libs.jupiter.perps.impl.anchoridl; import com.r35157.libs.codec.Base58Codec; import com.r35157.libs.codec.impl.ref.Base58CodecImpl; -import com.r35157.libs.jupiter.perps.JupiterPerpsPosition; import com.r35157.libs.jupiter.perps.JupiterPerpsPositionDirection; import com.r35157.libs.solana.SolanaAccountInfo; -import com.r35157.libs.valuetypes.basic.MoneyAmount; -import com.r35157.libs.valuetypes.basic.WellKnownCurrencyTypes; import java.math.BigDecimal; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Base64; -import static java.math.BigDecimal.ZERO; - class AnchorIdlJupiterPerpsPositionDecoder { - JupiterPerpsPosition decode( - ΩJupiterPerpsPositionAccountΩ positionAccount, - SolanaAccountInfo accountInfo, - ΩSPLMintAddressΩ tradedTokenMint - ) { + JupiterPerpsPositionInfo decode(SolanaAccountInfo accountInfo) { byte[] data = Base64.getDecoder().decode(accountInfo.dataBase64()); if (data.length < PRICE_OFFSET + U64_LENGTH) { @@ -60,35 +51,15 @@ class AnchorIdlJupiterPerpsPositionDecoder { .valueOf(rawSizeUsd) .movePointLeft(6); - ΩUSDCAmountΩ value = ZERO; // TODO - Dummy - ΩUSDCAmountΩ pnl = ZERO; // TODO - Dummy - BigDecimal pnlPercent = ZERO; // TODO - Dummy - BigDecimal leverage = ZERO; // TODO - Dummy - ΩUSDCPriceΩ marketPrice = ZERO; // TODO - Dummy - ΩUSDCAmountΩ totalFees = ZERO; // TODO - Dummy - ΩUSDCAmountΩ borrowFeesDue = ZERO; // TODO - Dummy - ΩUSDCAmountΩ closeFeePending = ZERO; // TODO - Dummy - ΩSolanaAmountΩ accountRent = new MoneyAmount(ZERO, WellKnownCurrencyTypes.SOLANA.getCurrencyType()); // TODO - Dummy - JupiterPerpsPosition pos = new JupiterPerpsPosition( - positionAccount, - tradedTokenMint, - direction, - value, - sizeUsd, - pnl, - pnlPercent, - leverage, + JupiterPerpsPositionInfo posInfo = new JupiterPerpsPositionInfo( entryPrice, - marketPrice, - collateralUsd, - totalFees, - borrowFeesDue, - closeFeePending, - accountRent + direction, + sizeUsd, + collateralUsd ); - return pos; + return posInfo; } ΩSolanaAddressΩ decodeCustodyAccount(SolanaAccountInfo accountInfo) { diff --git a/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsServiceImpl.tjava b/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsServiceImpl.tjava index f3349f3..79f23e2 100644 --- a/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsServiceImpl.tjava +++ b/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsServiceImpl.tjava @@ -5,11 +5,16 @@ import com.r35157.libs.jupiter.perps.JupiterPerpsService; import com.r35157.libs.solana.SolanaAccountInfo; import com.r35157.libs.solana.SolanaBlockChain; import com.r35157.libs.solana.SolanaProgramAccountMemcmpFilter; +import com.r35157.libs.solana.valuetypes.WellKnownCurrencyTypes; +import com.r35157.libs.valuetypes.basic.MoneyAmount; import java.io.IOException; +import java.math.BigDecimal; import java.util.HashSet; import java.util.Set; +import static java.math.BigDecimal.ZERO; + public class AnchorIdlJupiterPerpsServiceImpl implements JupiterPerpsService { public AnchorIdlJupiterPerpsServiceImpl( @@ -36,7 +41,36 @@ public class AnchorIdlJupiterPerpsServiceImpl implements JupiterPerpsService { } ΩSPLMintAddressΩ tradedTokenMint = getTradedTokenMint(accountInfo); - JupiterPerpsPosition pos = positionDecoder.decode(positionAccount, accountInfo, tradedTokenMint); + + JupiterPerpsPositionInfo info = positionDecoder.decode(accountInfo); + + ΩUSDCAmountΩ value = ZERO; // TODO - Dummy + ΩUSDCAmountΩ pnl = ZERO; // TODO - Dummy + BigDecimal pnlPercent = ZERO; // TODO - Dummy + BigDecimal leverage = ZERO; // TODO - Dummy + ΩUSDCPriceΩ marketPrice = ZERO; // TODO - Dummy + ΩUSDCAmountΩ totalFees = ZERO; // TODO - Dummy + ΩUSDCAmountΩ borrowFeesDue = ZERO; // TODO - Dummy + ΩUSDCAmountΩ closeFeePending = ZERO; // TODO - Dummy + ΩSolanaAmountΩ accountRent = new MoneyAmount(ZERO, WellKnownCurrencyTypes.SOLANA.getCurrencyType()); // TODO - Dummy + + JupiterPerpsPosition pos = new JupiterPerpsPosition( + positionAccount, + tradedTokenMint, + info.direction(), + value, + info.sizeUsd(), + pnl, + pnlPercent, + leverage, + info.entryPrice(), + marketPrice, + info.collateralUsd(), + totalFees, + borrowFeesDue, + closeFeePending, + accountRent + ); return pos; } @@ -66,8 +100,37 @@ public class AnchorIdlJupiterPerpsServiceImpl implements JupiterPerpsService { ΩSPLMintAddressΩ tradedTokenMint = getTradedTokenMint(accountInfo); - JupiterPerpsPosition position = positionDecoder.decode(address, accountInfo, tradedTokenMint); - positions.add(position); + JupiterPerpsPositionInfo info = positionDecoder.decode(accountInfo); + + ΩUSDCAmountΩ value = ZERO; // TODO - Dummy + ΩUSDCAmountΩ pnl = ZERO; // TODO - Dummy + BigDecimal pnlPercent = ZERO; // TODO - Dummy + BigDecimal leverage = ZERO; // TODO - Dummy + ΩUSDCPriceΩ marketPrice = ZERO; // TODO - Dummy + ΩUSDCAmountΩ totalFees = ZERO; // TODO - Dummy + ΩUSDCAmountΩ borrowFeesDue = ZERO; // TODO - Dummy + ΩUSDCAmountΩ closeFeePending = ZERO; // TODO - Dummy + ΩSolanaAmountΩ accountRent = new MoneyAmount(ZERO, WellKnownCurrencyTypes.SOLANA.getCurrencyType()); // TODO - Dummy + + JupiterPerpsPosition pos = new JupiterPerpsPosition( + positionAccount, + tradedTokenMint, + info.direction(), + value, + info.sizeUsd(), + pnl, + pnlPercent, + leverage, + info.entryPrice(), + marketPrice, + info.collateralUsd(), + totalFees, + borrowFeesDue, + closeFeePending, + accountRent + ); + + positions.add(pos); } return Set.copyOf(positions);