@super-protocol/sdk-js 2.1.4-beta.8 → 2.1.5

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 (147) hide show
  1. package/dist/cjs/TIIGenerator.js +193 -210
  2. package/dist/cjs/analytics/Analytics.d.ts +2 -2
  3. package/dist/cjs/analytics/Analytics.js +15 -22
  4. package/dist/cjs/analytics/AnalyticsError.js +2 -1
  5. package/dist/cjs/analytics/eventProviders/BrowserEventProvider.js +14 -8
  6. package/dist/cjs/analytics/eventProviders/EventProvider.js +13 -2
  7. package/dist/cjs/analytics/eventProviders/NodeEventProvider.js +9 -1
  8. package/dist/cjs/analytics/transports/AxiosTransport.js +24 -36
  9. package/dist/cjs/analytics/transports/FetchTransport.js +23 -34
  10. package/dist/cjs/analytics/types.d.ts +1 -1
  11. package/dist/cjs/connectors/BaseConnector.js +5 -17
  12. package/dist/cjs/connectors/BlockchainConnector.js +164 -181
  13. package/dist/cjs/connectors/BlockchainEventsListener.js +42 -53
  14. package/dist/cjs/contracts/abi.d.ts +33 -107
  15. package/dist/cjs/contracts/abi.js +34 -131
  16. package/dist/cjs/crypto/Crypto.js +54 -73
  17. package/dist/cjs/crypto/nodejs/AES.js +40 -55
  18. package/dist/cjs/crypto/nodejs/ARIA.js +39 -54
  19. package/dist/cjs/crypto/nodejs/ECIES.js +44 -57
  20. package/dist/cjs/crypto/nodejs/NativeCrypto.js +29 -42
  21. package/dist/cjs/crypto/nodejs/RSA-Hybrid.js +26 -27
  22. package/dist/cjs/index.d.ts +1 -0
  23. package/dist/cjs/index.js +2 -1
  24. package/dist/cjs/models/EtlModel.js +34 -46
  25. package/dist/cjs/models/Offer.js +110 -156
  26. package/dist/cjs/models/Order.js +166 -200
  27. package/dist/cjs/models/Provider.js +47 -65
  28. package/dist/cjs/models/TCB.js +32 -55
  29. package/dist/cjs/models/TeeOffer.js +188 -250
  30. package/dist/cjs/polyfills.js +1 -1
  31. package/dist/cjs/proto/Compression.js +4 -5
  32. package/dist/cjs/proto/TRI.js +14 -17
  33. package/dist/cjs/proto/TeeProperties.js +19 -23
  34. package/dist/cjs/providers/storage/ChunksDownloadDecorator.js +38 -70
  35. package/dist/cjs/providers/storage/S3StorageProvider.js +118 -166
  36. package/dist/cjs/providers/storage/StorageAdapter.js +155 -177
  37. package/dist/cjs/providers/storage/StorageContentWriter.js +103 -118
  38. package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +84 -117
  39. package/dist/cjs/providers/storage/StorageMetadataReader.js +38 -49
  40. package/dist/cjs/providers/storage/StorjAdapter.js +28 -48
  41. package/dist/cjs/providers/storage/StorjStorageProvider.d.ts +0 -1
  42. package/dist/cjs/providers/storage/StorjStorageProvider.js +101 -163
  43. package/dist/cjs/providers/storage/getStorageProvider.js +1 -1
  44. package/dist/cjs/staticModels/ActiveOffers.js +14 -29
  45. package/dist/cjs/staticModels/ActiveOrders.js +20 -35
  46. package/dist/cjs/staticModels/Consensus.js +71 -93
  47. package/dist/cjs/staticModels/Deposits.js +20 -39
  48. package/dist/cjs/staticModels/Marks.js +7 -20
  49. package/dist/cjs/staticModels/ModelPackager.js +26 -39
  50. package/dist/cjs/staticModels/Offers.js +33 -51
  51. package/dist/cjs/staticModels/Orders.js +108 -106
  52. package/dist/cjs/staticModels/ProviderRegistry.js +23 -41
  53. package/dist/cjs/staticModels/StaticModel.js +22 -33
  54. package/dist/cjs/staticModels/Superpro.js +2 -1
  55. package/dist/cjs/staticModels/SuperproToken.js +27 -40
  56. package/dist/cjs/staticModels/TeeOffers.js +64 -94
  57. package/dist/cjs/tee/QuoteParser.js +20 -20
  58. package/dist/cjs/tee/QuoteValidator.js +176 -201
  59. package/dist/cjs/tee/helpers.js +2 -1
  60. package/dist/cjs/tee/statuses.js +4 -4
  61. package/dist/cjs/tee/types.d.ts +5 -0
  62. package/dist/cjs/types/Consensus.js +2 -2
  63. package/dist/cjs/types/Marks.js +2 -2
  64. package/dist/cjs/types/Offer.js +3 -3
  65. package/dist/cjs/types/Order.d.ts +2 -14
  66. package/dist/cjs/types/Order.js +3 -46
  67. package/dist/cjs/types/SlotUsage.js +2 -2
  68. package/dist/cjs/types/Superpro.js +2 -2
  69. package/dist/cjs/utils/Monitoring.js +6 -5
  70. package/dist/cjs/utils/NonceTracker.js +31 -43
  71. package/dist/cjs/utils/PubSub.js +2 -4
  72. package/dist/cjs/utils/TxManager.js +110 -120
  73. package/dist/cjs/utils/compressors/GzipCompressor.js +5 -16
  74. package/dist/cjs/utils/compressors/UncompressedCompressor.js +2 -2
  75. package/dist/cjs/utils/helper.js +26 -23
  76. package/dist/cjs/utils/helpers/getStreamChunks.js +29 -68
  77. package/dist/cjs/utils/helpers/tryWithInterval.js +7 -16
  78. package/dist/cjs/utils/resourceLoaders/BaseResourceLoader.js +7 -44
  79. package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.js +18 -27
  80. package/dist/cjs/utils/resourceLoaders/UrlResourceLoader.js +8 -21
  81. package/dist/cjs/utils/resourceLoaders/getResourceLoader.js +1 -1
  82. package/dist/mjs/TIIGenerator.js +1 -1
  83. package/dist/mjs/analytics/Analytics.d.ts +2 -2
  84. package/dist/mjs/analytics/Analytics.js +1 -1
  85. package/dist/mjs/analytics/eventProviders/NodeEventProvider.js +1 -1
  86. package/dist/mjs/analytics/transports/AxiosTransport.js +1 -1
  87. package/dist/mjs/analytics/transports/FetchTransport.js +1 -1
  88. package/dist/mjs/analytics/types.d.ts +1 -1
  89. package/dist/mjs/connectors/BaseConnector.js +1 -1
  90. package/dist/mjs/connectors/BlockchainConnector.js +1 -1
  91. package/dist/mjs/connectors/BlockchainEventsListener.js +1 -1
  92. package/dist/mjs/contracts/abi.d.ts +33 -107
  93. package/dist/mjs/contracts/abi.js +34 -131
  94. package/dist/mjs/crypto/Crypto.js +1 -1
  95. package/dist/mjs/crypto/nodejs/AES.js +1 -1
  96. package/dist/mjs/crypto/nodejs/ARIA.js +1 -1
  97. package/dist/mjs/crypto/nodejs/ECIES.js +1 -1
  98. package/dist/mjs/crypto/nodejs/NativeCrypto.js +1 -1
  99. package/dist/mjs/index.d.ts +1 -0
  100. package/dist/mjs/index.js +2 -1
  101. package/dist/mjs/models/EtlModel.js +1 -1
  102. package/dist/mjs/models/Offer.js +1 -1
  103. package/dist/mjs/models/Order.js +38 -20
  104. package/dist/mjs/models/Provider.js +1 -1
  105. package/dist/mjs/models/TCB.js +1 -1
  106. package/dist/mjs/models/TeeOffer.js +1 -1
  107. package/dist/mjs/polyfills.js +1 -1
  108. package/dist/mjs/proto/Compression.js +1 -1
  109. package/dist/mjs/proto/TRI.js +1 -1
  110. package/dist/mjs/proto/TeeProperties.js +1 -1
  111. package/dist/mjs/providers/storage/ChunksDownloadDecorator.js +4 -4
  112. package/dist/mjs/providers/storage/S3StorageProvider.js +1 -1
  113. package/dist/mjs/providers/storage/StorageAdapter.js +1 -1
  114. package/dist/mjs/providers/storage/StorageContentWriter.js +1 -1
  115. package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +1 -1
  116. package/dist/mjs/providers/storage/StorageMetadataReader.js +1 -1
  117. package/dist/mjs/providers/storage/StorjAdapter.js +1 -1
  118. package/dist/mjs/providers/storage/StorjStorageProvider.d.ts +0 -1
  119. package/dist/mjs/providers/storage/StorjStorageProvider.js +1 -3
  120. package/dist/mjs/providers/storage/getStorageProvider.js +1 -1
  121. package/dist/mjs/staticModels/ActiveOrders.js +1 -1
  122. package/dist/mjs/staticModels/Consensus.js +1 -1
  123. package/dist/mjs/staticModels/Deposits.js +1 -1
  124. package/dist/mjs/staticModels/ModelPackager.js +1 -1
  125. package/dist/mjs/staticModels/Offers.js +1 -1
  126. package/dist/mjs/staticModels/Orders.js +39 -12
  127. package/dist/mjs/staticModels/StaticModel.js +1 -1
  128. package/dist/mjs/staticModels/SuperproToken.js +1 -1
  129. package/dist/mjs/staticModels/TeeOffers.js +1 -1
  130. package/dist/mjs/tee/QuoteParser.js +1 -1
  131. package/dist/mjs/tee/QuoteValidator.js +1 -1
  132. package/dist/mjs/tee/helpers.js +1 -1
  133. package/dist/mjs/tee/types.d.ts +5 -0
  134. package/dist/mjs/types/Order.d.ts +2 -14
  135. package/dist/mjs/types/Order.js +1 -40
  136. package/dist/mjs/utils/Monitoring.js +1 -1
  137. package/dist/mjs/utils/NonceTracker.js +1 -1
  138. package/dist/mjs/utils/PubSub.js +1 -1
  139. package/dist/mjs/utils/TxManager.js +1 -1
  140. package/dist/mjs/utils/helper.js +1 -1
  141. package/dist/mjs/utils/helpers/getStreamChunks.js +1 -1
  142. package/dist/mjs/utils/helpers/tryWithInterval.js +1 -1
  143. package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.js +1 -1
  144. package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.js +1 -1
  145. package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.js +1 -1
  146. package/dist/mjs/utils/resourceLoaders/getResourceLoader.js +1 -1
  147. package/package.json +6 -16
