use miden_protocol::account::delta::AccountUpdateDetails;
use miden_protocol::account::{Account, AccountDelta};
use miden_standards::account::auth::NetworkAccount;
#[derive(Clone)]
pub enum NetworkAccountEffect {
Created(Account),
Updated(AccountDelta),
}
impl NetworkAccountEffect {
pub fn from_protocol(update: &AccountUpdateDetails) -> Option<Self> {
match update {
AccountUpdateDetails::Private => None,
AccountUpdateDetails::Delta(update) if update.is_full_state() => {
let account = Account::try_from(update)
.expect("Account should be derivable by full state AccountDelta");
NetworkAccount::new(account)
.ok()
.map(|na| NetworkAccountEffect::Created(na.into_account()))
},
AccountUpdateDetails::Delta(update) => {
Some(NetworkAccountEffect::Updated(update.clone()))
},
}
}
}