use cid::Cid;
use fil_actors_shared::v8::make_empty_map;
use fvm_ipld_blockstore::Blockstore;
use fvm_ipld_encoding::tuple::*;
use fvm_shared::address::Address;
use fvm_shared::HAMT_BIT_WIDTH;
#[derive(Debug, Serialize_tuple, Deserialize_tuple)]
pub struct State {
pub root_key: Address,
pub verifiers: Cid,
pub verified_clients: Cid,
pub remove_data_cap_proposal_ids: Cid,
}
impl State {
pub fn new<BS: Blockstore>(store: &BS, root_key: Address) -> anyhow::Result<State> {
let empty_map = make_empty_map::<_, ()>(store, HAMT_BIT_WIDTH)
.flush()
.map_err(|e| anyhow::anyhow!("Failed to create empty map: {}", e))?;
Ok(State {
root_key,
verifiers: empty_map,
verified_clients: empty_map,
remove_data_cap_proposal_ids: empty_map,
})
}
}