@super-protocol/sdk-js 0.16.0-beta.2 → 1.0.0-beta.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 (104) hide show
  1. package/build/TIIGenerator.d.ts +3 -3
  2. package/build/connectors/BaseConnector.d.ts +7 -8
  3. package/build/connectors/BaseConnector.js +2 -4
  4. package/build/connectors/BlockchainConnector.d.ts +6 -8
  5. package/build/connectors/BlockchainConnector.js +97 -102
  6. package/build/connectors/BlockchainEventsListener.d.ts +2 -2
  7. package/build/connectors/BlockchainEventsListener.js +36 -11
  8. package/build/connectors/index.d.ts +2 -0
  9. package/build/connectors/index.js +11 -0
  10. package/build/constants.d.ts +2 -2
  11. package/build/constants.js +3 -3
  12. package/build/contracts/abi.d.ts +9769 -0
  13. package/build/contracts/abi.js +6 -0
  14. package/build/crypto/Crypto.js +4 -4
  15. package/build/crypto/nodejs/AES.d.ts +1 -1
  16. package/build/crypto/nodejs/AES.js +11 -13
  17. package/build/crypto/nodejs/ARIA.d.ts +1 -1
  18. package/build/crypto/nodejs/ARIA.js +11 -13
  19. package/build/models/EtlModel.d.ts +1 -1
  20. package/build/models/EtlModel.js +2 -4
  21. package/build/models/Offer.d.ts +5 -15
  22. package/build/models/Offer.js +60 -105
  23. package/build/models/Order.d.ts +15 -25
  24. package/build/models/Order.js +92 -173
  25. package/build/models/Provider.d.ts +9 -13
  26. package/build/models/Provider.js +16 -43
  27. package/build/models/TCB.d.ts +6 -8
  28. package/build/models/TCB.js +22 -34
  29. package/build/models/TeeOffer.d.ts +9 -22
  30. package/build/models/TeeOffer.js +97 -169
  31. package/build/models/index.d.ts +5 -0
  32. package/build/models/index.js +17 -0
  33. package/build/providers/storage/StorjStorageProvider.js +3 -3
  34. package/build/staticModels/ActiveOffers.d.ts +3 -12
  35. package/build/staticModels/ActiveOffers.js +11 -29
  36. package/build/staticModels/ActiveOrders.d.ts +4 -6
  37. package/build/staticModels/ActiveOrders.js +19 -21
  38. package/build/staticModels/Consensus.d.ts +3 -5
  39. package/build/staticModels/Consensus.js +57 -87
  40. package/build/staticModels/Deposits.d.ts +8 -9
  41. package/build/staticModels/Deposits.js +42 -60
  42. package/build/staticModels/Marks.d.ts +4 -4
  43. package/build/staticModels/Marks.js +8 -12
  44. package/build/staticModels/Offers.d.ts +14 -14
  45. package/build/staticModels/Offers.js +81 -88
  46. package/build/staticModels/Orders.d.ts +30 -35
  47. package/build/staticModels/Orders.js +98 -144
  48. package/build/staticModels/ProviderRegistry.d.ts +6 -12
  49. package/build/staticModels/ProviderRegistry.js +45 -75
  50. package/build/staticModels/Superpro.d.ts +4 -4
  51. package/build/staticModels/Superpro.js +7 -25
  52. package/build/staticModels/SuperproToken.d.ts +7 -7
  53. package/build/staticModels/SuperproToken.js +34 -38
  54. package/build/staticModels/TeeOffers.d.ts +19 -21
  55. package/build/staticModels/TeeOffers.js +119 -126
  56. package/build/store.d.ts +2 -2
  57. package/build/tee/QuoteValidator.d.ts +2 -1
  58. package/build/tee/QuoteValidator.js +7 -6
  59. package/build/types/Consensus.d.ts +6 -57
  60. package/build/types/Consensus.js +2 -38
  61. package/build/types/DepositInfo.d.ts +0 -5
  62. package/build/types/DepositInfo.js +1 -8
  63. package/build/types/HardwareInfo.d.ts +0 -12
  64. package/build/types/HardwareInfo.js +1 -9
  65. package/build/types/Offer.d.ts +1 -25
  66. package/build/types/Offer.js +2 -25
  67. package/build/types/OptionInfo.d.ts +0 -5
  68. package/build/types/OptionInfo.js +1 -8
  69. package/build/types/Order.d.ts +8 -84
  70. package/build/types/Order.js +2 -42
  71. package/build/types/Origins.d.ts +0 -6
  72. package/build/types/Origins.js +1 -9
  73. package/build/types/Provider.d.ts +0 -19
  74. package/build/types/Provider.js +1 -19
  75. package/build/types/SlotInfo.d.ts +0 -5
  76. package/build/types/SlotInfo.js +1 -8
  77. package/build/types/SlotUsage.d.ts +0 -6
  78. package/build/types/SlotUsage.js +2 -9
  79. package/build/types/TeeOfferInfo.d.ts +0 -20
  80. package/build/types/TeeOfferInfo.js +1 -13
  81. package/build/types/TeeOfferOption.d.ts +0 -14
  82. package/build/types/TeeOfferOption.js +1 -10
  83. package/build/types/TeeOfferSlot.d.ts +0 -14
  84. package/build/types/TeeOfferSlot.js +1 -10
  85. package/build/types/ValueOfferSlot.d.ts +0 -19
  86. package/build/types/ValueOfferSlot.js +1 -12
  87. package/build/types/Web3.d.ts +25 -13
  88. package/build/types/blockchainConnector/StorageAccess.d.ts +2 -2
  89. package/build/types/index.d.ts +21 -0
  90. package/build/types/index.js +38 -0
  91. package/build/utils/Monitoring.js +5 -2
  92. package/build/utils/NonceTracker.d.ts +2 -2
  93. package/build/utils/NonceTracker.js +9 -11
  94. package/build/utils/TxManager.d.ts +6 -12
  95. package/build/utils/TxManager.js +16 -25
  96. package/build/{utils.d.ts → utils/helper.d.ts} +12 -17
  97. package/build/utils/helper.js +159 -0
  98. package/build/utils/helpers/tryWithInterval.js +11 -12
  99. package/package.json +9 -6
  100. package/readme.md +7 -8
  101. package/build/contracts/app.json +0 -12758
  102. package/build/staticModels/BaseStaticModel.d.ts +0 -4
  103. package/build/staticModels/BaseStaticModel.js +0 -20
  104. package/build/utils.js +0 -196
