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;
12use std::fmt::Debug;
13
14pub trait FullProvider<N: NodeTypesWithDB>:
16 DatabaseProviderFactory<DB = N::DB>
17 + NodePrimitivesProvider<Primitives = N::Primitives>
18 + StaticFileProviderFactory<Primitives = N::Primitives>
19 + BlockReaderIdExt<
20 Transaction = TxTy<N>,
21 Block = BlockTy<N>,
22 Receipt = ReceiptTy<N>,
23 Header = HeaderTy<N>,
24 > + AccountReader
25 + StateProviderFactory
26 + ChainSpecProvider<ChainSpec = N::ChainSpec>
27 + ChangeSetReader
28 + CanonStateSubscriptions
29 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
30 + StageCheckpointReader
31 + Clone
32 + Debug
33 + Unpin
34 + 'static
35{
36}
37
38impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
39 T: DatabaseProviderFactory<DB = N::DB>
40 + NodePrimitivesProvider<Primitives = N::Primitives>
41 + StaticFileProviderFactory<Primitives = N::Primitives>
42 + BlockReaderIdExt<
43 Transaction = TxTy<N>,
44 Block = BlockTy<N>,
45 Receipt = ReceiptTy<N>,
46 Header = HeaderTy<N>,
47 > + AccountReader
48 + StateProviderFactory
49 + ChainSpecProvider<ChainSpec = N::ChainSpec>
50 + ChangeSetReader
51 + CanonStateSubscriptions
52 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
53 + StageCheckpointReader
54 + Clone
55 + Debug
56 + Unpin
57 + 'static
58{
59}
60
61pub trait FullRpcProvider:
64 StateProviderFactory
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 + ChainSpecProvider<ChainSpec: EthereumHardforks>
79 + BlockReaderIdExt
80 + HeaderProvider
81 + TransactionsProvider
82 + StageCheckpointReader
83 + Clone
84 + Unpin
85 + 'static
86{
87}