0.7.25
This commit is contained in:
@@ -91,32 +91,32 @@ impl KbRaydiumCpmmDecodedEvent {
|
||||
/// Returns the storage event kind.
|
||||
pub fn event_kind(&self) -> &'static str {
|
||||
match self {
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseInput(_) => "raydium_cpmm.swap_base_input",
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseOutput(_) => "raydium_cpmm.swap_base_output",
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseInput(_) => return "raydium_cpmm.swap_base_input",
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseOutput(_) => return "raydium_cpmm.swap_base_output",
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the pool account.
|
||||
pub fn pool_account(&self) -> &str {
|
||||
match self {
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseInput(event) => event.pool_state.as_str(),
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseOutput(event) => event.pool_state.as_str(),
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseInput(event) => return event.pool_state.as_str(),
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseOutput(event) => return event.pool_state.as_str(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the normalized base mint.
|
||||
pub fn base_mint(&self) -> &str {
|
||||
match self {
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseInput(event) => event.base_mint.as_str(),
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseOutput(event) => event.base_mint.as_str(),
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseInput(event) => return event.base_mint.as_str(),
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseOutput(event) => return event.base_mint.as_str(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the normalized quote mint.
|
||||
pub fn quote_mint(&self) -> &str {
|
||||
match self {
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseInput(event) => event.quote_mint.as_str(),
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseOutput(event) => event.quote_mint.as_str(),
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseInput(event) => return event.quote_mint.as_str(),
|
||||
KbRaydiumCpmmDecodedEvent::SwapBaseOutput(event) => return event.quote_mint.as_str(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,17 +126,17 @@ impl KbRaydiumCpmmDecodedEvent {
|
||||
crate::KbRaydiumCpmmDecodedEvent::SwapBaseInput(event) => {
|
||||
let result = serde_json::to_string(event);
|
||||
match result {
|
||||
Ok(payload) => Some(payload),
|
||||
Err(_) => None,
|
||||
Ok(payload) => return Some(payload),
|
||||
Err(_) => return None,
|
||||
}
|
||||
}
|
||||
},
|
||||
crate::KbRaydiumCpmmDecodedEvent::SwapBaseOutput(event) => {
|
||||
let result = serde_json::to_string(event);
|
||||
match result {
|
||||
Ok(payload) => Some(payload),
|
||||
Err(_) => None,
|
||||
Ok(payload) => return Some(payload),
|
||||
Err(_) => return None,
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -161,9 +161,7 @@ pub fn kb_decode_raydium_cpmm_instruction(
|
||||
if data.len() < 24 {
|
||||
return std::vec::Vec::new();
|
||||
}
|
||||
let discriminator = [
|
||||
data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7],
|
||||
];
|
||||
let discriminator = [data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]];
|
||||
if discriminator == KB_RAYDIUM_CPMM_SWAP_BASE_INPUT_DISCRIMINATOR {
|
||||
let amount_in = match kb_read_u64_le(data.as_slice(), 8) {
|
||||
Some(value) => value,
|
||||
@@ -208,7 +206,7 @@ pub fn kb_decode_raydium_cpmm_instruction(
|
||||
};
|
||||
return vec![KbRaydiumCpmmDecodedEvent::SwapBaseOutput(swap)];
|
||||
}
|
||||
std::vec::Vec::new()
|
||||
return std::vec::Vec::new();
|
||||
}
|
||||
|
||||
fn kb_build_raydium_cpmm_swap(
|
||||
@@ -233,12 +231,8 @@ fn kb_build_raydium_cpmm_swap(
|
||||
output_vault.as_str(),
|
||||
);
|
||||
let input_is_base = normalized.input_is_base;
|
||||
let trade_side = if input_is_base {
|
||||
"sell".to_string()
|
||||
} else {
|
||||
"buy".to_string()
|
||||
};
|
||||
Some(KbRaydiumCpmmSwapDecoded {
|
||||
let trade_side = if input_is_base { "sell".to_string() } else { "buy".to_string() };
|
||||
return Some(KbRaydiumCpmmSwapDecoded {
|
||||
swap_mode,
|
||||
payer: accounts[0].clone(),
|
||||
authority: accounts[1].clone(),
|
||||
@@ -263,7 +257,7 @@ fn kb_build_raydium_cpmm_swap(
|
||||
minimum_amount_out_raw,
|
||||
max_amount_in_raw,
|
||||
amount_out_raw,
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
struct KbRaydiumCpmmNormalizedPair {
|
||||
@@ -307,13 +301,13 @@ fn kb_normalize_raydium_cpmm_pair(
|
||||
input_is_base: true,
|
||||
};
|
||||
}
|
||||
KbRaydiumCpmmNormalizedPair {
|
||||
return KbRaydiumCpmmNormalizedPair {
|
||||
base_mint: output_mint.to_string(),
|
||||
quote_mint: input_mint.to_string(),
|
||||
base_vault: output_vault.to_string(),
|
||||
quote_vault: input_vault.to_string(),
|
||||
input_is_base: false,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
fn kb_is_quote_mint(mint: &str) -> bool {
|
||||
@@ -329,7 +323,7 @@ fn kb_is_quote_mint(mint: &str) -> bool {
|
||||
if mint == "USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB" {
|
||||
return true;
|
||||
}
|
||||
false
|
||||
return false;
|
||||
}
|
||||
|
||||
fn kb_parse_accounts_json(
|
||||
@@ -337,16 +331,15 @@ fn kb_parse_accounts_json(
|
||||
) -> std::option::Option<std::vec::Vec<std::string::String>> {
|
||||
let result = serde_json::from_str::<std::vec::Vec<std::string::String>>(accounts_json);
|
||||
match result {
|
||||
Ok(accounts) => Some(accounts),
|
||||
Err(_) => None,
|
||||
Ok(accounts) => return Some(accounts),
|
||||
Err(_) => return None,
|
||||
}
|
||||
}
|
||||
|
||||
fn kb_parse_data_json_as_base58(data_json: &str) -> std::option::Option<std::string::String> {
|
||||
let json_string_result = serde_json::from_str::<std::string::String>(data_json);
|
||||
match json_string_result {
|
||||
Ok(value) => return Some(value),
|
||||
Err(_) => {}
|
||||
if let Ok(value) = json_string_result {
|
||||
return Some(value);
|
||||
}
|
||||
let trimmed = data_json.trim();
|
||||
if trimmed.is_empty() {
|
||||
@@ -356,7 +349,7 @@ fn kb_parse_data_json_as_base58(data_json: &str) -> std::option::Option<std::str
|
||||
if without_quotes.is_empty() {
|
||||
return None;
|
||||
}
|
||||
Some(without_quotes.to_string())
|
||||
return Some(without_quotes.to_string());
|
||||
}
|
||||
|
||||
fn kb_read_u64_le(data: &[u8], offset: usize) -> std::option::Option<u64> {
|
||||
@@ -373,7 +366,7 @@ fn kb_read_u64_le(data: &[u8], offset: usize) -> std::option::Option<u64> {
|
||||
data[offset + 6],
|
||||
data[offset + 7],
|
||||
];
|
||||
Some(u64::from_le_bytes(bytes))
|
||||
return Some(u64::from_le_bytes(bytes));
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -402,26 +395,17 @@ mod tests {
|
||||
assert_eq!(events.len(), 1);
|
||||
match &events[0] {
|
||||
crate::KbRaydiumCpmmDecodedEvent::SwapBaseInput(event) => {
|
||||
assert_eq!(
|
||||
event.pool_state,
|
||||
"2ErXvV1tKtG3wiHqdofDjMou7Jusdsfasvfh8HrTj5oV"
|
||||
);
|
||||
assert_eq!(
|
||||
event.base_mint,
|
||||
"Pf9aSicGu3g6tTUBqrRbjNsGape9HopibspX5KSbonk"
|
||||
);
|
||||
assert_eq!(
|
||||
event.quote_mint,
|
||||
"USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB"
|
||||
);
|
||||
assert_eq!(event.input_is_base, true);
|
||||
assert_eq!(event.pool_state, "2ErXvV1tKtG3wiHqdofDjMou7Jusdsfasvfh8HrTj5oV");
|
||||
assert_eq!(event.base_mint, "Pf9aSicGu3g6tTUBqrRbjNsGape9HopibspX5KSbonk");
|
||||
assert_eq!(event.quote_mint, "USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB");
|
||||
assert!(event.input_is_base);
|
||||
assert_eq!(event.trade_side, "sell");
|
||||
assert_eq!(event.amount_in_raw.is_some(), true);
|
||||
assert_eq!(event.minimum_amount_out_raw.is_some(), true);
|
||||
}
|
||||
assert!(event.amount_in_raw.is_some());
|
||||
assert!(event.minimum_amount_out_raw.is_some());
|
||||
},
|
||||
_ => {
|
||||
panic!("expected swap base input");
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
#[test]
|
||||
@@ -448,26 +432,17 @@ mod tests {
|
||||
assert_eq!(events.len(), 1);
|
||||
match &events[0] {
|
||||
crate::KbRaydiumCpmmDecodedEvent::SwapBaseOutput(event) => {
|
||||
assert_eq!(
|
||||
event.pool_state,
|
||||
"2ErXvV1tKtG3wiHqdofDjMou7Jusdsfasvfh8HrTj5oV"
|
||||
);
|
||||
assert_eq!(
|
||||
event.base_mint,
|
||||
"Pf9aSicGu3g6tTUBqrRbjNsGape9HopibspX5KSbonk"
|
||||
);
|
||||
assert_eq!(
|
||||
event.quote_mint,
|
||||
"USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB"
|
||||
);
|
||||
assert_eq!(event.input_is_base, false);
|
||||
assert_eq!(event.pool_state, "2ErXvV1tKtG3wiHqdofDjMou7Jusdsfasvfh8HrTj5oV");
|
||||
assert_eq!(event.base_mint, "Pf9aSicGu3g6tTUBqrRbjNsGape9HopibspX5KSbonk");
|
||||
assert_eq!(event.quote_mint, "USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB");
|
||||
assert!(!event.input_is_base);
|
||||
assert_eq!(event.trade_side, "buy");
|
||||
assert_eq!(event.max_amount_in_raw.is_some(), true);
|
||||
assert_eq!(event.amount_out_raw.is_some(), true);
|
||||
}
|
||||
assert!(event.max_amount_in_raw.is_some());
|
||||
assert!(event.amount_out_raw.is_some());
|
||||
},
|
||||
_ => {
|
||||
panic!("expected swap base output");
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user