2019-08-08 12:51:18 -07:00
|
|
|
package types
|
2019-02-13 15:01:50 -08:00
|
|
|
|
2019-06-04 15:06:58 -07:00
|
|
|
import (
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
2020-05-20 12:21:00 -07:00
|
|
|
"github.com/cosmos/cosmos-sdk/x/auth/types"
|
2020-10-12 06:56:02 -07:00
|
|
|
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
|
2019-06-04 15:06:58 -07:00
|
|
|
)
|
2019-02-13 15:01:50 -08:00
|
|
|
|
2019-08-08 12:51:18 -07:00
|
|
|
// ParamSubspace defines the expected Subspace interface for parameters (noalias)
|
|
|
|
type ParamSubspace interface {
|
|
|
|
Get(ctx sdk.Context, key []byte, ptr interface{})
|
|
|
|
Set(ctx sdk.Context, key []byte, param interface{})
|
|
|
|
}
|
|
|
|
|
|
|
|
// StakingKeeper expected staking keeper (Validator and Delegator sets) (noalias)
|
2019-06-04 15:06:58 -07:00
|
|
|
type StakingKeeper interface {
|
|
|
|
// iterate through bonded validators by operator address, execute func for each validator
|
2019-12-27 09:57:54 -08:00
|
|
|
IterateBondedValidatorsByPower(
|
2020-10-12 06:56:02 -07:00
|
|
|
sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool),
|
2019-12-27 09:57:54 -08:00
|
|
|
)
|
2019-06-04 15:06:58 -07:00
|
|
|
|
|
|
|
TotalBondedTokens(sdk.Context) sdk.Int // total bonded tokens within the validator set
|
2019-12-27 09:57:54 -08:00
|
|
|
IterateDelegations(
|
|
|
|
ctx sdk.Context, delegator sdk.AccAddress,
|
2020-10-12 06:56:02 -07:00
|
|
|
fn func(index int64, delegation stakingtypes.DelegationI) (stop bool),
|
2019-12-27 09:57:54 -08:00
|
|
|
)
|
2019-06-04 15:06:58 -07:00
|
|
|
}
|
2019-10-23 02:14:45 -07:00
|
|
|
|
|
|
|
// AccountKeeper defines the expected account keeper (noalias)
|
|
|
|
type AccountKeeper interface {
|
2020-05-20 12:21:00 -07:00
|
|
|
GetAccount(ctx sdk.Context, addr sdk.AccAddress) types.AccountI
|
2020-04-20 12:32:10 -07:00
|
|
|
|
|
|
|
GetModuleAddress(name string) sdk.AccAddress
|
2020-05-20 12:21:00 -07:00
|
|
|
GetModuleAccount(ctx sdk.Context, name string) types.ModuleAccountI
|
2020-04-20 12:32:10 -07:00
|
|
|
|
|
|
|
// TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862
|
2020-05-20 12:21:00 -07:00
|
|
|
SetModuleAccount(sdk.Context, types.ModuleAccountI)
|
2019-10-23 02:14:45 -07:00
|
|
|
}
|
2020-01-30 13:31:16 -08:00
|
|
|
|
|
|
|
// BankKeeper defines the expected interface needed to retrieve account balances.
|
|
|
|
type BankKeeper interface {
|
|
|
|
GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
|
|
|
|
GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin
|
|
|
|
LockedCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
|
|
|
|
SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
|
2020-04-20 08:22:12 -07:00
|
|
|
|
|
|
|
SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
|
|
|
|
SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error
|
|
|
|
BurnCoins(ctx sdk.Context, name string, amt sdk.Coins) error
|
2020-01-30 13:31:16 -08:00
|
|
|
}
|
2021-04-21 09:59:30 -07:00
|
|
|
|
|
|
|
// Event Hooks
|
|
|
|
// These can be utilized to communicate between a governance keeper and another
|
|
|
|
// keepers.
|
|
|
|
|
|
|
|
// GovHooks event hooks for governance proposal object (noalias)
|
|
|
|
type GovHooks interface {
|
|
|
|
AfterProposalSubmission(ctx sdk.Context, proposalID uint64) // Must be called after proposal is submitted
|
|
|
|
AfterProposalDeposit(ctx sdk.Context, proposalID uint64, depositorAddr sdk.AccAddress) // Must be called after a deposit is made
|
|
|
|
AfterProposalVote(ctx sdk.Context, proposalID uint64, voterAddr sdk.AccAddress) // Must be called after a vote on a proposal is cast
|
|
|
|
AfterProposalFailedMinDeposit(ctx sdk.Context, proposalID uint64) // Must be called when proposal fails to reach min deposit
|
|
|
|
AfterProposalVotingPeriodEnded(ctx sdk.Context, proposalID uint64) // Must be called when proposal's finishes it's voting period
|
|
|
|
}
|