github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/staking/types/expected_keepers.go (about) 1 package types 2 3 import ( 4 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 5 authexported "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/exported" 6 supplyexported "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/supply/exported" 7 stakingexported "github.com/fibonacci-chain/fbc/x/staking/exported" 8 ) 9 10 // AccountKeeper defines the expected account keeper (noalias) 11 type AccountKeeper interface { 12 IterateAccounts(ctx sdk.Context, process func(authexported.Account) (stop bool)) 13 } 14 15 // SupplyKeeper defines the expected supply Keeper (noalias) 16 type SupplyKeeper interface { 17 GetSupplyByDenom(ctx sdk.Context, denom string) sdk.Dec 18 19 GetModuleAddress(name string) sdk.AccAddress 20 GetModuleAccount(ctx sdk.Context, moduleName string) supplyexported.ModuleAccountI 21 22 // TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862 23 SetModuleAccount(sdk.Context, supplyexported.ModuleAccountI) 24 25 SendCoinsFromModuleToModule(ctx sdk.Context, senderPool, recipientPool string, amt sdk.Coins) error 26 UndelegateCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, 27 amt sdk.SysCoins) error 28 DelegateCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, 29 amt sdk.SysCoins) error 30 31 BurnCoins(ctx sdk.Context, name string, amt sdk.Coins) error 32 } 33 34 // ValidatorSet expected properties for the set of all validators (noalias) 35 type ValidatorSet interface { 36 // iterate through validators by operator address, execute func for each validator 37 IterateValidators(sdk.Context, 38 func(index int64, validator stakingexported.ValidatorI) (stop bool)) 39 40 // iterate through bonded validators by operator address, execute func for each validator 41 IterateBondedValidatorsByPower(sdk.Context, 42 func(index int64, validator stakingexported.ValidatorI) (stop bool)) 43 44 // iterate through the consensus validator set of the last block by operator address, execute func for each validator 45 IterateLastValidators(sdk.Context, 46 func(index int64, validator stakingexported.ValidatorI) (stop bool)) 47 // get a particular validator by operator address 48 Validator(sdk.Context, sdk.ValAddress) stakingexported.ValidatorI 49 // get a particular validator by consensus address 50 ValidatorByConsAddr(sdk.Context, sdk.ConsAddress) stakingexported.ValidatorI 51 // total bonded tokens within the validator set 52 TotalBondedTokens(sdk.Context) sdk.Dec 53 // total staking token supply 54 StakingTokenSupply(sdk.Context) sdk.Dec 55 56 // slash the validator and delegators of the validator, specifying offence height, offence power, and slash fraction 57 // jail a validator 58 Jail(sdk.Context, sdk.ConsAddress) 59 // unjail a validator 60 Unjail(sdk.Context, sdk.ConsAddress) 61 62 // MaxValidators returns the maximum amount of bonded validators 63 MaxValidators(sdk.Context) uint16 64 } 65 66 //_______________________________________________________________________________ 67 // Event Hooks 68 // These can be utilized to communicate between a staking keeper and another 69 // keeper which must take particular actions when validators/delegators change 70 // state. The second keeper must implement this interface, which then the 71 // staking keeper can call. 72 73 // StakingHooks event hooks for staking validator object (noalias) 74 type StakingHooks interface { 75 // Must be called when a validator is created 76 AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress) 77 // Must be called when a validator's state changes 78 BeforeValidatorModified(ctx sdk.Context, valAddr sdk.ValAddress) 79 // Must be called when a validator is deleted 80 AfterValidatorRemoved(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) 81 // Must be called when a validator is bonded 82 AfterValidatorBonded(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) 83 // Must be called when a validator begins unbonding 84 AfterValidatorBeginUnbonding(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) 85 86 // required by fbexchain 87 // Must be called when a validator is destroyed by tx 88 AfterValidatorDestroyed(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) 89 90 // Must be called when a delegation is created 91 BeforeDelegationCreated(ctx sdk.Context, delAddr sdk.AccAddress, valAddrs []sdk.ValAddress) 92 // Must be called when a delegation's shares are modified 93 BeforeDelegationSharesModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddrs []sdk.ValAddress) 94 // Must be called when a delegation is removed 95 BeforeDelegationRemoved(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) 96 // Must be called when a delegation is modified 97 AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddrs []sdk.ValAddress) 98 //BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.ValAddress, fraction sdk.Dec) 99 // Check modules enabled 100 CheckEnabled(ctx sdk.Context) bool 101 }