1#[cfg(not(feature = "std"))]
2extern crate alloc;
3
4use crate::DomainAllowlistUpdates;
5use crate::execution_receipt::{BlockFees, Transfers};
6#[cfg(not(feature = "std"))]
7use alloc::vec::Vec;
8use domain_runtime_primitives::{
9 Balance, CheckExtrinsicsValidityError, DecodeExtrinsicError, opaque,
10};
11use sp_runtime::Digest;
12use sp_runtime::generic::Era;
13use sp_runtime::traits::NumberFor;
14use sp_weights::Weight;
15use subspace_core_primitives::U256;
16use subspace_runtime_primitives::{ExtrinsicFor, Moment};
17
18sp_api::decl_runtime_apis! {
19 #[api_version(2)]
21 #[allow(clippy::ptr_arg)]
24 pub trait DomainCoreApi {
25 fn extract_signer(
27 extrinsics: Vec<ExtrinsicFor<Block>>,
28 ) -> Vec<(Option<opaque::AccountId>, Block::Extrinsic)>;
29
30 fn is_within_tx_range(
31 extrinsic: &Block::Extrinsic,
32 bundle_vrf_hash: &U256,
33 tx_range: &U256,
34 ) -> bool;
35
36 fn extract_signer_if_all_within_tx_range(
39 extrinsic: &Vec<Block::Extrinsic>,
40 bundle_vrf_hash: &U256,
41 tx_range: &U256,
42 ) -> Result<Vec<Option<opaque::AccountId>> , u32>;
43
44 fn initialize_block_with_post_state_root(header: &Block::Header) -> Vec<u8>;
46
47 fn apply_extrinsic_with_post_state_root(extrinsic: Block::Extrinsic) -> Vec<u8>;
49
50 fn construct_set_code_extrinsic(code: Vec<u8>) -> Vec<u8>;
52
53 fn construct_timestamp_extrinsic(moment: Moment) -> Block::Extrinsic;
55
56 fn construct_consensus_chain_byte_fee_extrinsic(consensus_chain_byte_fee: Balance) -> Block::Extrinsic;
58
59 fn construct_domain_update_chain_allowlist_extrinsic(updates: DomainAllowlistUpdates) -> Block::Extrinsic;
61
62 fn is_inherent_extrinsic(extrinsic: &Block::Extrinsic) -> bool;
64
65 fn find_first_inherent_extrinsic(extrinsics: &Vec<Block::Extrinsic>) -> Option<u32>;
67
68 fn check_extrinsics_and_do_pre_dispatch(uxts: Vec<Block::Extrinsic>, block_number: NumberFor<Block>,
72 block_hash: Block::Hash) -> Result<(), CheckExtrinsicsValidityError>;
73
74 fn decode_extrinsic(
76 opaque_extrinsic: sp_runtime::OpaqueExtrinsic,
77 ) -> Result<Block::Extrinsic, DecodeExtrinsicError>;
78
79 fn decode_extrinsics_prefix(
82 opaque_extrinsics: Vec<sp_runtime::OpaqueExtrinsic>,
83 ) -> Vec<Block::Extrinsic>;
84
85 fn extrinsic_era(
87 extrinsic: &Block::Extrinsic
88 ) -> Option<Era>;
89
90 fn extrinsic_weight(ext: &Block::Extrinsic) -> Weight;
92
93 fn extrinsics_weight(ext: &Vec<Block::Extrinsic>) -> Weight;
95
96 fn block_fees() -> BlockFees<Balance>;
98
99 fn block_digest() -> Digest;
101
102 fn block_weight() -> Weight;
104
105 fn transfers() -> Transfers<Balance>;
107
108 fn transfers_storage_key() -> Vec<u8>;
110
111 fn block_fees_storage_key() -> Vec<u8>;
113 }
114}