use crate::BlockHeader;
use alloy_consensus::Header;
use alloy_primitives::{BlockHash, BlockNumber, Bytes, B256, U256};
pub trait HeaderMut: BlockHeader {
fn set_parent_hash(&mut self, hash: BlockHash);
fn set_block_number(&mut self, number: BlockNumber);
fn set_timestamp(&mut self, timestamp: u64);
fn set_state_root(&mut self, state_root: B256);
fn set_difficulty(&mut self, difficulty: U256);
fn set_mix_hash(&mut self, mix_hash: B256);
fn set_extra_data(&mut self, extra_data: Bytes);
fn set_parent_beacon_block_root(&mut self, parent_beacon_block_root: Option<B256>);
fn set_number(&mut self, number: u64) {
self.set_block_number(number);
}
}
impl HeaderMut for Header {
fn set_parent_hash(&mut self, hash: BlockHash) {
self.parent_hash = hash;
}
fn set_block_number(&mut self, number: BlockNumber) {
self.number = number;
}
fn set_timestamp(&mut self, timestamp: u64) {
self.timestamp = timestamp;
}
fn set_state_root(&mut self, state_root: B256) {
self.state_root = state_root;
}
fn set_difficulty(&mut self, difficulty: U256) {
self.difficulty = difficulty;
}
fn set_mix_hash(&mut self, mix_hash: B256) {
self.mix_hash = mix_hash;
}
fn set_extra_data(&mut self, extra_data: Bytes) {
self.extra_data = extra_data;
}
fn set_parent_beacon_block_root(&mut self, parent_beacon_block_root: Option<B256>) {
self.parent_beacon_block_root = parent_beacon_block_root;
}
}