reth_provider/traits/
full.rs1use crate::{
4 AccountReader, BlockReader, BlockReaderIdExt, ChainSpecProvider, ChangeSetReader,
5 DatabaseProviderFactory, HashedPostStateProvider, PruneCheckpointReader, StageCheckpointReader,
6 StateProviderFactory, StateReader, StaticFileProviderFactory, TrieReader,
7};
8use reth_chain_state::{CanonStateSubscriptions, ForkChoiceSubscriptions};
9use reth_node_types::{BlockTy, HeaderTy, NodeTypesWithDB, ReceiptTy, TxTy};
10use reth_storage_api::NodePrimitivesProvider;
11use std::fmt::Debug;
12
13pub trait FullProvider<N: NodeTypesWithDB>:
15 DatabaseProviderFactory<
16 DB = N::DB,
17 Provider: BlockReader + TrieReader + StageCheckpointReader + PruneCheckpointReader,
18 > + NodePrimitivesProvider<Primitives = N::Primitives>
19 + StaticFileProviderFactory<Primitives = N::Primitives>
20 + BlockReaderIdExt<
21 Transaction = TxTy<N>,
22 Block = BlockTy<N>,
23 Receipt = ReceiptTy<N>,
24 Header = HeaderTy<N>,
25 > + AccountReader
26 + StateProviderFactory
27 + StateReader
28 + HashedPostStateProvider
29 + ChainSpecProvider<ChainSpec = N::ChainSpec>
30 + ChangeSetReader
31 + CanonStateSubscriptions
32 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
33 + StageCheckpointReader
34 + Clone
35 + Debug
36 + Unpin
37 + 'static
38{
39}
40
41impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
42 T: DatabaseProviderFactory<
43 DB = N::DB,
44 Provider: BlockReader + TrieReader + StageCheckpointReader + PruneCheckpointReader,
45 > + NodePrimitivesProvider<Primitives = N::Primitives>
46 + StaticFileProviderFactory<Primitives = N::Primitives>
47 + BlockReaderIdExt<
48 Transaction = TxTy<N>,
49 Block = BlockTy<N>,
50 Receipt = ReceiptTy<N>,
51 Header = HeaderTy<N>,
52 > + AccountReader
53 + StateProviderFactory
54 + StateReader
55 + HashedPostStateProvider
56 + ChainSpecProvider<ChainSpec = N::ChainSpec>
57 + ChangeSetReader
58 + CanonStateSubscriptions
59 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
60 + StageCheckpointReader
61 + Clone
62 + Debug
63 + Unpin
64 + 'static
65{
66}