Skip to main content

ChainFee

Struct ChainFee 

Source
#[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: u8

Chain identifier (0=eth, 1=arb, 2=base, 3=op, 4=polygon, 5=solana).

§_pad: [u8; 7]§base_fee_native: u64

Base fee in chain-native units.

§priority_fee_native: u64

Priority/tip fee in chain-native units.

§estimated_gas_units: u64

Estimated gas/compute units for a standard swap.

§native_price_1e9: u64

Native token price in USD, 1e9-scaled (ETH/MATIC/SOL).

§last_update_ns: u64

Timestamp of last observation (nanoseconds since epoch).

Implementations§

Source§

impl ChainFee

Source

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
Source

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).

Trait Implementations§

Source§

impl Clone for ChainFee

Source§

fn clone(&self) -> ChainFee

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ChainFee

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ChainFee

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Copy for ChainFee

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.