// Copyright 2020 Parity Technologies (UK) Ltd. // This file is part of Cumulus. // Substrate 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. // Substrate 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 Cumulus. If not, see . //! Cumulus related primitive types and traits. #![cfg_attr(not(feature = "std"), no_std)] pub mod validation_function_params; /// Identifiers and types related to Cumulus Inherents pub mod inherents { use sp_inherents::InherentIdentifier; /// Inherent identifier for downward messages. pub const DOWNWARD_MESSAGES_IDENTIFIER: InherentIdentifier = *b"cumdownm"; /// The type of the inherent downward messages. pub type DownwardMessagesType = sp_std::vec::Vec<()>; /// The identifier for the `validation_function_params` inherent. pub const VALIDATION_FUNCTION_PARAMS_IDENTIFIER: InherentIdentifier = *b"valfunp0"; /// The type of the inherent. pub type ValidationFunctionParamsType = crate::validation_function_params::ValidationFunctionParams; } /// Well known keys for values in the storage. pub mod well_known_keys { /// The storage key for the upward messages. /// /// The upward messages are stored as SCALE encoded `Vec<()>`. pub const UPWARD_MESSAGES: &'static [u8] = b":cumulus_upward_messages:"; /// Current validation function parameters. pub const VALIDATION_FUNCTION_PARAMS: &'static [u8] = b":validation_function_params"; /// Code upgarde (set as appropriate by a pallet). pub const NEW_VALIDATION_CODE: &'static [u8] = b":new_validation_code"; } /// Something that should be called when a downward message is received. #[impl_trait_for_tuples::impl_for_tuples(30)] pub trait DownwardMessageHandler { /// Handle the given downward message. fn handle_downward_message(msg: &()); } /// Something that can send upward messages. pub trait UpwardMessageSender { /// Send an upward message to the relay chain. /// /// Returns an error if sending failed. fn send_upward_message(msg: &()) -> Result<(), ()>; }