1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
use casper_types::{Key, URef, U512}; use crate::{ shared::{newtypes::Blake2bHash, stored_value::StoredValue}, storage::trie::merkle_proof::TrieMerkleProof, }; #[derive(Debug)] pub enum BalanceResult { RootNotFound, Success { motes: U512, purse_proof: Box<TrieMerkleProof<Key, StoredValue>>, balance_proof: Box<TrieMerkleProof<Key, StoredValue>>, }, } impl BalanceResult { pub fn motes(&self) -> Option<&U512> { match self { BalanceResult::Success { motes, .. } => Some(motes), _ => None, } } pub fn proofs( self, ) -> Option<( TrieMerkleProof<Key, StoredValue>, TrieMerkleProof<Key, StoredValue>, )> { match self { BalanceResult::Success { purse_proof, balance_proof, .. } => Some((*purse_proof, *balance_proof)), _ => None, } } } #[derive(Debug, Clone, PartialEq, Eq)] pub struct BalanceRequest { state_hash: Blake2bHash, purse_uref: URef, } impl BalanceRequest { pub fn new(state_hash: Blake2bHash, purse_uref: URef) -> Self { BalanceRequest { state_hash, purse_uref, } } pub fn state_hash(&self) -> Blake2bHash { self.state_hash } pub fn purse_uref(&self) -> URef { self.purse_uref } }