1
// Copyright (C) Moondance Labs Ltd.
2
// This file is part of Tanssi.
3

            
4
// Tanssi is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8

            
9
// Tanssi is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13

            
14
// You should have received a copy of the GNU General Public License
15
// along with Tanssi.  If not, see <http://www.gnu.org/licenses/>
16

            
17
//! Runtime API for XCM core buyer pallet
18

            
19
#![cfg_attr(not(feature = "std"), no_std)]
20

            
21
pub use pallet_xcm_core_buyer::BuyingError;
22
use {
23
    frame_support::sp_runtime,
24
    sp_consensus_slots::Slot,
25
    sp_runtime::{traits::Block as BlockT, RuntimeAppPublic},
26
    sp_std::boxed::Box,
27
    tp_xcm_core_buyer::BuyCoreCollatorProof,
28
};
29

            
30
2472
sp_api::decl_runtime_apis! {
31
2472
    pub trait XCMCoreBuyerApi<BlockNumber, ParaId, CollatorPublicKey> where ParaId: parity_scale_codec::Codec, BlockNumber: parity_scale_codec::Codec, BuyingError<BlockNumber>: parity_scale_codec::Codec, CollatorPublicKey: RuntimeAppPublic + Clone + core::fmt::Debug + parity_scale_codec::Codec,  {
32
2472
        fn is_core_buying_allowed(para_id: ParaId, collator_public_key: CollatorPublicKey) -> Result<(), BuyingError<BlockNumber>>;
33
2472
        fn create_buy_core_unsigned_extrinsic(para_id: ParaId, proof: BuyCoreCollatorProof<CollatorPublicKey>) -> Box<<Block as BlockT>::Extrinsic>;
34
2472
        fn get_buy_core_signature_nonce(para_id: ParaId) -> u64;
35
2472
        fn get_buy_core_slot_drift() -> Slot;
36
2472
    }
37
2472
}