swiftness_commitment/vector/
config.rs1use serde::{Deserialize, Serialize};
2use serde_with::serde_as;
3use starknet_crypto::Felt;
4
5#[serde_as]
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct Config {
8 #[cfg_attr(
9 feature = "std",
10 serde_as(as = "starknet_core::serde::unsigned_field_element::UfeHex")
11 )]
12 pub height: Felt,
13 #[cfg_attr(
14 feature = "std",
15 serde_as(as = "starknet_core::serde::unsigned_field_element::UfeHex")
16 )]
17 pub n_verifier_friendly_commitment_layers: Felt,
18}
19
20impl Config {
21 pub fn validate(
22 &self,
23 expected_height: Felt,
24 expected_n_verifier_friendly_commitment_layers: Felt,
25 ) -> Result<(), Error> {
26 if self.height != expected_height {
27 return Err(Error::MisMatch { value: self.height, expected: expected_height });
28 }
29 if self.n_verifier_friendly_commitment_layers
30 != expected_n_verifier_friendly_commitment_layers
31 {
32 return Err(Error::MisMatch {
33 value: self.n_verifier_friendly_commitment_layers,
34 expected: expected_n_verifier_friendly_commitment_layers,
35 });
36 }
37
38 Ok(())
39 }
40}
41
42#[cfg(feature = "std")]
43use thiserror::Error;
44
45#[cfg(feature = "std")]
46#[derive(Error, Debug)]
47pub enum Error {
48 #[error("mismatch value {value} expected {expected}")]
49 MisMatch { value: Felt, expected: Felt },
50}
51
52#[cfg(not(feature = "std"))]
53use thiserror_no_std::Error;
54
55#[cfg(not(feature = "std"))]
56#[derive(Error, Debug)]
57pub enum Error {
58 #[error("mismatch value {value} expected {expected}")]
59 MisMatch { value: Felt, expected: Felt },
60}