#[repr(C)]pub struct ChainFee {
pub chain_id: u8,
pub _pad: [u8; 7],
pub base_fee_native: u64,
pub priority_fee_native: u64,
pub estimated_gas_units: u64,
pub native_price_1e9: u64,
pub last_update_ns: u64,
}Expand description
Per-chain gas fee snapshot. Interpretation depends on chain_id:
- EVM (chain_id 0-4): base_fee_native=gwei, priority_fee_native=gwei, estimated_gas_units=gas (150k-300k depending on protocol)
- Solana (chain_id 5): base_fee_native=lamports (5000), priority_fee_native=micro-lamports/CU, estimated_gas_units=compute units (~200k)
Fields§
§chain_id: u8Chain identifier (0=eth, 1=arb, 2=base, 3=op, 4=polygon, 5=solana).
_pad: [u8; 7]§base_fee_native: u64Base fee in chain-native units.
priority_fee_native: u64Priority/tip fee in chain-native units.
estimated_gas_units: u64Estimated gas/compute units for a standard swap.
native_price_1e9: u64Native token price in USD, 1e9-scaled (ETH/MATIC/SOL).
last_update_ns: u64Timestamp of last observation (nanoseconds since epoch).
Implementations§
Source§impl ChainFee
impl ChainFee
Sourcepub fn total_gas_cost_native(&self) -> u64
pub fn total_gas_cost_native(&self) -> u64
Total gas cost in the smallest native unit (gwei for EVM, lamports for Solana).
- EVM: (base_gwei + priority_gwei) * gas_units → total gwei
- Solana: base_lamports + (priority_micro_lamports * CU / 1_000_000) → total lamports
Sourcepub fn gas_cost_usd_1e9(&self) -> u64
pub fn gas_cost_usd_1e9(&self) -> u64
Estimated gas cost in USD (1e9 scaled).
Both EVM and Solana share the same final step once total_gas_cost_native()
returns the correct smallest-unit value:
cost_usd_1e9 = total_native * native_price_1e9 / 1e9
which equals cost_usd = total_native * price / 1e18 (the /1e9 handles
smallest-unit→whole-coin, the price is already 1e9-scaled).