@@ -21,51 +21,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
21
21
  return (mod && mod.__esModule) ? mod : { "default": mod };
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- const Order_1 = require("../types/Order");
24
+ const types_1 = require("../types");
25
25
  const logger_1 = __importDefault(require("../logger"));
26
- const app_json_1 = __importDefault(require("../contracts/app.json"));
27
- const store_1 = __importDefault(require("../store"));
28
- const utils_1 = require("../utils");
29
- const Origins_1 = require("../types/Origins");
30
- const utils_2 = require("ethers/lib/utils");
31
- const BlockchainConnector_1 = __importDefault(require("../connectors/BlockchainConnector"));
32
- const Superpro_1 = __importDefault(require("../staticModels/Superpro"));
33
- const TxManager_1 = __importDefault(require("../utils/TxManager"));
34
- const BlockchainEventsListener_1 = __importDefault(require("../connectors/BlockchainEventsListener"));
26
+ const helper_1 = require("../utils/helper");
27
+ const utils_1 = require("ethers/lib/utils");
28
+ const connectors_1 = require("../connectors");
35
29
  const TeeOffers_1 = __importDefault(require("../staticModels/TeeOffers"));
30
+ const TxManager_1 = __importDefault(require("../utils/TxManager"));
36
31
  const helpers_1 = require("../utils/helpers");
37
32
  const constants_1 = require("../constants");
38
33
  class Order {
39
34
  constructor(orderId) {
40
35
  this.id = orderId;
41
36
  if (!Order.contract) {
42
- Order.contract = BlockchainConnector_1.default.getInstance().getContract();
37
+ Order.contract = connectors_1.BlockchainConnector.getInstance().getContract();
43
38
  }
44
39
  this.logger = logger_1.default.child({ className: 'Order', orderId: this.id });
45
40
  }
46
- /**
47
- * Checks if contract has been initialized, if not - initialize contract
48
- */
49
- checkInitOrder(transactionOptions) {
50
- if (transactionOptions === null || transactionOptions === void 0 ? void 0 : transactionOptions.web3) {
51
- return new transactionOptions.web3.eth.Contract(app_json_1.default.abi, Superpro_1.default.address);
52
- }
53
- }
54
41
  /**
55
42
  * Check if order exist
56
43
  */
57
44
  isExist() {
58
- return __awaiter(this, void 0, void 0, function* () {
59
- return yield Order.contract.methods.isOrderValid(this.id).call();
60
- });
45
+ return Order.contract.methods.isOrderValid(this.id).call();
61
46
  }
62
47
  /**
63
48
  * Check if order is in `processing` state
64
49
  */
65
50
  isOrderProcessing() {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- return yield Order.contract.methods.isOrderProcessing(this.id).call();
68
- });
51
+ return Order.contract.methods.isOrderProcessing(this.id).call();
69
52
  }
70
53
  /**
71
54
  * Function for fetching avaliable for unlock order profit.
@@ -73,16 +56,14 @@ class Order {
73
56
  isOrderProfitAvailable() {
74
57
  return __awaiter(this, void 0, void 0, function* () {
75
58
  const [, profit] = yield Order.contract.methods.isOrderProfitAvailable(this.id).call();
76
- return profit;
59
+ return BigInt(profit);
77
60
  });
78
61
  }
79
62
  /**
80
63
  * Function for fetching order price
81
64
  */
