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