@@ -24,6 +24,7 @@ use shared::balance::{Amount, Balance, Balances, TokenSupply};
2424use shared:: block:: { BlockHeight , Epoch } ;
2525use shared:: checksums:: Checksums ;
2626use shared:: id:: Id ;
27+ use shared:: masp:: MaspRewardData ;
2728use shared:: pos:: {
2829 Bond , BondAddresses , Bonds , Redelegation , Unbond , UnbondAddresses , Unbonds ,
2930} ;
@@ -1106,6 +1107,30 @@ pub async fn get_validator_addresses_at_epoch(
11061107 Ok ( validators)
11071108}
11081109
1110+ pub async fn get_masp_rates (
1111+ client : & HttpClient ,
1112+ ) -> anyhow:: Result < Vec < MaspRewardData > > {
1113+ let operation = || async {
1114+ let masp_rates = rpc:: query_masp_reward_tokens ( client)
1115+ . await
1116+ . context ( "Failed to query masp reward tokens" ) ?;
1117+
1118+ let masp_rates = masp_rates. into_iter ( ) . map ( |data| MaspRewardData {
1119+ address : Id :: from ( data. address ) ,
1120+ max_reward_rate : data. max_reward_rate . to_string ( ) ,
1121+ kp_gain : data. kp_gain . to_string ( ) ,
1122+ kd_gain : data. kd_gain . to_string ( ) ,
1123+ locked_amount_target : Amount :: from ( NamadaSdkAmount :: from (
1124+ data. locked_amount_target ,
1125+ ) ) ,
1126+ } ) ;
1127+
1128+ Ok ( masp_rates. collect ( ) )
1129+ } ;
1130+
1131+ default_retry ( operation) . await
1132+ }
1133+
11091134fn to_epoch ( epoch : u32 ) -> NamadaSdkEpoch {
11101135 NamadaSdkEpoch :: from ( epoch as u64 )
11111136}
0 commit comments