github.com/Finschia/finschia-sdk@v0.48.1/x/gov/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  // ParamSubspace defines the expected Subspace interface for parameters (noalias)
    10  type ParamSubspace interface {
    11  	Get(ctx sdk.Context, key []byte, ptr interface{})
    12  	Set(ctx sdk.Context, key []byte, param interface{})
    13  }
    14  
    15  // StakingKeeper expected staking keeper (Validator and Delegator sets) (noalias)
    16  type StakingKeeper interface {
    17  	// iterate through bonded validators by operator address, execute func for each validator
    18  	IterateBondedValidatorsByPower(
    19  		sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool),
    20  	)
    21  
    22  	TotalBondedTokens(sdk.Context) sdk.Int // total bonded tokens within the validator set
    23  	IterateDelegations(
    24  		ctx sdk.Context, delegator sdk.AccAddress,
    25  		fn func(index int64, delegation stakingtypes.DelegationI) (stop bool),
    26  	)
    27  }
    28  
    29  // AccountKeeper defines the expected account keeper (noalias)
    30  type AccountKeeper interface {
    31  	GetAccount(ctx sdk.Context, addr sdk.AccAddress) types.AccountI
    32  
    33  	GetModuleAddress(name string) sdk.AccAddress
    34  	GetModuleAccount(ctx sdk.Context, name string) types.ModuleAccountI
    35  
    36  	// TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862
    37  	SetModuleAccount(sdk.Context, types.ModuleAccountI)
    38  }
    39  
    40  // BankKeeper defines the expected interface needed to retrieve account balances.
    41  type BankKeeper interface {
    42  	GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
    43  	GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin
    44  	LockedCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
    45  	SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
    46  
    47  	SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
    48  	SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error
    49  	BurnCoins(ctx sdk.Context, name string, amt sdk.Coins) error
    50  }
    51  
    52  // Event Hooks
    53  // These can be utilized to communicate between a governance keeper and another
    54  // keepers.
    55  
    56  // GovHooks event hooks for governance proposal object (noalias)
    57  type GovHooks interface {
    58  	AfterProposalSubmission(ctx sdk.Context, proposalID uint64)                            // Must be called after proposal is submitted
    59  	AfterProposalDeposit(ctx sdk.Context, proposalID uint64, depositorAddr sdk.AccAddress) // Must be called after a deposit is made
    60  	AfterProposalVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.AccAddress)        // Must be called after a vote on a proposal is cast
    61  	AfterProposalFailedMinDeposit(ctx sdk.Context, proposalID uint64)                      // Must be called when proposal fails to reach min deposit
    62  	AfterProposalVotingPeriodEnded(ctx sdk.Context, proposalID uint64)                     // Must be called when proposal's finishes it's voting period
    63  }