reth_provider/traits/
full.rs

1//! Helper provider traits to encapsulate all provider traits for simplicity.
2
3use 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
13/// Helper trait to unify all provider traits for simplicity.
14pub 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}