// Copyright (C) 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 . //! Provides "fake" runtime API implementations //! //! These are used to provide a type that implements these runtime APIs without requiring to import //! the native runtimes. use beefy_primitives::ecdsa_crypto::{AuthorityId as BeefyId, Signature as BeefySignature}; use grandpa_primitives::AuthorityId as GrandpaId; use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo}; use polkadot_primitives::{ runtime_api, slashing, AccountId, AuthorityDiscoveryId, Balance, Block, BlockNumber, CandidateCommitments, CandidateEvent, CandidateHash, CommittedCandidateReceipt, CoreState, DisputeState, ExecutorParams, GroupRotationInfo, Hash, Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, Nonce, OccupiedCoreAssumption, PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, SessionIndex, SessionInfo, ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, ValidatorSignature, }; use sp_core::OpaqueMetadata; use sp_runtime::{ traits::Block as BlockT, transaction_validity::{TransactionSource, TransactionValidity}, ApplyExtrinsicResult, }; use sp_version::RuntimeVersion; use sp_weights::Weight; use std::collections::BTreeMap; use xcm::{VersionedAssetId, VersionedAssets, VersionedLocation, VersionedXcm}; sp_api::decl_runtime_apis! { /// This runtime API is only implemented for the test runtime! pub trait GetLastTimestamp { /// Returns the last timestamp of a runtime. fn get_last_timestamp() -> u64; } } struct Runtime; sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { fn version() -> RuntimeVersion { unimplemented!() } fn execute_block(_: Block) { unimplemented!() } fn initialize_block(_: &::Header) -> sp_runtime::ExtrinsicInclusionMode { unimplemented!() } } impl sp_api::Metadata for Runtime { fn metadata() -> OpaqueMetadata { unimplemented!() } fn metadata_at_version(_: u32) -> Option { unimplemented!() } fn metadata_versions() -> Vec { unimplemented!() } } impl sp_block_builder::BlockBuilder for Runtime { fn apply_extrinsic(_: ::Extrinsic) -> ApplyExtrinsicResult { unimplemented!() } fn finalize_block() -> ::Header { unimplemented!() } fn inherent_extrinsics(_: sp_inherents::InherentData) -> Vec<::Extrinsic> { unimplemented!() } fn check_inherents( _: Block, _: sp_inherents::InherentData, ) -> sp_inherents::CheckInherentsResult { unimplemented!() } } impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { fn validate_transaction( _: TransactionSource, _: ::Extrinsic, _: ::Hash, ) -> TransactionValidity { unimplemented!() } } impl sp_offchain::OffchainWorkerApi for Runtime { fn offchain_worker(_: &::Header) { unimplemented!() } } impl runtime_api::ParachainHost for Runtime { fn validators() -> Vec { unimplemented!() } fn validator_groups() -> (Vec>, GroupRotationInfo) { unimplemented!() } fn availability_cores() -> Vec> { unimplemented!() } fn persisted_validation_data(_: ParaId, _: OccupiedCoreAssumption) -> Option> { unimplemented!() } fn assumed_validation_data( _: ParaId, _: Hash, ) -> Option<(PersistedValidationData, ValidationCodeHash)> { unimplemented!() } fn check_validation_outputs( _: ParaId, _: CandidateCommitments, ) -> bool { unimplemented!() } fn session_index_for_child() -> SessionIndex { unimplemented!() } fn validation_code(_: ParaId, _: OccupiedCoreAssumption) -> Option { unimplemented!() } fn candidate_pending_availability(_: ParaId) -> Option> { unimplemented!() } fn candidate_events() -> Vec> { unimplemented!() } fn session_info(_: SessionIndex) -> Option { unimplemented!() } fn session_executor_params(_: SessionIndex) -> Option { unimplemented!() } fn dmq_contents(_: ParaId) -> Vec> { unimplemented!() } fn inbound_hrmp_channels_contents( _: ParaId ) -> BTreeMap>> { unimplemented!() } fn validation_code_by_hash(_: ValidationCodeHash) -> Option { unimplemented!() } fn on_chain_votes() -> Option> { unimplemented!() } fn submit_pvf_check_statement( _: PvfCheckStatement, _: ValidatorSignature, ) { unimplemented!() } fn pvfs_require_precheck() -> Vec { unimplemented!() } fn validation_code_hash(_: ParaId, _: OccupiedCoreAssumption) -> Option { unimplemented!() } fn disputes() -> Vec<(SessionIndex, CandidateHash, DisputeState)> { unimplemented!() } fn unapplied_slashes( ) -> Vec<(SessionIndex, CandidateHash, slashing::PendingSlashes)> { unimplemented!() } fn key_ownership_proof( _: ValidatorId, ) -> Option { unimplemented!() } fn submit_report_dispute_lost( _: slashing::DisputeProof, _: slashing::OpaqueKeyOwnershipProof, ) -> Option<()> { unimplemented!() } } impl beefy_primitives::BeefyApi for Runtime { fn beefy_genesis() -> Option { unimplemented!() } fn validator_set() -> Option> { unimplemented!() } fn submit_report_equivocation_unsigned_extrinsic( _: beefy_primitives::EquivocationProof< BlockNumber, BeefyId, BeefySignature, >, _: beefy_primitives::OpaqueKeyOwnershipProof, ) -> Option<()> { unimplemented!() } fn generate_key_ownership_proof( _: beefy_primitives::ValidatorSetId, _: BeefyId, ) -> Option { unimplemented!() } } impl sp_mmr_primitives::MmrApi for Runtime { fn mmr_root() -> Result { unimplemented!() } fn mmr_leaf_count() -> Result { unimplemented!() } fn generate_proof( _: Vec, _: Option, ) -> Result<(Vec, sp_mmr_primitives::Proof), sp_mmr_primitives::Error> { unimplemented!() } fn verify_proof(_: Vec, _: sp_mmr_primitives::Proof) -> Result<(), sp_mmr_primitives::Error> { unimplemented!() } fn verify_proof_stateless( _: Hash, _: Vec, _: sp_mmr_primitives::Proof ) -> Result<(), sp_mmr_primitives::Error> { unimplemented!() } } impl grandpa_primitives::GrandpaApi for Runtime { fn grandpa_authorities() -> Vec<(GrandpaId, u64)> { unimplemented!() } fn current_set_id() -> grandpa_primitives::SetId { unimplemented!() } fn submit_report_equivocation_unsigned_extrinsic( _: grandpa_primitives::EquivocationProof< ::Hash, sp_runtime::traits::NumberFor, >, _: grandpa_primitives::OpaqueKeyOwnershipProof, ) -> Option<()> { unimplemented!() } fn generate_key_ownership_proof( _: grandpa_primitives::SetId, _: grandpa_primitives::AuthorityId, ) -> Option { unimplemented!() } } impl sp_consensus_babe::BabeApi for Runtime { fn configuration() -> sp_consensus_babe::BabeConfiguration { unimplemented!() } fn current_epoch_start() -> sp_consensus_babe::Slot { unimplemented!() } fn current_epoch() -> sp_consensus_babe::Epoch { unimplemented!() } fn next_epoch() -> sp_consensus_babe::Epoch { unimplemented!() } fn generate_key_ownership_proof( _: sp_consensus_babe::Slot, _: sp_consensus_babe::AuthorityId, ) -> Option { unimplemented!() } fn submit_report_equivocation_unsigned_extrinsic( _: sp_consensus_babe::EquivocationProof<::Header>, _: sp_consensus_babe::OpaqueKeyOwnershipProof, ) -> Option<()> { unimplemented!() } } impl sp_authority_discovery::AuthorityDiscoveryApi for Runtime { fn authorities() -> Vec { unimplemented!() } } impl sp_session::SessionKeys for Runtime { fn generate_session_keys(_: Option>) -> Vec { unimplemented!() } fn decode_session_keys( _: Vec, ) -> Option, sp_core::crypto::KeyTypeId)>> { unimplemented!() } } impl frame_system_rpc_runtime_api::AccountNonceApi for Runtime { fn account_nonce(_: AccountId) -> Nonce { unimplemented!() } } impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi< Block, Balance, > for Runtime { fn query_info(_: ::Extrinsic, _: u32) -> RuntimeDispatchInfo { unimplemented!() } fn query_fee_details(_: ::Extrinsic, _: u32) -> FeeDetails { unimplemented!() } fn query_weight_to_fee(_: Weight) -> Balance { unimplemented!() } fn query_length_to_fee(_: u32) -> Balance { unimplemented!() } } impl crate::fake_runtime_api::GetLastTimestamp for Runtime { fn get_last_timestamp() -> u64 { unimplemented!() } } impl xcm_fee_payment_runtime_api::XcmPaymentApi for Runtime { fn query_acceptable_payment_assets(_: xcm::Version) -> Result, xcm_fee_payment_runtime_api::Error> { unimplemented!() } fn query_weight_to_asset_fee(_: Weight, _: VersionedAssetId) -> Result { unimplemented!() } fn query_xcm_weight(_: VersionedXcm<()>) -> Result { unimplemented!() } fn query_delivery_fees(_: VersionedLocation, _: VersionedXcm<()>) -> Result { unimplemented!() } } }