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