@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.
- package/build/TIIGenerator.d.ts +3 -3
- package/build/connectors/BaseConnector.d.ts +7 -8
- package/build/connectors/BaseConnector.js +2 -4
- package/build/connectors/BlockchainConnector.d.ts +6 -8
- package/build/connectors/BlockchainConnector.js +97 -102
- package/build/connectors/BlockchainEventsListener.d.ts +2 -2
- package/build/connectors/BlockchainEventsListener.js +36 -11
- package/build/connectors/index.d.ts +2 -0
- package/build/connectors/index.js +11 -0
- package/build/constants.d.ts +2 -2
- package/build/constants.js +3 -3
- package/build/contracts/abi.d.ts +9769 -0
- package/build/contracts/abi.js +6 -0
- package/build/crypto/Crypto.js +4 -4
- package/build/crypto/nodejs/AES.d.ts +1 -1
- package/build/crypto/nodejs/AES.js +11 -13
- package/build/crypto/nodejs/ARIA.d.ts +1 -1
- package/build/crypto/nodejs/ARIA.js +11 -13
- package/build/models/EtlModel.d.ts +1 -1
- package/build/models/EtlModel.js +2 -4
- package/build/models/Offer.d.ts +5 -15
- package/build/models/Offer.js +60 -105
- package/build/models/Order.d.ts +15 -25
- package/build/models/Order.js +92 -173
- package/build/models/Provider.d.ts +9 -13
- package/build/models/Provider.js +16 -43
- package/build/models/TCB.d.ts +6 -8
- package/build/models/TCB.js +22 -34
- package/build/models/TeeOffer.d.ts +9 -22
- package/build/models/TeeOffer.js +97 -169
- package/build/models/index.d.ts +5 -0
- package/build/models/index.js +17 -0
- package/build/providers/storage/StorjStorageProvider.js +3 -3
- package/build/staticModels/ActiveOffers.d.ts +3 -12
- package/build/staticModels/ActiveOffers.js +11 -29
- package/build/staticModels/ActiveOrders.d.ts +4 -6
- package/build/staticModels/ActiveOrders.js +19 -21
- package/build/staticModels/Consensus.d.ts +3 -5
- package/build/staticModels/Consensus.js +57 -87
- package/build/staticModels/Deposits.d.ts +8 -9
- package/build/staticModels/Deposits.js +42 -60
- package/build/staticModels/Marks.d.ts +4 -4
- package/build/staticModels/Marks.js +8 -12
- package/build/staticModels/Offers.d.ts +14 -14
- package/build/staticModels/Offers.js +81 -88
- package/build/staticModels/Orders.d.ts +30 -35
- package/build/staticModels/Orders.js +98 -144
- package/build/staticModels/ProviderRegistry.d.ts +6 -12
- package/build/staticModels/ProviderRegistry.js +45 -75
- package/build/staticModels/Superpro.d.ts +4 -4
- package/build/staticModels/Superpro.js +7 -25
- package/build/staticModels/SuperproToken.d.ts +7 -7
- package/build/staticModels/SuperproToken.js +34 -38
- package/build/staticModels/TeeOffers.d.ts +19 -21
- package/build/staticModels/TeeOffers.js +119 -126
- package/build/store.d.ts +2 -2
- package/build/tee/QuoteValidator.d.ts +2 -1
- package/build/tee/QuoteValidator.js +7 -6
- package/build/types/Consensus.d.ts +6 -57
- package/build/types/Consensus.js +2 -38
- package/build/types/DepositInfo.d.ts +0 -5
- package/build/types/DepositInfo.js +1 -8
- package/build/types/HardwareInfo.d.ts +0 -12
- package/build/types/HardwareInfo.js +1 -9
- package/build/types/Offer.d.ts +1 -25
- package/build/types/Offer.js +2 -25
- package/build/types/OptionInfo.d.ts +0 -5
- package/build/types/OptionInfo.js +1 -8
- package/build/types/Order.d.ts +8 -84
- package/build/types/Order.js +2 -42
- package/build/types/Origins.d.ts +0 -6
- package/build/types/Origins.js +1 -9
- package/build/types/Provider.d.ts +0 -19
- package/build/types/Provider.js +1 -19
- package/build/types/SlotInfo.d.ts +0 -5
- package/build/types/SlotInfo.js +1 -8
- package/build/types/SlotUsage.d.ts +0 -6
- package/build/types/SlotUsage.js +2 -9
- package/build/types/TeeOfferInfo.d.ts +0 -20
- package/build/types/TeeOfferInfo.js +1 -13
- package/build/types/TeeOfferOption.d.ts +0 -14
- package/build/types/TeeOfferOption.js +1 -10
- package/build/types/TeeOfferSlot.d.ts +0 -14
- package/build/types/TeeOfferSlot.js +1 -10
- package/build/types/ValueOfferSlot.d.ts +0 -19
- package/build/types/ValueOfferSlot.js +1 -12
- package/build/types/Web3.d.ts +25 -13
- package/build/types/blockchainConnector/StorageAccess.d.ts +2 -2
- package/build/types/index.d.ts +21 -0
- package/build/types/index.js +38 -0
- package/build/utils/Monitoring.js +5 -2
- package/build/utils/NonceTracker.d.ts +2 -2
- package/build/utils/NonceTracker.js +9 -11
- package/build/utils/TxManager.d.ts +6 -12
- package/build/utils/TxManager.js +16 -25
- package/build/{utils.d.ts → utils/helper.d.ts} +12 -17
- package/build/utils/helper.js +159 -0
- package/build/utils/helpers/tryWithInterval.js +11 -12
- package/package.json +9 -6
- package/readme.md +7 -8
- package/build/contracts/app.json +0 -12758
- package/build/staticModels/BaseStaticModel.d.ts +0 -4
- package/build/staticModels/BaseStaticModel.js +0 -20
- package/build/utils.js +0 -196
package/build/models/Order.js
CHANGED
|
@@ -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
|
|
24
|
+
const types_1 = require("../types");
|
|
25
25
|
const logger_1 = __importDefault(require("../logger"));
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
117
|
-
this.consumer =
|
|
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
|
|
127
|
-
return (this.orderResult =
|
|
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
|
|
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 =
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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 =
|
|
209
|
-
origins.modifiedDate =
|
|
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
|
|
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
|
|
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
|
-
|
|
243
|
-
(
|
|
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
|
-
|
|
263
|
-
(
|
|
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
|
-
|
|
273
|
-
(
|
|
274
|
-
|
|
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
|
-
|
|
287
|
-
(
|
|
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
|
-
|
|
297
|
-
(
|
|
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
|
-
|
|
307
|
-
(
|
|
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
|
-
|
|
317
|
-
(
|
|
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
|
-
|
|
327
|
-
(
|
|
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
|
-
|
|
341
|
-
(0, utils_1.
|
|
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
|
|
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
|
|
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
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
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
|
-
|
|
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 =
|
|
402
|
-
const subscription = contractWss.events
|
|
403
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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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
|