diff --git a/crates/rpc/rpc-api/src/lib.rs b/crates/rpc/rpc-api/src/lib.rs index 89968960fb..73775112dc 100644 --- a/crates/rpc/rpc-api/src/lib.rs +++ b/crates/rpc/rpc-api/src/lib.rs @@ -39,7 +39,7 @@ pub mod servers { admin::AdminApiServer, debug::DebugApiServer, engine::{EngineApiServer, EngineEthApiServer}, - mev::MevApiServer, + mev::{MevFullApiServer, MevSimApiServer}, net::NetApiServer, otterscan::OtterscanServer, reth::RethApiServer, @@ -69,7 +69,7 @@ pub mod clients { engine::{EngineApiClient, EngineEthApiClient}, ganache::GanacheApiClient, hardhat::HardhatApiClient, - mev::MevApiClient, + mev::{MevFullApiClient, MevSimApiClient}, net::NetApiClient, otterscan::OtterscanClient, reth::RethApiClient, diff --git a/crates/rpc/rpc-api/src/mev.rs b/crates/rpc/rpc-api/src/mev.rs index b53b0322d0..4980b5cc67 100644 --- a/crates/rpc/rpc-api/src/mev.rs +++ b/crates/rpc/rpc-api/src/mev.rs @@ -6,7 +6,21 @@ use jsonrpsee::proc_macros::rpc; /// Mev rpc interface. #[cfg_attr(not(feature = "client"), rpc(server, namespace = "mev"))] #[cfg_attr(feature = "client", rpc(server, client, namespace = "mev"))] -pub trait MevApi { +pub trait MevSimApi { + /// Similar to `mev_sendBundle` but instead of submitting a bundle to the relay, it returns + /// a simulation result. Only fully matched bundles can be simulated. + #[method(name = "simBundle")] + async fn sim_bundle( + &self, + bundle: SendBundleRequest, + sim_overrides: SimBundleOverrides, + ) -> jsonrpsee::core::RpcResult; +} + +/// Mev rpc interface. +#[cfg_attr(not(feature = "client"), rpc(server, namespace = "mev"))] +#[cfg_attr(feature = "client", rpc(server, client, namespace = "mev"))] +pub trait MevFullApi { /// Submitting bundles to the relay. It takes in a bundle and provides a bundle hash as a /// return value. #[method(name = "sendBundle")]