@d8x/perpetuals-sdk 0.7.6 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/accountTrade.js +243 -134
- package/dist/cjs/accountTrade.js.map +1 -1
- package/dist/cjs/brokerTool.js +290 -144
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/config/priceFeedConfig.json +1 -1
- package/dist/cjs/contracts/factories/ERC20__factory.js +12 -9
- package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +12 -9
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +12 -9
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +12 -9
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +12 -9
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/ShareToken__factory.js +12 -9
- package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/index.js +1 -1
- package/dist/cjs/d8XMath.js +66 -65
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/index.js +11 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/liquidatorTool.js +137 -80
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/liquidityProviderTool.js +65 -33
- package/dist/cjs/liquidityProviderTool.js.map +1 -1
- package/dist/cjs/marketData.js +978 -635
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.js +22 -10
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/orderReferrerTool.js +323 -200
- package/dist/cjs/orderReferrerTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.js +550 -404
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/perpetualEventHandler.js +190 -129
- package/dist/cjs/perpetualEventHandler.js.map +1 -1
- package/dist/cjs/priceFeeds.js +335 -223
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/traderDigests.js +23 -20
- package/dist/cjs/traderDigests.js.map +1 -1
- package/dist/cjs/traderInterface.js +87 -54
- package/dist/cjs/traderInterface.js.map +1 -1
- package/dist/cjs/triangulator.js +38 -34
- package/dist/cjs/triangulator.js.map +1 -1
- package/dist/cjs/utils.js +32 -18
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/writeAccessHandler.js +112 -78
- package/dist/cjs/writeAccessHandler.js.map +1 -1
- package/dist/esm/accountTrade.js +237 -126
- package/dist/esm/accountTrade.js.map +1 -1
- package/dist/esm/brokerTool.js +284 -136
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/config/priceFeedConfig.json +1 -1
- package/dist/esm/contracts/factories/ERC20__factory.js +12 -8
- package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +12 -8
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +12 -8
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js +12 -8
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js +12 -8
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/esm/contracts/factories/ShareToken__factory.js +12 -8
- package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/esm/d8XMath.js +64 -63
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.js +136 -77
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/liquidityProviderTool.js +63 -29
- package/dist/esm/liquidityProviderTool.js.map +1 -1
- package/dist/esm/marketData.js +971 -626
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.js +48 -36
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/orderReferrerTool.js +319 -194
- package/dist/esm/orderReferrerTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.js +542 -394
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/perpetualEventHandler.js +188 -126
- package/dist/esm/perpetualEventHandler.js.map +1 -1
- package/dist/esm/priceFeeds.js +332 -218
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/traderDigests.js +19 -15
- package/dist/esm/traderDigests.js.map +1 -1
- package/dist/esm/traderInterface.js +83 -48
- package/dist/esm/traderInterface.js.map +1 -1
- package/dist/esm/triangulator.js +39 -34
- package/dist/esm/triangulator.js.map +1 -1
- package/dist/esm/utils.js +30 -16
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/writeAccessHandler.js +105 -69
- package/dist/esm/writeAccessHandler.js.map +1 -1
- package/package.json +1 -1
- package/src/accountTrade.ts +6 -1
- package/src/config/priceFeedConfig.json +1 -1
- package/src/orderReferrerTool.ts +2 -0
- package/src/version.ts +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { __awaiter, __generator, __read, __values } from "tslib";
|
|
1
2
|
import { emitWarning } from "process";
|
|
2
3
|
import { ABK64x64ToFloat, mul64x64 } from "./d8XMath";
|
|
3
4
|
import { ONE_64x64, } from "./nodeSDKTypes";
|
|
@@ -27,8 +28,8 @@ import { ONE_64x64, } from "./nodeSDKTypes";
|
|
|
27
28
|
* - [x] async onUpdateMarginAccount : emitted on proxy; updates position data and open interest
|
|
28
29
|
* - [x] onTrade : emitted on proxy; returns TradeEvent to be displayed
|
|
29
30
|
*/
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
var PerpetualEventHandler = /** @class */ (function () {
|
|
32
|
+
function PerpetualEventHandler(mktData, traderAddr) {
|
|
32
33
|
this.mktData = mktData;
|
|
33
34
|
this.traderAddr = traderAddr;
|
|
34
35
|
this.ordersInPerpetual = new Map();
|
|
@@ -39,85 +40,111 @@ export default class PerpetualEventHandler {
|
|
|
39
40
|
* Call this async function to initialize the
|
|
40
41
|
* market data
|
|
41
42
|
*/
|
|
42
|
-
|
|
43
|
-
this
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
43
|
+
PerpetualEventHandler.prototype.initialize = function () {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
45
|
+
var _a, k, poolState, poolSymbol, j, perpState, perpSymbol, orders, perpId, position;
|
|
46
|
+
return __generator(this, function (_b) {
|
|
47
|
+
switch (_b.label) {
|
|
48
|
+
case 0:
|
|
49
|
+
_a = this;
|
|
50
|
+
return [4 /*yield*/, this.mktData.exchangeInfo()];
|
|
51
|
+
case 1:
|
|
52
|
+
_a.exchangeInfo = _b.sent();
|
|
53
|
+
k = 0;
|
|
54
|
+
_b.label = 2;
|
|
55
|
+
case 2:
|
|
56
|
+
if (!(k < this.exchangeInfo.pools.length)) return [3 /*break*/, 8];
|
|
57
|
+
poolState = this.exchangeInfo.pools[k];
|
|
58
|
+
poolSymbol = poolState.poolSymbol;
|
|
59
|
+
j = 0;
|
|
60
|
+
_b.label = 3;
|
|
61
|
+
case 3:
|
|
62
|
+
if (!(j < poolState.perpetuals.length)) return [3 /*break*/, 7];
|
|
63
|
+
perpState = poolState.perpetuals[j];
|
|
64
|
+
perpSymbol = perpState.baseCurrency + "-" + perpState.quoteCurrency + "-" + poolSymbol;
|
|
65
|
+
return [4 /*yield*/, this.mktData.openOrders(this.traderAddr, perpSymbol)];
|
|
66
|
+
case 4:
|
|
67
|
+
orders = _b.sent();
|
|
68
|
+
perpId = perpState.id;
|
|
69
|
+
this.ordersInPerpetual.set(perpId, orders[0]);
|
|
70
|
+
return [4 /*yield*/, this.mktData.positionRisk(this.traderAddr, perpSymbol)];
|
|
71
|
+
case 5:
|
|
72
|
+
position = (_b.sent())[0];
|
|
73
|
+
this.positionInPerpetual.set(perpId, position);
|
|
74
|
+
this.poolIndexForPerpetual.set(perpId, k);
|
|
75
|
+
_b.label = 6;
|
|
76
|
+
case 6:
|
|
77
|
+
j++;
|
|
78
|
+
return [3 /*break*/, 3];
|
|
79
|
+
case 7:
|
|
80
|
+
k++;
|
|
81
|
+
return [3 /*break*/, 2];
|
|
82
|
+
case 8: return [2 /*return*/];
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
};
|
|
61
87
|
/**
|
|
62
88
|
* Get the current exchange info
|
|
63
89
|
* @returns exchange info
|
|
64
90
|
*/
|
|
65
|
-
getExchangeInfo() {
|
|
91
|
+
PerpetualEventHandler.prototype.getExchangeInfo = function () {
|
|
66
92
|
return this.exchangeInfo;
|
|
67
|
-
}
|
|
93
|
+
};
|
|
68
94
|
/**
|
|
69
95
|
* getOrdersInPerpetualMap
|
|
70
96
|
* @returns this.ordersInPerpetual
|
|
71
97
|
*/
|
|
72
|
-
getOrdersInPerpetualMap() {
|
|
98
|
+
PerpetualEventHandler.prototype.getOrdersInPerpetualMap = function () {
|
|
73
99
|
return this.ordersInPerpetual;
|
|
74
|
-
}
|
|
100
|
+
};
|
|
75
101
|
/**
|
|
76
102
|
* getpositionInPerpetualMap
|
|
77
103
|
* @returns this.positionInPerpetual
|
|
78
104
|
*/
|
|
79
|
-
getpositionInPerpetualMap() {
|
|
105
|
+
PerpetualEventHandler.prototype.getpositionInPerpetualMap = function () {
|
|
80
106
|
return this.positionInPerpetual;
|
|
81
|
-
}
|
|
107
|
+
};
|
|
82
108
|
/**
|
|
83
109
|
* Get the data for a perpetual with a given index
|
|
84
110
|
* @param perpetualIdOrSymbol perpetual idx as string or symbol for which we want the data
|
|
85
111
|
* @returns perpetual data for this idx
|
|
86
112
|
*/
|
|
87
|
-
getPerpetualData(perpetualIdOrSymbol) {
|
|
88
|
-
|
|
113
|
+
PerpetualEventHandler.prototype.getPerpetualData = function (perpetualIdOrSymbol) {
|
|
114
|
+
var _a;
|
|
115
|
+
var perpId = Number(perpetualIdOrSymbol);
|
|
89
116
|
if (isNaN(perpId)) {
|
|
90
117
|
perpId = this.mktData.getPerpIdFromSymbol(perpetualIdOrSymbol);
|
|
91
118
|
}
|
|
92
119
|
//uint24 perpetualId = uint24(_iPoolId) * 100_000 + iPerpetualIndex;
|
|
93
|
-
|
|
94
|
-
|
|
120
|
+
var poolIdx = this.poolIndexForPerpetual.get(perpId); //Math.floor(perpId / 100_000);
|
|
121
|
+
var perpetuals = (_a = this.exchangeInfo) === null || _a === void 0 ? void 0 : _a.pools[poolIdx].perpetuals;
|
|
95
122
|
if (perpetuals == undefined) {
|
|
96
|
-
emitWarning(
|
|
123
|
+
emitWarning("exchangeInfo not found, initialize perpetualEventHandler");
|
|
97
124
|
return undefined;
|
|
98
125
|
}
|
|
99
126
|
// find perpetual
|
|
100
|
-
|
|
101
|
-
for (k = 0; k < perpetuals
|
|
127
|
+
var k;
|
|
128
|
+
for (k = 0; k < (perpetuals === null || perpetuals === void 0 ? void 0 : perpetuals.length) && perpetuals[k].id != perpId; k++)
|
|
102
129
|
;
|
|
103
130
|
if (perpetuals[k].id != perpId) {
|
|
104
|
-
emitWarning(
|
|
131
|
+
emitWarning("getPerpetualData: perpetual id ".concat(perpId, " not found"));
|
|
105
132
|
return undefined;
|
|
106
133
|
}
|
|
107
134
|
return perpetuals[k];
|
|
108
|
-
}
|
|
135
|
+
};
|
|
109
136
|
/**
|
|
110
137
|
* Get the trader's current position risk (margin account data)
|
|
111
138
|
* @param perpetualIdOrSymbol perpetual id as string ('100003') or symbol ('BTC-USD-MATIC')
|
|
112
139
|
* @returns undefined if no position or margin account (='position risk')
|
|
113
140
|
*/
|
|
114
|
-
getCurrentPositionRisk(perpetualIdOrSymbol) {
|
|
115
|
-
|
|
141
|
+
PerpetualEventHandler.prototype.getCurrentPositionRisk = function (perpetualIdOrSymbol) {
|
|
142
|
+
var perpId = Number(perpetualIdOrSymbol);
|
|
116
143
|
if (isNaN(perpId)) {
|
|
117
144
|
perpId = this.mktData.getPerpIdFromSymbol(perpetualIdOrSymbol);
|
|
118
145
|
}
|
|
119
146
|
return this.positionInPerpetual.get(perpId);
|
|
120
|
-
}
|
|
147
|
+
};
|
|
121
148
|
/**
|
|
122
149
|
* Update the following prices:
|
|
123
150
|
* - index price
|
|
@@ -125,31 +152,42 @@ export default class PerpetualEventHandler {
|
|
|
125
152
|
* - mid-price
|
|
126
153
|
* @param perpetualIdOrSymbol perpetual id as string ('100003') or symbol ('BTC-USD-MATIC')
|
|
127
154
|
*/
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
155
|
+
PerpetualEventHandler.prototype.updatePrices = function (perpetualIdOrSymbol) {
|
|
156
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
157
|
+
var perpId, symbol, sym, perpState, perp;
|
|
158
|
+
return __generator(this, function (_a) {
|
|
159
|
+
switch (_a.label) {
|
|
160
|
+
case 0:
|
|
161
|
+
perpId = Number(perpetualIdOrSymbol);
|
|
162
|
+
symbol = perpetualIdOrSymbol;
|
|
163
|
+
if (!isNaN(perpId)) {
|
|
164
|
+
sym = this.mktData.getSymbolFromPerpId(perpId);
|
|
165
|
+
if (sym == undefined) {
|
|
166
|
+
throw new Error("Symbol not found for perpetual ".concat(perpId));
|
|
167
|
+
}
|
|
168
|
+
symbol = sym;
|
|
169
|
+
}
|
|
170
|
+
return [4 /*yield*/, this.mktData.getPerpetualState(symbol)];
|
|
171
|
+
case 1:
|
|
172
|
+
perpState = _a.sent();
|
|
173
|
+
perp = this.getPerpetualData(symbol);
|
|
174
|
+
if (perp == undefined) {
|
|
175
|
+
throw new Error("Perpetual not found: ".concat(symbol));
|
|
176
|
+
}
|
|
177
|
+
perp.state = perpState.state;
|
|
178
|
+
perp.indexPrice = perpState.indexPrice;
|
|
179
|
+
perp.collToQuoteIndexPrice = perpState.collToQuoteIndexPrice;
|
|
180
|
+
perp.markPrice = perpState.markPrice;
|
|
181
|
+
perp.midPrice = perpState.midPrice;
|
|
182
|
+
perp.currentFundingRateBps = perpState.currentFundingRateBps;
|
|
183
|
+
perp.openInterestBC = perpState.openInterestBC;
|
|
184
|
+
perp.indexPrice = perpState.indexPrice;
|
|
185
|
+
perp.collToQuoteIndexPrice = perpState.collToQuoteIndexPrice;
|
|
186
|
+
return [2 /*return*/];
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
};
|
|
153
191
|
/**
|
|
154
192
|
* Handle the event UpdateMarkPrice and update relevant
|
|
155
193
|
* data
|
|
@@ -158,30 +196,30 @@ export default class PerpetualEventHandler {
|
|
|
158
196
|
* @param fSpotIndexPrice spot index price in ABDK format
|
|
159
197
|
* @returns void
|
|
160
198
|
*/
|
|
161
|
-
onUpdateMarkPrice(perpetualId, fMidPricePremium, fMarkPricePremium, fSpotIndexPrice) {
|
|
162
|
-
|
|
163
|
-
|
|
199
|
+
PerpetualEventHandler.prototype.onUpdateMarkPrice = function (perpetualId, fMidPricePremium, fMarkPricePremium, fSpotIndexPrice) {
|
|
200
|
+
var _a = __read(PerpetualEventHandler.ConvertUpdateMarkPrice(fMidPricePremium, fMarkPricePremium, fSpotIndexPrice), 3), newMidPrice = _a[0], newMarkPrice = _a[1], newIndexPrice = _a[2];
|
|
201
|
+
var perpetual = this.getPerpetualData(perpetualId.toString());
|
|
164
202
|
if (perpetual == undefined) {
|
|
165
203
|
return;
|
|
166
204
|
}
|
|
167
205
|
perpetual.midPrice = newMidPrice;
|
|
168
206
|
perpetual.markPrice = newMarkPrice;
|
|
169
207
|
perpetual.indexPrice = newIndexPrice;
|
|
170
|
-
}
|
|
208
|
+
};
|
|
171
209
|
/**
|
|
172
210
|
* Handle the event UpdateFundingRate and update relevant
|
|
173
211
|
* data
|
|
174
212
|
* UpdateFundingRate(uint24 indexed perpetualId, int128 fFundingRate)
|
|
175
213
|
* @param fFundingRate funding rate in ABDK format
|
|
176
214
|
*/
|
|
177
|
-
onUpdateUpdateFundingRate(perpetualId, fFundingRate) {
|
|
178
|
-
|
|
179
|
-
|
|
215
|
+
PerpetualEventHandler.prototype.onUpdateUpdateFundingRate = function (perpetualId, fFundingRate) {
|
|
216
|
+
var newRate = ABK64x64ToFloat(fFundingRate);
|
|
217
|
+
var perpetual = this.getPerpetualData(perpetualId.toString());
|
|
180
218
|
if (perpetual == undefined) {
|
|
181
219
|
return;
|
|
182
220
|
}
|
|
183
221
|
perpetual.currentFundingRateBps = newRate * 1e4;
|
|
184
|
-
}
|
|
222
|
+
};
|
|
185
223
|
/**
|
|
186
224
|
* event ExecutionFailed(
|
|
187
225
|
uint24 indexed perpetualId,
|
|
@@ -194,15 +232,15 @@ export default class PerpetualEventHandler {
|
|
|
194
232
|
* @param digest digest of the order/cancel order
|
|
195
233
|
* @param reason reason why the execution failed
|
|
196
234
|
*/
|
|
197
|
-
onExecutionFailed(perpetualId, trader, digest, reason) {
|
|
235
|
+
PerpetualEventHandler.prototype.onExecutionFailed = function (perpetualId, trader, digest, reason) {
|
|
198
236
|
if (trader != this.traderAddr) {
|
|
199
|
-
emitWarning(
|
|
237
|
+
emitWarning("onExecutionFailed: trader ".concat(trader, " not relevant"));
|
|
200
238
|
return;
|
|
201
239
|
}
|
|
202
240
|
// remove order from open orders
|
|
203
|
-
|
|
241
|
+
var orderStructs = this.ordersInPerpetual.get(perpetualId);
|
|
204
242
|
if (orderStructs == undefined) {
|
|
205
|
-
emitWarning(
|
|
243
|
+
emitWarning("onExecutionFailed: no order found for perpetual ".concat(perpetualId));
|
|
206
244
|
return;
|
|
207
245
|
}
|
|
208
246
|
if (reason == "cancel delay required") {
|
|
@@ -210,22 +248,22 @@ export default class PerpetualEventHandler {
|
|
|
210
248
|
return;
|
|
211
249
|
}
|
|
212
250
|
PerpetualEventHandler.deleteOrder(orderStructs, digest);
|
|
213
|
-
}
|
|
251
|
+
};
|
|
214
252
|
/**
|
|
215
253
|
* Event emitted by perpetual proxy
|
|
216
254
|
* event PerpetualLimitOrderCancelled(bytes32 indexed orderHash);
|
|
217
255
|
* @param orderId string order id/digest
|
|
218
256
|
*/
|
|
219
|
-
onPerpetualLimitOrderCancelled(orderId) {
|
|
257
|
+
PerpetualEventHandler.prototype.onPerpetualLimitOrderCancelled = function (orderId) {
|
|
220
258
|
// remove order from open orders
|
|
221
|
-
|
|
259
|
+
var perpId = PerpetualEventHandler.findOrderForId(orderId, this.ordersInPerpetual);
|
|
222
260
|
if (perpId == undefined) {
|
|
223
|
-
emitWarning(
|
|
261
|
+
emitWarning("onPerpetualLimitOrderCancelled: no order found with id ".concat(orderId));
|
|
224
262
|
return;
|
|
225
263
|
}
|
|
226
|
-
|
|
264
|
+
var orderStruct = this.ordersInPerpetual.get(perpId);
|
|
227
265
|
PerpetualEventHandler.deleteOrder(orderStruct, orderId);
|
|
228
|
-
}
|
|
266
|
+
};
|
|
229
267
|
/**
|
|
230
268
|
* event PerpetualLimitOrderCreated(
|
|
231
269
|
* uint24 indexed perpetualId,
|
|
@@ -242,13 +280,13 @@ export default class PerpetualEventHandler {
|
|
|
242
280
|
* @param Order order struct
|
|
243
281
|
* @param digest order id
|
|
244
282
|
*/
|
|
245
|
-
onPerpetualLimitOrderCreated(perpetualId, trader, _referrerAddr, _brokerAddr, Order, digest) {
|
|
283
|
+
PerpetualEventHandler.prototype.onPerpetualLimitOrderCreated = function (perpetualId, trader, _referrerAddr, _brokerAddr, Order, digest) {
|
|
246
284
|
if (trader != this.traderAddr) {
|
|
247
|
-
emitWarning(
|
|
285
|
+
emitWarning("onPerpetualLimitOrderCreated: trader ".concat(trader, " not relevant"));
|
|
248
286
|
return;
|
|
249
287
|
}
|
|
250
|
-
|
|
251
|
-
|
|
288
|
+
var order = this.mktData.smartContractOrderToOrder(Order);
|
|
289
|
+
var orderStruct = this.ordersInPerpetual.get(perpetualId);
|
|
252
290
|
if (orderStruct == undefined) {
|
|
253
291
|
// no order for this perpetual so far
|
|
254
292
|
this.ordersInPerpetual.set(perpetualId, { orders: [order], orderIds: [digest] });
|
|
@@ -257,7 +295,7 @@ export default class PerpetualEventHandler {
|
|
|
257
295
|
orderStruct.orderIds.push(digest);
|
|
258
296
|
orderStruct.orders.push(order);
|
|
259
297
|
}
|
|
260
|
-
}
|
|
298
|
+
};
|
|
261
299
|
/**
|
|
262
300
|
* This function is async -> queries the margin account
|
|
263
301
|
* @param perpetualId id of the perpetual
|
|
@@ -269,20 +307,31 @@ export default class PerpetualEventHandler {
|
|
|
269
307
|
* @param fFundingPaymentCC funding payment made
|
|
270
308
|
* @param fOpenInterestBC open interest
|
|
271
309
|
*/
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
310
|
+
PerpetualEventHandler.prototype.onUpdateMarginAccount = function (perpetualId, trader, _positionId, _fPositionBC, _fCashCC, _fLockedInValueQC, _fFundingPaymentCC, fOpenInterestBC) {
|
|
311
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
312
|
+
var perpetual, perpetualIdStr, margin;
|
|
313
|
+
return __generator(this, function (_a) {
|
|
314
|
+
switch (_a.label) {
|
|
315
|
+
case 0:
|
|
316
|
+
perpetual = this.getPerpetualData(perpetualId.toString());
|
|
317
|
+
if (perpetual == undefined) {
|
|
318
|
+
emitWarning("onUpdateMarginAccount: perpetual ".concat(perpetualId, " not found"));
|
|
319
|
+
return [2 /*return*/];
|
|
320
|
+
}
|
|
321
|
+
perpetual.openInterestBC = ABK64x64ToFloat(fOpenInterestBC);
|
|
322
|
+
if (trader != this.traderAddr) {
|
|
323
|
+
return [2 /*return*/];
|
|
324
|
+
}
|
|
325
|
+
perpetualIdStr = perpetualId.toString();
|
|
326
|
+
return [4 /*yield*/, this.mktData.positionRisk(this.traderAddr, perpetualIdStr)];
|
|
327
|
+
case 1:
|
|
328
|
+
margin = (_a.sent())[0];
|
|
329
|
+
this.positionInPerpetual.set(perpetualId, margin);
|
|
330
|
+
return [2 /*return*/];
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
};
|
|
286
335
|
/**
|
|
287
336
|
*
|
|
288
337
|
* @param perpetualId perpetual id
|
|
@@ -294,11 +343,11 @@ export default class PerpetualEventHandler {
|
|
|
294
343
|
* @param price price in ABDK format
|
|
295
344
|
* @returns trade event data in regular number format
|
|
296
345
|
*/
|
|
297
|
-
onTrade(perpetualId, _trader, positionId, _order, orderDigest, newPositionSizeBC, _price) {
|
|
346
|
+
PerpetualEventHandler.prototype.onTrade = function (perpetualId, _trader, positionId, _order, orderDigest, newPositionSizeBC, _price) {
|
|
298
347
|
// remove order digest from open orders
|
|
299
|
-
|
|
348
|
+
var orderStructs = this.ordersInPerpetual.get(perpetualId);
|
|
300
349
|
if (orderStructs == undefined) {
|
|
301
|
-
emitWarning(
|
|
350
|
+
emitWarning("onTrade: executed order not found ".concat(orderDigest));
|
|
302
351
|
}
|
|
303
352
|
else {
|
|
304
353
|
PerpetualEventHandler.deleteOrder(orderStructs, orderDigest);
|
|
@@ -311,38 +360,49 @@ export default class PerpetualEventHandler {
|
|
|
311
360
|
newPositionSizeBC: ABK64x64ToFloat(newPositionSizeBC),
|
|
312
361
|
executionPrice: ABK64x64ToFloat(newPositionSizeBC),
|
|
313
362
|
};
|
|
314
|
-
}
|
|
363
|
+
};
|
|
315
364
|
/**
|
|
316
365
|
* static function to find the number of the OrderStruct with given orderId
|
|
317
366
|
* @param orderId id/digest of order
|
|
318
367
|
* @param orderMap mapping for perpetualId->OrderStruct
|
|
319
368
|
* @returns id of perpetual that contains order with id = orderId or undefined
|
|
320
369
|
*/
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
370
|
+
PerpetualEventHandler.findOrderForId = function (orderId, orderMap) {
|
|
371
|
+
var e_1, _a;
|
|
372
|
+
try {
|
|
373
|
+
/*orderMapMap<number, {
|
|
374
|
+
orders: Order[];
|
|
375
|
+
orderIds: string[];*/
|
|
376
|
+
for (var _b = __values(orderMap.keys()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
377
|
+
var perpId = _c.value;
|
|
378
|
+
var orderStructs = orderMap.get(perpId);
|
|
379
|
+
if (orderStructs === null || orderStructs === void 0 ? void 0 : orderStructs.orderIds.includes(orderId)) {
|
|
380
|
+
return perpId;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
385
|
+
finally {
|
|
386
|
+
try {
|
|
387
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
329
388
|
}
|
|
389
|
+
finally { if (e_1) throw e_1.error; }
|
|
330
390
|
}
|
|
331
391
|
return undefined;
|
|
332
|
-
}
|
|
392
|
+
};
|
|
333
393
|
/**
|
|
334
394
|
* Delete the order with given id from the class member data
|
|
335
395
|
* @param orderStructs array of order struct as stored for the trader and a given perpetual
|
|
336
396
|
* @param orderId digest/order id
|
|
337
397
|
* @returns void
|
|
338
398
|
*/
|
|
339
|
-
|
|
399
|
+
PerpetualEventHandler.deleteOrder = function (orderStructs, orderId) {
|
|
340
400
|
// find order
|
|
341
|
-
|
|
401
|
+
var k;
|
|
342
402
|
for (k = 0; k < orderStructs.orderIds.length && orderStructs.orderIds[k] != orderId; k++)
|
|
343
403
|
;
|
|
344
404
|
if (orderStructs.orderIds[k] != orderId) {
|
|
345
|
-
emitWarning(
|
|
405
|
+
emitWarning("deleteOrder: no order found with digest ".concat(orderId));
|
|
346
406
|
return;
|
|
347
407
|
}
|
|
348
408
|
// delete element k on reference of orders
|
|
@@ -350,7 +410,7 @@ export default class PerpetualEventHandler {
|
|
|
350
410
|
orderStructs.orders.pop();
|
|
351
411
|
orderStructs.orderIds[k] = orderStructs.orderIds[orderStructs.orderIds.length - 1];
|
|
352
412
|
orderStructs.orderIds.pop();
|
|
353
|
-
}
|
|
413
|
+
};
|
|
354
414
|
/**
|
|
355
415
|
* UpdateMarkPrice(
|
|
356
416
|
* uint24 indexed perpetualId,
|
|
@@ -361,13 +421,15 @@ export default class PerpetualEventHandler {
|
|
|
361
421
|
* @param fSpotIndexPrice spot index price in ABDK format
|
|
362
422
|
* @returns mark price and spot index in float
|
|
363
423
|
*/
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
424
|
+
PerpetualEventHandler.ConvertUpdateMarkPrice = function (fMidPricePremium, fMarkPricePremium, fSpotIndexPrice) {
|
|
425
|
+
var fMarkPrice = mul64x64(fSpotIndexPrice, ONE_64x64.add(fMarkPricePremium));
|
|
426
|
+
var fMidPrice = mul64x64(fSpotIndexPrice, ONE_64x64.add(fMidPricePremium));
|
|
427
|
+
var midPrice = ABK64x64ToFloat(fMidPrice);
|
|
428
|
+
var markPrice = ABK64x64ToFloat(fMarkPrice);
|
|
429
|
+
var indexPrice = ABK64x64ToFloat(fSpotIndexPrice);
|
|
370
430
|
return [midPrice, markPrice, indexPrice];
|
|
371
|
-
}
|
|
372
|
-
|
|
431
|
+
};
|
|
432
|
+
return PerpetualEventHandler;
|
|
433
|
+
}());
|
|
434
|
+
export default PerpetualEventHandler;
|
|
373
435
|
//# sourceMappingURL=perpetualEventHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perpetualEventHandler.js","sourceRoot":"","sources":["../../src/perpetualEventHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAGL,SAAS,GAMV,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH
|
|
1
|
+
{"version":3,"file":"perpetualEventHandler.js","sourceRoot":"","sources":["../../src/perpetualEventHandler.ts"],"names":[],"mappings":"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"}
|