github.com/cosmos/cosmos-sdk@v0.50.10/x/slashing/types/expected_keepers.go (about) 1 package types 2 3 import ( 4 context "context" 5 6 "cosmossdk.io/core/address" 7 "cosmossdk.io/math" 8 9 sdk "github.com/cosmos/cosmos-sdk/types" 10 paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" 11 stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" 12 ) 13 14 // AccountKeeper expected account keeper 15 type AccountKeeper interface { 16 GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI 17 IterateAccounts(ctx context.Context, process func(sdk.AccountI) (stop bool)) 18 } 19 20 // BankKeeper defines the expected interface needed to retrieve account balances. 21 type BankKeeper interface { 22 GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins 23 GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin 24 LockedCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins 25 SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins 26 } 27 28 // ParamSubspace defines the expected Subspace interfacace 29 type ParamSubspace interface { 30 HasKeyTable() bool 31 WithKeyTable(table paramtypes.KeyTable) paramtypes.Subspace 32 Get(ctx sdk.Context, key []byte, ptr interface{}) 33 GetParamSet(ctx sdk.Context, ps paramtypes.ParamSet) 34 SetParamSet(ctx sdk.Context, ps paramtypes.ParamSet) 35 } 36 37 // StakingKeeper expected staking keeper 38 type StakingKeeper interface { 39 ValidatorAddressCodec() address.Codec 40 ConsensusAddressCodec() address.Codec 41 // iterate through validators by operator address, execute func for each validator 42 IterateValidators(context.Context, 43 func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error 44 45 Validator(context.Context, sdk.ValAddress) (stakingtypes.ValidatorI, error) // get a particular validator by operator address 46 ValidatorByConsAddr(context.Context, sdk.ConsAddress) (stakingtypes.ValidatorI, error) // get a particular validator by consensus address 47 48 // slash the validator and delegators of the validator, specifying offense height, offense power, and slash fraction 49 Slash(context.Context, sdk.ConsAddress, int64, int64, math.LegacyDec) (math.Int, error) 50 SlashWithInfractionReason(context.Context, sdk.ConsAddress, int64, int64, math.LegacyDec, stakingtypes.Infraction) (math.Int, error) 51 Jail(context.Context, sdk.ConsAddress) error // jail a validator 52 Unjail(context.Context, sdk.ConsAddress) error // 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(context.Context, sdk.AccAddress, sdk.ValAddress) (stakingtypes.DelegationI, error) 57 GetAllValidators(ctx context.Context) ([]stakingtypes.Validator, error) 58 59 // MaxValidators returns the maximum amount of bonded validators 60 MaxValidators(context.Context) (uint32, error) 61 62 // IsValidatorJailed returns if the validator is jailed. 63 IsValidatorJailed(ctx context.Context, addr sdk.ConsAddress) (bool, error) 64 } 65 66 // StakingHooks event hooks for staking validator object (noalias) 67 type StakingHooks interface { 68 AfterValidatorCreated(ctx context.Context, valAddr sdk.ValAddress) error // Must be called when a validator is created 69 BeforeValidatorModified(ctx context.Context, valAddr sdk.ValAddress) error // Must be called when a validator's state changes 70 AfterValidatorRemoved(ctx context.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) error // Must be called when a validator is deleted 71 72 AfterValidatorBonded(ctx context.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) error // Must be called when a validator is bonded 73 AfterValidatorBeginUnbonding(ctx context.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) error // Must be called when a validator begins unbonding 74 75 BeforeDelegationCreated(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error // Must be called when a delegation is created 76 BeforeDelegationSharesModified(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error // Must be called when a delegation's shares are modified 77 BeforeDelegationRemoved(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error // Must be called when a delegation is removed 78 AfterDelegationModified(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error 79 BeforeValidatorSlashed(ctx context.Context, valAddr sdk.ValAddress, fraction math.LegacyDec) error 80 }