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 }