-
Notifications
You must be signed in to change notification settings - Fork 91
/
clob_keeper.go
130 lines (125 loc) · 3.58 KB
/
clob_keeper.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package types
import (
"math/big"
"time"
"github.com/cometbft/cometbft/libs/log"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/dydxprotocol/v4-chain/protocol/indexer/indexer_manager"
satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types"
)
type ClobKeeper interface {
LiquidationsKeeper
LiquidationsConfigKeeper
AddOrderToOrderbookCollatCheck(
ctx sdk.Context,
clobPairId ClobPairId,
subaccountOpenOrders map[satypes.SubaccountId][]PendingOpenOrder,
) (
success bool,
successPerUpdate map[satypes.SubaccountId]satypes.UpdateResult,
)
CancelShortTermOrder(ctx sdk.Context, msg *MsgCancelOrder) error
CancelStatefulOrder(ctx sdk.Context, msg *MsgCancelOrder) error
CreatePerpetualClobPair(
ctx sdk.Context,
clobPairId uint32,
perpetualId uint32,
stepSizeInBaseQuantums satypes.BaseQuantums,
quantumConversionExponent int32,
subticksPerTick uint32,
status ClobPair_Status,
) (
ClobPair,
error,
)
GetAllClobPairs(ctx sdk.Context) (list []ClobPair)
GetClobPair(ctx sdk.Context, id ClobPairId) (val ClobPair, found bool)
HasAuthority(authority string) bool
PlaceShortTermOrder(ctx sdk.Context, msg *MsgPlaceOrder) (
orderSizeOptimisticallyFilledFromMatchingQuantums satypes.BaseQuantums,
orderStatus OrderStatus,
err error,
)
PlaceStatefulOrder(ctx sdk.Context, msg *MsgPlaceOrder) error
PruneStateFillAmountsForShortTermOrders(
ctx sdk.Context,
)
RemoveClobPair(ctx sdk.Context, id ClobPairId)
ProcessProposerOperations(
ctx sdk.Context,
operations []OperationRaw,
) error
GetStatePosition(
ctx sdk.Context,
subaccountId satypes.SubaccountId,
clobPairId ClobPairId,
) (
positionSizeQuantums *big.Int,
)
ProcessSingleMatch(
ctx sdk.Context,
matchWithOrders *MatchWithOrders,
) (
success bool,
takerUpdateResult satypes.UpdateResult,
makerUpdateResult satypes.UpdateResult,
offchainUpdates *OffchainUpdates,
err error,
)
SetLongTermOrderPlacement(
ctx sdk.Context,
order Order,
blockHeight uint32,
)
GetLongTermOrderPlacement(
ctx sdk.Context,
orderId OrderId,
) (val LongTermOrderPlacement, found bool)
DeleteLongTermOrderPlacement(
ctx sdk.Context,
orderId OrderId,
)
RemoveOrderFillAmount(ctx sdk.Context, orderId OrderId)
MustAddOrderToStatefulOrdersTimeSlice(
ctx sdk.Context,
goodTilBlockTime time.Time,
orderId OrderId,
)
GetStatefulOrdersTimeSlice(ctx sdk.Context, goodTilBlockTime time.Time) (
orderIds []OrderId,
)
MustRemoveStatefulOrder(
ctx sdk.Context,
orderId OrderId,
)
RemoveExpiredStatefulOrdersTimeSlices(ctx sdk.Context, blockTime time.Time) (
expiredOrderIds []OrderId,
)
GetProcessProposerMatchesEvents(ctx sdk.Context) ProcessProposerMatchesEvents
MustSetProcessProposerMatchesEvents(
ctx sdk.Context,
processProposerMatchesEvents ProcessProposerMatchesEvents,
)
PerformOrderCancellationStatefulValidation(
ctx sdk.Context,
msgCancelOrder *MsgCancelOrder,
blockHeight uint32,
) error
PerformStatefulOrderValidation(
ctx sdk.Context,
order *Order,
blockHeight uint32,
isPreexistingStatefulOrder bool,
) error
GetIndexerEventManager() indexer_manager.IndexerEventManager
RateLimitCancelOrder(ctx sdk.Context, order *MsgCancelOrder) error
RateLimitPlaceOrder(ctx sdk.Context, order *MsgPlaceOrder) error
InitializeBlockRateLimit(ctx sdk.Context, config BlockRateLimitConfiguration) error
InitializeEquityTierLimit(ctx sdk.Context, config EquityTierLimitConfiguration) error
Logger(ctx sdk.Context) log.Logger
UpdateClobPair(
ctx sdk.Context,
clobPair ClobPair,
) error
UpdateLiquidationsConfig(ctx sdk.Context, config LiquidationsConfig) error
}