-
Notifications
You must be signed in to change notification settings - Fork 99
/
memclob.go
124 lines (118 loc) · 3.01 KB
/
memclob.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
package types
import (
"time"
sdk "github.com/cosmos/cosmos-sdk/types"
perptypes "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types"
satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types"
)
// ShortBlockWindow represents the maximum number of blocks past the current block height that a
// `MsgPlaceOrder` or `MsgCancelOrder` message will be considered valid by the validator.
const ShortBlockWindow uint32 = 20
// StatefulOrderTimeWindow represents the maximum amount of time in seconds past the current block time that a
// long-term/conditional `MsgPlaceOrder` message will be considered valid by the validator.
const StatefulOrderTimeWindow time.Duration = 95 * 24 * time.Hour // 95 days.
// MemClob is an interface that encapsulates all reads and writes to the
// CLOB's in-memory data structures.
type MemClob interface {
UnsafeResetMemclob(
ctx sdk.Context,
)
SetClobKeeper(
keeper MemClobKeeper,
)
CancelOrder(
ctx sdk.Context,
msgCancelOrder *MsgCancelOrder,
) (offchainUpdates *OffchainUpdates, err error)
CreateOrderbook(
ctx sdk.Context,
clobPair ClobPair,
)
CountSubaccountOrders(
ctx sdk.Context,
subaccountId satypes.SubaccountId,
filter func(OrderId) bool,
) uint32
GetOperationsToReplay(
ctx sdk.Context,
) (
[]InternalOperation,
map[OrderHash][]byte,
)
GetOperationsRaw(
ctx sdk.Context,
) (
operationsQueue []OperationRaw,
)
GetOrder(
ctx sdk.Context,
orderId OrderId,
) (Order, bool)
GetCancelOrder(
ctx sdk.Context,
orderId OrderId,
) (uint32, bool)
GetOrderFilledAmount(
ctx sdk.Context,
orderId OrderId,
) satypes.BaseQuantums
GetSubaccountOrders(
ctx sdk.Context,
clobPairId ClobPairId,
subaccountId satypes.SubaccountId,
side Order_Side,
) ([]Order, error)
PlaceOrder(
ctx sdk.Context,
order Order,
) (satypes.BaseQuantums, OrderStatus, *OffchainUpdates, error)
PlacePerpetualLiquidation(
ctx sdk.Context,
liquidationOrder LiquidationOrder,
) (
orderSizeOptimisticallyFilledFromMatchingQuantums satypes.BaseQuantums,
orderStatus OrderStatus,
offchainUpdates *OffchainUpdates,
err error,
)
RemoveOrderIfFilled(
ctx sdk.Context,
orderId OrderId,
)
GetPricePremium(
ctx sdk.Context,
clobPair ClobPair,
params perptypes.GetPricePremiumParams,
) (
premiumPpm int32,
err error,
)
RemoveAndClearOperationsQueue(
ctx sdk.Context,
localValidatorOperationsQueue []InternalOperation,
)
PurgeInvalidMemclobState(
ctx sdk.Context,
fullyFilledOrderIds []OrderId,
expiredStatefulOrderIds []OrderId,
canceledStatefulOrderIds []OrderId,
removedStatefulOrderIds []OrderId,
existingOffchainUpdates *OffchainUpdates,
) (offchainUpdates *OffchainUpdates)
ReplayOperations(
ctx sdk.Context,
localOperations []InternalOperation,
shortTermOrderTxBytes map[OrderHash][]byte,
existingOffchainUpdates *OffchainUpdates,
) (offchainUpdates *OffchainUpdates)
SetMemclobGauges(
ctx sdk.Context,
)
GetMidPrice(
ctx sdk.Context,
clobPairId ClobPairId,
) (
subticks Subticks,
exists bool,
)
}