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, 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
13/// Helper trait to unify all provider traits for simplicity.
14pub 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}