1#![cfg_attr(not(feature = "std"), no_std)]
21#![warn(missing_docs)]
22#[cfg(all(
23 any(feature = "decode", feature = "serde_full"),
24 any(
25 feature = "v13",
26 feature = "v12",
27 feature = "v11",
28 feature = "v10",
29 feature = "v9",
30 feature = "v8",
31 feature = "legacy"
32 ),
33 not(feature = "std")
34))]
35compile_error!("decode and serde_full features prior to v14 require std");
36
37#[cfg(feature = "serde_full")]
38use serde::{Deserialize, Serialize};
39
40#[cfg(feature = "decode")]
41use codec::{Decode, Error, Input};
42
43cfg_if::cfg_if! {
44 if #[cfg(not(feature = "std"))] {
45 extern crate alloc;
46 use alloc::vec::Vec;
47 }
48}
49
50use codec::{Encode, Output};
51
52#[cfg(any(
54 feature = "v13",
55 feature = "v12",
56 feature = "v11",
57 feature = "v10",
58 feature = "v9",
59 feature = "v8",
60 feature = "legacy"
61))]
62pub mod decode_different;
63
64#[cfg(feature = "v8")]
66pub mod v8;
67
68#[cfg(feature = "v9")]
70pub mod v9;
71
72#[cfg(feature = "v10")]
74pub mod v10;
75
76#[cfg(feature = "v11")]
78pub mod v11;
79
80#[cfg(feature = "v12")]
82pub mod v12;
83
84#[cfg(feature = "v13")]
86pub mod v13;
87
88#[cfg(feature = "v14")]
90pub mod v14;
91
92#[cfg(feature = "v14")]
96pub use self::v14::*;
97
98#[derive(Eq, Encode, PartialEq, Debug)]
100#[cfg_attr(feature = "decode", derive(Decode))]
101#[cfg_attr(feature = "serde_full", derive(Serialize))]
102pub struct RuntimeMetadataPrefixed(pub u32, pub RuntimeMetadata);
103
104#[derive(Eq, Encode, PartialEq, Debug)]
108#[cfg_attr(feature = "decode", derive(Decode))]
109#[cfg_attr(feature = "serde_full", derive(Serialize))]
110pub enum RuntimeMetadata {
111 V0(RuntimeMetadataDeprecated),
113 V1(RuntimeMetadataDeprecated),
115 V2(RuntimeMetadataDeprecated),
117 V3(RuntimeMetadataDeprecated),
119 V4(RuntimeMetadataDeprecated),
121 V5(RuntimeMetadataDeprecated),
123 V6(RuntimeMetadataDeprecated),
125 V7(RuntimeMetadataDeprecated),
127 #[cfg(any(feature = "v8", feature = "legacy"))]
129 V8(v8::RuntimeMetadataV8),
130 #[cfg(not(feature = "v8"))]
132 V8(OpaqueMetadata),
133 #[cfg(any(feature = "v9", feature = "legacy"))]
135 V9(v9::RuntimeMetadataV9),
136 #[cfg(not(feature = "v9"))]
138 V9(OpaqueMetadata),
139 #[cfg(any(feature = "v10", feature = "legacy"))]
141 V10(v10::RuntimeMetadataV10),
142 #[cfg(not(feature = "v10"))]
144 V10(OpaqueMetadata),
145 #[cfg(any(feature = "v11", feature = "legacy"))]
147 V11(v11::RuntimeMetadataV11),
148 #[cfg(not(feature = "v11"))]
150 V11(OpaqueMetadata),
151 #[cfg(any(feature = "v12", feature = "legacy"))]
153 V12(v12::RuntimeMetadataV12),
154 #[cfg(not(feature = "v12"))]
156 V12(OpaqueMetadata),
157 #[cfg(any(feature = "v13", feature = "legacy"))]
159 V13(v13::RuntimeMetadataV13),
160 #[cfg(not(feature = "v13"))]
162 V13(OpaqueMetadata),
163 #[cfg(feature = "v14")]
165 V14(v14::RuntimeMetadataV14),
166 #[cfg(not(feature = "v14"))]
168 V14(OpaqueMetadata),
169}
170
171impl RuntimeMetadata {
172 pub fn version(&self) -> u32 {
174 match self {
175 RuntimeMetadata::V0(_) => 0,
176 RuntimeMetadata::V1(_) => 1,
177 RuntimeMetadata::V2(_) => 2,
178 RuntimeMetadata::V3(_) => 3,
179 RuntimeMetadata::V4(_) => 4,
180 RuntimeMetadata::V5(_) => 5,
181 RuntimeMetadata::V6(_) => 6,
182 RuntimeMetadata::V7(_) => 7,
183 RuntimeMetadata::V8(_) => 8,
184 RuntimeMetadata::V9(_) => 9,
185 RuntimeMetadata::V10(_) => 10,
186 RuntimeMetadata::V11(_) => 11,
187 RuntimeMetadata::V12(_) => 12,
188 RuntimeMetadata::V13(_) => 13,
189 RuntimeMetadata::V14(_) => 14,
190 }
191 }
192}
193
194#[derive(Encode, Eq, PartialEq, Debug)]
196#[cfg_attr(feature = "decode", derive(Decode))]
197#[cfg_attr(feature = "serde_full", derive(Serialize, Deserialize))]
198pub struct OpaqueMetadata(pub Vec<u8>);
199
200#[derive(Eq, PartialEq, Debug)]
202#[cfg_attr(feature = "serde_full", derive(Serialize, Deserialize))]
203pub enum RuntimeMetadataDeprecated {}
204
205impl Encode for RuntimeMetadataDeprecated {
206 fn encode_to<W: Output + ?Sized>(&self, _dest: &mut W) {}
207}
208
209impl codec::EncodeLike for RuntimeMetadataDeprecated {}
210
211#[cfg(feature = "decode")]
212impl Decode for RuntimeMetadataDeprecated {
213 fn decode<I: Input>(_input: &mut I) -> Result<Self, Error> {
214 Err("Decoding is not supported".into())
215 }
216}