1use serde::Deserialize;
7use serde::Serialize;
8use std::collections::HashMap;
9
10pub const BIOS_LOADER_DEVICE_ID: &str = "ac6b8dc1-3257-4a70-b1b2-a9c9215659ad";
11
12#[derive(Serialize, Deserialize)]
13#[serde(rename_all = "PascalCase")]
14pub struct Version {
15 pub major: u32,
16 pub minor: u32,
17}
18
19#[derive(Serialize, Deserialize)]
20#[serde(rename_all = "PascalCase")]
21pub struct Device {
22 pub version: Version,
23 pub r#type: String,
24 pub states: HashMap<String, State>,
25}
26
27#[derive(Serialize, Deserialize)]
28#[serde(untagged)]
29pub enum State {
30 #[serde(rename_all = "PascalCase")]
31 Nvram {
32 vendors: HashMap<String, NvramVendor>,
33 last_update_time: String,
34 },
35 Other(serde_json::Value),
36}
37
38#[derive(Serialize, Deserialize)]
39#[serde(rename_all = "PascalCase")]
40pub struct NvramVendor {
41 pub variables: HashMap<String, NvramVariable>,
42}
43
44#[derive(Serialize, Deserialize)]
45#[serde(rename_all = "PascalCase")]
46pub struct NvramVariable {
47 pub attributes: u32,
48 pub data: Vec<u8>,
49}
50
51#[derive(Serialize, Deserialize)]
52#[serde(rename_all = "PascalCase")]
53pub struct RuntimeState {
54 pub version: Version,
55 pub devices: HashMap<String, Device>,
56}