1use alloy_rpc_types_mev::{EthBundleHash, MevSendBundle, SimBundleOverrides, SimBundleResponse};
2use jsonrpsee::proc_macros::rpc;
3
4#[cfg_attr(not(feature = "client"), rpc(server, namespace = "mev"))]
6#[cfg_attr(feature = "client", rpc(server, client, namespace = "mev"))]
7pub trait MevSimApi {
8    #[method(name = "simBundle")]
11    async fn sim_bundle(
12        &self,
13        bundle: MevSendBundle,
14        sim_overrides: SimBundleOverrides,
15    ) -> jsonrpsee::core::RpcResult<SimBundleResponse>;
16}
17
18#[cfg_attr(not(feature = "client"), rpc(server, namespace = "mev"))]
20#[cfg_attr(feature = "client", rpc(server, client, namespace = "mev"))]
21pub trait MevFullApi {
22    #[method(name = "sendBundle")]
25    async fn send_bundle(
26        &self,
27        request: MevSendBundle,
28    ) -> jsonrpsee::core::RpcResult<EthBundleHash>;
29
30    #[method(name = "simBundle")]
33    async fn sim_bundle(
34        &self,
35        bundle: MevSendBundle,
36        sim_overrides: SimBundleOverrides,
37    ) -> jsonrpsee::core::RpcResult<SimBundleResponse>;
38}