@@ -8,26 +8,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
- return new (P || (P = Promise))(function (resolve, reject) {
14
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
- step((generator = generator.apply(thisArg, _arguments || [])).next());
18
- });
19
- };
20
- var __rest = (this && this.__rest) || function (s, e) {
21
- var t = {};
22
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
23
- t[p] = s[p];
24
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
25
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
26
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
27
- t[p[i]] = s[p[i]];
28
- }
29
- return t;
30
- };
31
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
32
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
33
13
  };
@@ -35,12 +15,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
35
15
  const index_js_1 = require("../types/index.js");
36
16
  const logger_js_1 = __importDefault(require("../logger.js"));
37
17
  const helper_js_1 = require("../utils/helper.js");
18
+ const utils_js_1 = require("ethers/lib/utils.js");
38
19
  const index_js_2 = require("../connectors/index.js");
39
20
  const TeeOffers_js_1 = __importDefault(require("../staticModels/TeeOffers.js"));
40
21
  const TxManager_js_1 = __importDefault(require("../utils/TxManager.js"));
41
22
  const index_js_3 = require("../utils/helpers/index.js");
42
23
  const constants_js_1 = require("../constants.js");
43
24
  class Order {
25
+ static contract;
26
+ logger;
27
+ selectedUsage;
28
+ orderInfo;
29
+ orderResult;
30
+ subOrders;
31
+ parentOrder;
32
+ consumer;
33
+ origins;
34
+ startDate;
35
+ id;
44
36
  constructor(orderId) {
45
37
  this.id = orderId;
46
38
  if (!Order.contract) {
@@ -63,14 +55,12 @@ class Order {
63
55
  /**
64
56
  * Function for fetching avaliable for unlock order profit.
65
57
  */
66
- isOrderProfitAvailable() {
67
- return __awaiter(this, void 0, void 0, function* () {
68
- const parsedResponse = yield Order.contract.methods
69
- .isOrderProfitAvailable(this.id)
70
- .call()
71
- .then((response) => (0, helper_js_1.cleanWeb3Data)(response));
72
- return parsedResponse.profit;
73
- });
58
+ async isOrderProfitAvailable() {
59
+ const parsedResponse = await Order.contract.methods
60
+ .isOrderProfitAvailable(this.id)
61
+ .call()
62
+ .then((response) => (0, helper_js_1.cleanWeb3Data)(response));
63
+ return parsedResponse.profit;
74
64
  }
75
65
  /**
76
66
  * Function for fetching order price
@@ -84,72 +74,63 @@ class Order {
84
74
  /**
85
75
  * Function for fetching order info from blockchain
86
76
  */
87
- getOrderInfo() {
88
- return __awaiter(this, void 0, void 0, function* () {
89
- if (!(yield this.checkIfOrderExistsWithInterval())) {
90
- throw Error(`Order ${this.id} does not exist`);
91
- }
92
- const [, orderInfo] = yield Order.contract.methods.getOrder(this.id).call();
93
- const orderArgs = yield Order.contract.methods.getOrderArgs(this.id).call();
94
- const cleanedOrderInfo = (0, helper_js_1.cleanWeb3Data)(orderInfo);
95
- const finalOrderInfo = (0, index_js_1.orderInfoFromRaw)(cleanedOrderInfo, (0, helper_js_1.cleanWeb3Data)(orderArgs));
96
- return (this.orderInfo = finalOrderInfo);
97
- });
98
- }
99
- checkIfOrderExistsWithInterval() {
100
- return __awaiter(this, void 0, void 0, function* () {
101
- const offerExists = yield (0, index_js_3.tryWithInterval)({
102
- handler: () => this.isExist(),
103
- checkResult: (exists) => {
104
- if (!exists)
105
- this.logger.debug(`Order ${this.id} exists: ${exists}`);
106
- return { isResultOk: exists };
107
- },
108
- retryInterval: constants_js_1.BLOCKCHAIN_CALL_RETRY_INTERVAL,
109
- retryMax: constants_js_1.BLOCKCHAIN_CALL_RETRY_ATTEMPTS,
110
- });
111
- return offerExists;
77
+ async getOrderInfo() {
78
+ if (!(await this.checkIfOrderExistsWithInterval())) {
79
+ throw Error(`Order ${this.id} does not exist`);
80
+ }
81
+ const orderInfoParams = await Order.contract.methods.getOrder(this.id).call();
82
+ const orderArgs = await Order.contract.methods.getOrderArgs(this.id).call();
83
+ const orderInfo = {
84
+ ...(0, helper_js_1.cleanWeb3Data)(orderInfoParams[1]),
85
+ args: (0, helper_js_1.cleanWeb3Data)(orderArgs),
86
+ status: orderInfoParams[1].status.toString(),
87
+ };
88
+ return (this.orderInfo = orderInfo);
89
+ }
90
+ async checkIfOrderExistsWithInterval() {
91
+ const offerExists = await (0, index_js_3.tryWithInterval)({
92
+ handler: () => this.isExist(),
93
+ checkResult: (exists) => {
94
+ if (!exists)
95
+ this.logger.debug(`Order ${this.id} exists: ${exists}`);
96
+ return { isResultOk: exists };
97
+ },
98
+ retryInterval: constants_js_1.BLOCKCHAIN_CALL_RETRY_INTERVAL,
99
+ retryMax: constants_js_1.BLOCKCHAIN_CALL_RETRY_ATTEMPTS,
112
100
  });
101
+ return offerExists;
113
102
  }
114
- getConsumer() {
115
- return __awaiter(this, void 0, void 0, function* () {
116
- const [consumer] = yield Order.contract.methods.getOrder(this.id).call();
117
- this.consumer = consumer;
118
- return this.consumer;
119
- });
103
+ async getConsumer() {
104
+ const consumer = await Order.contract.methods.getOrder(this.id).call();
105
+ this.consumer = consumer[0];
106
+ return this.consumer;
120
107
  }
121
108
  /**
122
109
  * Function for fetching order result from blockchain
123
110
  */
124
- getOrderResult() {
125
- return __awaiter(this, void 0, void 0, function* () {
126
- const [, , orderResults] = yield Order.contract.methods.getOrder(this.id).call();
127
- return (this.orderResult = (0, helper_js_1.cleanWeb3Data)(orderResults));
128
- });
111
+ async getOrderResult() {
112
+ const orderResults = await Order.contract.methods.getOrder(this.id).call();
113
+ return (this.orderResult = (0, helper_js_1.cleanWeb3Data)(orderResults[2]));
129
114
  }
130
115
  /**
131
116
  * Function for fetching sub orders from blockchain
132
117
  */
133
- getSubOrders() {
134
- return __awaiter(this, void 0, void 0, function* () {
135
- this.subOrders = yield Order.contract.methods
136
- .getOrderSubOrders(this.id)
137
- .call()
138
- .then((ids) => ids.map((id) => id.toString()));
139
- return this.subOrders;
140
- });
118
+ async getSubOrders() {
119
+ this.subOrders = await Order.contract.methods
120
+ .getOrderSubOrders(this.id)
121
+ .call()
122
+ .then((ids) => ids.map((id) => id.toString()));
123
+ return this.subOrders;
141
124
  }
142
125
  /**
143
126
  * Function for fetching parent order from blockchain
144
127
  */
145
- getParentOrder() {
146
- return __awaiter(this, void 0, void 0, function* () {
147
- this.parentOrder = yield Order.contract.methods
148
- .getOrderParentOrder(this.id)
149
- .call()
150
- .then((id) => id.toString());
151
- return this.parentOrder;
152
- });
128
+ async getParentOrder() {
129
+ this.parentOrder = await Order.contract.methods
130
+ .getOrderParentOrder(this.id)
131
+ .call()
132
+ .then((id) => id.toString());
133
+ return this.parentOrder;
153
134
  }
154
135
  /**
155
136
  * Function for fetching order options deposit spent from blockchain
@@ -163,25 +144,23 @@ class Order {
163
144
  /**
164
145
  * Function for fetching order deposit spent from blockchain
165
146
  */
166
- getSelectedUsage() {
167
- return __awaiter(this, void 0, void 0, function* () {
168
- const coresDenominator = yield TeeOffers_js_1.default.getDenominator();
169
- const selectedUsageSlotInfo = yield Order.contract.methods
170
- .getOrderSelectedUsageSlotInfo(this.id)
171
- .call()
172
- .then((slotInfo) => (0, helper_js_1.cleanWeb3Data)(slotInfo));
173
- const selectedUsageSlotUsage = yield Order.contract.methods
174
- .getOrderSelectedUsageSlotUsage(this.id)
175
- .call()
176
- .then((slotUsage) => (0, helper_js_1.cleanWeb3Data)(slotUsage));
177
- this.selectedUsage = yield Order.contract.methods
178
- .getOrderSelectedUsage(this.id)
179
- .call()
180
- .then((selectedUsage) => (0, helper_js_1.convertOrderUsage)((0, helper_js_1.cleanWeb3Data)(selectedUsage), (0, helper_js_1.unpackSlotInfo)(selectedUsageSlotInfo, coresDenominator), (0, helper_js_1.formatUsage)(selectedUsageSlotUsage)));
181
- this.selectedUsage.optionsCount = this.selectedUsage.optionsCount.map((item) => Number(item));
182
- this.selectedUsage.optionUsage = this.selectedUsage.optionUsage.map((usage) => (0, helper_js_1.formatUsage)(usage));
183
- return this.selectedUsage;
184
- });
147
+ async getSelectedUsage() {
148
+ const coresDenominator = await TeeOffers_js_1.default.getDenominator();
149
+ const selectedUsageSlotInfo = await Order.contract.methods
150
+ .getOrderSelectedUsageSlotInfo(this.id)
151
+ .call()
152
+ .then((slotInfo) => (0, helper_js_1.cleanWeb3Data)(slotInfo));
153
+ const selectedUsageSlotUsage = await Order.contract.methods
154
+ .getOrderSelectedUsageSlotUsage(this.id)
155
+ .call()
156
+ .then((slotUsage) => (0, helper_js_1.cleanWeb3Data)(slotUsage));
157
+ this.selectedUsage = await Order.contract.methods
158
+ .getOrderSelectedUsage(this.id)
159
+ .call()
160
+ .then((selectedUsage) => (0, helper_js_1.convertOrderUsage)((0, helper_js_1.cleanWeb3Data)(selectedUsage), (0, helper_js_1.unpackSlotInfo)(selectedUsageSlotInfo, coresDenominator), (0, helper_js_1.formatUsage)(selectedUsageSlotUsage)));
161
+ this.selectedUsage.optionsCount = this.selectedUsage.optionsCount.map((item) => Number(item));
162
+ this.selectedUsage.optionUsage = this.selectedUsage.optionUsage.map((usage) => (0, helper_js_1.formatUsage)(usage));
163
+ return this.selectedUsage;
185
164
  }
186
165
  /**
187
166
  * Function for fetching hold deposits sum of the order and its suborders
@@ -222,17 +201,15 @@ class Order {
222
201
  /**
223
202
  * Fetch new Origins (createdDate, createdBy, modifiedDate and modifiedBy)
224
203
  */
225
- getOrigins() {
226
- return __awaiter(this, void 0, void 0, function* () {
227
- const origins = yield Order.contract.methods
228
- .getOrderOrigins(this.id)
229
- .call()
230
- .then((origins) => (0, helper_js_1.cleanWeb3Data)(origins));
231
- // Convert blockchain time seconds to js time milliseconds
232
- origins.createdDate = Number(origins.createdDate) * 1000;
233
- origins.modifiedDate = Number(origins.modifiedDate) * 1000;
234
- return (this.origins = origins);
235
- });
204
+ async getOrigins() {
205
+ const origins = await Order.contract.methods
206
+ .getOrderOrigins(this.id)
207
+ .call()
208
+ .then((origins) => (0, helper_js_1.cleanWeb3Data)(origins));
209
+ // Convert blockchain time seconds to js time milliseconds
210
+ origins.createdDate = Number(origins.createdDate) * 1000;
211
+ origins.modifiedDate = Number(origins.modifiedDate) * 1000;
212
+ return (this.origins = origins);
236
213
  }
237
214
  /**
238
215
  * Function for fetching parent order from blockchain
@@ -252,94 +229,74 @@ class Order {
252
229
  /**
253
230
  * Function for fetching start of processing date
254
231
  */
255
- getStartDate() {
256
- return __awaiter(this, void 0, void 0, function* () {
257
- return Number(yield Order.contract.methods.getStartDate(this.id).call());
258
- });
232
+ async getStartDate() {
233
+ return Number(await Order.contract.methods.getStartDate(this.id).call());
259
234
  }
260
235
  /**
261
236
  * Function for fetching start of processing date
262
237
  */
263
- calculateOrderTime() {
264
- return __awaiter(this, void 0, void 0, function* () {
265
- return Number(yield Order.contract.methods.calculateOrderTime(this.id).call());
266
- });
238
+ async calculateOrderTime() {
239
+ return Number(await Order.contract.methods.calculateOrderTime(this.id).call());
267
240
  }
268
241
  /**
269
242
  * Function for fetching parent order from blockchain
270
243
  */
271
- setAwaitingPayment(value, transactionOptions) {
272
- return __awaiter(this, void 0, void 0, function* () {
273
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
274
- yield TxManager_js_1.default.execute(Order.contract.methods.setAwaitingPayment(this.id, value), transactionOptions);
275
- });
244
+ async setAwaitingPayment(value, transactionOptions) {
245
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
246
+ await TxManager_js_1.default.execute(Order.contract.methods.setAwaitingPayment(this.id, value), transactionOptions);
276
247
  }
277
248
  /**
278
249
  * Sets options deposit spent
279
250
  */
280
- setOptionsDepositSpent(value, transactionOptions) {
281
- return __awaiter(this, void 0, void 0, function* () {
282
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
283
- yield TxManager_js_1.default.execute(Order.contract.methods.setOptionsDepositSpent(this.id, value), transactionOptions);
284
- });
251
+ async setOptionsDepositSpent(value, transactionOptions) {
252
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
253
+ await TxManager_js_1.default.execute(Order.contract.methods.setOptionsDepositSpent(this.id, value), transactionOptions);
285
254
  }
286
255
  /**
287
256
  * Function for updating status of contract
288
257
  */
289
- updateStatus(status, transactionOptions) {
290
- return __awaiter(this, void 0, void 0, function* () {
291
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
292
- if (status === index_js_1.OrderStatus.Processing) {
293
- yield TxManager_js_1.default.execute(Order.contract.methods.processOrder(this.id), transactionOptions);
294
- }
295
- if (this.orderInfo)
296
- this.orderInfo.status = status;
297
- });
258
+ async updateStatus(status, transactionOptions) {
259
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
260
+ if (status === index_js_1.OrderStatus.Processing) {
261
+ await TxManager_js_1.default.execute(Order.contract.methods.processOrder(this.id), transactionOptions);
262
+ }
263
+ if (this.orderInfo)
264
+ this.orderInfo.status = status;
298
265
  }
299
266
  /**
300
267
  * Function for updating status of contract
301
268
  */
302
- cancelOrder(transactionOptions) {
303
- return __awaiter(this, void 0, void 0, function* () {
304
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
305
- yield TxManager_js_1.default.execute(Order.contract.methods.cancelOrder(this.id), transactionOptions);
306
- });
269
+ async cancelOrder(transactionOptions) {
270
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
271
+ await TxManager_js_1.default.execute(Order.contract.methods.cancelOrder(this.id), transactionOptions);
307
272
  }
308
273
  /**
309
274
  * Starts suspended order
310
275
  */
311
- start(transactionOptions) {
312
- return __awaiter(this, void 0, void 0, function* () {
313
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
314
- yield TxManager_js_1.default.execute(Order.contract.methods.startOrder(this.id), transactionOptions);
315
- });
276
+ async start(transactionOptions) {
277
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
278
+ await TxManager_js_1.default.execute(Order.contract.methods.startOrder(this.id), transactionOptions);
316
279
  }
317
280
  /**
318
281
  * Updates order result
319
282
  */
320
- updateOrderResult(encryptedResult = '', transactionOptions) {
321
- return __awaiter(this, void 0, void 0, function* () {
322
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
323
- yield TxManager_js_1.default.execute(Order.contract.methods.updateOrderResult(this.id, encryptedResult), transactionOptions);
324
- });
283
+ async updateOrderResult(encryptedResult = '', transactionOptions) {
284
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
285
+ await TxManager_js_1.default.execute(Order.contract.methods.updateOrderResult(this.id, encryptedResult), transactionOptions);
325
286
  }
326
287
  /**
327
288
  * Completes order
328
289
  */
329
- complete(status, encryptedResult = '', transactionOptions) {
330
- return __awaiter(this, void 0, void 0, function* () {
331
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
332
- yield TxManager_js_1.default.execute(Order.contract.methods.completeOrder(this.id, status, encryptedResult), transactionOptions);
333
- });
290
+ async complete(status, encryptedResult = '', transactionOptions) {
291
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
292
+ await TxManager_js_1.default.execute(Order.contract.methods.completeOrder(this.id, status, encryptedResult), transactionOptions);
334
293
  }
335
294
  /**
336
295
  * Unlocks profit
337
296
  */
338
- unlockProfit(transactionOptions) {
339
- return __awaiter(this, void 0, void 0, function* () {
340
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
341
- yield TxManager_js_1.default.execute(Order.contract.methods.unlockProfit(this.id), transactionOptions);
342
- });
297
+ async unlockProfit(transactionOptions) {
298
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
299
+ await TxManager_js_1.default.execute(Order.contract.methods.unlockProfit(this.id), transactionOptions);
343
300
  }
344
301
  /**
345
302
  * Function for creating sub orders for current order
@@ -348,21 +305,30 @@ class Order {
348
305
  * @param transactionOptions - object what contains alternative action account or gas limit (optional)
349
306
  * @returns Promise<void> - Does not return id of created sub order!
350
307
  */
351
- createSubOrder(subOrderInfo, slots, blockParentOrder, deposit, transactionOptions, checkTxBeforeSend = false) {
352
- return __awaiter(this, void 0, void 0, function* () {
353
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
354
- deposit = deposit !== null && deposit !== void 0 ? deposit : '0';
355
- const args = subOrderInfo.args;
356
- const preparedInfo = (0, index_js_1.orderInfoToRaw)(subOrderInfo);
357
- const params = {
358
- blockParentOrder,
359
- deposit,
360
- };
361
- if (checkTxBeforeSend) {
362
- yield TxManager_js_1.default.dryRun(Order.contract.methods.createSubOrder(this.id, preparedInfo, slots, args, params), transactionOptions);
363
- }
364
- yield TxManager_js_1.default.execute(Order.contract.methods.createSubOrder(this.id, preparedInfo, slots, args, params), transactionOptions);
365
- });
308
+ async createSubOrder(subOrderInfo, slots, blockParentOrder, deposit, transactionOptions, checkTxBeforeSend = false) {
309
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
310
+ deposit = deposit ?? '0';
311
+ const preparedInfo = {
312
+ ...subOrderInfo,
313
+ externalId: (0, utils_js_1.formatBytes32String)(subOrderInfo.externalId),
314
+ };
315
+ const params = {
316
+ blockParentOrder,
317
+ deposit,
318
+ };
319
+ const { args, ...restPreparedInfo } = preparedInfo;
320
+ if (checkTxBeforeSend) {
321
+ await TxManager_js_1.default.dryRun(Order.contract.methods.createSubOrder(this.id, {
322
+ ...restPreparedInfo,
323
+ expectedPrice: restPreparedInfo.expectedPrice ?? '0',
324
+ maxPriceSlippage: restPreparedInfo.maxPriceSlippage ?? '0',
325
+ }, slots, args, params), transactionOptions);
326
+ }
327
+ await TxManager_js_1.default.execute(Order.contract.methods.createSubOrder(this.id, {
328
+ ...restPreparedInfo,
329
+ expectedPrice: restPreparedInfo.expectedPrice ?? '0',
330
+ maxPriceSlippage: restPreparedInfo.maxPriceSlippage ?? '0',
331
+ }, slots, args, params), transactionOptions);
366
332
  }
367
333
  /**
368
334
  * Function for creating pack of sub orders (wokflow) for current order
@@ -370,26 +336,27 @@ class Order {
370
336
  * @param transactionOptions - object what contains action account and web3 instance
371
337
  * @returns {Promise<string[]>} - tx hashes
372
338
  */
373
- createSubOrders(subOrdersInfo, subOrdersSlots, transactionOptions) {
374
- return __awaiter(this, void 0, void 0, function* () {
375
- (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
376
- if (subOrdersInfo.length !== subOrdersSlots.length) {
377
- throw Error('SDK: Invalid arguments, subOrdersSlots should be the same size as subOrdersInfo.');
378
- }
379
- const promises = [];
380
- for (let orderInfoIndex = 0; orderInfoIndex < subOrdersInfo.length; orderInfoIndex++) {
381
- const _a = subOrdersInfo[orderInfoIndex], { blocking, deposit } = _a, orderInfo = __rest(_a, ["blocking", "deposit"]);
382
- const args = orderInfo.args;
383
- const preparedInfo = (0, index_js_1.orderInfoToRaw)(orderInfo);
384
- const params = {
385
- blockParentOrder: blocking,
386
- deposit,
387
- };
388
- const transactionCall = Order.contract.methods.createSubOrder(this.id, preparedInfo, subOrdersSlots[orderInfoIndex], args, params);
389
- promises.push(TxManager_js_1.default.execute(transactionCall, transactionOptions));
390
- }
391
- return (yield Promise.all(promises)).map((tx) => tx.transactionHash);
392
- });
339
+ async createSubOrders(subOrdersInfo, subOrdersSlots, transactionOptions) {
340
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
341
+ if (subOrdersInfo.length !== subOrdersSlots.length) {
342
+ throw Error('SDK: Invalid arguments, subOrdersSlots should be the same size as subOrdersInfo.');
343
+ }
344
+ const promises = [];
345
+ for (let orderInfoIndex = 0; orderInfoIndex < subOrdersInfo.length; orderInfoIndex++) {
346
+ const preparedInfo = {
347
+ ...subOrdersInfo[orderInfoIndex],
348
+ externalId: (0, utils_js_1.formatBytes32String)(subOrdersInfo[orderInfoIndex].externalId),
349
+ expectedPrice: subOrdersInfo[orderInfoIndex].expectedPrice ?? '0',
350
+ maxPriceSlippage: subOrdersInfo[orderInfoIndex].maxPriceSlippage ?? '0',
351
+ };
352
+ const params = {
353
+ blockParentOrder: subOrdersInfo[orderInfoIndex].blocking,
354
+ deposit: subOrdersInfo[orderInfoIndex].deposit,
355
+ };
356
+ const transactionCall = Order.contract.methods.createSubOrder(this.id, preparedInfo, subOrdersSlots[orderInfoIndex], preparedInfo.args, params);
357
+ promises.push(TxManager_js_1.default.execute(transactionCall, transactionOptions));
358
+ }
359
+ return (await Promise.all(promises)).map((tx) => tx.transactionHash);
393
360
  }
394
361
  /**
395
362
  * Function for adding event listeners to contract events
@@ -402,11 +369,10 @@ class Order {
402
369
  const contractWss = index_js_2.BlockchainEventsListener.getInstance().getContract();
403
370
  const subscription = contractWss.events.OrderStatusUpdated();
404
371
  subscription.on('data', (event) => {
405
- var _a;
406
372
  if (event.returnValues.orderId != this.id) {
407
373
  return;
408
374
  }
409
- const newStatus = (_a = event.returnValues.status) === null || _a === void 0 ? void 0 : _a.toString();
375
+ const newStatus = event.returnValues.status?.toString();
410
376
  if (this.orderInfo)
411
377
  this.orderInfo.status = newStatus;
412
378
  callback(newStatus);
@@ -574,4 +540,4 @@ __decorate([
574
540
  __metadata("design:returntype", Promise)
575
541
  ], Order.prototype, "createSubOrders", null);
576
542
  exports.default = Order;
577
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL09yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFtQjJCO0FBRzNCLDZEQUFzQztBQUV0QyxrREFPNEI7QUFDNUIscURBQXVGO0FBQ3ZGLGdGQUFxRDtBQUNyRCx5RUFBOEM7QUFDOUMsd0RBQTREO0FBQzVELGtEQUFpRztBQUVqRyxNQUFNLEtBQUs7SUFjVCxZQUFZLE9BQXFCO1FBQy9CLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ25CLEtBQUssQ0FBQyxRQUFRLEdBQUcsOEJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEU7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLG1CQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUI7UUFDdEIsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ1Usc0JBQXNCOztZQUNqQyxNQUFNLGNBQWMsR0FBRyxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTztpQkFDaEQsc0JBQXNCLENBQUMsSUFBSSxD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
543
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL09yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBZ0IyQjtBQUczQiw2REFBc0M7QUFFdEMsa0RBTzRCO0FBQzVCLGtEQUEwRDtBQUMxRCxxREFBdUY7QUFDdkYsZ0ZBQXFEO0FBQ3JELHlFQUE4QztBQUM5Qyx3REFBNEQ7QUFDNUQsa0RBQWlHO0FBRWpHLE1BQU0sS0FBSztJQUNELE1BQU0sQ0FBQyxRQUFRLENBQXVCO0lBQ3RDLE1BQU0sQ0FBb0I7SUFFM0IsYUFBYSxDQUFjO0lBQzNCLFNBQVMsQ0FBYTtJQUN0QixXQUFXLENBQWU7SUFDMUIsU0FBUyxDQUFrQjtJQUMzQixXQUFXLENBQWdCO0lBQzNCLFFBQVEsQ0FBVTtJQUNsQixPQUFPLENBQVc7SUFDbEIsU0FBUyxDQUFVO0lBQ25CLEVBQUUsQ0FBZTtJQUV4QixZQUFZLE9BQXFCO1FBQy9CLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsS0FBSyxDQUFDLFFBQVEsR0FBRyw4QkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuRSxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxtQkFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3RCLE9BQU8s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