github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/staking/types/hooks.go (about)

     1  package types
     2  
     3  import (
     4  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     5  )
     6  
     7  // MultiStakingHooks combines multiple staking hooks, all hook functions are run in array sequence
     8  // TODO:need to trim the staking hooks as the fbchaindesign
     9  type MultiStakingHooks []StakingHooks
    10  
    11  // NewMultiStakingHooks creates a new object of MultiStakingHooks
    12  func NewMultiStakingHooks(hooks ...StakingHooks) MultiStakingHooks {
    13  	return hooks
    14  }
    15  
    16  // AfterValidatorCreated handles the hooks after the validator created
    17  func (h MultiStakingHooks) AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress) {
    18  	for i := range h {
    19  		h[i].AfterValidatorCreated(ctx, valAddr)
    20  	}
    21  }
    22  
    23  // BeforeValidatorModified handles the hooks before the validator modified
    24  func (h MultiStakingHooks) BeforeValidatorModified(ctx sdk.Context, valAddr sdk.ValAddress) {
    25  	for i := range h {
    26  		h[i].BeforeValidatorModified(ctx, valAddr)
    27  	}
    28  }
    29  
    30  // AfterValidatorRemoved handles the hooks after the validator was removed
    31  func (h MultiStakingHooks) AfterValidatorRemoved(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) {
    32  	for i := range h {
    33  		h[i].AfterValidatorRemoved(ctx, consAddr, valAddr)
    34  	}
    35  }
    36  
    37  // AfterValidatorBonded handles the hooks after the validator was bonded
    38  func (h MultiStakingHooks) AfterValidatorBonded(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) {
    39  	for i := range h {
    40  		h[i].AfterValidatorBonded(ctx, consAddr, valAddr)
    41  	}
    42  }
    43  
    44  // AfterValidatorBeginUnbonding handles the hooks after the validator began the unbonding
    45  func (h MultiStakingHooks) AfterValidatorBeginUnbonding(ctx sdk.Context, consAddr sdk.ConsAddress,
    46  	valAddr sdk.ValAddress) {
    47  	for i := range h {
    48  		h[i].AfterValidatorBeginUnbonding(ctx, consAddr, valAddr)
    49  	}
    50  }
    51  
    52  // AfterValidatorDestroyed handles the hooks after the validator was destroyed by tx
    53  func (h MultiStakingHooks) AfterValidatorDestroyed(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) {
    54  	for i := range h {
    55  		h[i].AfterValidatorDestroyed(ctx, consAddr, valAddr)
    56  	}
    57  }