-
Notifications
You must be signed in to change notification settings - Fork 2
/
expected_keepers.go
76 lines (61 loc) · 3.46 KB
/
expected_keepers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package types
import (
sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
supplyexported "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/supply/exported"
govtypes "github.com/fibonacci-chain/fbc/x/gov/types"
stakingexported "github.com/fibonacci-chain/fbc/x/staking/exported"
)
// StakingKeeper expected staking keeper (noalias)
type StakingKeeper interface {
// iterate through validators by operator address, execute func for each validator
IterateValidators(sdk.Context,
func(index int64, validator stakingexported.ValidatorI) (stop bool))
// iterate through bonded validators by operator address, execute func for each validator
IterateBondedValidatorsByPower(sdk.Context,
func(index int64, validator stakingexported.ValidatorI) (stop bool))
// iterate through the consensus validator set of the last block by operator address
// execute func for each validator
IterateLastValidators(sdk.Context,
func(index int64, validator stakingexported.ValidatorI) (stop bool))
// get a particular validator by operator address
Validator(sdk.Context, sdk.ValAddress) stakingexported.ValidatorI
// get a particular validator by consensus address
ValidatorByConsAddr(sdk.Context, sdk.ConsAddress) stakingexported.ValidatorI
Jail(sdk.Context, sdk.ConsAddress) // jail a validator
Unjail(sdk.Context, sdk.ConsAddress) // unjail a validator
// MaxValidators returns the maximum amount of bonded validators
MaxValidators(sdk.Context) uint16
GetLastTotalPower(ctx sdk.Context) sdk.Int
GetLastValidatorPower(ctx sdk.Context, valAddr sdk.ValAddress) int64
Delegator(ctx sdk.Context, delAddr sdk.AccAddress) stakingexported.DelegatorI
IsValidator(ctx sdk.Context, addr sdk.AccAddress) bool
}
// StakingHooks event hooks for staking validator object (noalias)
type StakingHooks interface {
// Must be called when a validator is created
AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress)
// Must be called when a validator is deleted
AfterValidatorRemoved(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress)
// Must be called when a delegation is created
BeforeDelegationCreated(ctx sdk.Context, delAddr sdk.AccAddress, valAddrs []sdk.ValAddress)
// Must be called when a delegation's shares are modified
BeforeDelegationSharesModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress)
AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress)
BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.ValAddress, fraction sdk.Dec)
}
// SupplyKeeper defines the expected supply Keeper (noalias)
type SupplyKeeper interface {
GetModuleAddress(name string) sdk.AccAddress
GetModuleAccount(ctx sdk.Context, name string) supplyexported.ModuleAccountI
// TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862
SetModuleAccount(sdk.Context, supplyexported.ModuleAccountI)
SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error
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
}
// GovKeeper defines the expected gov Keeper
type GovKeeper interface {
GetDepositParams(ctx sdk.Context) govtypes.DepositParams
GetVotingParams(ctx sdk.Context) govtypes.VotingParams
CheckMsgSubmitProposal(ctx sdk.Context, msg govtypes.MsgSubmitProposal) sdk.Error
}