@d8x/perpetuals-sdk 0.1.12 → 0.2.0

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.
Files changed (165) hide show
  1. package/dist/cjs/abi/testnet/IPerpetualManager.json +5215 -0
  2. package/dist/cjs/abi/testnet/LimitOrderBook.json +1075 -0
  3. package/dist/cjs/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
  4. package/dist/cjs/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
  5. package/dist/cjs/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
  6. package/dist/cjs/accountTrade.js +441 -0
  7. package/dist/cjs/accountTrade.js.map +1 -0
  8. package/dist/{src → cjs}/brokerTool.js +31 -84
  9. package/dist/cjs/brokerTool.js.map +1 -0
  10. package/dist/cjs/config/defaultConfig.json +47 -0
  11. package/dist/cjs/config/mockSwap.json +4 -0
  12. package/dist/cjs/config/priceFeedConfig.json +104 -0
  13. package/dist/cjs/config/symbolList.json +13 -0
  14. package/dist/cjs/d8XMath.js.map +1 -0
  15. package/dist/cjs/index.js +29 -0
  16. package/dist/cjs/index.js.map +1 -0
  17. package/dist/cjs/liquidatorTool.js +287 -0
  18. package/dist/cjs/liquidatorTool.js.map +1 -0
  19. package/dist/{src → cjs}/liquidityProviderTool.js +12 -65
  20. package/dist/cjs/liquidityProviderTool.js.map +1 -0
  21. package/dist/{src → cjs}/marketData.js +52 -134
  22. package/dist/cjs/marketData.js.map +1 -0
  23. package/dist/{src → cjs}/nodeSDKTypes.d.ts +5 -5
  24. package/dist/cjs/nodeSDKTypes.js +64 -0
  25. package/dist/cjs/nodeSDKTypes.js.map +1 -0
  26. package/dist/{src → cjs}/orderReferrerTool.d.ts +12 -5
  27. package/dist/{src → cjs}/orderReferrerTool.js +114 -112
  28. package/dist/cjs/orderReferrerTool.js.map +1 -0
  29. package/dist/{src → cjs}/perpetualDataHandler.d.ts +1 -1
  30. package/dist/{src → cjs}/perpetualDataHandler.js +47 -109
  31. package/dist/cjs/perpetualDataHandler.js.map +1 -0
  32. package/dist/{src → cjs}/perpetualEventHandler.d.ts +3 -3
  33. package/dist/{src → cjs}/perpetualEventHandler.js +12 -74
  34. package/dist/cjs/perpetualEventHandler.js.map +1 -0
  35. package/dist/cjs/priceFeeds.js +466 -0
  36. package/dist/cjs/priceFeeds.js.map +1 -0
  37. package/dist/{src → cjs}/traderDigests.js +7 -43
  38. package/dist/cjs/traderDigests.js.map +1 -0
  39. package/dist/{src → cjs}/traderInterface.js +13 -66
  40. package/dist/cjs/traderInterface.js.map +1 -0
  41. package/dist/{src → cjs}/triangulator.js +2 -17
  42. package/dist/cjs/triangulator.js.map +1 -0
  43. package/dist/{src → cjs}/utils.js +3 -29
  44. package/dist/cjs/utils.js.map +1 -0
  45. package/dist/cjs/version.d.ts +1 -0
  46. package/dist/{src → cjs}/version.js +1 -1
  47. package/dist/cjs/version.js.map +1 -0
  48. package/dist/{src → cjs}/writeAccessHandler.js +12 -65
  49. package/dist/cjs/writeAccessHandler.js.map +1 -0
  50. package/dist/esm/abi/ERC20.json +288 -0
  51. package/dist/esm/abi/MockTokenSwap.json +186 -0
  52. package/dist/{abi/testnet → esm/abi/central-park}/IPerpetualManager.json +404 -214
  53. package/dist/{abi/testnet → esm/abi/central-park}/LimitOrderBook.json +197 -15
  54. package/dist/esm/abi/central-park/LimitOrderBookFactory.json +135 -0
  55. package/dist/esm/abi/testnet/IPerpetualManager.json +5215 -0
  56. package/dist/esm/abi/testnet/LimitOrderBook.json +1075 -0
  57. package/dist/esm/abi/testnet/LimitOrderBookFactory.json +135 -0
  58. package/dist/esm/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
  59. package/dist/esm/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
  60. package/dist/esm/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
  61. package/dist/esm/accountTrade.d.ts +221 -0
  62. package/dist/{src → esm}/accountTrade.js +22 -93
  63. package/dist/esm/accountTrade.js.map +1 -0
  64. package/dist/esm/brokerTool.d.ts +318 -0
  65. package/dist/esm/brokerTool.js +572 -0
  66. package/dist/esm/brokerTool.js.map +1 -0
  67. package/dist/esm/config/defaultConfig.json +47 -0
  68. package/dist/esm/config/mockSwap.json +4 -0
  69. package/dist/esm/config/priceFeedConfig.json +104 -0
  70. package/dist/esm/config/symbolList.json +13 -0
  71. package/dist/esm/d8XMath.d.ts +122 -0
  72. package/dist/esm/d8XMath.js +247 -0
  73. package/dist/esm/d8XMath.js.map +1 -0
  74. package/{src/index.ts → dist/esm/index.d.ts} +1 -15
  75. package/dist/esm/index.js +16 -0
  76. package/dist/esm/index.js.map +1 -0
  77. package/dist/esm/liquidatorTool.d.ts +158 -0
  78. package/dist/{src → esm}/liquidatorTool.js +10 -65
  79. package/dist/esm/liquidatorTool.js.map +1 -0
  80. package/dist/esm/liquidityProviderTool.d.ts +126 -0
  81. package/dist/esm/liquidityProviderTool.js +218 -0
  82. package/dist/esm/liquidityProviderTool.js.map +1 -0
  83. package/dist/esm/marketData.d.ts +309 -0
  84. package/dist/esm/marketData.js +1007 -0
  85. package/dist/esm/marketData.js.map +1 -0
  86. package/dist/esm/nodeSDKTypes.d.ts +266 -0
  87. package/dist/esm/nodeSDKTypes.js +60 -0
  88. package/dist/esm/nodeSDKTypes.js.map +1 -0
  89. package/dist/esm/orderReferrerTool.d.ts +196 -0
  90. package/dist/esm/orderReferrerTool.js +491 -0
  91. package/dist/esm/orderReferrerTool.js.map +1 -0
  92. package/dist/esm/perpetualDataHandler.d.ts +220 -0
  93. package/dist/esm/perpetualDataHandler.js +1060 -0
  94. package/dist/esm/perpetualDataHandler.js.map +1 -0
  95. package/dist/esm/perpetualEventHandler.d.ts +179 -0
  96. package/dist/esm/perpetualEventHandler.js +435 -0
  97. package/dist/esm/perpetualEventHandler.js.map +1 -0
  98. package/dist/esm/priceFeeds.d.ts +115 -0
  99. package/dist/{src → esm}/priceFeeds.js +16 -83
  100. package/dist/esm/priceFeeds.js.map +1 -0
  101. package/dist/esm/traderDigests.d.ts +21 -0
  102. package/dist/esm/traderDigests.js +80 -0
  103. package/dist/esm/traderDigests.js.map +1 -0
  104. package/dist/esm/traderInterface.d.ts +79 -0
  105. package/dist/esm/traderInterface.js +196 -0
  106. package/dist/esm/traderInterface.js.map +1 -0
  107. package/dist/esm/triangulator.d.ts +27 -0
  108. package/dist/esm/triangulator.js +110 -0
  109. package/dist/esm/triangulator.js.map +1 -0
  110. package/dist/esm/utils.d.ts +59 -0
  111. package/dist/esm/utils.js +138 -0
  112. package/dist/esm/utils.js.map +1 -0
  113. package/dist/esm/version.d.ts +1 -0
  114. package/dist/esm/version.js +2 -0
  115. package/dist/esm/version.js.map +1 -0
  116. package/dist/esm/writeAccessHandler.d.ts +50 -0
  117. package/dist/esm/writeAccessHandler.js +157 -0
  118. package/dist/esm/writeAccessHandler.js.map +1 -0
  119. package/package.json +16 -26
  120. package/dist/bundle.js +0 -36793
  121. package/dist/config/defaultConfig.json +0 -47
  122. package/dist/config/mockSwap.json +0 -4
  123. package/dist/config/priceFeedConfig.json +0 -104
  124. package/dist/config/symbolList.json +0 -13
  125. package/dist/src/index.js +0 -45
  126. package/dist/src/nodeSDKTypes.js +0 -115
  127. package/dist/src/version.d.ts +0 -1
  128. package/module.d.ts +0 -1
  129. package/src/accountTrade.ts +0 -392
  130. package/src/brokerTool.ts +0 -507
  131. package/src/d8XMath.ts +0 -319
  132. package/src/liquidatorTool.ts +0 -258
  133. package/src/liquidityProviderTool.ts +0 -186
  134. package/src/marketData.ts +0 -946
  135. package/src/nodeSDKTypes.ts +0 -293
  136. package/src/orderReferrerTool.ts +0 -389
  137. package/src/perpetualDataHandler.ts +0 -1061
  138. package/src/perpetualEventHandler.ts +0 -455
  139. package/src/priceFeeds.ts +0 -381
  140. package/src/traderDigests.ts +0 -91
  141. package/src/traderInterface.ts +0 -159
  142. package/src/triangulator.ts +0 -105
  143. package/src/utils.ts +0 -134
  144. package/src/version.ts +0 -1
  145. package/src/writeAccessHandler.ts +0 -127
  146. /package/dist/{abi → cjs/abi}/ERC20.json +0 -0
  147. /package/dist/{abi → cjs/abi}/MockTokenSwap.json +0 -0
  148. /package/dist/{abi → cjs/abi}/central-park/IPerpetualManager.json +0 -0
  149. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBook.json +0 -0
  150. /package/dist/{abi → cjs/abi}/central-park/LimitOrderBookFactory.json +0 -0
  151. /package/dist/{abi → cjs/abi}/testnet/LimitOrderBookFactory.json +0 -0
  152. /package/dist/{src → cjs}/accountTrade.d.ts +0 -0
  153. /package/dist/{src → cjs}/brokerTool.d.ts +0 -0
  154. /package/dist/{src → cjs}/d8XMath.d.ts +0 -0
  155. /package/dist/{src → cjs}/d8XMath.js +0 -0
  156. /package/dist/{src → cjs}/index.d.ts +0 -0
  157. /package/dist/{src → cjs}/liquidatorTool.d.ts +0 -0
  158. /package/dist/{src → cjs}/liquidityProviderTool.d.ts +0 -0
  159. /package/dist/{src → cjs}/marketData.d.ts +0 -0
  160. /package/dist/{src → cjs}/priceFeeds.d.ts +0 -0
  161. /package/dist/{src → cjs}/traderDigests.d.ts +0 -0
  162. /package/dist/{src → cjs}/traderInterface.d.ts +0 -0
  163. /package/dist/{src → cjs}/triangulator.d.ts +0 -0
  164. /package/dist/{src → cjs}/utils.d.ts +0 -0
  165. /package/dist/{src → cjs}/writeAccessHandler.d.ts +0 -0
