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  }