use crate::hostio;
use alloy_primitives::{Address, B256, U256};
pub trait AddressVM {
fn balance(&self) -> U256;
fn codehash(&self) -> Option<B256>;
}
impl AddressVM for Address {
fn balance(&self) -> U256 {
let mut data = [0; 32];
unsafe { hostio::account_balance(self.0.as_ptr(), data.as_mut_ptr()) };
U256::from_be_bytes(data)
}
fn codehash(&self) -> Option<B256> {
let mut data = [0; 32];
unsafe { hostio::account_codehash(self.0.as_ptr(), data.as_mut_ptr()) };
(data != [0; 32]).then_some(data.into())
}
}