Skip to main content

reth_provider/traits/
full.rs

1//! Helper provider traits to encapsulate all provider traits for simplicity.
2
3use crate::{
4    BalProvider, BlockReader, BlockReaderIdExt, ChainSpecProvider, ChangeSetReader,
5    DatabaseProviderFactory, PruneCheckpointReader, RocksDBProviderFactory, StageCheckpointReader,
6    StateProviderFactory, StateRangeProviderFactory, StateReader, StaticFileProviderFactory,
7};
8use reth_chain_state::{
9    CanonStateSubscriptions, ForkChoiceSubscriptions, PersistedBlockSubscriptions,
10};
11use reth_node_types::{BlockTy, HeaderTy, NodeTypesWithDB, ReceiptTy, TxTy};
12use reth_storage_api::{
13    NodePrimitivesProvider, StorageChangeSetReader, StorageSettingsCache,
14    TryIntoHistoricalStateProvider,
15};
16use std::fmt::Debug;
17
18/// Helper trait to unify all provider traits for simplicity.
19pub trait FullProvider<N: NodeTypesWithDB>:
20    DatabaseProviderFactory<
21        DB = N::DB,
22        Provider: BlockReader
23                      + StageCheckpointReader
24                      + PruneCheckpointReader
25                      + ChangeSetReader
26                      + StorageChangeSetReader
27                      + StorageSettingsCache
28                      + TryIntoHistoricalStateProvider
29                      + 'static,
30    > + NodePrimitivesProvider<Primitives = N::Primitives>
31    + StaticFileProviderFactory<Primitives = N::Primitives>
32    + RocksDBProviderFactory
33    + BlockReaderIdExt<
34        Transaction = TxTy<N>,
35        Block = BlockTy<N>,
36        Receipt = ReceiptTy<N>,
37        Header = HeaderTy<N>,
38    > + BalProvider
39    + StateProviderFactory
40    + StateRangeProviderFactory
41    + StateReader
42    + ChainSpecProvider<ChainSpec = N::ChainSpec>
43    + ChangeSetReader
44    + StorageChangeSetReader
45    + CanonStateSubscriptions
46    + ForkChoiceSubscriptions<Header = HeaderTy<N>>
47    + PersistedBlockSubscriptions
48    + StageCheckpointReader
49    + PruneCheckpointReader
50    + Clone
51    + Debug
52    + Unpin
53    + 'static
54{
55}
56
57impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
58    T: DatabaseProviderFactory<
59            DB = N::DB,
60            Provider: BlockReader
61                          + StageCheckpointReader
62                          + PruneCheckpointReader
63                          + ChangeSetReader
64                          + StorageChangeSetReader
65                          + StorageSettingsCache
66                          + TryIntoHistoricalStateProvider
67                          + 'static,
68        > + NodePrimitivesProvider<Primitives = N::Primitives>
69        + StaticFileProviderFactory<Primitives = N::Primitives>
70        + RocksDBProviderFactory
71        + BlockReaderIdExt<
72            Transaction = TxTy<N>,
73            Block = BlockTy<N>,
74            Receipt = ReceiptTy<N>,
75            Header = HeaderTy<N>,
76        > + BalProvider
77        + StateProviderFactory
78        + StateRangeProviderFactory
79        + StateReader
80        + ChainSpecProvider<ChainSpec = N::ChainSpec>
81        + ChangeSetReader
82        + StorageChangeSetReader
83        + CanonStateSubscriptions
84        + ForkChoiceSubscriptions<Header = HeaderTy<N>>
85        + PersistedBlockSubscriptions
86        + StageCheckpointReader
87        + PruneCheckpointReader
88        + Clone
89        + Debug
90        + Unpin
91        + 'static
92{
93}