@@ -1,79 +1,10 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- var __read = (this && this.__read) || function (o, n) {
54
- var m = typeof Symbol === "function" && o[Symbol.iterator];
55
- if (!m) return o;
56
- var i = m.call(o), r, ar = [], e;
57
- try {
58
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
59
- }
60
- catch (error) { e = { error: error }; }
61
- finally {
62
- try {
63
- if (r && !r.done && (m = i["return"])) m.call(i);
64
- }
65
- finally { if (e) throw e.error; }
66
- }
67
- return ar;
68
- };
69
- var __importDefault = (this && this.__importDefault) || function (mod) {
70
- return (mod && mod.__esModule) ? mod : { "default": mod };
71
- };
72
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
73
4
  var ethers_1 = require("ethers");
74
5
  var nodeSDKTypes_1 = require("./nodeSDKTypes");
75
- var perpetualDataHandler_1 = __importDefault(require("./perpetualDataHandler"));
76
- var writeAccessHandler_1 = __importDefault(require("./writeAccessHandler"));
6
+ var perpetualDataHandler_1 = tslib_1.__importDefault(require("./perpetualDataHandler"));
7
+ var writeAccessHandler_1 = tslib_1.__importDefault(require("./writeAccessHandler"));
77
8
  /**
78
9
  * Functions to execute existing conditional orders from the limit order book. This class
79
10
  * requires a private key and executes smart-contract interactions that require
@@ -81,7 +12,7 @@ var writeAccessHandler_1 = __importDefault(require("./writeAccessHandler"));
81
12
  * @extends WriteAccessHandler
82
13
  */
