reth_provider/traits/
full.rs
1use crate::{
4 AccountReader, BlockReaderIdExt, ChainSpecProvider, ChangeSetReader, DatabaseProviderFactory,
5 HeaderProvider, StageCheckpointReader, StateProviderFactory, StaticFileProviderFactory,
6 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<Primitives = N::Primitives>
18 + BlockReaderIdExt<
19 Transaction = TxTy<N>,
20 Block = BlockTy<N>,
21 Receipt = ReceiptTy<N>,
22 Header = HeaderTy<N>,
23 > + AccountReader
24 + StateProviderFactory
25 + ChainSpecProvider<ChainSpec = N::ChainSpec>
26 + ChangeSetReader
27 + CanonStateSubscriptions
28 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
29 + StageCheckpointReader
30 + Clone
31 + Unpin
32 + 'static
33{
34}
35
36impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
37 T: DatabaseProviderFactory<DB = N::DB>
38 + NodePrimitivesProvider<Primitives = N::Primitives>
39 + StaticFileProviderFactory<Primitives = N::Primitives>
40 + BlockReaderIdExt<
41 Transaction = TxTy<N>,
42 Block = BlockTy<N>,
43 Receipt = ReceiptTy<N>,
44 Header = HeaderTy<N>,
45 > + AccountReader
46 + StateProviderFactory
47 + ChainSpecProvider<ChainSpec = N::ChainSpec>
48 + ChangeSetReader
49 + CanonStateSubscriptions
50 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
51 + StageCheckpointReader
52 + Clone
53 + Unpin
54 + 'static
55{
56}
57
58pub trait FullRpcProvider:
61 StateProviderFactory
62 + ChainSpecProvider<ChainSpec: EthereumHardforks>
63 + BlockReaderIdExt
64 + HeaderProvider
65 + TransactionsProvider
66 + StageCheckpointReader
67 + Clone
68 + Unpin
69 + 'static
70{
71}
72
73impl<T> FullRpcProvider for T where
74 T: StateProviderFactory
75 + ChainSpecProvider<ChainSpec: EthereumHardforks>
76 + BlockReaderIdExt
77 + HeaderProvider
78 + TransactionsProvider
79 + StageCheckpointReader
80 + Clone
81 + Unpin
82 + 'static
83{
84}