0.7.50
This commit is contained in:
@@ -183,7 +183,11 @@ impl DexEventCoverageService {
|
||||
fn build_coverage_entry_from_upstream(
|
||||
entry: &crate::UpstreamRegistryEntryDto,
|
||||
) -> crate::DexEventCoverageEntryDto {
|
||||
let event_family = infer_event_family(entry.entry_name.as_str(), entry.entry_kind.as_str());
|
||||
let event_family = infer_event_family_for_entry(
|
||||
entry.decoder_code.as_str(),
|
||||
entry.entry_name.as_str(),
|
||||
entry.entry_kind.as_str(),
|
||||
);
|
||||
let expected_db_target = infer_expected_db_target_for_entry(
|
||||
entry.decoder_code.as_str(),
|
||||
entry.entry_name.as_str(),
|
||||
@@ -211,11 +215,79 @@ fn infer_expected_db_target_for_entry(
|
||||
event_family: std::option::Option<&str>,
|
||||
entry_kind: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if decoder_code == "raydium_cpmm" && entry_name == "swap_event" {
|
||||
if decoder_code == "raydium_cpmm"
|
||||
&& (entry_name == "swap_event" || entry_name == "anchor_idl_instruction")
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY.to_string());
|
||||
}
|
||||
if decoder_code == "raydium_clmm" && entry_name == "initialize_reward" {
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_REWARD_EVENTS.to_string());
|
||||
if decoder_code == "raydium_clmm" {
|
||||
if entry_name == "initialize_reward" {
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_REWARD_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "swap_event" || entry_name == "swap_router_base_in" {
|
||||
return Some(
|
||||
crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY.to_string(),
|
||||
);
|
||||
}
|
||||
if entry_name == "open_position"
|
||||
|| entry_name == "close_position"
|
||||
|| entry_name == "close_protocol_position"
|
||||
{
|
||||
return Some(
|
||||
crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY.to_string(),
|
||||
);
|
||||
}
|
||||
}
|
||||
if decoder_code == "raydium_launchpad" {
|
||||
if entry_name == "trade_event" {
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_TRADE_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "buy_exact_in"
|
||||
|| entry_name == "buy_exact_out"
|
||||
|| entry_name == "sell_exact_in"
|
||||
|| entry_name == "sell_exact_out"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_LAUNCH_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "initialize"
|
||||
|| entry_name == "initialize_v2"
|
||||
|| entry_name == "initialize_with_token_2022"
|
||||
|| entry_name == "pool_create_event"
|
||||
{
|
||||
return Some(
|
||||
crate::DexEventCoverageEntryDto::DB_TARGET_POOL_LIFECYCLE_EVENTS.to_string(),
|
||||
);
|
||||
}
|
||||
if entry_name == "claim_creator_fee"
|
||||
|| entry_name == "claim_platform_fee"
|
||||
|| entry_name == "claim_platform_fee_from_vault"
|
||||
|| entry_name == "collect_fee"
|
||||
|| entry_name == "collect_migrate_fee"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_FEE_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "close_platform_global_access"
|
||||
|| entry_name == "create_config"
|
||||
|| entry_name == "create_platform_config"
|
||||
|| entry_name == "create_platform_global_access"
|
||||
|| entry_name == "remove_platform_curve_param"
|
||||
|| entry_name == "update_config"
|
||||
|| entry_name == "update_platform_config"
|
||||
|| entry_name == "update_platform_curve_param"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_POOL_ADMIN_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "claim_vested_event"
|
||||
|| entry_name == "claim_vested_token"
|
||||
|| entry_name == "create_platform_vesting_account"
|
||||
|| entry_name == "create_vesting_account"
|
||||
|| entry_name == "create_vesting_event"
|
||||
|| entry_name == "migrate_to_amm"
|
||||
|| entry_name == "migrate_to_cpswap"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_LAUNCH_EVENTS.to_string());
|
||||
}
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY.to_string());
|
||||
}
|
||||
return infer_expected_db_target(event_family, entry_kind);
|
||||
}
|
||||
@@ -241,6 +313,7 @@ fn infer_expected_db_target(
|
||||
"liquidity" => crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_EVENTS,
|
||||
"liquidity_add" => crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_EVENTS,
|
||||
"liquidity_remove" => crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_EVENTS,
|
||||
"liquidity_change" => crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_EVENTS,
|
||||
"position_open" => crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_EVENTS,
|
||||
"position_close" => crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_EVENTS,
|
||||
"fee" => crate::DexEventCoverageEntryDto::DB_TARGET_FEE_EVENTS,
|
||||
@@ -264,6 +337,10 @@ fn infer_expected_db_target(
|
||||
"unlock" => crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_LOCK_EVENTS,
|
||||
"launch" => crate::DexEventCoverageEntryDto::DB_TARGET_LAUNCH_EVENTS,
|
||||
"migration" => crate::DexEventCoverageEntryDto::DB_TARGET_LAUNCH_EVENTS,
|
||||
"vesting" => crate::DexEventCoverageEntryDto::DB_TARGET_LAUNCH_EVENTS,
|
||||
"liquidity_calculation" => crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY,
|
||||
"cpi_transport" => crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY,
|
||||
"idl_management" => crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY,
|
||||
"stake" => crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY,
|
||||
"unstake" => crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY,
|
||||
_ => crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY,
|
||||
@@ -271,6 +348,99 @@ fn infer_expected_db_target(
|
||||
return Some(target.to_string());
|
||||
}
|
||||
|
||||
fn infer_event_family_for_entry(
|
||||
decoder_code: &str,
|
||||
entry_name: &str,
|
||||
entry_kind: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if decoder_code == "raydium_launchpad" {
|
||||
return infer_raydium_launchpad_event_family(entry_name, entry_kind);
|
||||
}
|
||||
if decoder_code == "raydium_clmm" {
|
||||
return infer_raydium_clmm_event_family(entry_name, entry_kind);
|
||||
}
|
||||
if decoder_code == "raydium_cpmm" {
|
||||
return infer_raydium_cpmm_event_family(entry_name, entry_kind);
|
||||
}
|
||||
return infer_event_family(entry_name, entry_kind);
|
||||
}
|
||||
|
||||
fn infer_raydium_cpmm_event_family(
|
||||
entry_name: &str,
|
||||
entry_kind: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if entry_kind == crate::ENTRY_KIND_PROGRAM {
|
||||
return None;
|
||||
}
|
||||
match entry_name {
|
||||
"anchor_idl_instruction" => return Some("idl_management".to_string()),
|
||||
"cpi_event" => return Some("cpi_transport".to_string()),
|
||||
_ => return infer_event_family(entry_name, entry_kind),
|
||||
}
|
||||
}
|
||||
|
||||
fn infer_raydium_clmm_event_family(
|
||||
entry_name: &str,
|
||||
entry_kind: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if entry_kind == crate::ENTRY_KIND_PROGRAM {
|
||||
return None;
|
||||
}
|
||||
match entry_name {
|
||||
"cpi_event" => return Some("cpi_transport".to_string()),
|
||||
"create_personal_position_event" => return Some("position_open".to_string()),
|
||||
"liquidity_calculate_event" => return Some("liquidity_calculation".to_string()),
|
||||
"liquidity_change_event" => return Some("liquidity_change".to_string()),
|
||||
"pool_created_event" => return Some("pool_create".to_string()),
|
||||
"create_operation_account" => return Some("admin_config".to_string()),
|
||||
"update_operation_account" => return Some("admin_config".to_string()),
|
||||
"update_dynamic_fee_config" => return Some("admin_config".to_string()),
|
||||
_ => return infer_event_family(entry_name, entry_kind),
|
||||
}
|
||||
}
|
||||
|
||||
fn infer_raydium_launchpad_event_family(
|
||||
entry_name: &str,
|
||||
entry_kind: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if entry_kind == crate::ENTRY_KIND_PROGRAM {
|
||||
return None;
|
||||
}
|
||||
match entry_name {
|
||||
"buy_exact_in" => return Some("swap".to_string()),
|
||||
"buy_exact_out" => return Some("swap".to_string()),
|
||||
"sell_exact_in" => return Some("swap".to_string()),
|
||||
"sell_exact_out" => return Some("swap".to_string()),
|
||||
"trade_event" => return Some("swap".to_string()),
|
||||
"pool_create_event" => return Some("pool_create".to_string()),
|
||||
"initialize" => return Some("pool_create".to_string()),
|
||||
"initialize_v2" => return Some("pool_create".to_string()),
|
||||
"initialize_with_token_2022" => return Some("pool_create".to_string()),
|
||||
"claim_creator_fee" => return Some("fee".to_string()),
|
||||
"claim_platform_fee" => return Some("fee".to_string()),
|
||||
"claim_platform_fee_from_vault" => return Some("fee".to_string()),
|
||||
"collect_fee" => return Some("fee".to_string()),
|
||||
"collect_migrate_fee" => return Some("fee".to_string()),
|
||||
"claim_vested_event" => return Some("vesting".to_string()),
|
||||
"claim_vested_token" => return Some("vesting".to_string()),
|
||||
"create_platform_vesting_account" => return Some("vesting".to_string()),
|
||||
"create_vesting_account" => return Some("vesting".to_string()),
|
||||
"create_vesting_event" => return Some("vesting".to_string()),
|
||||
"migrate_to_amm" => return Some("migration".to_string()),
|
||||
"migrate_to_cpswap" => return Some("migration".to_string()),
|
||||
"close_platform_global_access" => return Some("account_close".to_string()),
|
||||
"create_config" => return Some("admin_config".to_string()),
|
||||
"create_platform_config" => return Some("admin_config".to_string()),
|
||||
"create_platform_global_access" => return Some("admin_config".to_string()),
|
||||
"remove_platform_curve_param" => return Some("admin_config".to_string()),
|
||||
"update_config" => return Some("admin_config".to_string()),
|
||||
"update_platform_config" => return Some("admin_config".to_string()),
|
||||
"update_platform_curve_param" => return Some("admin_config".to_string()),
|
||||
"cpi_event" => return Some("cpi_transport".to_string()),
|
||||
_ => return infer_event_family(entry_name, entry_kind),
|
||||
}
|
||||
}
|
||||
|
||||
fn infer_event_family(
|
||||
entry_name: &str,
|
||||
entry_kind: &str,
|
||||
@@ -282,6 +452,12 @@ fn infer_event_family(
|
||||
if normalized == "lp_change_event" {
|
||||
return Some("liquidity".to_string());
|
||||
}
|
||||
if normalized == "cpi_event" {
|
||||
return Some("cpi_transport".to_string());
|
||||
}
|
||||
if contains_any(normalized.as_str(), &["migrate", "migration", "graduate"]) {
|
||||
return Some("migration".to_string());
|
||||
}
|
||||
if contains_any(normalized.as_str(), &["swap", "buy", "sell", "trade"]) {
|
||||
return Some("swap".to_string());
|
||||
}
|
||||
@@ -416,10 +592,49 @@ fn contains_any(value: &str, needles: &[&str]) -> bool {
|
||||
return false;
|
||||
}
|
||||
|
||||
fn raydium_launchpad_local_entry_is_known(entry_name: &str) -> bool {
|
||||
match entry_name {
|
||||
"buy_exact_in" => return true,
|
||||
"buy_exact_out" => return true,
|
||||
"close_platform_global_access" => return true,
|
||||
"claim_creator_fee" => return true,
|
||||
"claim_platform_fee" => return true,
|
||||
"claim_platform_fee_from_vault" => return true,
|
||||
"claim_vested_event" => return true,
|
||||
"claim_vested_token" => return true,
|
||||
"collect_fee" => return true,
|
||||
"collect_migrate_fee" => return true,
|
||||
"create_config" => return true,
|
||||
"create_platform_config" => return true,
|
||||
"cpi_event" => return true,
|
||||
"create_platform_vesting_account" => return true,
|
||||
"create_platform_global_access" => return true,
|
||||
"create_vesting_account" => return true,
|
||||
"create_vesting_event" => return true,
|
||||
"initialize" => return true,
|
||||
"initialize_v2" => return true,
|
||||
"initialize_with_token_2022" => return true,
|
||||
"migrate_to_amm" => return true,
|
||||
"migrate_to_cpswap" => return true,
|
||||
"pool_create_event" => return true,
|
||||
"remove_platform_curve_param" => return true,
|
||||
"sell_exact_in" => return true,
|
||||
"sell_exact_out" => return true,
|
||||
"trade_event" => return true,
|
||||
"update_config" => return true,
|
||||
"update_platform_config" => return true,
|
||||
"update_platform_curve_param" => return true,
|
||||
_ => return false,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn known_local_event_kind(
|
||||
decoder_code: &str,
|
||||
entry_name: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if decoder_code == "raydium_launchpad" && raydium_launchpad_local_entry_is_known(entry_name) {
|
||||
return Some(format!("raydium_launchpad.{}", entry_name));
|
||||
}
|
||||
match (decoder_code, entry_name) {
|
||||
("raydium_cpmm", "swap_base_input") => {
|
||||
return Some("raydium_cpmm.swap_base_input".to_string());
|
||||
@@ -453,6 +668,10 @@ pub(crate) fn known_local_event_kind(
|
||||
("raydium_cpmm", "lp_change_event") => {
|
||||
return Some("raydium_cpmm.lp_change_event".to_string());
|
||||
},
|
||||
("raydium_cpmm", "cpi_event") => return Some("raydium_cpmm.cpi_event".to_string()),
|
||||
("raydium_cpmm", "anchor_idl_instruction") => {
|
||||
return Some("raydium_cpmm.anchor_idl_instruction".to_string());
|
||||
},
|
||||
("raydium_cpmm", "swap_event") => return Some("raydium_cpmm.swap_event".to_string()),
|
||||
("raydium_cpmm", "update_amm_config") => {
|
||||
return Some("raydium_cpmm.update_amm_config".to_string());
|
||||
@@ -461,6 +680,38 @@ pub(crate) fn known_local_event_kind(
|
||||
return Some("raydium_cpmm.update_pool_status".to_string());
|
||||
},
|
||||
("raydium_cpmm", "withdraw") => return Some("raydium_cpmm.withdraw".to_string()),
|
||||
("raydium_clmm", "cpi_event") => return Some("raydium_clmm.cpi_event".to_string()),
|
||||
("raydium_clmm", "collect_personal_fee_event") => {
|
||||
return Some("raydium_clmm.collect_personal_fee_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "collect_protocol_fee_event") => {
|
||||
return Some("raydium_clmm.collect_protocol_fee_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "config_change_event") => {
|
||||
return Some("raydium_clmm.config_change_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "create_personal_position_event") => {
|
||||
return Some("raydium_clmm.create_personal_position_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "decrease_liquidity_event") => {
|
||||
return Some("raydium_clmm.decrease_liquidity_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "increase_liquidity_event") => {
|
||||
return Some("raydium_clmm.increase_liquidity_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "liquidity_calculate_event") => {
|
||||
return Some("raydium_clmm.liquidity_calculate_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "liquidity_change_event") => {
|
||||
return Some("raydium_clmm.liquidity_change_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "pool_created_event") => {
|
||||
return Some("raydium_clmm.pool_created_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "swap_event") => return Some("raydium_clmm.swap_event".to_string()),
|
||||
("raydium_clmm", "update_reward_infos_event") => {
|
||||
return Some("raydium_clmm.update_reward_infos_event".to_string());
|
||||
},
|
||||
("raydium_clmm", "close_limit_order") => {
|
||||
return Some("raydium_clmm.close_limit_order".to_string());
|
||||
},
|
||||
@@ -545,6 +796,9 @@ pub(crate) fn known_local_event_kind(
|
||||
("raydium_clmm", "update_amm_config") => {
|
||||
return Some("raydium_clmm.update_amm_config".to_string());
|
||||
},
|
||||
("raydium_clmm", "update_dynamic_fee_config") => {
|
||||
return Some("raydium_clmm.update_dynamic_fee_config".to_string());
|
||||
},
|
||||
("raydium_clmm", "update_operation_account") => {
|
||||
return Some("raydium_clmm.update_operation_account".to_string());
|
||||
},
|
||||
@@ -605,6 +859,23 @@ mod tests {
|
||||
super::infer_event_family("collect_creator_fee", crate::ENTRY_KIND_INSTRUCTION),
|
||||
Some("fee".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_cpmm",
|
||||
"anchor_idl_instruction",
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some("idl_management".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_expected_db_target_for_entry(
|
||||
"raydium_cpmm",
|
||||
"anchor_idl_instruction",
|
||||
Some("idl_management"),
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some(crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY.to_string())
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -617,6 +888,38 @@ mod tests {
|
||||
super::infer_event_family("create_dynamic_fee_config", crate::ENTRY_KIND_INSTRUCTION),
|
||||
Some("admin_config".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_clmm",
|
||||
"update_dynamic_fee_config",
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some("admin_config".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_clmm",
|
||||
"create_personal_position_event",
|
||||
crate::ENTRY_KIND_EVENT,
|
||||
),
|
||||
Some("position_open".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_clmm",
|
||||
"liquidity_calculate_event",
|
||||
crate::ENTRY_KIND_EVENT,
|
||||
),
|
||||
Some("liquidity_calculation".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_clmm",
|
||||
"liquidity_change_event",
|
||||
crate::ENTRY_KIND_EVENT,
|
||||
),
|
||||
Some("liquidity_change".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family(
|
||||
"create_support_mint_associated",
|
||||
@@ -652,6 +955,15 @@ mod tests {
|
||||
super::infer_expected_db_target(Some("position_open"), crate::ENTRY_KIND_INSTRUCTION),
|
||||
Some(crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_EVENTS.to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_expected_db_target_for_entry(
|
||||
"raydium_clmm",
|
||||
"open_position",
|
||||
Some("position_open"),
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some(crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY.to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_expected_db_target(Some("position_close"), crate::ENTRY_KIND_INSTRUCTION),
|
||||
Some(crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_EVENTS.to_string())
|
||||
@@ -676,6 +988,79 @@ mod tests {
|
||||
super::known_local_event_kind("raydium_clmm", "decrease_limit_order"),
|
||||
Some("raydium_clmm.decrease_limit_order".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("raydium_clmm", "update_dynamic_fee_config"),
|
||||
Some("raydium_clmm.update_dynamic_fee_config".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("raydium_clmm", "cpi_event"),
|
||||
Some("raydium_clmm.cpi_event".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("raydium_clmm", "pool_created_event"),
|
||||
Some("raydium_clmm.pool_created_event".to_string())
|
||||
);
|
||||
}
|
||||
#[test]
|
||||
fn launchpad_swap_instructions_materialize_as_launch_events_without_duplicate_trades() {
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("raydium_launchpad", "buy_exact_in"),
|
||||
Some("raydium_launchpad.buy_exact_in".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("raydium_launchpad", "trade_event"),
|
||||
Some("raydium_launchpad.trade_event".to_string())
|
||||
);
|
||||
assert_eq!(super::known_local_event_kind("raydium_launchpad", "program"), None);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_launchpad",
|
||||
"pool_create_event",
|
||||
crate::ENTRY_KIND_EVENT,
|
||||
),
|
||||
Some("pool_create".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_launchpad",
|
||||
"claim_vested_event",
|
||||
crate::ENTRY_KIND_EVENT,
|
||||
),
|
||||
Some("vesting".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_launchpad",
|
||||
"create_platform_vesting_account",
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some("vesting".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_launchpad",
|
||||
"remove_platform_curve_param",
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some("admin_config".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"raydium_launchpad",
|
||||
"cpi_event",
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some("cpi_transport".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_expected_db_target_for_entry(
|
||||
"raydium_launchpad",
|
||||
"buy_exact_in",
|
||||
Some("swap"),
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some(crate::DexEventCoverageEntryDto::DB_TARGET_LAUNCH_EVENTS.to_string())
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
@@ -716,6 +1101,24 @@ mod tests {
|
||||
== Some(crate::DexEventCoverageEntryDto::DB_TARGET_LIQUIDITY_EVENTS.to_string())
|
||||
&& row.local_event_kind == Some("raydium_cpmm.lp_change_event".to_string())
|
||||
}));
|
||||
assert!(rows.iter().any(|row| return {
|
||||
row.entry_name == "cpi_event"
|
||||
&& row.event_family == Some("cpi_transport".to_string())
|
||||
&& row.expected_db_target
|
||||
== Some(
|
||||
crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY.to_string(),
|
||||
)
|
||||
&& row.local_event_kind == Some("raydium_cpmm.cpi_event".to_string())
|
||||
}));
|
||||
assert!(rows.iter().any(|row| return {
|
||||
row.entry_name == "anchor_idl_instruction"
|
||||
&& row.event_family == Some("idl_management".to_string())
|
||||
&& row.expected_db_target
|
||||
== Some(
|
||||
crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY.to_string(),
|
||||
)
|
||||
&& row.local_event_kind == Some("raydium_cpmm.anchor_idl_instruction".to_string())
|
||||
}));
|
||||
assert!(rows.iter().any(|row| return {
|
||||
row.entry_name == "swap_event"
|
||||
&& row.event_family == Some("swap".to_string())
|
||||
|
||||
Reference in New Issue
Block a user