reth_provider/traits/
full.rs1use crate::{
4 AccountReader, BlockReaderIdExt, ChainSpecProvider, ChangeSetReader, DatabaseProviderFactory,
5 EvmEnvProvider, HeaderProvider, StageCheckpointReader, StateProviderFactory,
6 StaticFileProviderFactory, TransactionsProvider,
7};
8use reth_chain_state::{CanonStateSubscriptions, ForkChoiceSubscriptions};
9use reth_chainspec::EthereumHardforks;
10use reth_node_types::{BlockTy, HeaderTy, NodeTypesWithDB, ReceiptTy, TxTy};
11use reth_storage_api::NodePrimitivesProvider;
12
13pub trait FullProvider<N: NodeTypesWithDB>:
15 DatabaseProviderFactory<DB = N::DB>
16 + NodePrimitivesProvider<Primitives = N::Primitives>
17 + StaticFileProviderFactory
18 + BlockReaderIdExt<
19 Transaction = TxTy<N>,
20 Block = BlockTy<N>,
21 Receipt = ReceiptTy<N>,
22 Header = HeaderTy<N>,
23 > + AccountReader
24 + StateProviderFactory
25 + EvmEnvProvider
26 + ChainSpecProvider<ChainSpec = N::ChainSpec>
27 + ChangeSetReader
28 + CanonStateSubscriptions
29 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
30 + StageCheckpointReader
31 + Clone
32 + Unpin
33 + 'static
34{
35}
36
37impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
38 T: DatabaseProviderFactory<DB = N::DB>
39 + NodePrimitivesProvider<Primitives = N::Primitives>
40 + StaticFileProviderFactory
41 + BlockReaderIdExt<
42 Transaction = TxTy<N>,
43 Block = BlockTy<N>,
44 Receipt = ReceiptTy<N>,
45 Header = HeaderTy<N>,
46 > + AccountReader
47 + StateProviderFactory
48 + EvmEnvProvider
49 + ChainSpecProvider<ChainSpec = N::ChainSpec>
50 + ChangeSetReader
51 + CanonStateSubscriptions
52 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
53 + StageCheckpointReader
54 + Clone
55 + Unpin
56 + 'static
57{
58}
59
60pub trait FullRpcProvider:
63 StateProviderFactory
64 + EvmEnvProvider
65 + ChainSpecProvider<ChainSpec: EthereumHardforks>
66 + BlockReaderIdExt
67 + HeaderProvider
68 + TransactionsProvider
69 + StageCheckpointReader
70 + Clone
71 + Unpin
72 + 'static
73{
74}
75
76impl<T> FullRpcProvider for T where
77 T: StateProviderFactory
78 + EvmEnvProvider
79 + ChainSpecProvider<ChainSpec: EthereumHardforks>
80 + BlockReaderIdExt
81 + HeaderProvider
82 + TransactionsProvider
83 + StageCheckpointReader
84 + Clone
85 + Unpin
86 + 'static
87{
88}