@super-protocol/sdk-js 0.6.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 (132) hide show
  1. package/build/BlockchainConnector.d.ts +48 -0
  2. package/build/BlockchainConnector.js +259 -0
  3. package/build/TIIGenerator.d.ts +21 -0
  4. package/build/TIIGenerator.js +251 -0
  5. package/build/constants.d.ts +7 -0
  6. package/build/constants.js +10 -0
  7. package/build/contracts/ActiveOffersList.json +131 -0
  8. package/build/contracts/ActiveOrdersList.json +74 -0
  9. package/build/contracts/Marks.json +79 -0
  10. package/build/contracts/Offers.json +999 -0
  11. package/build/contracts/Orders.json +984 -0
  12. package/build/contracts/Providers.json +440 -0
  13. package/build/contracts/ProvidersOffers.json +254 -0
  14. package/build/contracts/Staking.json +323 -0
  15. package/build/contracts/Superpro.json +197 -0
  16. package/build/contracts/SuperproToken.json +356 -0
  17. package/build/crypto/Crypto.d.ts +37 -0
  18. package/build/crypto/Crypto.js +181 -0
  19. package/build/crypto/index.d.ts +2 -0
  20. package/build/crypto/index.js +7 -0
  21. package/build/crypto/nodejs/AES.d.ts +24 -0
  22. package/build/crypto/nodejs/AES.js +152 -0
  23. package/build/crypto/nodejs/ARIA.d.ts +24 -0
  24. package/build/crypto/nodejs/ARIA.js +151 -0
  25. package/build/crypto/nodejs/ECIES.d.ts +6 -0
  26. package/build/crypto/nodejs/ECIES.js +94 -0
  27. package/build/crypto/nodejs/NativeCrypto.d.ts +54 -0
  28. package/build/crypto/nodejs/NativeCrypto.js +214 -0
  29. package/build/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
  30. package/build/crypto/nodejs/RSA-Hybrid.js +153 -0
  31. package/build/index.d.ts +65 -0
  32. package/build/index.js +117 -0
  33. package/build/logger.d.ts +4 -0
  34. package/build/logger.js +8 -0
  35. package/build/models/Ballot.d.ts +13 -0
  36. package/build/models/Ballot.js +76 -0
  37. package/build/models/Offer.d.ts +70 -0
  38. package/build/models/Offer.js +273 -0
  39. package/build/models/Order.d.ts +125 -0
  40. package/build/models/Order.js +540 -0
  41. package/build/models/Provider.d.ts +40 -0
  42. package/build/models/Provider.js +167 -0
  43. package/build/models/TCB.d.ts +80 -0
  44. package/build/models/TCB.js +315 -0
  45. package/build/models/TeeOffer.d.ts +118 -0
  46. package/build/models/TeeOffer.js +436 -0
  47. package/build/proto/Compression.d.ts +33 -0
  48. package/build/proto/Compression.js +146 -0
  49. package/build/proto/TRI.d.ts +122 -0
  50. package/build/proto/TRI.js +316 -0
  51. package/build/providers/storage/ChunksDownloadDecorator.d.ts +38 -0
  52. package/build/providers/storage/ChunksDownloadDecorator.js +284 -0
  53. package/build/providers/storage/IStorageProvider.d.ts +17 -0
  54. package/build/providers/storage/IStorageProvider.js +2 -0
  55. package/build/providers/storage/StorjStorageProvider.d.ts +26 -0
  56. package/build/providers/storage/StorjStorageProvider.js +389 -0
  57. package/build/providers/storage/getStorageProvider.d.ts +4 -0
  58. package/build/providers/storage/getStorageProvider.js +16 -0
  59. package/build/staticModels/ActiveOffers.d.ts +29 -0
  60. package/build/staticModels/ActiveOffers.js +144 -0
  61. package/build/staticModels/ActiveOrders.d.ts +21 -0
  62. package/build/staticModels/ActiveOrders.js +120 -0
  63. package/build/staticModels/Consensus.d.ts +63 -0
  64. package/build/staticModels/Consensus.js +373 -0
  65. package/build/staticModels/Epochs.d.ts +23 -0
  66. package/build/staticModels/Epochs.js +97 -0
  67. package/build/staticModels/LastBlocks.d.ts +25 -0
  68. package/build/staticModels/LastBlocks.js +96 -0
  69. package/build/staticModels/Marks.d.ts +13 -0
  70. package/build/staticModels/Marks.js +113 -0
  71. package/build/staticModels/OffersFactory.d.ts +37 -0
  72. package/build/staticModels/OffersFactory.js +227 -0
  73. package/build/staticModels/OrdersFactory.d.ts +137 -0
  74. package/build/staticModels/OrdersFactory.js +539 -0
  75. package/build/staticModels/ProviderRegistry.d.ts +81 -0
  76. package/build/staticModels/ProviderRegistry.js +311 -0
  77. package/build/staticModels/Staking.d.ts +26 -0
  78. package/build/staticModels/Staking.js +132 -0
  79. package/build/staticModels/Superpro.d.ts +20 -0
  80. package/build/staticModels/Superpro.js +99 -0
  81. package/build/staticModels/SuperproToken.d.ts +30 -0
  82. package/build/staticModels/SuperproToken.js +125 -0
  83. package/build/staticModels/Suspicious.d.ts +26 -0
  84. package/build/staticModels/Suspicious.js +99 -0
  85. package/build/staticModels/TeeOffersFactory.d.ts +36 -0
  86. package/build/staticModels/TeeOffersFactory.js +206 -0
  87. package/build/staticModels/Voting.d.ts +35 -0
  88. package/build/staticModels/Voting.js +111 -0
  89. package/build/store.d.ts +12 -0
  90. package/build/store.js +13 -0
  91. package/build/types/Ballot.d.ts +75 -0
  92. package/build/types/Ballot.js +49 -0
  93. package/build/types/Epoch.d.ts +21 -0
  94. package/build/types/Epoch.js +18 -0
  95. package/build/types/Events.d.ts +18 -0
  96. package/build/types/Events.js +2 -0
  97. package/build/types/Marks.d.ts +5 -0
  98. package/build/types/Marks.js +9 -0
  99. package/build/types/Offer.d.ts +63 -0
  100. package/build/types/Offer.js +41 -0
  101. package/build/types/Order.d.ts +61 -0
  102. package/build/types/Order.js +36 -0
  103. package/build/types/Origins.d.ts +12 -0
  104. package/build/types/Origins.js +10 -0
  105. package/build/types/Provider.d.ts +25 -0
  106. package/build/types/Provider.js +19 -0
  107. package/build/types/Staking.d.ts +27 -0
  108. package/build/types/Staking.js +22 -0
  109. package/build/types/Superpro.d.ts +24 -0
  110. package/build/types/Superpro.js +29 -0
  111. package/build/types/TcbData.d.ts +26 -0
  112. package/build/types/TcbData.js +21 -0
  113. package/build/types/TeeOffer.d.ts +22 -0
  114. package/build/types/TeeOffer.js +15 -0
  115. package/build/types/Web3.d.ts +26 -0
  116. package/build/types/Web3.js +2 -0
  117. package/build/types/blockchainConnector/StorageAccess.d.ts +8 -0
  118. package/build/types/blockchainConnector/StorageAccess.js +2 -0
  119. package/build/types/storage/StorageAccess.d.ts +6 -0
  120. package/build/types/storage/StorageAccess.js +2 -0
  121. package/build/types/storage/StorageFileAccess.d.ts +5 -0
  122. package/build/types/storage/StorageFileAccess.js +2 -0
  123. package/build/types/storage/StorageObject.d.ts +8 -0
  124. package/build/types/storage/StorageObject.js +2 -0
  125. package/build/utils/NonceTracker.d.ts +12 -0
  126. package/build/utils/NonceTracker.js +84 -0
  127. package/build/utils/TxManager.d.ts +21 -0
  128. package/build/utils/TxManager.js +159 -0
  129. package/build/utils.d.ts +38 -0
  130. package/build/utils.js +195 -0
  131. package/package.json +68 -0
  132. package/readme.md +40 -0