82
65
  calculateCurrentPrice() {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- return yield Order.contract.methods.calculateOrderCurrentPrice(this.id).call();
85
- });
66
+ return Order.contract.methods.calculateOrderCurrentPrice(this.id).call();
86
67
  }
87
68
  /**
88
69
  * Function for fetching order info from blockchain
@@ -92,8 +73,8 @@ class Order {
92
73
  if (!(yield this.checkIfOrderExistsWithInterval())) {
93
74
  throw Error(`Order ${this.id} does not exist`);
94
75
  }
95
- const orderInfoParams = yield Order.contract.methods.getOrder(this.id).call();
96
- return (this.orderInfo = (0, utils_1.tupleToObject)(orderInfoParams[1], Order_1.OrderInfoStructure));
76
+ const [, orderInfoParams] = yield Order.contract.methods.getOrder(this.id).call();
77
+ return (this.orderInfo = orderInfoParams);
97
78
  });
98
79
  }
99
80
  checkIfOrderExistsWithInterval() {
@@ -113,8 +94,8 @@ class Order {
113
94
  }
114
95
  getConsumer() {
115
96
  return __awaiter(this, void 0, void 0, function* () {
116
- const orderInfoParams = yield Order.contract.methods.getOrder(this.id).call();
117
- this.consumer = orderInfoParams[0];
97
+ const [consumer, ,] = yield Order.contract.methods.getOrder(this.id).call();
98
+ this.consumer = consumer;
118
99
  return this.consumer;
119
100
  });
120
101
  }
@@ -123,8 +104,8 @@ class Order {
123
104
  */
124
105
  getOrderResult() {
125
106
  return __awaiter(this, void 0, void 0, function* () {
126
- const orderInfoParams = yield Order.contract.methods.getOrder(this.id).call();
127
- return (this.orderResult = (0, utils_1.tupleToObject)([orderInfoParams[2][0], orderInfoParams[2][1]], Order_1.OrderResultStructure));
107
+ const [, , orderResults] = yield Order.contract.methods.getOrder(this.id).call();
108
+ return (this.orderResult = orderResults);
128
109
  });
129
110
  }
130
111
  /**
@@ -149,18 +130,16 @@ class Order {
149
130
  * Function for fetching order options deposit spent from blockchain
150
131
  */
151
132
  getOptionsDepositSpent() {
152
- return __awaiter(this, void 0, void 0, function* () {
153
- return Order.contract.methods.getOptionsDepositSpent(this.id).call();
154
- });
133
+ return Order.contract.methods.getOptionsDepositSpent(this.id).call();
155
134
  }
156
135
  /**
157
136
  * Function for fetching order deposit spent from blockchain
158
137
  */
159
138
  getSelectedUsage() {
160
139
  return __awaiter(this, void 0, void 0, function* () {
161
- this.selectedUsage = (0, utils_1.tupleToObject)(yield Order.contract.methods.getOrderSelectedUsage(this.id).call(), Order_1.OrderUsageStructure);
140
+ this.selectedUsage = yield Order.contract.methods.getOrderSelectedUsage(this.id).call();
162
141
  this.selectedUsage.optionsCount = this.selectedUsage.optionsCount.map((item) => +item);
163
- this.selectedUsage.slotInfo = (0, utils_1.unpackSlotInfo)(this.selectedUsage.slotInfo, yield TeeOffers_1.default.getDenominator());
142
+ this.selectedUsage.slotInfo = (0, helper_1.unpackSlotInfo)(this.selectedUsage.slotInfo, yield TeeOffers_1.default.getDenominator());
164
143
  return this.selectedUsage;
165
144
  });
166
145
  }
