github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/distribution/types/expected_keepers.go (about) 1 package types 2 3 import ( 4 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 5 supplyexported "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/supply/exported" 6 govtypes "github.com/fibonacci-chain/fbc/x/gov/types" 7 stakingexported "github.com/fibonacci-chain/fbc/x/staking/exported" 8 ) 9 10 // StakingKeeper expected staking keeper (noalias) 11 type StakingKeeper interface { 12 // iterate through validators by operator address, execute func for each validator 13 IterateValidators(sdk.Context, 14 func(index int64, validator stakingexported.ValidatorI) (stop bool)) 15 16 // iterate through bonded validators by operator address, execute func for each validator 17 IterateBondedValidatorsByPower(sdk.Context, 18 func(index int64, validator stakingexported.ValidatorI) (stop bool)) 19 20 // iterate through the consensus validator set of the last block by operator address 21 // execute func for each validator 22 IterateLastValidators(sdk.Context, 23 func(index int64, validator stakingexported.ValidatorI) (stop bool)) 24 25 // get a particular validator by operator address 26 Validator(sdk.Context, sdk.ValAddress) stakingexported.ValidatorI 27 // get a particular validator by consensus address 28 ValidatorByConsAddr(sdk.Context, sdk.ConsAddress) stakingexported.ValidatorI 29 30 Jail(sdk.Context, sdk.ConsAddress) // jail a validator 31 Unjail(sdk.Context, sdk.ConsAddress) // unjail a validator 32 33 // MaxValidators returns the maximum amount of bonded validators 34 MaxValidators(sdk.Context) uint16 35 36 GetLastTotalPower(ctx sdk.Context) sdk.Int 37 GetLastValidatorPower(ctx sdk.Context, valAddr sdk.ValAddress) int64 38 39 Delegator(ctx sdk.Context, delAddr sdk.AccAddress) stakingexported.DelegatorI 40 41 IsValidator(ctx sdk.Context, addr sdk.AccAddress) bool 42 } 43 44 // StakingHooks event hooks for staking validator object (noalias) 45 type StakingHooks interface { 46 // Must be called when a validator is created 47 AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress) 48 // Must be called when a validator is deleted 49 AfterValidatorRemoved(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) 50 // Must be called when a delegation is created 51 BeforeDelegationCreated(ctx sdk.Context, delAddr sdk.AccAddress, valAddrs []sdk.ValAddress) 52 // Must be called when a delegation's shares are modified 53 BeforeDelegationSharesModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) 54 AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) 55 BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.ValAddress, fraction sdk.Dec) 56 } 57 58 // SupplyKeeper defines the expected supply Keeper (noalias) 59 type SupplyKeeper interface { 60 GetModuleAddress(name string) sdk.AccAddress 61 GetModuleAccount(ctx sdk.Context, name string) supplyexported.ModuleAccountI 62 63 // TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862 64 SetModuleAccount(sdk.Context, supplyexported.ModuleAccountI) 65 66 SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error 67 SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error 68 SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error 69 } 70 71 // GovKeeper defines the expected gov Keeper 72 type GovKeeper interface { 73 GetDepositParams(ctx sdk.Context) govtypes.DepositParams 74 GetVotingParams(ctx sdk.Context) govtypes.VotingParams 75 CheckMsgSubmitProposal(ctx sdk.Context, msg govtypes.MsgSubmitProposal) sdk.Error 76 }