@@ -0,0 +1,540 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var Order_1 = require("../types/Order");
43
+ var logger_1 = __importDefault(require("../logger"));
44
+ var Orders_json_1 = __importDefault(require("../contracts/Orders.json"));
45
+ var store_1 = __importDefault(require("../store"));
46
+ var utils_1 = require("../utils");
47
+ var Origins_1 = require("../types/Origins");
48
+ var utils_2 = require("ethers/lib/utils");
49
+ var Superpro_1 = __importDefault(require("../staticModels/Superpro"));
50
+ var TxManager_1 = __importDefault(require("../utils/TxManager"));
51
+ var Order = /** @class */ (function () {
52
+ function Order(orderId) {
53
+ (0, utils_1.checkIfInitialized)();
54
+ this.id = orderId;
55
+ if (!Order.contract) {
56
+ Order.contract = new store_1.default.web3.eth.Contract(Orders_json_1.default.abi, Superpro_1.default.address);
57
+ }
58
+ this.logger = logger_1.default.child({ className: "Order", orderId: this.id });
59
+ }
60
+ /**
61
+ * Checks if contract has been initialized, if not - initialize contract
62
+ */
63
+ Order.prototype.checkInitOrder = function (transactionOptions) {
64
+ if (transactionOptions === null || transactionOptions === void 0 ? void 0 : transactionOptions.web3) {
65
+ (0, utils_1.checkIfInitialized)();
66
+ return new transactionOptions.web3.eth.Contract(Orders_json_1.default.abi, Superpro_1.default.address);
67
+ }
68
+ };
69
+ /**
70
+ * Check if order exist
71
+ */
72
+ Order.prototype.isExist = function () {
73
+ return __awaiter(this, void 0, void 0, function () {
74
+ return __generator(this, function (_a) {
75
+ switch (_a.label) {
76
+ case 0: return [4 /*yield*/, Order.contract.methods.isOrderValid(this.id).call()];
77
+ case 1: return [2 /*return*/, _a.sent()];
78
+ }
79
+ });
80
+ });
81
+ };
82
+ /**
83
+ * Function for fetching order info from blockchain
84
+ */
85
+ Order.prototype.getOrderInfo = function () {
86
+ return __awaiter(this, void 0, void 0, function () {
87
+ var orderInfoParams;
88
+ return __generator(this, function (_a) {
89
+ switch (_a.label) {
90
+ case 0: return [4 /*yield*/, Order.contract.methods.getOrder(this.id).call()];
91
+ case 1:
92
+ orderInfoParams = _a.sent();
93
+ return [2 /*return*/, (this.orderInfo = (0, utils_1.tupleToObject)(orderInfoParams[1], Order_1.OrderInfoStructure))];
94
+ }
95
+ });
96
+ });
97
+ };
98
+ Order.prototype.getConsumer = function () {
99
+ return __awaiter(this, void 0, void 0, function () {
100
+ var orderInfoParams;
101
+ return __generator(this, function (_a) {
102
+ switch (_a.label) {
103
+ case 0: return [4 /*yield*/, Order.contract.methods.getOrder(this.id).call()];
104
+ case 1:
105
+ orderInfoParams = _a.sent();
106
+ this.consumer = orderInfoParams[0];
107
+ return [2 /*return*/, this.consumer];
108
+ }
109
+ });
110
+ });
111
+ };
112
+ /**
113
+ * Function for fetching order result from blockchain
114
+ */
115
+ Order.prototype.getOrderResult = function () {
116
+ return __awaiter(this, void 0, void 0, function () {
117
+ var orderInfoParams, result;
118
+ return __generator(this, function (_a) {
119
+ switch (_a.label) {
120
+ case 0: return [4 /*yield*/, Order.contract.methods.getOrder(this.id).call()];
121
+ case 1:
122
+ orderInfoParams = _a.sent();
123
+ result = ['', '', orderInfoParams[2][1]];
124
+ if (orderInfoParams[1][4] === Order_1.OrderStatus.Error)
125
+ result[1] = orderInfoParams[2][0];
126
+ else
127
+ result[0] = orderInfoParams[2][0];
128
+ return [2 /*return*/, this.orderResult = (0, utils_1.tupleToObject)(result, Order_1.OrderResultStructure)];
129
+ }
130
+ });
131
+ });
132
+ };
133
+ /**
134
+ * Function for fetching sub orders from blockchain
135
+ */
136
+ Order.prototype.getSubOrders = function () {
137
+ return __awaiter(this, void 0, void 0, function () {
138
+ var _a;
139
+ return __generator(this, function (_b) {
140
+ switch (_b.label) {
141
+ case 0:
142
+ _a = this;
143
+ return [4 /*yield*/, Order.contract.methods.getOrderSubOrders(this.id).call()];
144
+ case 1:
145
+ _a.subOrders = _b.sent();
146
+ return [2 /*return*/, this.subOrders];
147
+ }
148
+ });
149
+ });
150
+ };
151
+ /**
152
+ * Function for fetching parent order from blockchain
153
+ */
154
+ Order.prototype.getParentOrder = function () {
155
+ return __awaiter(this, void 0, void 0, function () {
156
+ var _a;
157
+ return __generator(this, function (_b) {
158
+ switch (_b.label) {
159
+ case 0:
160
+ _a = this;
161
+ return [4 /*yield*/, Order.contract.methods.getOrderParentOrder(this.id).call()];
162
+ case 1:
163
+ _a.parentOrder = _b.sent();
164
+ return [2 /*return*/, this.parentOrder];
165
+ }
166
+ });
167
+ });
168
+ };
169
+ /**
170
+ * Function for fetching order deposit spent from blockchain
171
+ */
172
+ Order.prototype.getDepositSpent = function () {
173
+ return __awaiter(this, void 0, void 0, function () {
174
+ return __generator(this, function (_a) {
175
+ return [2 /*return*/, Order.contract.methods.getDepositSpent(this.id).call()];
176
+ });
177
+ });
178
+ };
179
+ /**
180
+ * Fetch new Origins (createdDate, createdBy, modifiedDate and modifiedBy)
181
+ */
182
+ Order.prototype.getOrigins = function () {
183
+ return __awaiter(this, void 0, void 0, function () {
184
+ var origins;
185
+ return __generator(this, function (_a) {
186
+ switch (_a.label) {
187
+ case 0: return [4 /*yield*/, Order.contract.methods.getOrderOrigins(this.id).call()];
188
+ case 1:
189
+ origins = _a.sent();
190
+ // Converts blockchain array into object
191
+ origins = (0, utils_1.tupleToObject)(origins, Origins_1.OriginsStructure);
192
+ // Convert blockchain time seconds to js time milliseconds
193
+ origins.createdDate = +origins.createdDate * 1000;
194
+ origins.modifiedDate = +origins.modifiedDate * 1000;
195
+ return [2 /*return*/, (this.origins = origins)];
196
+ }
197
+ });
198
+ });
199
+ };
200
+ /**
201
+ * Function for fetching parent order from blockchain
202
+ */
203
+ Order.prototype.getAwaitingPayment = function () {
204
+ return __awaiter(this, void 0, void 0, function () {
205
+ return __generator(this, function (_a) {
206
+ return [2 /*return*/, Order.contract.methods.getAwaitingPayment(this.id).call()];
207
+ });
208
+ });
209
+ };
210
+ /**
211
+ * Function for fetching start of processing date
212
+ */
213
+ Order.prototype.getStartDate = function () {
214
+ return __awaiter(this, void 0, void 0, function () {
215
+ return __generator(this, function (_a) {
216
+ return [2 /*return*/, Order.contract.methods.getStartDate(this.id).call()];
217
+ });
218
+ });
219
+ };
220
+ /**
221
+ * Function for fetching parent order from blockchain
222
+ */
223
+ Order.prototype.setAwaitingPayment = function (value, transactionOptions) {
224
+ return __awaiter(this, void 0, void 0, function () {
225
+ return __generator(this, function (_a) {
226
+ switch (_a.label) {
227
+ case 0:
228
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
229
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
230
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.setAwaitingPayment, [this.id, value], transactionOptions)];
231
+ case 1:
232
+ _a.sent();
233
+ return [2 /*return*/];
234
+ }
235
+ });
236
+ });
237
+ };
238
+ /**
239
+ * Updates order price
240
+ */
241
+ Order.prototype.updateOrderPrice = function (price, transactionOptions) {
242
+ return __awaiter(this, void 0, void 0, function () {
243
+ return __generator(this, function (_a) {
244
+ switch (_a.label) {
245
+ case 0:
246
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
247
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
248
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.updateOrderPrice, [this.id, price], transactionOptions)];
249
+ case 1:
250
+ _a.sent();
251
+ return [2 /*return*/];
252
+ }
253
+ });
254
+ });
255
+ };
256
+ /**
257
+ * Sets deposit spent
258
+ */
259
+ Order.prototype.setDepositSpent = function (value, transactionOptions) {
260
+ return __awaiter(this, void 0, void 0, function () {
261
+ return __generator(this, function (_a) {
262
+ switch (_a.label) {
263
+ case 0:
264
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
265
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
266
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.setDepositSpent, [this.id, value], transactionOptions)];
267
+ case 1:
268
+ _a.sent();
269
+ return [2 /*return*/];
270
+ }
271
+ });
272
+ });
273
+ };
274
+ /**
275
+ * Function for updating status of contract
276
+ */
277
+ Order.prototype.updateStatus = function (status, price, transactionOptions) {
278
+ return __awaiter(this, void 0, void 0, function () {
279
+ return __generator(this, function (_a) {
280
+ switch (_a.label) {
281
+ case 0:
282
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
283
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
284
+ if (!(status === Order_1.OrderStatus.Processing)) return [3 /*break*/, 2];
285
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.processOrder, [this.id], transactionOptions)];
286
+ case 1:
287
+ _a.sent();
288
+ _a.label = 2;
289
+ case 2:
290
+ if (this.orderInfo)
291
+ this.orderInfo.status = status;
292
+ return [2 /*return*/];
293
+ }
294
+ });
295
+ });
296
+ };
297
+ /**
298
+ * Function for updating status of contract
299
+ */
300
+ Order.prototype.cancelOrder = function (transactionOptions) {
301
+ return __awaiter(this, void 0, void 0, function () {
302
+ return __generator(this, function (_a) {
303
+ switch (_a.label) {
304
+ case 0:
305
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
306
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
307
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.cancelOrder, [this.id], transactionOptions)];
308
+ case 1:
309
+ _a.sent();
310
+ return [2 /*return*/];
311
+ }
312
+ });
313
+ });
314
+ };
315
+ /**
316
+ * Starts suspended order
317
+ */
318
+ Order.prototype.start = function (transactionOptions) {
319
+ return __awaiter(this, void 0, void 0, function () {
320
+ return __generator(this, function (_a) {
321
+ switch (_a.label) {
322
+ case 0:
323
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
324
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
325
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.startOrder, [this.id], transactionOptions)];
326
+ case 1:
327
+ _a.sent();
328
+ return [2 /*return*/];
329
+ }
330
+ });
331
+ });
332
+ };
333
+ /**
334
+ * Updates order result
335
+ */
336
+ Order.prototype.updateOrderResult = function (encryptedResult, transactionOptions) {
337
+ if (encryptedResult === void 0) { encryptedResult = ""; }
338
+ return __awaiter(this, void 0, void 0, function () {
339
+ return __generator(this, function (_a) {
340
+ switch (_a.label) {
341
+ case 0:
342
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
343
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
344
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.updateOrderResult, [this.id, encryptedResult], transactionOptions)];
345
+ case 1:
346
+ _a.sent();
347
+ return [2 /*return*/];
348
+ }
349
+ });
350
+ });
351
+ };
352
+ /**
353
+ * Completes order
354
+ */
355
+ Order.prototype.complete = function (status, encryptedResult, encryptedError, // for SDK compatibility
356
+ transactionOptions) {
357
+ if (encryptedResult === void 0) { encryptedResult = ""; }
358
+ if (encryptedError === void 0) { encryptedError = ""; }
359
+ return __awaiter(this, void 0, void 0, function () {
360
+ return __generator(this, function (_a) {
361
+ switch (_a.label) {
362
+ case 0:
363
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
364
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
365
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.completeOrder, [this.id, status, status === Order_1.OrderStatus.Error ? encryptedError : encryptedResult], transactionOptions)];
366
+ case 1:
367
+ _a.sent();
368
+ return [2 /*return*/];
369
+ }
370
+ });
371
+ });
372
+ };
373
+ /**
374
+ * Function for creating sub orders for current order
375
+ * @param subOrderInfo - order info for new subOrder
376
+ * @param blocking - is sub order blocking
377
+ * @param transactionOptions - object what contains alternative action account or gas limit (optional)
378
+ * @returns {Promise<void>} - Does not return address of created contract!
379
+ */
380
+ Order.prototype.createSubOrder = function (subOrderInfo, blocking, externalId, holdSum, transactionOptions) {
381
+ if (externalId === void 0) { externalId = "default"; }
382
+ if (holdSum === void 0) { holdSum = '0'; }
383
+ return __awaiter(this, void 0, void 0, function () {
384
+ var tupleSubOrder, formattedExternalId, params;
385
+ return __generator(this, function (_a) {
386
+ switch (_a.label) {
387
+ case 0:
388
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
389
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
390
+ tupleSubOrder = (0, utils_1.objectToTuple)(subOrderInfo, Order_1.OrderInfoStructure);
391
+ formattedExternalId = (0, utils_2.formatBytes32String)(externalId);
392
+ params = {
393
+ blockParentOrder: blocking,
394
+ externalId: formattedExternalId,
395
+ holdSum: holdSum,
396
+ };
397
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.createSubOrder, [this.id, tupleSubOrder, params], transactionOptions)];
398
+ case 1:
399
+ _a.sent();
400
+ return [2 /*return*/];
401
+ }
402
+ });
403
+ });
404
+ };
405
+ /**
406
+ * Function for creating pack of sub orders (wokflow) for current order
407
+ * @param {Array<subOrderInfo>} - orders info for new subOrders
408
+ * @param transactionOptions - object what contains action account and web3 instance
409
+ * @returns {Promise<string[]>} - tx hashes
410
+ */
411
+ Order.prototype.createSubOrders = function (subOrdersInfo, transactionOptions) {
412
+ return __awaiter(this, void 0, void 0, function () {
413
+ var batch, promises, txs;
414
+ var _this = this;
415
+ return __generator(this, function (_a) {
416
+ switch (_a.label) {
417
+ case 0:
418
+ this.checkInitOrder(transactionOptions);
419
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
420
+ batch = new transactionOptions.web3.BatchRequest();
421
+ promises = subOrdersInfo.map(function (subOrderInfo) {
422
+ return new Promise(function (res, rej) {
423
+ var tupleSubOrder = (0, utils_1.objectToTuple)(subOrderInfo, Order_1.OrderInfoStructure);
424
+ var formattedExternalId = (0, utils_2.formatBytes32String)(subOrderInfo.externalId);
425
+ var params = {
426
+ blockParentOrder: subOrderInfo.blocking,
427
+ externalId: formattedExternalId,
428
+ holdSum: subOrderInfo.holdSum,
429
+ };
430
+ var request = Order.contract.methods.createSubOrder(_this.id, tupleSubOrder, params).send.request({
431
+ from: transactionOptions.from,
432
+ gasPrice: store_1.default.gasPrice,
433
+ gas: store_1.default.gasLimit,
434
+ }, function (err, data) {
435
+ if (data)
436
+ res(data);
437
+ if (err)
438
+ rej(err);
439
+ });
440
+ batch.add(request);
441
+ });
442
+ });
443
+ batch.execute();
444
+ return [4 /*yield*/, Promise.all(promises)];
445
+ case 1:
446
+ txs = _a.sent();
447
+ return [2 /*return*/, txs.reduce(function (a, b) { return a.concat(b); }, [])];
448
+ }
449
+ });
450
+ });
451
+ };
452
+ Order.prototype.getSubOrder = function (consumer, externalId) {
453
+ return __awaiter(this, void 0, void 0, function () {
454
+ var filter, foundIds, notFound, response;
455
+ return __generator(this, function (_a) {
456
+ switch (_a.label) {
457
+ case 0:
458
+ filter = {
459
+ consumer: consumer,
460
+ externalId: (0, utils_2.formatBytes32String)(externalId),
461
+ };
462
+ return [4 /*yield*/, Order.contract.getPastEvents("SubOrderCreated", { filter: filter })];
463
+ case 1:
464
+ foundIds = _a.sent();
465
+ notFound = { consumer: consumer, externalId: externalId, subOfferId: '-1', subOrderId: '-1', parentOrderId: '-1' };
466
+ response = foundIds.length > 0 ? foundIds[0].returnValues : notFound;
467
+ return [2 /*return*/, response];
468
+ }
469
+ });
470
+ });
471
+ };
472
+ /**
473
+ * Function for withdrawing profit from order
474
+ * @param transactionOptions - object what contains alternative action account or gas limit (optional)
475
+ */
476
+ Order.prototype.withdrawProfit = function (transactionOptions) {
477
+ return __awaiter(this, void 0, void 0, function () {
478
+ return __generator(this, function (_a) {
479
+ switch (_a.label) {
480
+ case 0:
481
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
482
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
483
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.withdrawProfit, [this.id], transactionOptions)];
484
+ case 1:
485
+ _a.sent();
486
+ return [2 /*return*/];
487
+ }
488
+ });
489
+ });
490
+ };
491
+ /**
492
+ * Function for withdrawing change from order
493
+ * @param transactionOptions - object what contains alternative action account or gas limit (optional)
494
+ */
495
+ Order.prototype.withdrawChange = function (transactionOptions) {
496
+ return __awaiter(this, void 0, void 0, function () {
497
+ return __generator(this, function (_a) {
498
+ switch (_a.label) {
499
+ case 0:
500
+ transactionOptions !== null && transactionOptions !== void 0 ? transactionOptions : this.checkInitOrder(transactionOptions);
501
+ (0, utils_1.checkIfActionAccountInitialized)(transactionOptions);
502
+ return [4 /*yield*/, TxManager_1.default.execute(Order.contract.methods.withdrawChange, [this.id], transactionOptions)];
503
+ case 1:
504
+ _a.sent();
505
+ return [2 /*return*/];
506
+ }
507
+ });
508
+ });
509
+ };
510
+ /**
511
+ * Function for adding event listeners to contract events
512
+ * @param callback - function for processing each order related with event
513
+ * @return unsubscribe - function unsubscribing from event
514
+ */
515
+ Order.prototype.onOrderStatusUpdated = function (callback) {
516
+ var _this = this;
517
+ var logger = this.logger.child({ method: "onOrderStatusUpdated" });
518
+ var subscription = Order.contract.events
519
+ .OrderStatusUpdated()
520
+ .on("data", function (event) { return __awaiter(_this, void 0, void 0, function () {
521
+ return __generator(this, function (_a) {
522
+ if (event.returnValues.orderId != this.id) {
523
+ return [2 /*return*/];
524
+ }
525
+ if (this.orderInfo)
526
+ this.orderInfo.status = event.returnValues.status;
527
+ callback(event.returnValues.status);
528
+ return [2 /*return*/];
529
+ });
530
+ }); })
531
+ .on("error", function (error, receipt) {
532
+ if (receipt)
533
+ return; // Used to avoid logging of transaction rejected
534
+ logger.warn(error);
535
+ });
536
+ return function () { return subscription.unsubscribe(); };
537
+ };
538
+ return Order;
539
+ }());
540
+ exports.default = Order;
@@ -0,0 +1,40 @@
1
+ import { ProviderInfo } from "../types/Provider";
2
+ import { Origins } from "../types/Origins";
3
+ declare class Provider {
4
+ private static contractProviders;
5
+ private static contractProvidersOffers;
6
+ private logger;
7
+ providerInfo?: ProviderInfo;
8
+ violationRate?: number;
9
+ authority?: string;
10
+ valueOffers?: string[];
11
+ teeOffers?: string[];
12
+ origins?: Origins;
13
+ providerId: string;
14
+ constructor(providerId: string);
15
+ /**
16
+ * Function for fetching provider info from blockchain
17
+ */
18
+ getInfo(): Promise<ProviderInfo>;
19
+ /**
20
+ * Function for fetching provider authority address from blockchain
21
+ */
22
+ getAuthority(): Promise<string>;
23
+ /**
24
+ * Function for fetching all value offers for this provider
25
+ */
26
+ getValueOffers(): Promise<string[]>;
27
+ /**
28
+ * Function for fetching all TEE offers for this provider
29
+ */
30
+ getTeeOffers(): Promise<string[]>;
31
+ /**
32
+ * Function for fetching violationRate for this provider
33
+ */
34
+ getViolationRate(): Promise<number>;
35
+ /**
36
+ * Fetch new Origins (createdDate, createdBy, modifiedDate and modifiedBy)
37
+ */
38
+ getOrigins(): Promise<Origins>;
39
+ }
40
+ export default Provider;