Skip to main content

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,
8};
9use reth_chain_state::{
10    CanonStateSubscriptions, ForkChoiceSubscriptions, PersistedBlockSubscriptions,
11};
12use reth_node_types::{BlockTy, HeaderTy, NodeTypesWithDB, ReceiptTy, TxTy};
13use reth_storage_api::{NodePrimitivesProvider, StorageChangeSetReader, StorageSettingsCache};
14use std::fmt::Debug;
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    > + NodePrimitivesProvider<Primitives = N::Primitives>
27    + StaticFileProviderFactory<Primitives = N::Primitives>
28    + RocksDBProviderFactory
29    + BlockReaderIdExt<
30        Transaction = TxTy<N>,
31        Block = BlockTy<N>,
32        Receipt = ReceiptTy<N>,
33        Header = HeaderTy<N>,
34    > + AccountReader
35    + StateProviderFactory
36    + StateReader
37    + HashedPostStateProvider
38    + ChainSpecProvider<ChainSpec = N::ChainSpec>
39    + ChangeSetReader
40    + StorageChangeSetReader
41    + CanonStateSubscriptions
42    + ForkChoiceSubscriptions<Header = HeaderTy<N>>
43    + PersistedBlockSubscriptions
44    + StageCheckpointReader
45    + Clone
46    + Debug
47    + Unpin
48    + 'static
49{
50}
51
52impl<T, N: NodeTypesWithDB> FullProvider<N> for T where
53    T: DatabaseProviderFactory<
54            DB = N::DB,
55            Provider: BlockReader
56                          + StageCheckpointReader
57                          + PruneCheckpointReader
58                          + ChangeSetReader
59                          + StorageChangeSetReader
60                          + StorageSettingsCache,
61        > + NodePrimitivesProvider<Primitives = N::Primitives>
62        + StaticFileProviderFactory<Primitives = N::Primitives>
63        + RocksDBProviderFactory
64        + BlockReaderIdExt<
65            Transaction = TxTy<N>,
66            Block = BlockTy<N>,
67            Receipt = ReceiptTy<N>,
68            Header = HeaderTy<N>,
69        > + AccountReader
70        + StateProviderFactory
71        + StateReader
72        + HashedPostStateProvider
73        + ChainSpecProvider<ChainSpec = N::ChainSpec>
74        + ChangeSetReader
75        + StorageChangeSetReader
76        + CanonStateSubscriptions
77        + ForkChoiceSubscriptions<Header = HeaderTy<N>>
78        + PersistedBlockSubscriptions
79        + StageCheckpointReader
80        + Clone
81        + Debug
82        + Unpin
83        + 'static
84{
85}