reth_provider/traits/
full.rs

1//! Helper provider traits to encapsulate all provider traits for simplicity.
2
3use crate::{
4    AccountReader, BlockReaderIdExt, ChainSpecProvider, ChangeSetReader, DatabaseProviderFactory,
5    StageCheckpointReader, StateProviderFactory, StaticFileProviderFactory,
6};
7use reth_chain_state::{CanonStateSubscriptions, ForkChoiceSubscriptions};
8use reth_node_types::{BlockTy, HeaderTy, NodeTypesWithDB, ReceiptTy, TxTy};
9use reth_storage_api::NodePrimitivesProvider;
10use std::fmt::Debug;
11
12/// Helper trait to unify all provider traits for simplicity.
13pub trait FullProvider<N: NodeTypesWithDB>:
14    DatabaseProviderFactory<DB = N::DB>
15    + NodePrimitivesProvider<Primitives = N::Primitives>
16    + StaticFileProviderFactory<Primitives = N::Primitives>
17    + BlockReaderIdExt<
18        Transaction = TxTy<N>,
19        Block = BlockTy<N>,
20        Receipt = ReceiptTy<N>,
21        Header = HeaderTy<N>,
22    > + AccountReader
23    + StateProviderFactory
24    + ChainSpecProvider<ChainSpec = N::ChainSpec>
25    + ChangeSetReader
26    + CanonStateSubscriptions
27    + ForkChoiceSubscriptions<Header = HeaderTy<N>>
28    + StageCheckpointReader
29    + Clone
30    + Debug
31    + Unpin
32    + 'static
33{
34}
35
36impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
37    T: DatabaseProviderFactory<DB = N::DB>
38        + NodePrimitivesProvider<Primitives = N::Primitives>
39        + StaticFileProviderFactory<Primitives = N::Primitives>
40        + BlockReaderIdExt<
41            Transaction = TxTy<N>,
42            Block = BlockTy<N>,
43            Receipt = ReceiptTy<N>,
44            Header = HeaderTy<N>,
45        > + AccountReader
46        + StateProviderFactory
47        + ChainSpecProvider<ChainSpec = N::ChainSpec>
48        + ChangeSetReader
49        + CanonStateSubscriptions
50        + ForkChoiceSubscriptions<Header = HeaderTy<N>>
51        + StageCheckpointReader
52        + Clone
53        + Debug
54        + Unpin
55        + 'static
56{
57}