@@ -39,10 +39,11 @@ use staking::staking::interface::{
3939 IStakingConsensusDispatcher , IStakingConsensusSafeDispatcher , IStakingDispatcher ,
4040 IStakingDispatcherTrait , IStakingMigrationDispatcher , IStakingMigrationDispatcherTrait ,
4141 IStakingMigrationSafeDispatcher , IStakingPauseDispatcher , IStakingPauseDispatcherTrait ,
42- IStakingPoolDispatcher , IStakingPoolSafeDispatcher , IStakingSafeDispatcher ,
43- IStakingSafeDispatcherTrait , IStakingTokenManagerDispatcher ,
44- IStakingTokenManagerDispatcherTrait , IStakingTokenManagerSafeDispatcher ,
45- IStakingTokenManagerSafeDispatcherTrait , StakerInfoV1 , StakerInfoV1Trait , StakerPoolInfoV2 ,
42+ IStakingPoolDispatcher , IStakingPoolSafeDispatcher , IStakingRewardsManagerDispatcher ,
43+ IStakingRewardsManagerDispatcherTrait , IStakingSafeDispatcher , IStakingSafeDispatcherTrait ,
44+ IStakingTokenManagerDispatcher , IStakingTokenManagerDispatcherTrait ,
45+ IStakingTokenManagerSafeDispatcher , IStakingTokenManagerSafeDispatcherTrait , StakerInfoV1 ,
46+ StakerInfoV1Trait , StakerPoolInfoV2 ,
4647};
4748use staking :: staking :: objects :: {
4849 EpochInfo , EpochInfoTrait , NormalizedAmount , StakerVersion , StakerVersionTrait ,
@@ -338,6 +339,10 @@ pub(crate) impl StakingImpl of StakingTrait {
338339 IStakingPoolSafeDispatcher { contract_address : self . address }
339340 }
340341
342+ fn rewards_manager_dispatcher (self : StakingState ) -> IStakingRewardsManagerDispatcher nopanic {
343+ IStakingRewardsManagerDispatcher { contract_address : self . address }
344+ }
345+
341346 fn set_roles (self : StakingState ) {
342347 set_account_as_upgrade_governor (
343348 contract : self . address,
@@ -1492,6 +1497,23 @@ pub(crate) impl SystemStakerImpl of SystemStakerTrait {
14921497 self . attestation. unwrap (). dispatcher (). attest (: block_hash );
14931498 }
14941499
1500+ fn start_consensus_rewards (self : SystemState ) {
1501+ let epoch_id = self . staking. get_current_epoch () + K . into ();
1502+ cheat_caller_address_once (
1503+ contract_address : self . staking. address, caller_address : self . staking. roles. app_governor,
1504+ );
1505+ let config_dispatcher = IStakingConfigDispatcher { contract_address : self . staking. address };
1506+ config_dispatcher . set_consensus_rewards_first_epoch (: epoch_id );
1507+ self . advance_k_epochs ();
1508+ }
1509+
1510+ fn update_rewards (self : SystemState , staker : Staker ) {
1511+ self
1512+ . staking
1513+ . rewards_manager_dispatcher ()
1514+ . update_rewards (staker_address : staker . staker. address, disable_rewards : false );
1515+ }
1516+
14951517 #[feature(" safe_dispatcher" )]
14961518 fn safe_attest (self : SystemState , staker : Staker ) -> Result <(), Array <felt252 >> {
14971519 let block_hash = Zero :: zero ();
0 commit comments