reth_provider/traits/
full.rs1use crate::{
4 AccountReader, BlockReader, BlockReaderIdExt, ChainSpecProvider, ChangeSetReader,
5 DatabaseProviderFactory, HashedPostStateProvider, StageCheckpointReader, StateProviderFactory,
6 StateReader, StaticFileProviderFactory,
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<DB = N::DB, Provider: BlockReader>
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 + StateReader
26 + HashedPostStateProvider
27 + ChainSpecProvider<ChainSpec = N::ChainSpec>
28 + ChangeSetReader
29 + CanonStateSubscriptions
30 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
31 + StageCheckpointReader
32 + Clone
33 + Debug
34 + Unpin
35 + 'static
36{
37}
38
39impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
40 T: DatabaseProviderFactory<DB = N::DB, Provider: BlockReader>
41 + NodePrimitivesProvider<Primitives = N::Primitives>
42 + StaticFileProviderFactory<Primitives = N::Primitives>
43 + BlockReaderIdExt<
44 Transaction = TxTy<N>,
45 Block = BlockTy<N>,
46 Receipt = ReceiptTy<N>,
47 Header = HeaderTy<N>,
48 > + AccountReader
49 + StateProviderFactory
50 + StateReader
51 + HashedPostStateProvider
52 + ChainSpecProvider<ChainSpec = N::ChainSpec>
53 + ChangeSetReader
54 + CanonStateSubscriptions
55 + ForkChoiceSubscriptions<Header = HeaderTy<N>>
56 + StageCheckpointReader
57 + Clone
58 + Debug
59 + Unpin
60 + 'static
61{
62}