use crate::{
chain::eth::{EthHeader, EthashProof},
mmr::{helper, Store},
};
use scale::{Decode, Encode};
use serde::Serialize;
#[derive(Decode, Encode, Default)]
pub struct HeaderStuffs {
eth_header: EthHeader,
ethash_proof: Vec<EthashProof>,
mmr_root: [u8; 32],
mmr_proof: MMRProof,
}
#[derive(Decode, Encode, Default)]
pub struct MMRProof {
member_leaf_index: u64,
last_leaf_index: u64,
proof: Vec<[u8; 32]>,
}
#[derive(Decode, Encode, Default, Serialize)]
pub struct MMRProofJson {
pub member_leaf_index: u64,
pub last_leaf_index: u64,
pub proof: Vec<String>,
}
impl MMRProofJson {
pub fn gen(store: &Store, member: u64, leaf: u64) -> Self {
Self {
member_leaf_index: member,
last_leaf_index: leaf,
proof: helper::gen_proof(store, member, leaf),
}
}
}