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