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() {}