// Copyright 2017-2020 Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Polkadot is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . //! Polkadot Client meta trait use sp_api::{ProvideRuntimeApi, ConstructRuntimeApi, CallApiAt}; use sp_blockchain::HeaderBackend; use sp_runtime::traits::Block as BlockT; use sc_client_api::{Backend as BackendT, BlockchainEvents}; /// Polkadot client abstraction, this super trait only pulls in functionality required for /// polkadot internal crates like polkadot-collator. pub trait PolkadotClient: BlockchainEvents + Sized + Send + Sync + ProvideRuntimeApi + HeaderBackend + CallApiAt< Block, Error = sp_blockchain::Error, StateBackend = Backend ::State > where Block: BlockT, Backend: BackendT, Runtime: ConstructRuntimeApi {} impl PolkadotClient for Client where Block: BlockT, Runtime: ConstructRuntimeApi, Backend: BackendT, Client: BlockchainEvents + ProvideRuntimeApi + HeaderBackend + Sized + Send + Sync + CallApiAt< Block, Error = sp_blockchain::Error, StateBackend = Backend ::State > {}