//! Helper provider traits to encapsulate all provider traits for simplicity. use crate::{ AccountReader, BlockReaderIdExt, ChainSpecProvider, ChangeSetReader, DatabaseProviderFactory, EvmEnvProvider, HeaderProvider, StageCheckpointReader, StateProviderFactory, StaticFileProviderFactory, TransactionsProvider, }; use reth_chain_state::CanonStateSubscriptions; use reth_db_api::database::Database; /// Helper trait to unify all provider traits for simplicity. pub trait FullProvider: DatabaseProviderFactory + StaticFileProviderFactory + BlockReaderIdExt + AccountReader + StateProviderFactory + EvmEnvProvider + ChainSpecProvider + ChangeSetReader + CanonStateSubscriptions + StageCheckpointReader + Clone + Unpin + 'static { } impl FullProvider for T where T: DatabaseProviderFactory + StaticFileProviderFactory + BlockReaderIdExt + AccountReader + StateProviderFactory + EvmEnvProvider + ChainSpecProvider + ChangeSetReader + CanonStateSubscriptions + StageCheckpointReader + Clone + Unpin + 'static { } /// Helper trait to unify all provider traits required to support `eth` RPC server behaviour, for /// simplicity. pub trait FullRpcProvider: StateProviderFactory + EvmEnvProvider + ChainSpecProvider + BlockReaderIdExt + HeaderProvider + TransactionsProvider + StageCheckpointReader + Clone + Unpin + 'static { } impl FullRpcProvider for T where T: StateProviderFactory + EvmEnvProvider + ChainSpecProvider + BlockReaderIdExt + HeaderProvider + TransactionsProvider + StageCheckpointReader + Clone + Unpin + 'static { }