github.com/cosmos/cosmos-sdk@v0.50.10/x/gov/types/expected_keepers.go (about) 1 package types 2 3 import ( 4 "context" 5 6 addresscodec "cosmossdk.io/core/address" 7 "cosmossdk.io/math" 8 9 sdk "github.com/cosmos/cosmos-sdk/types" 10 stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" 11 ) 12 13 // ParamSubspace defines the expected Subspace interface for parameters (noalias) 14 type ParamSubspace interface { 15 Get(ctx sdk.Context, key []byte, ptr interface{}) 16 Set(ctx sdk.Context, key []byte, param interface{}) 17 } 18 19 // StakingKeeper expected staking keeper (Validator and Delegator sets) (noalias) 20 type StakingKeeper interface { 21 ValidatorAddressCodec() addresscodec.Codec 22 // iterate through bonded validators by operator address, execute func for each validator 23 IterateBondedValidatorsByPower( 24 context.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool), 25 ) error 26 27 TotalBondedTokens(context.Context) (math.Int, error) // total bonded tokens within the validator set 28 IterateDelegations( 29 ctx context.Context, delegator sdk.AccAddress, 30 fn func(index int64, delegation stakingtypes.DelegationI) (stop bool), 31 ) error 32 } 33 34 // DistributionKeeper defines the expected distribution keeper (noalias) 35 type DistributionKeeper interface { 36 FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error 37 } 38 39 // AccountKeeper defines the expected account keeper (noalias) 40 type AccountKeeper interface { 41 AddressCodec() addresscodec.Codec 42 43 GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI 44 45 GetModuleAddress(name string) sdk.AccAddress 46 GetModuleAccount(ctx context.Context, name string) sdk.ModuleAccountI 47 48 // TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862 49 SetModuleAccount(context.Context, sdk.ModuleAccountI) 50 } 51 52 // BankKeeper defines the expected interface needed to retrieve account balances. 53 type BankKeeper interface { 54 GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins 55 GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin 56 LockedCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins 57 SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins 58 59 SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error 60 SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error 61 BurnCoins(ctx context.Context, name string, amt sdk.Coins) error 62 } 63 64 // Event Hooks 65 // These can be utilized to communicate between a governance keeper and another 66 // keepers. 67 68 // GovHooks event hooks for governance proposal object (noalias) 69 type GovHooks interface { 70 AfterProposalSubmission(ctx context.Context, proposalID uint64) error // Must be called after proposal is submitted 71 AfterProposalDeposit(ctx context.Context, proposalID uint64, depositorAddr sdk.AccAddress) error // Must be called after a deposit is made 72 AfterProposalVote(ctx context.Context, proposalID uint64, voterAddr sdk.AccAddress) error // Must be called after a vote on a proposal is cast 73 AfterProposalFailedMinDeposit(ctx context.Context, proposalID uint64) error // Must be called when proposal fails to reach min deposit 74 AfterProposalVotingPeriodEnded(ctx context.Context, proposalID uint64) error // Must be called when proposal's finishes it's voting period 75 } 76 77 type GovHooksWrapper struct{ GovHooks } 78 79 // IsOnePerModuleType implements the depinject.OnePerModuleType interface. 80 func (GovHooksWrapper) IsOnePerModuleType() {}