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