reth_rpc_eth_api/
types.rs1use crate::{AsEthApiError, FromEthApiError, RpcNodeCore};
4use alloy_rpc_types_eth::Block;
5use reth_rpc_convert::{RpcConvert, SignableTxRequest};
6pub use reth_rpc_convert::{RpcTransaction, RpcTxReq, RpcTypes};
7use reth_rpc_eth_types::EthApiSettings;
8use reth_storage_api::ProviderTx;
9use std::error::Error;
10
11pub trait EthApiTypes: Send + Sync + Clone {
20 type Error: Into<jsonrpsee_types::error::ErrorObject<'static>>
22 + FromEthApiError
23 + AsEthApiError
24 + From<<Self::RpcConvert as RpcConvert>::Error>
25 + Error
26 + Send
27 + Sync;
28 type NetworkTypes: RpcTypes;
30 type RpcConvert: RpcConvert<Network = Self::NetworkTypes>;
32
33 fn eth_api_settings(&self) -> &EthApiSettings;
35
36 fn converter(&self) -> &Self::RpcConvert;
38}
39
40pub type RpcBlock<T> = Block<RpcTransaction<T>, RpcHeader<T>>;
42
43pub type RpcReceipt<T> = <T as RpcTypes>::Receipt;
45
46pub type RpcHeader<T> = <T as RpcTypes>::Header;
48
49pub type RpcError<T> = <T as EthApiTypes>::Error;
51
52pub trait FullEthApiTypes
54where
55 Self: RpcNodeCore
56 + EthApiTypes<
57 NetworkTypes: RpcTypes<
58 TransactionRequest: SignableTxRequest<ProviderTx<Self::Provider>>,
59 >,
60 RpcConvert: RpcConvert<Primitives = Self::Primitives>,
61 >,
62{
63}
64
65impl<T> FullEthApiTypes for T where
66 T: RpcNodeCore
67 + EthApiTypes<
68 NetworkTypes: RpcTypes<
69 TransactionRequest: SignableTxRequest<ProviderTx<Self::Provider>>,
70 >,
71 RpcConvert: RpcConvert<Primitives = Self::Primitives>,
72 >
73{
74}