1use {solana_sdk::fee::FeeDetails, solana_svm_transaction::svm_message::SVMMessage};
2
3pub fn calculate_fee(
5 message: &impl SVMMessage,
6 zero_fees_for_test: bool,
7 lamports_per_signature: u64,
8 prioritization_fee: u64,
9 remove_rounding_in_fee_calculation: bool,
10) -> u64 {
11 calculate_fee_details(
12 message,
13 zero_fees_for_test,
14 lamports_per_signature,
15 prioritization_fee,
16 remove_rounding_in_fee_calculation,
17 )
18 .total_fee()
19}
20
21pub fn calculate_fee_details(
22 message: &impl SVMMessage,
23 zero_fees_for_test: bool,
24 lamports_per_signature: u64,
25 prioritization_fee: u64,
26 remove_rounding_in_fee_calculation: bool,
27) -> FeeDetails {
28 if zero_fees_for_test {
29 return FeeDetails::default();
30 }
31 let signature_fee = message
32 .num_total_signatures()
33 .saturating_mul(lamports_per_signature);
34
35 FeeDetails::new(
36 signature_fee,
37 prioritization_fee,
38 remove_rounding_in_fee_calculation,
39 )
40}