From c130d6c7d452e953b02670073887118e7b54a0b6b4b3c869f40a953857856ccc Mon Sep 17 00:00:00 2001 From: Minimons Date: Thu, 25 Jun 2026 10:40:01 +0200 Subject: [PATCH] 13: Add decoder for IDL and delegate from service --- ...AnchorIdlJupiterPerpsPositionDecoder.tjava | 16 ++++++++++++++++ ...orIdlJupiterPerpsPositionServiceImpl.tjava | 19 ++++++++----------- 2 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionDecoder.tjava 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 new file mode 100644 index 0000000..7f501f4 --- /dev/null +++ b/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionDecoder.tjava @@ -0,0 +1,16 @@ +package com.r35157.libs.jupiter.perps.impl.anchoridl; + +import com.r35157.libs.jupiter.perps.JupiterPerpsPosition; +import com.r35157.libs.solana.SolanaAccountInfo; + +class AnchorIdlJupiterPerpsPositionDecoder { + + JupiterPerpsPosition decode( + ΩJupiterPerpsPositionAccountΩ positionAccount, + SolanaAccountInfo accountInfo + ) { + throw new UnsupportedOperationException( + "Jupiter Perps position decoding is not implemented yet." + ); + } +} \ No newline at end of file diff --git a/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionServiceImpl.tjava b/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionServiceImpl.tjava index 7697862..f01b8e5 100644 --- a/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionServiceImpl.tjava +++ b/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionServiceImpl.tjava @@ -10,28 +10,25 @@ import java.io.IOException; public class AnchorIdlJupiterPerpsPositionServiceImpl implements JupiterPerpsPositionService { private final SolanaBlockChain solanaBlockChain; + private final AnchorIdlJupiterPerpsPositionDecoder positionDecoder; public AnchorIdlJupiterPerpsPositionServiceImpl( SolanaBlockChain solanaBlockChain ) { this.solanaBlockChain = solanaBlockChain; + this.positionDecoder = new AnchorIdlJupiterPerpsPositionDecoder(); } @Override - public JupiterPerpsPosition getPosition( - ΩJupiterPerpsPositionAccountΩ positionAccount - ) throws IOException, InterruptedException { - SolanaAccountInfo accountInfo = - solanaBlockChain.getAccountInfo(positionAccount); + public JupiterPerpsPosition getPosition(ΩJupiterPerpsPositionAccountΩ positionAccount) + throws IOException, InterruptedException { + SolanaAccountInfo accountInfo = solanaBlockChain.getAccountInfo(positionAccount); if (accountInfo == null) { - throw new IllegalArgumentException( - "Jupiter Perps position account does not exist: " + positionAccount - ); + throw new IllegalArgumentException("Jupiter Perps position account does not exist: " + positionAccount); } - throw new UnsupportedOperationException( - "Jupiter Perps position account decoding is not implemented yet." - ); + JupiterPerpsPosition pos = positionDecoder.decode(positionAccount, accountInfo); + return pos; } } \ No newline at end of file