use ergo_chain_types::{Header, PreHeader};
use super::parameters::Parameters;
pub type Headers = [Header; 10];
#[derive(PartialEq, Eq, Debug, Clone)]
pub struct ErgoStateContext {
pub pre_header: PreHeader,
pub headers: Headers,
pub parameters: Parameters,
}
impl ErgoStateContext {
pub fn new(
pre_header: PreHeader,
headers: Headers,
parameters: Parameters,
) -> ErgoStateContext {
ErgoStateContext {
pre_header,
headers,
parameters,
}
}
}
#[cfg(feature = "arbitrary")]
mod arbitrary {
use super::*;
use proptest::prelude::*;
impl Arbitrary for ErgoStateContext {
type Parameters = ();
type Strategy = BoxedStrategy<Self>;
fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy {
(any::<PreHeader>(), any::<Headers>())
.prop_map(|(pre_header, headers)| {
Self::new(pre_header, headers, Parameters::default())
})
.boxed()
}
}
}