@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.
- package/dist/cjs/TIIGenerator.js +193 -210
- package/dist/cjs/analytics/Analytics.d.ts +2 -2
- package/dist/cjs/analytics/Analytics.js +15 -22
- package/dist/cjs/analytics/AnalyticsError.js +2 -1
- package/dist/cjs/analytics/eventProviders/BrowserEventProvider.js +14 -8
- package/dist/cjs/analytics/eventProviders/EventProvider.js +13 -2
- package/dist/cjs/analytics/eventProviders/NodeEventProvider.js +9 -1
- package/dist/cjs/analytics/transports/AxiosTransport.js +24 -36
- package/dist/cjs/analytics/transports/FetchTransport.js +23 -34
- package/dist/cjs/analytics/types.d.ts +1 -1
- package/dist/cjs/connectors/BaseConnector.js +5 -17
- package/dist/cjs/connectors/BlockchainConnector.js +164 -181
- package/dist/cjs/connectors/BlockchainEventsListener.js +42 -53
- package/dist/cjs/contracts/abi.d.ts +33 -107
- package/dist/cjs/contracts/abi.js +34 -131
- package/dist/cjs/crypto/Crypto.js +54 -73
- package/dist/cjs/crypto/nodejs/AES.js +40 -55
- package/dist/cjs/crypto/nodejs/ARIA.js +39 -54
- package/dist/cjs/crypto/nodejs/ECIES.js +44 -57
- package/dist/cjs/crypto/nodejs/NativeCrypto.js +29 -42
- package/dist/cjs/crypto/nodejs/RSA-Hybrid.js +26 -27
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/models/EtlModel.js +34 -46
- package/dist/cjs/models/Offer.js +110 -156
- package/dist/cjs/models/Order.js +166 -200
- package/dist/cjs/models/Provider.js +47 -65
- package/dist/cjs/models/TCB.js +32 -55
- package/dist/cjs/models/TeeOffer.js +188 -250
- package/dist/cjs/polyfills.js +1 -1
- package/dist/cjs/proto/Compression.js +4 -5
- package/dist/cjs/proto/TRI.js +14 -17
- package/dist/cjs/proto/TeeProperties.js +19 -23
- package/dist/cjs/providers/storage/ChunksDownloadDecorator.js +38 -70
- package/dist/cjs/providers/storage/S3StorageProvider.js +118 -166
- package/dist/cjs/providers/storage/StorageAdapter.js +155 -177
- package/dist/cjs/providers/storage/StorageContentWriter.js +103 -118
- package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +84 -117
- package/dist/cjs/providers/storage/StorageMetadataReader.js +38 -49
- package/dist/cjs/providers/storage/StorjAdapter.js +28 -48
- package/dist/cjs/providers/storage/StorjStorageProvider.d.ts +0 -1
- package/dist/cjs/providers/storage/StorjStorageProvider.js +101 -163
- package/dist/cjs/providers/storage/getStorageProvider.js +1 -1
- package/dist/cjs/staticModels/ActiveOffers.js +14 -29
- package/dist/cjs/staticModels/ActiveOrders.js +20 -35
- package/dist/cjs/staticModels/Consensus.js +71 -93
- package/dist/cjs/staticModels/Deposits.js +20 -39
- package/dist/cjs/staticModels/Marks.js +7 -20
- package/dist/cjs/staticModels/ModelPackager.js +26 -39
- package/dist/cjs/staticModels/Offers.js +33 -51
- package/dist/cjs/staticModels/Orders.js +108 -106
- package/dist/cjs/staticModels/ProviderRegistry.js +23 -41
- package/dist/cjs/staticModels/StaticModel.js +22 -33
- package/dist/cjs/staticModels/Superpro.js +2 -1
- package/dist/cjs/staticModels/SuperproToken.js +27 -40
- package/dist/cjs/staticModels/TeeOffers.js +64 -94
- package/dist/cjs/tee/QuoteParser.js +20 -20
- package/dist/cjs/tee/QuoteValidator.js +176 -201
- package/dist/cjs/tee/helpers.js +2 -1
- package/dist/cjs/tee/statuses.js +4 -4
- package/dist/cjs/tee/types.d.ts +5 -0
- package/dist/cjs/types/Consensus.js +2 -2
- package/dist/cjs/types/Marks.js +2 -2
- package/dist/cjs/types/Offer.js +3 -3
- package/dist/cjs/types/Order.d.ts +2 -14
- package/dist/cjs/types/Order.js +3 -46
- package/dist/cjs/types/SlotUsage.js +2 -2
- package/dist/cjs/types/Superpro.js +2 -2
- package/dist/cjs/utils/Monitoring.js +6 -5
- package/dist/cjs/utils/NonceTracker.js +31 -43
- package/dist/cjs/utils/PubSub.js +2 -4
- package/dist/cjs/utils/TxManager.js +110 -120
- package/dist/cjs/utils/compressors/GzipCompressor.js +5 -16
- package/dist/cjs/utils/compressors/UncompressedCompressor.js +2 -2
- package/dist/cjs/utils/helper.js +26 -23
- package/dist/cjs/utils/helpers/getStreamChunks.js +29 -68
- package/dist/cjs/utils/helpers/tryWithInterval.js +7 -16
- package/dist/cjs/utils/resourceLoaders/BaseResourceLoader.js +7 -44
- package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.js +18 -27
- package/dist/cjs/utils/resourceLoaders/UrlResourceLoader.js +8 -21
- package/dist/cjs/utils/resourceLoaders/getResourceLoader.js +1 -1
- package/dist/mjs/TIIGenerator.js +1 -1
- package/dist/mjs/analytics/Analytics.d.ts +2 -2
- package/dist/mjs/analytics/Analytics.js +1 -1
- package/dist/mjs/analytics/eventProviders/NodeEventProvider.js +1 -1
- package/dist/mjs/analytics/transports/AxiosTransport.js +1 -1
- package/dist/mjs/analytics/transports/FetchTransport.js +1 -1
- package/dist/mjs/analytics/types.d.ts +1 -1
- package/dist/mjs/connectors/BaseConnector.js +1 -1
- package/dist/mjs/connectors/BlockchainConnector.js +1 -1
- package/dist/mjs/connectors/BlockchainEventsListener.js +1 -1
- package/dist/mjs/contracts/abi.d.ts +33 -107
- package/dist/mjs/contracts/abi.js +34 -131
- package/dist/mjs/crypto/Crypto.js +1 -1
- package/dist/mjs/crypto/nodejs/AES.js +1 -1
- package/dist/mjs/crypto/nodejs/ARIA.js +1 -1
- package/dist/mjs/crypto/nodejs/ECIES.js +1 -1
- package/dist/mjs/crypto/nodejs/NativeCrypto.js +1 -1
- package/dist/mjs/index.d.ts +1 -0
- package/dist/mjs/index.js +2 -1
- package/dist/mjs/models/EtlModel.js +1 -1
- package/dist/mjs/models/Offer.js +1 -1
- package/dist/mjs/models/Order.js +38 -20
- package/dist/mjs/models/Provider.js +1 -1
- package/dist/mjs/models/TCB.js +1 -1
- package/dist/mjs/models/TeeOffer.js +1 -1
- package/dist/mjs/polyfills.js +1 -1
- package/dist/mjs/proto/Compression.js +1 -1
- package/dist/mjs/proto/TRI.js +1 -1
- package/dist/mjs/proto/TeeProperties.js +1 -1
- package/dist/mjs/providers/storage/ChunksDownloadDecorator.js +4 -4
- package/dist/mjs/providers/storage/S3StorageProvider.js +1 -1
- package/dist/mjs/providers/storage/StorageAdapter.js +1 -1
- package/dist/mjs/providers/storage/StorageContentWriter.js +1 -1
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +1 -1
- package/dist/mjs/providers/storage/StorageMetadataReader.js +1 -1
- package/dist/mjs/providers/storage/StorjAdapter.js +1 -1
- package/dist/mjs/providers/storage/StorjStorageProvider.d.ts +0 -1
- package/dist/mjs/providers/storage/StorjStorageProvider.js +1 -3
- package/dist/mjs/providers/storage/getStorageProvider.js +1 -1
- package/dist/mjs/staticModels/ActiveOrders.js +1 -1
- package/dist/mjs/staticModels/Consensus.js +1 -1
- package/dist/mjs/staticModels/Deposits.js +1 -1
- package/dist/mjs/staticModels/ModelPackager.js +1 -1
- package/dist/mjs/staticModels/Offers.js +1 -1
- package/dist/mjs/staticModels/Orders.js +39 -12
- package/dist/mjs/staticModels/StaticModel.js +1 -1
- package/dist/mjs/staticModels/SuperproToken.js +1 -1
- package/dist/mjs/staticModels/TeeOffers.js +1 -1
- package/dist/mjs/tee/QuoteParser.js +1 -1
- package/dist/mjs/tee/QuoteValidator.js +1 -1
- package/dist/mjs/tee/helpers.js +1 -1
- package/dist/mjs/tee/types.d.ts +5 -0
- package/dist/mjs/types/Order.d.ts +2 -14
- package/dist/mjs/types/Order.js +1 -40
- package/dist/mjs/utils/Monitoring.js +1 -1
- package/dist/mjs/utils/NonceTracker.js +1 -1
- package/dist/mjs/utils/PubSub.js +1 -1
- package/dist/mjs/utils/TxManager.js +1 -1
- package/dist/mjs/utils/helper.js +1 -1
- package/dist/mjs/utils/helpers/getStreamChunks.js +1 -1
- package/dist/mjs/utils/helpers/tryWithInterval.js +1 -1
- package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.js +1 -1
- package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.js +1 -1
- package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.js +1 -1
- package/dist/mjs/utils/resourceLoaders/getResourceLoader.js +1 -1
- package/package.json +6 -16
package/dist/cjs/models/Order.js
CHANGED
|
@@ -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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
126
|
-
|
|
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
|
-
|
|
135
|
-
this.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
|
|
147
|
-
this.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
this.
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
273
|
-
|
|
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
|
-
|
|
282
|
-
|
|
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
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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
|
-
|
|
304
|
-
|
|
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
|
-
|
|
313
|
-
|
|
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
|
-
|
|
322
|
-
|
|
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
|
-
|
|
331
|
-
|
|
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
|
-
|
|
340
|
-
|
|
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
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
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
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
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 =
|
|
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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
|