pub trait EvmGasPriceServiceTrait {
    type Provider: EvmProviderTrait;
    // Required methods
    fn estimate_gas<'life0, 'life1, 'async_trait>(
        &'life0 self,
        tx_data: &'life1 EvmTransactionData,
    ) -> Pin<Box<dyn Future<Output = Result<u64, TransactionError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn get_legacy_prices_from_json_rpc<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<SpeedPrices, TransactionError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn get_prices_from_json_rpc<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<GasPrices, TransactionError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn get_current_base_fee<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<u128, TransactionError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn network(&self) -> &EvmNetwork;
}