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  }