@@ -54,6 +54,22 @@ public BigDecimal calculateSolPrice(final int scale, final RoundingMode rounding
5454 return this .totalLamports .divide (this .poolTokenSupply , scale , roundingMode ).stripTrailingZeros ();
5555 }
5656
57+ public static final int MANAGER_OFFSET = 1 ;
58+ public static final int STAKE_OFFSET = MANAGER_OFFSET + PUBLIC_KEY_LENGTH ;
59+ public static final int STAKE_DEPOSIT_AUTHORITY_OFFSET = STAKE_OFFSET + PUBLIC_KEY_LENGTH ;
60+ public static final int STAKE_WITHDRAWAL_BUMP_SEED_OFFSET = STAKE_DEPOSIT_AUTHORITY_OFFSET + PUBLIC_KEY_LENGTH ;
61+ public static final int VALIDATOR_LIST_OFFSET = STAKE_WITHDRAWAL_BUMP_SEED_OFFSET + 1 ;
62+ public static final int RESERVE_STAKE_OFFSET = VALIDATOR_LIST_OFFSET + PUBLIC_KEY_LENGTH ;
63+ public static final int POOL_MINT_OFFSET = RESERVE_STAKE_OFFSET + PUBLIC_KEY_LENGTH ;
64+ public static final int MANAGER_FEE_OFFSET = POOL_MINT_OFFSET + PUBLIC_KEY_LENGTH ;
65+ public static final int TOKEN_PROGRAM_ID_OFFSET = MANAGER_FEE_OFFSET + PUBLIC_KEY_LENGTH ;
66+ public static final int TOTAL_LAMPORTS_OFFSET = TOKEN_PROGRAM_ID_OFFSET + PUBLIC_KEY_LENGTH ;
67+ public static final int POOL_TOKEN_SUPPLY_OFFSET = TOTAL_LAMPORTS_OFFSET + Long .BYTES ;
68+ public static final int LAST_UPDATE_EPOCH_OFFSET = POOL_TOKEN_SUPPLY_OFFSET + Long .BYTES ;
69+ public static final int LOCKUP_OFFSET = LAST_UPDATE_EPOCH_OFFSET + Long .BYTES ;
70+ public static final int EPOCH_FEE_OFFSET = LOCKUP_OFFSET + LockUp .BYTES ;
71+ public static final int NEXT_EPOCH_FEE_OFFSET = EPOCH_FEE_OFFSET + Fee .BYTES ;
72+
5773 public static final BiFunction <PublicKey , byte [], StakePoolState > FACTORY = StakePoolState ::parseProgramData ;
5874
5975 public static StakePoolState parseProgramData (final byte [] data ) {
@@ -81,7 +97,6 @@ public static StakePoolState parseProgramData(final PublicKey address, final byt
8197 offset += PUBLIC_KEY_LENGTH ;
8298 final var tokenProgramId = readPubKey (data , offset );
8399 offset += PUBLIC_KEY_LENGTH ;
84-
85100 final long totalLamports = ByteUtil .getInt64LE (data , offset );
86101 offset += Long .BYTES ;
87102 final long poolTokenSupply = ByteUtil .getInt64LE (data , offset );
0 commit comments