1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Copyright 2019-2024 ChainSafe Systems
// SPDX-License-Identifier: Apache-2.0, MIT

use super::*;
use crate::shim::sector::SectorSize;

#[derive(Serialize, Deserialize, JsonSchema)]
#[schemars(rename = "SectorSize")]
// This should probably be a JSON Schema `enum`
pub struct SectorSizeLotusJson(#[schemars(with = "u64")] SectorSize);

impl HasLotusJson for SectorSize {
    type LotusJson = SectorSizeLotusJson;

    #[cfg(test)]
    fn snapshots() -> Vec<(serde_json::Value, Self)> {
        vec![(json!(2048), Self::_2KiB)]
    }

    fn into_lotus_json(self) -> Self::LotusJson {
        SectorSizeLotusJson(self)
    }

    fn from_lotus_json(SectorSizeLotusJson(inner): Self::LotusJson) -> Self {
        inner
    }
}