83
14
  var OrderReferrerTool = /** @class */ (function (_super) {
84
- __extends(OrderReferrerTool, _super);
15
+ tslib_1.__extends(OrderReferrerTool, _super);
85
16
  /**
86
17
  * Constructor.
87
18
  * @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.readSDKConfig.
@@ -139,9 +70,9 @@ var OrderReferrerTool = /** @class */ (function (_super) {
139
70
  * @returns Transaction object.
140
71
  */
141
72
  OrderReferrerTool.prototype.executeOrder = function (symbol, orderId, referrerAddr, nonce, submission) {
142
- return __awaiter(this, void 0, void 0, function () {
73
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
143
74
  var orderBookSC, options;
144
- return __generator(this, function (_a) {
75
+ return tslib_1.__generator(this, function (_a) {
145
76
  switch (_a.label) {
146
77
  case 0:
147
78
  if (this.proxyContract == null || this.signer == null) {
@@ -168,6 +99,36 @@ var OrderReferrerTool = /** @class */ (function (_super) {
168
99
  });
169
100
  });
170
101
  };
102
+ OrderReferrerTool.prototype.executeOrders = function (symbol, orderIds, referrerAddr, nonce, submission) {
103
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
104
+ var orderBookSC, options;
105
+ return tslib_1.__generator(this, function (_a) {
106
+ switch (_a.label) {
107
+ case 0:
108
+ if (this.proxyContract == null || this.signer == null) {
109
+ throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
110
+ }
111
+ orderBookSC = this.getOrderBookContract(symbol);
112
+ if (typeof referrerAddr == "undefined") {
113
+ referrerAddr = this.traderAddr;
114
+ }
115
+ if (!(submission == undefined)) return [3 /*break*/, 2];
116
+ return [4 /*yield*/, this.priceFeedGetter.fetchLatestFeedPriceInfoForPerpetual(symbol)];
117
+ case 1:
118
+ submission = _a.sent();
119
+ _a.label = 2;
120
+ case 2:
121
+ options = {
122
+ gasLimit: this.gasLimit,
123
+ nonce: nonce,
124
+ value: this.PRICE_UPDATE_FEE_GWEI * (submission === null || submission === void 0 ? void 0 : submission.priceFeedVaas.length),
125
+ };
126
+ return [4 /*yield*/, orderBookSC.executeOrders(orderIds, referrerAddr, submission === null || submission === void 0 ? void 0 : submission.priceFeedVaas, submission === null || submission === void 0 ? void 0 : submission.timestamps, options)];
127
+ case 3: return [2 /*return*/, _a.sent()];
128
+ }
129
+ });
130
+ });
131
+ };
171
132
  /**
172
133
  * All the orders in the order book for a given symbol that are currently open.
173
134
  * @param {string} symbol Symbol of the form ETH-USD-MATIC.
@@ -189,9 +150,9 @@ var OrderReferrerTool = /** @class */ (function (_super) {
189
150
  * @returns Array with all open orders and their IDs.
190
151
  */
191
152
  OrderReferrerTool.prototype.getAllOpenOrders = function (symbol) {
192
- return __awaiter(this, void 0, void 0, function () {
153
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
193
154
  var totalOrders;
194
- return __generator(this, function (_a) {
155
+ return tslib_1.__generator(this, function (_a) {
195
156
  switch (_a.label) {
196
157
  case 0: return [4 /*yield*/, this.numberOfOpenOrders(symbol)];
197
158
  case 1:
@@ -223,9 +184,9 @@ var OrderReferrerTool = /** @class */ (function (_super) {
223
184
  * @returns {number} Number of open orders.
224
185
  */
225
186
  OrderReferrerTool.prototype.numberOfOpenOrders = function (symbol) {
226
- return __awaiter(this, void 0, void 0, function () {
187
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
227
188
  var orderBookSC, numOrders;
228
- return __generator(this, function (_a) {
189
+ return tslib_1.__generator(this, function (_a) {
229
190
  switch (_a.label) {
230
191
  case 0:
231
192
  if (this.proxyContract == null) {
@@ -263,9 +224,9 @@ var OrderReferrerTool = /** @class */ (function (_super) {
263
224
  * @returns order or undefined
264
225
  */
265
226
  OrderReferrerTool.prototype.getOrderById = function (symbol, id) {
266
- return __awaiter(this, void 0, void 0, function () {
227
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
267
228
  var ob, smartContractOrder, order;
268
- return __generator(this, function (_a) {
229
+ return tslib_1.__generator(this, function (_a) {
269
230
  switch (_a.label) {
270
231
  case 0: return [4 /*yield*/, this.getOrderBookContract(symbol)];
271
232
  case 1:
@@ -306,10 +267,10 @@ var OrderReferrerTool = /** @class */ (function (_super) {
306
267
  * @returns Array of orders and corresponding order IDs
307
268
  */
308
269
  OrderReferrerTool.prototype.pollLimitOrders = function (symbol, numElements, startAfter) {
309
- return __awaiter(this, void 0, void 0, function () {
270
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
310
271
  var orderBookSC, orders, orderIds, userFriendlyOrders, orderIdsOut, k;
311
272
  var _a;
312
- return __generator(this, function (_b) {
273
+ return tslib_1.__generator(this, function (_b) {
313
274
  switch (_b.label) {
314
275
  case 0:
315
276
  if (this.proxyContract == null) {
@@ -321,7 +282,7 @@ var OrderReferrerTool = /** @class */ (function (_super) {
321
282
  }
322
283
  return [4 /*yield*/, orderBookSC.pollLimitOrders(startAfter, ethers_1.BigNumber.from(numElements))];
323
284
  case 1:
324
- _a = __read.apply(void 0, [_b.sent(), 2]), orders = _a[0], orderIds = _a[1];
285
+ _a = tslib_1.__read.apply(void 0, [_b.sent(), 2]), orders = _a[0], orderIds = _a[1];
325
286
  userFriendlyOrders = new Array();
326
287
  orderIdsOut = [];
327
288
  k = 0;
@@ -357,10 +318,10 @@ var OrderReferrerTool = /** @class */ (function (_super) {
357
318
  * main();
358
319
  * @returns true if order can be executed for the current state of the perpetuals
359
320
  */
360
- OrderReferrerTool.prototype.isTradeable = function (order, indexPrices) {
361
- return __awaiter(this, void 0, void 0, function () {
362
- var obj, orderPrice, markPrice, block;
363
- return __generator(this, function (_a) {
321
+ OrderReferrerTool.prototype.isTradeable = function (order, blockTimestamp, indexPrices) {
322
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
323
+ var obj, orderPrice, markPrice, currentBlock;
324
+ return tslib_1.__generator(this, function (_a) {
364
325
  switch (_a.label) {
365
326
  case 0:
366
327
  if (this.proxyContract == null) {
@@ -378,10 +339,16 @@ var OrderReferrerTool = /** @class */ (function (_super) {
378
339
  return [4 /*yield*/, perpetualDataHandler_1.default._queryPerpetualMarkPrice(order.symbol, this.symbolToPerpStaticInfo, this.proxyContract, indexPrices)];
379
340
  case 4:
380
341
  markPrice = _a.sent();
342
+ if (!(blockTimestamp == undefined)) return [3 /*break*/, 7];
381
343
  return [4 /*yield*/, this.provider.getBlockNumber()];
382
344
  case 5:
383
- block = _a.sent();
384
- return [2 /*return*/, OrderReferrerTool._isTradeable(order, orderPrice, markPrice, block, this.symbolToPerpStaticInfo)];
345
+ currentBlock = _a.sent();
346
+ return [4 /*yield*/, this.provider.getBlock(currentBlock)];
347
+ case 6:
348
+ blockTimestamp = (_a.sent()).timestamp;
349
+ _a.label = 7;
350
+ case 7: return [4 /*yield*/, this._isTradeable(order, orderPrice, markPrice, blockTimestamp, this.symbolToPerpStaticInfo)];
351
+ case 8: return [2 /*return*/, _a.sent()];
385
352
  }
386
353
  });
387
354
  });
@@ -393,11 +360,11 @@ var OrderReferrerTool = /** @class */ (function (_super) {
393
360
  * if not defined.
394
361
  * @returns array of tradeable boolean
395
362
  */
396
- OrderReferrerTool.prototype.isTradeableBatch = function (orders, indexPrices) {
397
- return __awaiter(this, void 0, void 0, function () {
398
- var obj, orderPrice, markPrice, block;
363
+ OrderReferrerTool.prototype.isTradeableBatch = function (orders, blockTimestamp, indexPrices) {
364
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
365
+ var obj, orderPrice, markPrice, currentBlock;
399
366
  var _this = this;
400
- return __generator(this, function (_a) {
367
+ return tslib_1.__generator(this, function (_a) {
401
368
  switch (_a.label) {
402
369
  case 0:
403
370
  if (orders.length == 0) {
@@ -418,7 +385,7 @@ var OrderReferrerTool = /** @class */ (function (_super) {
418
385
  case 2:
419
386
  if (indexPrices[2] || indexPrices[3]) {
420
387
  // market closed
421
- return [2 /*return*/, orders.map(function (o) { return false; })];
388
+ return [2 /*return*/, orders.map(function () { return false; })];
422
389
  }
423
390
  return [4 /*yield*/, Promise.all(orders.map(function (o) {
424
391
  return perpetualDataHandler_1.default._queryPerpetualPrice(o.symbol, o.quantity, _this.symbolToPerpStaticInfo, _this.proxyContract, [indexPrices[0], indexPrices[1]]);
@@ -428,51 +395,86 @@ var OrderReferrerTool = /** @class */ (function (_super) {
428
395
  return [4 /*yield*/, perpetualDataHandler_1.default._queryPerpetualMarkPrice(orders[0].symbol, this.symbolToPerpStaticInfo, this.proxyContract, [indexPrices[0], indexPrices[1]])];
429
396
  case 4:
430
397
  markPrice = _a.sent();
398
+ if (!(blockTimestamp == undefined)) return [3 /*break*/, 7];
431
399
  return [4 /*yield*/, this.provider.getBlockNumber()];
432
400
  case 5:
433
- block = _a.sent();
434
- return [2 /*return*/, orders.map(function (o, idx) {
435
- return OrderReferrerTool._isTradeable(o, orderPrice[idx], markPrice, block, _this.symbolToPerpStaticInfo);
436
- })];
401
+ currentBlock = _a.sent();
402
+ return [4 /*yield*/, this.provider.getBlock(currentBlock)];
403
+ case 6:
404
+ blockTimestamp = (_a.sent()).timestamp;
405
+ _a.label = 7;
406
+ case 7: return [4 /*yield*/, orders.map(function (o, idx) {
407
+ return _this._isTradeable(o, orderPrice[idx], markPrice, blockTimestamp, _this.symbolToPerpStaticInfo);
408
+ })];
409
+ case 8: return [2 /*return*/, _a.sent()];
437
410
  }
438
411
  });
439
412
  });
440
413
  };
441
- OrderReferrerTool._isTradeable = function (order, tradePrice, markPrice, block, symbolToPerpInfoMap) {
414
+ OrderReferrerTool.prototype._isTradeable = function (order, tradePrice, markPrice, blockTimestamp, symbolToPerpInfoMap) {
442
415
  // check expiration date
443
416
  if (order.deadline != undefined && order.deadline < Date.now() / 1000) {
417
+ console.log("order expired");
444
418
  return false;
445
419
  }
446
- if (order.submittedBlock == undefined || order.submittedBlock + this.BLOCK_DELAY > block) {
420
+ // -1 because order is executed on the next block (+1)
421
+ if (order.submittedTimestamp != undefined &&
422
+ order.submittedTimestamp + OrderReferrerTool.TRADE_DELAY < blockTimestamp - 1) {
423
+ console.log("on hold for ".concat(blockTimestamp - 1 - order.submittedTimestamp - OrderReferrerTool.TRADE_DELAY, " seconds"));
447
424
  return false;
448
425
  }
449
426
  // check order size
450
- if (order.quantity < perpetualDataHandler_1.default._getLotSize(order.symbol, symbolToPerpInfoMap)) {
427
+ var lotSize = perpetualDataHandler_1.default._getLotSize(order.symbol, symbolToPerpInfoMap);
428
+ if (order.quantity < lotSize) {
429
+ console.log("order size too small: ".concat(order.quantity, " < ").concat(lotSize));
451
430
  return false;
452
431
  }
453
432
  // check limit price: fromSmartContractOrder will set it to undefined when not tradeable
454
433
  if (order.limitPrice == undefined) {
434
+ console.log("limit price undefined");
455
435
  return false;
456
436
  }
457
437
  var limitPrice = order.limitPrice;
458
438
  if ((order.side == nodeSDKTypes_1.BUY_SIDE && tradePrice > limitPrice) || (order.side == nodeSDKTypes_1.SELL_SIDE && tradePrice < limitPrice)) {
439
+ console.log("limit price not met: ".concat(limitPrice, " ").concat(order.side, " @ ").concat(tradePrice));
459
440
  return false;
460
441
  }
461
- // do we need to check trigger/stop?
462
- if (order.stopPrice == undefined) {
463
- // nothing to check, order is tradeable
464
- return true;
465
- }
466
- if ((order.side == nodeSDKTypes_1.BUY_SIDE && markPrice < order.stopPrice) ||
467
- (order.side == nodeSDKTypes_1.SELL_SIDE && markPrice > order.stopPrice)) {
442
+ // check stop price
443
+ if (order.stopPrice != undefined &&
444
+ ((order.side == nodeSDKTypes_1.BUY_SIDE && markPrice < order.stopPrice) ||
445
+ (order.side == nodeSDKTypes_1.SELL_SIDE && markPrice > order.stopPrice))) {
446
+ console.log("stop price not met");
468
447
  return false;
469
448
  }
449
+ //check dependency
450
+ if (order.parentChildOrderIds != undefined &&
451
+ order.parentChildOrderIds[0] == ethers_1.ethers.constants.HashZero &&
452
+ order.parentChildOrderIds[1] != ethers_1.ethers.constants.HashZero) {
453
+ // order has a parent
454
+ var orderBookContract = this.getOrderBookContract(order.symbol);
455
+ return orderBookContract.getOrderStatus(order.parentChildOrderIds[1]).then(function (status) {
456
+ if (status == 2 || status == 3) {
457
+ console.log("parent not executed/cancelled");
458
+ // parent is open or unknown
459
+ return false;
460
+ }
461
+ return true;
462
+ });
463
+ }
470
464
  // all checks passed -> order is tradeable
471
465
  return true;
472
466
  };
467
+ /**
468
+ * Wrapper of static method to use after mappings have been loaded into memory.
469
+ * @param scOrder Perpetual order as received in the proxy events.
470
+ * @returns A user-friendly order struct.
471
+ */
472
+ OrderReferrerTool.prototype.smartContractOrderToOrder = function (scOrder) {
473
+ return perpetualDataHandler_1.default.fromSmartContractOrder(scOrder, this.symbolToPerpStaticInfo);
474
+ };
473
475
  OrderReferrerTool.prototype.getTransactionCount = function (blockTag) {
474
- return __awaiter(this, void 0, void 0, function () {
475
- return __generator(this, function (_a) {
476
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
477
+ return tslib_1.__generator(this, function (_a) {
476
478
  switch (_a.label) {
477
479
  case 0:
478
480
  if (this.signer == null) {
@@ -484,7 +486,7 @@ var OrderReferrerTool = /** @class */ (function (_super) {
484
486
  });
485
487
  });
486
488
  };
487
- OrderReferrerTool.BLOCK_DELAY = 2;
489
+ OrderReferrerTool.TRADE_DELAY = 5;
488
490
  return OrderReferrerTool;
489
491
  }(writeAccessHandler_1.default));
490
492
  exports.default = OrderReferrerTool;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orderReferrerTool.js","sourceRoot":"","sources":["../../src/orderReferrerTool.ts"],"names":[],"mappings":"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"}
@@ -216,5 +216,5 @@ export default class PerpetualDataHandler {
216
216
  * @param traderAccount Trader account
217
217
  * @param perpStaticInfo Symbol to perpetual info map
218
218
  */
219
- protected static checkOrder(order: Order, traderAccount: MarginAccount, perpStaticInfo: Map<string, PerpetualStaticInfo>): void;
219
+ protected static checkOrder(order: Order, perpStaticInfo: Map<string, PerpetualStaticInfo>): void;
220
220
  }