@@ -672,6 +672,13 @@ impl MonitorState {
672672 deposits_completed : self . deposits . values ( ) . filter ( |d| d. forwarded ) . count ( ) ,
673673 burns_pending : self . burns . values ( ) . filter ( |b| !b. forwarded ) . count ( ) ,
674674 burns_forwarded : self . burns . values ( ) . filter ( |b| b. forwarded ) . count ( ) ,
675+ refunds_pending : self
676+ . refunds
677+ . values ( )
678+ . filter ( |r| !r. forwarded && !r. failed )
679+ . count ( ) ,
680+ refunds_completed : self . refunds . values ( ) . filter ( |r| r. forwarded ) . count ( ) ,
681+ refunds_failed : self . refunds . values ( ) . filter ( |r| r. failed ) . count ( ) ,
675682 last_scanned_evm_block : self . last_scanned_evm_block ,
676683 last_scanned_linera_height : self . last_scanned_linera_height ,
677684 }
@@ -684,6 +691,9 @@ pub struct StatusSummary {
684691 pub deposits_completed : usize ,
685692 pub burns_pending : usize ,
686693 pub burns_forwarded : usize ,
694+ pub refunds_pending : usize ,
695+ pub refunds_completed : usize ,
696+ pub refunds_failed : usize ,
687697 pub last_scanned_evm_block : u64 ,
688698 pub last_scanned_linera_height : BlockHeight ,
689699}
@@ -740,7 +750,11 @@ fn retry_eligible(retry_count: u32, last_retry_at: Option<Instant>, max_retries:
740750#[ cfg( test) ]
741751mod tests {
742752 use alloy:: primitives:: { Address , B256 , U256 } ;
743- use linera_base:: data_types:: BlockHeight ;
753+ use linera_base:: {
754+ crypto:: CryptoHash ,
755+ data_types:: { Amount , BlockHeight } ,
756+ identifiers:: { AccountOwner , ChainId } ,
757+ } ;
744758
745759 use super :: * ;
746760
@@ -859,11 +873,32 @@ mod tests {
859873 } )
860874 . await ;
861875
876+ let refund_key = RefundKey {
877+ source_chain_id : 1 ,
878+ block_hash : B256 :: ZERO ,
879+ tx_index : 0 ,
880+ log_index : 1 ,
881+ } ;
882+ state
883+ . track_refund ( PendingRefund {
884+ key : refund_key. clone ( ) ,
885+ evm_tx_hash : B256 :: ZERO ,
886+ source : Account {
887+ chain_id : ChainId ( CryptoHash :: from ( [ 0u8 ; 32 ] ) ) ,
888+ owner : AccountOwner :: CHAIN ,
889+ } ,
890+ amount : Amount :: ZERO ,
891+ } )
892+ . await ;
893+
862894 let summary = state. status_summary ( ) ;
863895 assert_eq ! ( summary. deposits_pending, 1 ) ;
864896 assert_eq ! ( summary. deposits_completed, 0 ) ;
865897 assert_eq ! ( summary. burns_pending, 1 ) ;
866898 assert_eq ! ( summary. burns_forwarded, 0 ) ;
899+ assert_eq ! ( summary. refunds_pending, 1 ) ;
900+ assert_eq ! ( summary. refunds_completed, 0 ) ;
901+ assert_eq ! ( summary. refunds_failed, 0 ) ;
867902 assert_eq ! ( summary. last_scanned_evm_block, 100 ) ;
868903 }
869904
0 commit comments