github.com/Finschia/finschia-sdk@v0.48.1/x/distribution/types/expected_keepers.go (about) 1 package types 2 3 import ( 4 sdk "github.com/Finschia/finschia-sdk/types" 5 "github.com/Finschia/finschia-sdk/x/auth/types" 6 stakingtypes "github.com/Finschia/finschia-sdk/x/staking/types" 7 ) 8 9 // AccountKeeper defines the expected account keeper used for simulations (noalias) 10 type AccountKeeper interface { 11 GetAccount(ctx sdk.Context, addr sdk.AccAddress) types.AccountI 12 13 GetModuleAddress(name string) sdk.AccAddress 14 GetModuleAccount(ctx sdk.Context, name string) types.ModuleAccountI 15 16 // TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862 17 SetModuleAccount(sdk.Context, types.ModuleAccountI) 18 } 19 20 // BankKeeper defines the expected interface needed to retrieve account balances. 21 type BankKeeper interface { 22 GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins 23 GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin 24 LockedCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins 25 SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins 26 27 SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error 28 SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error 29 SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error 30 } 31 32 // StakingKeeper expected staking keeper (noalias) 33 type StakingKeeper interface { 34 // iterate through validators by operator address, execute func for each validator 35 IterateValidators(sdk.Context, 36 func(index int64, validator stakingtypes.ValidatorI) (stop bool)) 37 38 // iterate through bonded validators by operator address, execute func for each validator 39 IterateBondedValidatorsByPower(sdk.Context, 40 func(index int64, validator stakingtypes.ValidatorI) (stop bool)) 41 42 // iterate through the consensus validator set of the last block by operator address, execute func for each validator 43 IterateLastValidators(sdk.Context, 44 func(index int64, validator stakingtypes.ValidatorI) (stop bool)) 45 46 Validator(sdk.Context, sdk.ValAddress) stakingtypes.ValidatorI // get a particular validator by operator address 47 ValidatorByConsAddr(sdk.Context, sdk.ConsAddress) stakingtypes.ValidatorI // get a particular validator by consensus address 48 49 // slash the validator and delegators of the validator, specifying offence height, offence power, and slash fraction 50 Slash(sdk.Context, sdk.ConsAddress, int64, int64, sdk.Dec) 51 Jail(sdk.Context, sdk.ConsAddress) // jail a validator 52 Unjail(sdk.Context, sdk.ConsAddress) // unjail a validator 53 54 // Delegation allows for getting a particular delegation for a given validator 55 // and delegator outside the scope of the staking module. 56 Delegation(sdk.Context, sdk.AccAddress, sdk.ValAddress) stakingtypes.DelegationI 57 58 // MaxValidators returns the maximum amount of bonded validators 59 MaxValidators(sdk.Context) uint32 60 61 IterateDelegations(ctx sdk.Context, delegator sdk.AccAddress, 62 fn func(index int64, delegation stakingtypes.DelegationI) (stop bool)) 63 64 GetLastTotalPower(ctx sdk.Context) sdk.Int 65 GetLastValidatorPower(ctx sdk.Context, valAddr sdk.ValAddress) int64 66 67 GetAllSDKDelegations(ctx sdk.Context) []stakingtypes.Delegation 68 } 69 70 // StakingHooks event hooks for staking validator object (noalias) 71 type StakingHooks interface { 72 AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress) // Must be called when a validator is created 73 AfterValidatorRemoved(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) // Must be called when a validator is deleted 74 75 BeforeDelegationCreated(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) // Must be called when a delegation is created 76 BeforeDelegationSharesModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) // Must be called when a delegation's shares are modified 77 AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) 78 BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.ValAddress, fraction sdk.Dec) 79 }