solana_central/raydium/
get_cpmm_fee_amount_from_config_account.rs

1use solana_sdk::pubkey::Pubkey;
2
3const ONE: Pubkey = Pubkey::from_str_const("B5u5x9S5pyaJdonf7bXUiEnBfEXsJWhNxXfLGAbRFtg2");
4const TWO: Pubkey = Pubkey::from_str_const("BgxH5ifebqHDuiADWKhLjXGP5hWZeZLoCdmeWJLkRqLP");
5const THREE: Pubkey = Pubkey::from_str_const("BhH6HphjBKXu2PkUc2aw3xEMdUvK14NXxE5LbNWZNZAA");
6const FOUR: Pubkey = Pubkey::from_str_const("D4FPEruKEHrG5TenZ2mpDGEfu1iUvTiqBxvpU8HLBvC2");
7const FIVE: Pubkey = Pubkey::from_str_const("2fGXL8uhqxJ4tpgtosHZXT4zcQap6j62z3bMDxdkMvy5");
8const SIX: Pubkey = Pubkey::from_str_const("G95xxie3XbkCqtE39GgQ9Ggc7xBC8Uceve7HFDEFApkc");
9const SEVEN: Pubkey = Pubkey::from_str_const("C7Cx2pMLtjybS3mDKSfsBj4zQ3PRZGkKt7RCYTTbCSx2");
10
11/// Get the fee amount for a Raydium CPMM pool based on its config account
12///
13/// Returns the fee rate in lamports based on known config account addresses.
14/// If the config account is not recognized, returns a default high fee rate (100%)
15/// and logs a warning.
16pub fn get_cpmm_fee_amount_from_config_account(config_account: Pubkey, pool_account: &Pubkey) -> u64 {
17  if config_account == ONE {
18    return 15000000;
19  } else if config_account == TWO {
20    return 3000000;
21  } else if config_account == THREE {
22    return 5000000;
23  } else if config_account == FOUR {
24    return 2500000;
25  } else if config_account == FIVE {
26    return 20000000;
27  } else if config_account == SIX {
28    return 10000000;
29  } else if config_account == SEVEN {
30    return 4000000;
31  }
32  else {
33    println!(
34      "get_cpmm_fee_amount_from_config_account: Found a config account not defined in constants, config_account: {}, pool account: {}. Reporting a 100% swap fee rate.",
35      config_account,
36      pool_account
37    );
38    
39    1000000000
40  }
41}