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    + PruneCheckpointReader
47    + Clone
48    + Debug
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        > + NodePrimitivesProvider<Primitives = N::Primitives>
64        + StaticFileProviderFactory<Primitives = N::Primitives>
65        + RocksDBProviderFactory
66        + BlockReaderIdExt<
67            Transaction = TxTy<N>,
68            Block = BlockTy<N>,
69            Receipt = ReceiptTy<N>,
70            Header = HeaderTy<N>,
71        > + AccountReader
72        + BalProvider
73        + StateProviderFactory
74        + StateReader
75        + HashedPostStateProvider
76        + ChainSpecProvider<ChainSpec = N::ChainSpec>
77        + ChangeSetReader
78        + StorageChangeSetReader
79        + CanonStateSubscriptions
80        + ForkChoiceSubscriptions<Header = HeaderTy<N>>
81        + PersistedBlockSubscriptions
82        + StageCheckpointReader
83        + PruneCheckpointReader
84        + Clone
85        + Debug
86        + Unpin
87        + 'static
88{
89}