staking_events_handler.rs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #![warn(missing_docs)]
  2. use frame_support::traits::{Currency, Imbalance};
  3. use frame_support::StorageMap;
  4. use sp_std::marker::PhantomData;
  5. // Balance alias
  6. type BalanceOf<T> =
  7. <<T as stake::Trait>::Currency as Currency<<T as system::Trait>::AccountId>>::Balance;
  8. // Balance alias for staking
  9. type NegativeImbalance<T> =
  10. <<T as stake::Trait>::Currency as Currency<<T as system::Trait>::AccountId>>::NegativeImbalance;
  11. /// Proposal implementation of the staking event handler from the stake module.
  12. /// 'marker' responsible for the 'Trait' binding.
  13. pub struct StakingEventsHandler<T> {
  14. pub marker: PhantomData<T>,
  15. }
  16. impl<T: stake::Trait + proposals_engine::Trait> stake::StakingEventsHandler<T>
  17. for StakingEventsHandler<T>
  18. {
  19. /// Unstake remaining sum back to the source_account_id
  20. fn unstaked(
  21. id: &<T as stake::Trait>::StakeId,
  22. _unstaked_amount: BalanceOf<T>,
  23. remaining_imbalance: NegativeImbalance<T>,
  24. ) -> NegativeImbalance<T> {
  25. if <proposals_engine::StakesProposals<T>>::contains_key(id) {
  26. <proposals_engine::Module<T>>::refund_proposal_stake(*id, remaining_imbalance);
  27. return <NegativeImbalance<T>>::zero(); // imbalance was consumed
  28. }
  29. remaining_imbalance
  30. }
  31. /// Empty handler for slashing
  32. fn slashed(
  33. _: &<T as stake::Trait>::StakeId,
  34. _: Option<<T as stake::Trait>::SlashId>,
  35. _: BalanceOf<T>,
  36. _: BalanceOf<T>,
  37. remaining_imbalance: NegativeImbalance<T>,
  38. ) -> NegativeImbalance<T> {
  39. remaining_imbalance
  40. }
  41. }