0.7.24-pre.1

This commit is contained in:
2026-05-02 13:17:23 +02:00
parent aaff2dbd94
commit d10a2270d8
7 changed files with 156 additions and 57 deletions

View File

@@ -122,7 +122,7 @@ impl KbPumpSwapDecoder {
"mint0",
],
)
.or_else(|| kb_extract_account(&accounts, 1));
.or_else(|| kb_extract_account(&accounts, 3));
let token_b_mint = kb_extract_string_by_candidate_keys(
parsed_json.as_ref(),
&[
@@ -134,7 +134,7 @@ impl KbPumpSwapDecoder {
"mint1",
],
)
.or_else(|| kb_extract_account(&accounts, 2));
.or_else(|| kb_extract_account(&accounts, 4));
let pool_v2 = kb_extract_string_by_candidate_keys(
parsed_json.as_ref(),
&[
@@ -144,8 +144,9 @@ impl KbPumpSwapDecoder {
"bondingCurveV2",
"bonding_curve_v2",
],
)
.or_else(|| kb_extract_account(&accounts, 3));
);
let pool_base_token_account = kb_extract_account(&accounts, 7);
let pool_quote_token_account = kb_extract_account(&accounts, 8);
let is_buy = kb_log_messages_contain_keyword(&log_messages, "buy");
let is_sell = kb_log_messages_contain_keyword(&log_messages, "sell");
if !is_buy && !is_sell {
@@ -162,7 +163,9 @@ impl KbPumpSwapDecoder {
"poolAccount": pool_account,
"tokenAMint": token_a_mint,
"tokenBMint": token_b_mint,
"poolV2": pool_v2
"poolV2": pool_v2,
"poolBaseTokenAccount": pool_base_token_account,
"poolQuoteTokenAccount": pool_quote_token_account
});
if is_buy {
decoded_events.push(crate::KbPumpSwapDecodedEvent::BuyTrade(
@@ -376,7 +379,17 @@ mod tests {
Some(crate::KB_PUMP_SWAP_PROGRAM_ID.to_string()),
Some("pump-amm".to_string()),
Some(1),
serde_json::json!(["PumpPool111", "TokenA111", "TokenB111", "PoolV2_111"]).to_string(),
serde_json::json!([
"PumpPool111",
"User111",
"GlobalConfig111",
"TokenA111",
"TokenB111",
"UserBaseAta111",
"UserQuoteAta111",
"PoolBaseVault111",
"PoolQuoteVault111"
]).to_string(),
None,
None,
Some(
@@ -414,6 +427,14 @@ mod tests {
assert_eq!(event.token_a_mint, Some("TokenA111".to_string()));
assert_eq!(event.token_b_mint, Some("TokenB111".to_string()));
assert_eq!(event.pool_v2, Some("PoolV2_111".to_string()));
assert_eq!(
event.payload_json.get("poolBaseTokenAccount"),
Some(&serde_json::Value::String("PoolBaseVault111".to_string()))
);
assert_eq!(
event.payload_json.get("poolQuoteTokenAccount"),
Some(&serde_json::Value::String("PoolQuoteVault111".to_string()))
);
assert_eq!(event.trade_side, crate::KbSwapTradeSide::BuyBase);
}
crate::KbPumpSwapDecodedEvent::SellTrade(_) => {