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  }