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