-
Notifications
You must be signed in to change notification settings - Fork 568
/
hooks.go
33 lines (25 loc) · 1.14 KB
/
hooks.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
package types
import (
"time"
sdk "github.com/cosmos/cosmos-sdk/types"
)
type LockupHooks interface {
OnTokenLocked(ctx sdk.Context, address sdk.AccAddress, lockID uint64, amount sdk.Coins, lockDuration time.Duration, unlockTime time.Time)
OnTokenUnlocked(ctx sdk.Context, address sdk.AccAddress, lockID uint64, amount sdk.Coins, lockDuration time.Duration, unlockTime time.Time)
}
var _ LockupHooks = MultiLockupHooks{}
// combine multiple gamm hooks, all hook functions are run in array sequence
type MultiLockupHooks []LockupHooks
func NewMultiLockupHooks(hooks ...LockupHooks) MultiLockupHooks {
return hooks
}
func (h MultiLockupHooks) OnTokenLocked(ctx sdk.Context, address sdk.AccAddress, lockID uint64, amount sdk.Coins, lockDuration time.Duration, unlockTime time.Time) {
for i := range h {
h[i].OnTokenLocked(ctx, address, lockID, amount, lockDuration, unlockTime)
}
}
func (h MultiLockupHooks) OnTokenUnlocked(ctx sdk.Context, address sdk.AccAddress, lockID uint64, amount sdk.Coins, lockDuration time.Duration, unlockTime time.Time) {
for i := range h {
h[i].OnTokenUnlocked(ctx, address, lockID, amount, lockDuration, unlockTime)
}
}