@@ -168,45 +147,35 @@ class Order {
168
147
  * Function for fetching hold deposits sum of the order and its suborders
169
148
  */
170
149
  calculateTotalOrderDeposit() {
171
- return __awaiter(this, void 0, void 0, function* () {
172
- return Order.contract.methods.calculateTotalOrderDeposit(this.id).call();
173
- });
150
+ return Order.contract.methods.calculateTotalOrderDeposit(this.id).call();
174
151
  }
175
152
  /**
176
153
  * Function for fetching reserve for output order
177
154
  */
178
155
  calculateOrderOutputReserve() {
179
- return __awaiter(this, void 0, void 0, function* () {
180
- return Order.contract.methods.calculateOrderOutputReserve(this.id).call();
181
- });
156
+ return Order.contract.methods.calculateOrderOutputReserve(this.id).call();
182
157
  }
183
158
  /**
184
159
  * Function for fetching spent deposits sum of the order and its suborders
185
160
  */
186
161
  calculateTotalDepositSpent() {
187
- return __awaiter(this, void 0, void 0, function* () {
188
- return Order.contract.methods.calculateTotalDepositSpent(this.id).call();
189
- });
162
+ return Order.contract.methods.calculateTotalDepositSpent(this.id).call();
190
163
  }
191
164
  /**
192
165
  * Function for fetching unspent deposits sum of the order and its suborders
193
166
  */
194
167
  calculateTotalDepositUnspent() {
195
- return __awaiter(this, void 0, void 0, function* () {
196
- return Order.contract.methods.calculateTotalDepositUnspent(this.id).call();
197
- });
168
+ return Order.contract.methods.calculateTotalDepositUnspent(this.id).call();
198
169
  }
199
170
  /**
200
171
  * Fetch new Origins (createdDate, createdBy, modifiedDate and modifiedBy)
201
172
  */
202
173
  getOrigins() {
203
174
  return __awaiter(this, void 0, void 0, function* () {
204
- let origins = yield Order.contract.methods.getOrderOrigins(this.id).call();
205
- // Converts blockchain array into object
206
- origins = (0, utils_1.tupleToObject)(origins, Origins_1.OriginsStructure);
175
+ const origins = yield Order.contract.methods.getOrderOrigins(this.id).call();
207
176
  // Convert blockchain time seconds to js time milliseconds
208
- origins.createdDate = +origins.createdDate * 1000;
209
- origins.modifiedDate = +origins.modifiedDate * 1000;
177
+ origins.createdDate = origins.createdDate * 1000;
178
+ origins.modifiedDate = origins.modifiedDate * 1000;
210
179
  return (this.origins = origins);
211
180
  });
212
181
  }
@@ -214,24 +183,20 @@ class Order {
214
183
  * Function for fetching parent order from blockchain
215
184
  */
216
185
  getAwaitingPayment() {
217
- return __awaiter(this, void 0, void 0, function* () {
218
- return Order.contract.methods.getAwaitingPayment(this.id).call();
219
- });
186
+ return Order.contract.methods.getAwaitingPayment(this.id).call();
220
187
  }
221
188
  /**
222
189
  * Function for fetching deposit of order from blockchain
223
190
  */
224
191
  getDeposit() {
225
- return __awaiter(this, void 0, void 0, function* () {
226
- return Order.contract.methods.getOrderDeposit(this.id).call();
227
- });
192
+ return Order.contract.methods.getOrderDeposit(this.id).call();
228
193
  }
229
194
  /**
230
195
  * Function for fetching start of processing date
231
196
  */
232
197
  getStartDate() {
233
198
  return __awaiter(this, void 0, void 0, function* () {
234
- return Order.contract.methods.getStartDate(this.id).call();
199
+ return Number(yield Order.contract.methods.getStartDate(this.id).call());
235
200
  });
236
201
  }
237
202
  /**
@@ -239,19 +204,8 @@ class Order {
239
204
  */
240
205
  setAwaitingPayment(value, transactionOptions) {
241
206
  return __awaiter(this, void 0, void 0, function* () {
242
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
243
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
244
- yield TxManager_1.default.execute(Order.contract.methods.setAwaitingPayment, [this.id, value], transactionOptions);
245
- });
246
- }
247
- /**
248
- * Updates order price
249
- */
250
- updateOrderPrice(price, transactionOptions) {
251
- return __awaiter(this, void 0, void 0, function* () {
252
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
253
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
254
- yield TxManager_1.default.execute(Order.contract.methods.updateOrderPrice, [this.id, price], transactionOptions);
207
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
208
+ yield TxManager_1.default.execute(Order.contract.methods.setAwaitingPayment(this.id, value), transactionOptions);
255
209
  });
256
210
  }
257
211
  /**
@@ -259,9 +213,8 @@ class Order {
259
213
  */
260
214
  setOptionsDepositSpent(value, transactionOptions) {
261
215
  return __awaiter(this, void 0, void 0, function* () {
262
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
263
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
264
- yield TxManager_1.default.execute(Order.contract.methods.setOptionsDepositSpent, [this.id, value], transactionOptions);
216
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
217
+ yield TxManager_1.default.execute(Order.contract.methods.setOptionsDepositSpent(this.id, value), transactionOptions);
265
218
  });
266
219
  }
267
220
  /**
@@ -269,10 +222,9 @@ class Order {
269
222
  */
270
223
  updateStatus(status, transactionOptions) {
271
224
  return __awaiter(this, void 0, void 0, function* () {
272
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
273
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
274
- if (status === Order_1.OrderStatus.Processing) {
275
- yield TxManager_1.default.execute(Order.contract.methods.processOrder, [this.id], transactionOptions);
225
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
226
+ if (status === types_1.OrderStatus.Processing) {
227
+ yield TxManager_1.default.execute(Order.contract.methods.processOrder(this.id), transactionOptions);
276
228
  }
277
229
  if (this.orderInfo)
278
230
  this.orderInfo.status = status;
@@ -283,9 +235,8 @@ class Order {
283
235
  */
284
236
  cancelOrder(transactionOptions) {
285
237
  return __awaiter(this, void 0, void 0, function* () {
286
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
287
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
288
- yield TxManager_1.default.execute(Order.contract.methods.cancelOrder, [this.id], transactionOptions);
238
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
239
+ yield TxManager_1.default.execute(Order.contract.methods.cancelOrder(this.id), transactionOptions);
289
240
  });
290
241
  }
291
242
  /**
@@ -293,9 +244,8 @@ class Order {
293
244
  */
294
245
  start(transactionOptions) {
295
246
  return __awaiter(this, void 0, void 0, function* () {
296
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
297
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
298
- yield TxManager_1.default.execute(Order.contract.methods.startOrder, [this.id], transactionOptions);
247
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
248
+ yield TxManager_1.default.execute(Order.contract.methods.startOrder(this.id), transactionOptions);
299
249
  });
300
250
  }
301
251
  /**
@@ -303,9 +253,8 @@ class Order {
303
253
  */
304
254
  updateOrderResult(encryptedResult = '', transactionOptions) {
305
255
  return __awaiter(this, void 0, void 0, function* () {
306
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
307
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
308
- yield TxManager_1.default.execute(Order.contract.methods.updateOrderResult, [this.id, encryptedResult], transactionOptions);
256
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
257
+ yield TxManager_1.default.execute(Order.contract.methods.updateOrderResult(this.id, encryptedResult), transactionOptions);
309
258
  });
310
259
  }
311
260
  /**
@@ -313,9 +262,8 @@ class Order {
313
262
  */
314
263
  complete(status, encryptedResult = '', transactionOptions) {
315
264
  return __awaiter(this, void 0, void 0, function* () {
316
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
317
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
318
- yield TxManager_1.default.execute(Order.contract.methods.completeOrder, [this.id, status, encryptedResult], transactionOptions);
265
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
266
+ yield TxManager_1.default.execute(Order.contract.methods.completeOrder(this.id, status, encryptedResult), transactionOptions);
319
267
  });
320
268
  }
321
269
  /**
@@ -323,9 +271,8 @@ class Order {
323
271
  */
324
272
  unlockProfit(transactionOptions) {
325
273
  return __awaiter(this, void 0, void 0, function* () {
326
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
327
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
328
- yield TxManager_1.default.execute(Order.contract.methods.unlockProfit, [this.id], transactionOptions);
274
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
275
+ yield TxManager_1.default.execute(Order.contract.methods.unlockProfit(this.id), transactionOptions);
329
276
  });
330
277
  }
331
278
  /**
@@ -337,18 +284,16 @@ class Order {
337
284
  */
338
285
  createSubOrder(subOrderInfo, blockParentOrder, deposit = '0', transactionOptions, checkTxBeforeSend = false) {
339
286
  return __awaiter(this, void 0, void 0, function* () {
340
- transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
341
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
342
- const preparedInfo = Object.assign(Object.assign({}, subOrderInfo), { externalId: (0, utils_2.formatBytes32String)(subOrderInfo.externalId) });
343
- const tupleSubOrder = (0, utils_1.objectToTuple)(preparedInfo, Order_1.OrderInfoStructure);
287
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
288
+ const preparedInfo = Object.assign(Object.assign({}, subOrderInfo), { externalId: (0, utils_1.formatBytes32String)(subOrderInfo.externalId) });
344
289
  const params = {
345
290
  blockParentOrder,
346
291
  deposit,
347
292
  };
348
293
  if (checkTxBeforeSend) {
349
- yield TxManager_1.default.dryRun(Order.contract.methods.createSubOrder, [this.id, tupleSubOrder, params], transactionOptions);
294
+ yield TxManager_1.default.dryRun(Order.contract.methods.createSubOrder(this.id, preparedInfo, params), transactionOptions);
350
295
  }
351
- yield TxManager_1.default.execute(Order.contract.methods.createSubOrder, [this.id, tupleSubOrder, params], transactionOptions);
296
+ yield TxManager_1.default.execute(Order.contract.methods.createSubOrder(this.id, preparedInfo, params), transactionOptions);
352
297
  });
353
298
  }
354
299
  /**
@@ -359,35 +304,18 @@ class Order {
359
304
  */
360
305
  createSubOrders(subOrdersInfo, transactionOptions) {
361
306
  return __awaiter(this, void 0, void 0, function* () {
362
- this.checkInitOrder(transactionOptions);
363
- (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
364
- const batch = new transactionOptions.web3.BatchRequest();
365
- const promises = subOrdersInfo.map((subOrderInfo) => {
366
- return new Promise((res, rej) => {
367
- const preparedInfo = Object.assign(Object.assign({}, subOrderInfo), { externalId: (0, utils_2.formatBytes32String)(subOrderInfo.externalId) });
368
- const tupleSubOrder = (0, utils_1.objectToTuple)(preparedInfo, Order_1.OrderInfoStructure);
369
- const params = {
370
- blockParentOrder: subOrderInfo.blocking,
371
- deposit: subOrderInfo.deposit,
372
- };
373
- const request = Order.contract.methods
374
- .createSubOrder(this.id, tupleSubOrder, params)
375
- .send.request({
376
- from: transactionOptions.from,
377
- gasPrice: store_1.default.gasPrice,
378
- gas: store_1.default.gasLimit,
379
- }, (err, data) => {
380
- if (data)
381
- res(data);
382
- if (err)
383
- rej(err);
384
- });
385
- batch.add(request);
386
- });
307
+ (0, helper_1.checkIfActionAccountInitialized)(transactionOptions);
308
+ const promises = [];
309
+ subOrdersInfo.map((subOrderInfo) => {
310
+ const preparedInfo = Object.assign(Object.assign({}, subOrderInfo), { externalId: (0, utils_1.formatBytes32String)(subOrderInfo.externalId) });
311
+ const params = {
312
+ blockParentOrder: subOrderInfo.blocking,
313
+ deposit: subOrderInfo.deposit,
314
+ };
315
+ const transactionCall = Order.contract.methods.createSubOrder(this.id, preparedInfo, params);
316
+ promises.push(TxManager_1.default.execute(transactionCall, transactionOptions));
387
317
  });
388
- batch.execute();
389
- const txs = yield Promise.all(promises);
390
- return txs.reduce((a, b) => a.concat(b), []);
318
+ return (yield Promise.all(promises)).map((tx) => tx.transactionHash);
391
319
  });
392
320
  }
393
321
  /**
@@ -398,180 +326,171 @@ class Order {
398
326
  onStatusUpdated(callback) {
399
327
  const logger = this.logger.child({ method: 'onOrderStatusUpdated' });
400
328
  // TODO: add ability to use this event without https provider initialization
401
- const contractWss = BlockchainEventsListener_1.default.getInstance().getContract();
402
- const subscription = contractWss.events
403
- .OrderStatusUpdated()
404
- .on('data', (event) => __awaiter(this, void 0, void 0, function* () {
329
+ const contractWss = connectors_1.BlockchainEventsListener.getInstance().getContract();
330
+ const subscription = contractWss.events.OrderStatusUpdated();
331
+ subscription.on('data', (event) => {
405
332
  if (event.returnValues.orderId != this.id) {
406
333
  return;
407
334
  }
408
335
  if (this.orderInfo)
409
336
  this.orderInfo.status = event.returnValues.status;
410
337
  callback(event.returnValues.status);
411
- }))
412
- .on('error', (error, receipt) => {
413
- if (receipt)
414
- return; // Used to avoid logging of transaction rejected
338
+ });
339
+ subscription.on('error', (error) => {
415
340
  logger.warn(error);
416
341
  });
417
342
  return () => subscription.unsubscribe();
418
343
  }
419
344
  }
420
345
  __decorate([
421
- (0, utils_1.incrementMethodCall)(),
346
+ (0, helper_1.incrementMethodCall)(),
422
347
  __metadata("design:type", Function),
423
348
  __metadata("design:paramtypes", []),
424
349
  __metadata("design:returntype", Promise)
425
350
  ], Order.prototype, "getOrderInfo", null);
426
351
  __decorate([
427
- (0, utils_1.incrementMethodCall)(),
352
+ (0, helper_1.incrementMethodCall)(),
428
353
  __metadata("design:type", Function),
429
354
  __metadata("design:paramtypes", []),
430
355
  __metadata("design:returntype", Promise)
431
356
  ], Order.prototype, "getConsumer", null);
432
357
  __decorate([
433
- (0, utils_1.incrementMethodCall)(),
358
+ (0, helper_1.incrementMethodCall)(),
434
359
  __metadata("design:type", Function),
435
360
  __metadata("design:paramtypes", []),
436
361
  __metadata("design:returntype", Promise)
437
362
  ], Order.prototype, "getOrderResult", null);
438
363
  __decorate([
439
- (0, utils_1.incrementMethodCall)(),
364
+ (0, helper_1.incrementMethodCall)(),
440
365
  __metadata("design:type", Function),
441
366
  __metadata("design:paramtypes", []),
442
367
  __metadata("design:returntype", Promise)
443
368
  ], Order.prototype, "getSubOrders", null);
444
369
  __decorate([
445
- (0, utils_1.incrementMethodCall)(),
370
+ (0, helper_1.incrementMethodCall)(),
446
371
  __metadata("design:type", Function),
447
372
  __metadata("design:paramtypes", []),
448
373
  __metadata("design:returntype", Promise)
449
374
  ], Order.prototype, "getParentOrder", null);
450
375
  __decorate([
451
- (0, utils_1.incrementMethodCall)(),
376
+ (0, helper_1.incrementMethodCall)(),
452
377
  __metadata("design:type", Function),
453
378
  __metadata("design:paramtypes", []),
454
379
  __metadata("design:returntype", Promise)
455
380
  ], Order.prototype, "getOptionsDepositSpent", null);
456
381
  __decorate([
457
- (0, utils_1.incrementMethodCall)(),
382
+ (0, helper_1.incrementMethodCall)(),
458
383
  __metadata("design:type", Function),
459
384
  __metadata("design:paramtypes", []),
460
385
  __metadata("design:returntype", Promise)
461
386
  ], Order.prototype, "getSelectedUsage", null);
462
387
  __decorate([
463
- (0, utils_1.incrementMethodCall)(),
388
+ (0, helper_1.incrementMethodCall)(),
464
389
  __metadata("design:type", Function),
465
390
  __metadata("design:paramtypes", []),
466
391
  __metadata("design:returntype", Promise)
467
392
  ], Order.prototype, "calculateTotalOrderDeposit", null);
468
393
  __decorate([
469
- (0, utils_1.incrementMethodCall)(),
394
+ (0, helper_1.incrementMethodCall)(),
470
395
  __metadata("design:type", Function),
471
396
  __metadata("design:paramtypes", []),
472
397
  __metadata("design:returntype", Promise)
473
398
  ], Order.prototype, "calculateOrderOutputReserve", null);
474
399
  __decorate([
475
- (0, utils_1.incrementMethodCall)(),
400
+ (0, helper_1.incrementMethodCall)(),
476
401
  __metadata("design:type", Function),
477
402
  __metadata("design:paramtypes", []),
478
403
  __metadata("design:returntype", Promise)
479
404
  ], Order.prototype, "calculateTotalDepositSpent", null);
480
405
  __decorate([
481
- (0, utils_1.incrementMethodCall)(),
406
+ (0, helper_1.incrementMethodCall)(),
482
407
  __metadata("design:type", Function),
483
408
  __metadata("design:paramtypes", []),
484
409
  __metadata("design:returntype", Promise)
485
410
  ], Order.prototype, "calculateTotalDepositUnspent", null);
486
411
  __decorate([
487
- (0, utils_1.incrementMethodCall)(),
412
+ (0, helper_1.incrementMethodCall)(),
488
413
  __metadata("design:type", Function),
489
414
  __metadata("design:paramtypes", []),
490
415
  __metadata("design:returntype", Promise)
491
416
  ], Order.prototype, "getOrigins", null);
492
417
  __decorate([
493
- (0, utils_1.incrementMethodCall)(),
418
+ (0, helper_1.incrementMethodCall)(),
494
419
  __metadata("design:type", Function),
495
420
  __metadata("design:paramtypes", []),
496
421
  __metadata("design:returntype", Promise)
497
422
  ], Order.prototype, "getAwaitingPayment", null);
498
423
  __decorate([
499
- (0, utils_1.incrementMethodCall)(),
424
+ (0, helper_1.incrementMethodCall)(),
500
425
  __metadata("design:type", Function),
501
426
  __metadata("design:paramtypes", []),
502
427
  __metadata("design:returntype", Promise)
503
428
  ], Order.prototype, "getDeposit", null);
504
429
  __decorate([
505
- (0, utils_1.incrementMethodCall)(),
430
+ (0, helper_1.incrementMethodCall)(),
506
431
  __metadata("design:type", Function),
507
432
  __metadata("design:paramtypes", []),
508
433
  __metadata("design:returntype", Promise)
509
434
  ], Order.prototype, "getStartDate", null);
510
435
  __decorate([
511
- (0, utils_1.incrementMethodCall)(),
436
+ (0, helper_1.incrementMethodCall)(),
512
437
  __metadata("design:type", Function),
513
438
  __metadata("design:paramtypes", [Boolean, Object]),
514
439
  __metadata("design:returntype", Promise)
515
440
  ], Order.prototype, "setAwaitingPayment", null);
516
441
  __decorate([
517
- (0, utils_1.incrementMethodCall)(),
518
- __metadata("design:type", Function),
519
- __metadata("design:paramtypes", [String, Object]),
520
- __metadata("design:returntype", Promise)
521
- ], Order.prototype, "updateOrderPrice", null);
522
- __decorate([
523
- (0, utils_1.incrementMethodCall)(),
442
+ (0, helper_1.incrementMethodCall)(),
524
443
  __metadata("design:type", Function),
525
444
  __metadata("design:paramtypes", [String, Object]),
526
445
  __metadata("design:returntype", Promise)
527
446
  ], Order.prototype, "setOptionsDepositSpent", null);
528
447
  __decorate([
529
- (0, utils_1.incrementMethodCall)(),
448
+ (0, helper_1.incrementMethodCall)(),
530
449
  __metadata("design:type", Function),
531
450
  __metadata("design:paramtypes", [String, Object]),
532
451
  __metadata("design:returntype", Promise)
533
452
  ], Order.prototype, "updateStatus", null);
534
453
  __decorate([
535
- (0, utils_1.incrementMethodCall)(),
454
+ (0, helper_1.incrementMethodCall)(),
536
455
  __metadata("design:type", Function),
537
456
  __metadata("design:paramtypes", [Object]),
538
457
  __metadata("design:returntype", Promise)
539
458
  ], Order.prototype, "cancelOrder", null);
540
459
  __decorate([
541
- (0, utils_1.incrementMethodCall)(),
460
+ (0, helper_1.incrementMethodCall)(),
542
461
  __metadata("design:type", Function),
543
462
  __metadata("design:paramtypes", [Object]),
544
463
  __metadata("design:returntype", Promise)
545
464
  ], Order.prototype, "start", null);
546
465
  __decorate([
547
- (0, utils_1.incrementMethodCall)(),
466
+ (0, helper_1.incrementMethodCall)(),
548
467
  __metadata("design:type", Function),
549
468
  __metadata("design:paramtypes", [Object, Object]),
550
469
  __metadata("design:returntype", Promise)
551
470
  ], Order.prototype, "updateOrderResult", null);
552
471
  __decorate([
553
- (0, utils_1.incrementMethodCall)(),
472
+ (0, helper_1.incrementMethodCall)(),
554
473
  __metadata("design:type", Function),
555
474
  __metadata("design:paramtypes", [String, Object, Object]),
556
475
  __metadata("design:returntype", Promise)
557
476
  ], Order.prototype, "complete", null);
558
477
  __decorate([
559
- (0, utils_1.incrementMethodCall)(),
478
+ (0, helper_1.incrementMethodCall)(),
560
479
  __metadata("design:type", Function),
561
480
  __metadata("design:paramtypes", [Object]),
562
481
  __metadata("design:returntype", Promise)
563
482
  ], Order.prototype, "unlockProfit", null);
564
483
  __decorate([
565
- (0, utils_1.incrementMethodCall)(),
484
+ (0, helper_1.incrementMethodCall)(),
566
485
  __metadata("design:type", Function),
567
486
  __metadata("design:paramtypes", [Object, Boolean, Object, Object, Object]),
568
487
  __metadata("design:returntype", Promise)
569
488
  ], Order.prototype, "createSubOrder", null);
570
489
  __decorate([
571
- (0, utils_1.incrementMethodCall)(),
490
+ (0, helper_1.incrementMethodCall)(),
572
491
  __metadata("design:type", Function),
573
492
  __metadata("design:paramtypes", [Array, Object]),
574
493
  __metadata("design:returntype", Promise)
575
494
  ], Order.prototype, "createSubOrders", null);
576
495
  exports.default = Order;
577
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWxzL09yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBVXdCO0FBRXhCLHVEQUFtQztBQUduQyxxRUFBNEM7QUFDNUMscURBQTZCO0FBQzdCLG9DQU1rQjtBQUNsQiw4Q0FBNkQ7QUFDN0QsNENBQXVEO0FBQ3ZELDRGQUFvRTtBQUNwRSx3RUFBZ0Q7QUFDaEQsbUVBQTJDO0FBQzNDLHNHQUE4RTtBQUM5RSwwRUFBa0Q7QUFDbEQsOENBQW1EO0FBQ25ELDRDQUE4RjtBQUU5RixNQUFNLEtBQUs7SUFjUCxZQUFZLE9BQWU7UUFDdkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDakIsS0FBSyxDQUFDLFFBQVEsR0FBRyw2QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwRTtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQUMsa0JBQXNDO1FBQ3pELElBQUksa0JBQWtCLGFBQWxCLGtCQUFrQix1QkFBbEIsa0JBQWtCLENBQUUsSUFBSSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FDaEMsa0JBQU8sQ0FBQyxHQUFHLEVBQ3RCLGtCQUFRLENBQUMsT0FBTyxDQUNuQixDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDVSxPQUFPOztZQUNoQixPQUFPLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFB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
496
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWxzL09yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0NBU2tCO0FBR2xCLHVEQUFtQztBQUduQyw0Q0FLeUI7QUFDekIsNENBQXVEO0FBQ3ZELDhDQUE4RTtBQUU5RSwwRUFBa0Q7QUFDbEQsbUVBQTJDO0FBQzNDLDhDQUFtRDtBQUNuRCw0Q0FBOEY7QUFFOUYsTUFBTSxLQUFLO0lBY1AsWUFBWSxPQUFlO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2pCLEtBQUssQ0FBQyxRQUFRLEdBQUcsZ0NBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEU7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNWLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUI7UUFDcEIsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVEOztPQUVHO0lBQ1Usc0JBQXNCOztZQUMvQixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLHNCQUFzQixD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