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