@super-protocol/sdk-js 2.2.0-beta.94 → 2.2.0-beta.96
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/RIGenerator.d.ts +1 -0
- package/dist/cjs/RIGenerator.js +5 -4
- package/dist/cjs/models/Order.d.ts +0 -90
- package/dist/cjs/models/Order.js +1 -91
- package/dist/cjs/tee/QuoteValidator.js +16 -8
- package/dist/cjs/types/Order.d.ts +1 -0
- package/dist/cjs/utils/helpers/OrderArgsHelper.d.ts +3 -2
- package/dist/cjs/utils/helpers/OrderArgsHelper.js +43 -15
- package/dist/mjs/RIGenerator.d.ts +1 -0
- package/dist/mjs/RIGenerator.js +5 -4
- package/dist/mjs/models/Order.d.ts +0 -90
- package/dist/mjs/models/Order.js +1 -91
- package/dist/mjs/tee/QuoteValidator.js +16 -8
- package/dist/mjs/types/Order.d.ts +1 -0
- package/dist/mjs/utils/helpers/OrderArgsHelper.d.ts +3 -2
- package/dist/mjs/utils/helpers/OrderArgsHelper.js +43 -15
- package/package.json +2 -2
|
@@ -50,20 +50,30 @@ class QuoteValidator {
|
|
|
50
50
|
this.logger = logger_js_1.default.child({ className: QuoteValidator.name });
|
|
51
51
|
}
|
|
52
52
|
static async getSignature(mrEnclave, options) {
|
|
53
|
-
const baseURL = options?.baseURL ?? 'https://github.com/Super-Protocol/sp-
|
|
53
|
+
const baseURL = options?.baseURL ?? 'https://api.github.com/repos/Super-Protocol/sp-vm';
|
|
54
54
|
const retryMax = options?.retryMax ?? 3;
|
|
55
55
|
const retryInterval = options?.retryInterval ?? 1000;
|
|
56
|
-
const axiosInstance = axios_1.default.create({
|
|
56
|
+
const axiosInstance = axios_1.default.create({
|
|
57
|
+
baseURL,
|
|
58
|
+
headers: {
|
|
59
|
+
Accept: 'application/vnd.github.v3.raw',
|
|
60
|
+
},
|
|
61
|
+
});
|
|
57
62
|
const response = await (0, index_js_1.tryWithInterval)({
|
|
58
63
|
checkResult(response) {
|
|
59
64
|
return { isResultOk: response.status === 200 };
|
|
60
65
|
},
|
|
61
66
|
handler() {
|
|
62
|
-
|
|
67
|
+
const mrenclaveBase64 = mrEnclave.toString('base64');
|
|
68
|
+
return axiosInstance.get(`/contents/signatures/mrenclave-${mrenclaveBase64}.sign`, {
|
|
63
69
|
responseType: 'arraybuffer',
|
|
64
70
|
});
|
|
65
71
|
},
|
|
66
72
|
checkError(err) {
|
|
73
|
+
if (axios_1.default.isAxiosError(err) && err.response) {
|
|
74
|
+
const status = err.response.status;
|
|
75
|
+
return { retryable: status < 400 || status >= 500 };
|
|
76
|
+
}
|
|
67
77
|
return { retryable: axios_1.default.isAxiosError(err) };
|
|
68
78
|
},
|
|
69
79
|
retryInterval,
|
|
@@ -147,11 +157,10 @@ class QuoteValidator {
|
|
|
147
157
|
}
|
|
148
158
|
verifyDataBySignature(data, signature, key) {
|
|
149
159
|
const ellipticEc = new ec('p256');
|
|
150
|
-
|
|
160
|
+
return ellipticEc.verify(data, {
|
|
151
161
|
r: signature.subarray(0, 32),
|
|
152
162
|
s: signature.subarray(32),
|
|
153
163
|
}, ellipticEc.keyFromPublic(key, 'hex'));
|
|
154
|
-
return result;
|
|
155
164
|
}
|
|
156
165
|
checkValidDate(from, to) {
|
|
157
166
|
const now = Date.now();
|
|
@@ -255,11 +264,10 @@ class QuoteValidator {
|
|
|
255
264
|
: Buffer.from(quote.quoteSignature);
|
|
256
265
|
const calculatedHash = await this.getSha256Hash(Buffer.concat([headerBuffer, reportBuffer]));
|
|
257
266
|
const ellipticEc = new ec('p256');
|
|
258
|
-
|
|
267
|
+
return ellipticEc.verify(calculatedHash, {
|
|
259
268
|
r: expected.subarray(0, 32),
|
|
260
269
|
s: expected.subarray(32),
|
|
261
270
|
}, Buffer.concat([Buffer.from([4]), key]));
|
|
262
|
-
return result;
|
|
263
271
|
}
|
|
264
272
|
async validateQuoteStructure(quote, report, pckPublicKey) {
|
|
265
273
|
if (!(await this.verifyQeReportSignature(quote, pckPublicKey))) {
|
|
@@ -477,4 +485,4 @@ class QuoteValidator {
|
|
|
477
485
|
}
|
|
478
486
|
}
|
|
479
487
|
exports.QuoteValidator = QuoteValidator;
|
|
480
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVvdGVWYWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVlL1F1b3RlVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUE2QztBQUM3Qyx3REFBNEQ7QUFDNUQsd0RBQWdDO0FBQ2hDLDREQUErQjtBQUMvQixxQ0FBb0Q7QUFDcEQseURBQThDO0FBQzlDLGlDQUFrRDtBQUNsRCxtQ0FBaUM7QUFDakMsb0RBQXVCO0FBQ3ZCLHFEQUF5RTtBQUN6RSx5Q0FNb0I7QUFDcEIsNkRBQXNDO0FBRXRDLDJDQUE0RTtBQUM1RSwrQ0FBeUY7QUFDekYsbURBQWlFO0FBQ2pFLGtFQUF3QztBQUN4QyxrREFBOEY7QUFFOUYsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLGtCQUFRLENBQUM7QUFDeEIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxvQkFBSyxDQUFDO0FBRTdCLE1BQU0sa0JBQWtCLEdBQUcsdUNBQXVDLENBQUM7QUFDbkUsTUFBTSxxQkFBcUIsR0FBRyxtRUFBbUUsQ0FBQztBQUNsRyxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxHQUFHLE9BQU8sSUFBSSxDQUFDO0FBQ2pDLE1BQU0sU0FBUyxHQUFHLEdBQUcsT0FBTyxJQUFJLENBQUM7QUFDakMsTUFBTSxPQUFPLEdBQUcsR0FBRyxPQUFPLElBQUksQ0FBQztBQUMvQixNQUFNLFVBQVUsR0FBRyxHQUFHLE9BQU8sS0FBSyxDQUFDO0FBQ25DLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxVQUFVLENBQUM7SUFDeEMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxF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
|
|
488
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVvdGVWYWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVlL1F1b3RlVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUE2QztBQUM3Qyx3REFBNEQ7QUFDNUQsd0RBQWdDO0FBQ2hDLDREQUErQjtBQUMvQixxQ0FBb0Q7QUFDcEQseURBQThDO0FBQzlDLGlDQUFrRDtBQUNsRCxtQ0FBaUM7QUFDakMsb0RBQXVCO0FBQ3ZCLHFEQUF5RTtBQUN6RSx5Q0FNb0I7QUFDcEIsNkRBQXNDO0FBRXRDLDJDQUE0RTtBQUM1RSwrQ0FBeUY7QUFDekYsbURBQWlFO0FBQ2pFLGtFQUF3QztBQUN4QyxrREFBOEY7QUFFOUYsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLGtCQUFRLENBQUM7QUFDeEIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxvQkFBSyxDQUFDO0FBRTdCLE1BQU0sa0JBQWtCLEdBQUcsdUNBQXVDLENBQUM7QUFDbkUsTUFBTSxxQkFBcUIsR0FBRyxtRUFBbUUsQ0FBQztBQUNsRyxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxHQUFHLE9BQU8sSUFBSSxDQUFDO0FBQ2pDLE1BQU0sU0FBUyxHQUFHLEdBQUcsT0FBTyxJQUFJLENBQUM7QUFDakMsTUFBTSxPQUFPLEdBQUcsR0FBRyxPQUFPLElBQUksQ0FBQztBQUMvQixNQUFNLFVBQVUsR0FBRyxHQUFHLE9BQU8sS0FBSyxDQUFDO0FBQ25DLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxVQUFVLENBQUM7SUFDeEMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxF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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Encryption, StorageProviderResource, TeeOrderEncryptedArgs } from '@super-protocol/dto-js';
|
|
1
|
+
import { Encryption, Hash, StorageProviderResource, TeeOrderEncryptedArgs } from '@super-protocol/dto-js';
|
|
2
2
|
import StorageAccess from '../../types/storage/StorageAccess.js';
|
|
3
3
|
export declare class OrderArgsHelper {
|
|
4
4
|
static decryptOrderArgs<T>(encryptedArgs: string, ecdhPrivateKey: string): Promise<T | undefined>;
|
|
5
5
|
static encryptOrderArgs(args: unknown, encryption: Encryption): Promise<string>;
|
|
6
|
-
static
|
|
6
|
+
static isMoreThanGivenSize(args: Record<string, unknown>, sizeInBytes?: number): boolean;
|
|
7
7
|
static uploadToStorage(params: {
|
|
8
8
|
args: TeeOrderEncryptedArgs;
|
|
9
9
|
key: string;
|
|
@@ -13,4 +13,5 @@ export declare class OrderArgsHelper {
|
|
|
13
13
|
};
|
|
14
14
|
encryption: Encryption;
|
|
15
15
|
}): Promise<StorageProviderResource>;
|
|
16
|
+
static calculateArgsHash(args: TeeOrderEncryptedArgs): Promise<Hash>;
|
|
16
17
|
}
|
|
@@ -5,16 +5,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.OrderArgsHelper = void 0;
|
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const dto_js_1 = require("@super-protocol/dto-js");
|
|
8
9
|
const index_js_1 = __importDefault(require("../../crypto/index.js"));
|
|
9
10
|
const uploadObjectToStorage_js_1 = require("./uploadObjectToStorage.js");
|
|
10
11
|
const isStringArray = (item) => Array.isArray(item) && item.every(lodash_1.default.isString);
|
|
11
|
-
const
|
|
12
|
+
const isEncryptedData = (arg) => {
|
|
13
|
+
if (!lodash_1.default.isString(arg)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const encryption = JSON.parse(arg);
|
|
18
|
+
return Boolean(encryption.encoding && encryption.algo && encryption.ciphertext);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
12
24
|
const isEncryptedArgs = (arg) => Boolean(lodash_1.default.isPlainObject(arg) &&
|
|
13
25
|
isStringArray(arg.data) &&
|
|
14
26
|
isStringArray(arg.image) &&
|
|
15
27
|
isStringArray(arg.solution) &&
|
|
16
|
-
(!arg.configuration ||
|
|
17
|
-
|
|
28
|
+
(!arg.configuration || isEncryptedData(arg.configuration)));
|
|
29
|
+
const sortArrayByHash = async (array) => {
|
|
30
|
+
const elementsWithHashes = await Promise.all(array.map(async (element) => {
|
|
31
|
+
const hashObj = await index_js_1.default.createHash(Buffer.from(element), {
|
|
32
|
+
algo: dto_js_1.HashAlgorithm.SHA256,
|
|
33
|
+
encoding: dto_js_1.Encoding.hex,
|
|
34
|
+
});
|
|
35
|
+
return { element, hash: hashObj.hash };
|
|
36
|
+
}));
|
|
37
|
+
return lodash_1.default.chain(elementsWithHashes).sortBy(['hash']).map('element').value();
|
|
38
|
+
};
|
|
18
39
|
class OrderArgsHelper {
|
|
19
40
|
static async decryptOrderArgs(encryptedArgs, ecdhPrivateKey) {
|
|
20
41
|
if (!encryptedArgs) {
|
|
@@ -30,17 +51,11 @@ class OrderArgsHelper {
|
|
|
30
51
|
const encryptedArgs = await index_js_1.default.encrypt(JSON.stringify(args), encryption);
|
|
31
52
|
return JSON.stringify(encryptedArgs);
|
|
32
53
|
}
|
|
33
|
-
static
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
inc(args.solution);
|
|
39
|
-
inc(args.data);
|
|
40
|
-
inc(args.image);
|
|
41
|
-
inc(args.configuration?.data);
|
|
42
|
-
totalElements += args.configuration?.solution ? 1 : 0;
|
|
43
|
-
return totalElements > elementsCount;
|
|
54
|
+
static isMoreThanGivenSize(args, sizeInBytes = 2.5 * 1024) {
|
|
55
|
+
const serializedData = JSON.stringify(args);
|
|
56
|
+
const encoder = new TextEncoder();
|
|
57
|
+
const data = encoder.encode(serializedData);
|
|
58
|
+
return data.length > sizeInBytes;
|
|
44
59
|
}
|
|
45
60
|
static uploadToStorage(params) {
|
|
46
61
|
const { access, args, key, encryption } = params;
|
|
@@ -54,6 +69,19 @@ class OrderArgsHelper {
|
|
|
54
69
|
encryption,
|
|
55
70
|
});
|
|
56
71
|
}
|
|
72
|
+
static async calculateArgsHash(args) {
|
|
73
|
+
const entries = Object.entries(args);
|
|
74
|
+
const resultObject = {};
|
|
75
|
+
for (const [key, value] of lodash_1.default.sortBy(entries, [0])) {
|
|
76
|
+
if (isStringArray(value) && value.length > 1) {
|
|
77
|
+
resultObject[key] = await sortArrayByHash(value);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return index_js_1.default.createHash(Buffer.from(JSON.stringify(resultObject)), {
|
|
81
|
+
algo: dto_js_1.HashAlgorithm.SHA256,
|
|
82
|
+
encoding: dto_js_1.Encoding.hex,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
57
85
|
}
|
|
58
86
|
exports.OrderArgsHelper = OrderArgsHelper;
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJBcmdzSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2hlbHBlcnMvT3JkZXJBcmdzSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUF1QjtBQUN2QixtREFPZ0M7QUFDaEMscUVBQTJDO0FBRTNDLHlFQUFtRTtBQUVuRSxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQWEsRUFBb0IsRUFBRSxDQUN4RCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVoRCxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVksRUFBVyxFQUFFO0lBQ2hELElBQUksQ0FBQyxnQkFBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFL0MsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUF5QyxFQUFXLEVBQUUsQ0FDN0UsT0FBTyxDQUNMLGdCQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztJQUNsQixhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztJQUN2QixhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUN4QixhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUMzQixDQUFDLENBQUMsR0FB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
|
|
@@ -12,6 +12,7 @@ declare class RIGenerator extends TeeInputGeneratorBase {
|
|
|
12
12
|
dataHashes: Hash[];
|
|
13
13
|
imageHashes: Hash[];
|
|
14
14
|
linkage?: string;
|
|
15
|
+
argsHash?: Hash;
|
|
15
16
|
}): Promise<OrderResultInfo>;
|
|
16
17
|
static getResultInfo(encryptedResultInfo: Encryption, privateKey: Buffer): Promise<OrderEncryptedInfo>;
|
|
17
18
|
}
|
package/dist/mjs/RIGenerator.js
CHANGED
|
@@ -27,6 +27,7 @@ class RIGenerator extends TeeInputGeneratorBase {
|
|
|
27
27
|
dataHashes: params.dataHashes || [],
|
|
28
28
|
imageHashes: params.imageHashes || [],
|
|
29
29
|
linkage: params.linkage ?? '',
|
|
30
|
+
...(params.argsHash && { argsHash: params.argsHash }),
|
|
30
31
|
};
|
|
31
32
|
const encryptedInfo = await this.encryptByTeeBlock(params.offerId, JSON.stringify(orderInfoToEncrypt), params.pccsServiceApiUrl);
|
|
32
33
|
return {
|
|
@@ -35,12 +36,12 @@ class RIGenerator extends TeeInputGeneratorBase {
|
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
38
|
static async getResultInfo(encryptedResultInfo, privateKey) {
|
|
38
|
-
const
|
|
39
|
+
const res = await Crypto.decrypt({
|
|
39
40
|
...encryptedResultInfo,
|
|
40
41
|
key: privateKey.toString(encryptedResultInfo.encoding),
|
|
41
|
-
})
|
|
42
|
-
return
|
|
42
|
+
});
|
|
43
|
+
return JSON.parse(res);
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
export default RIGenerator;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUklHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUklHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFFBQVEsRUFDUixlQUFlLEVBRWYsYUFBYSxHQUNkLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyxPQUFPLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLHFCQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE1BQU0sV0FBWSxTQUFRLHFCQUFxQjtJQUM3QyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLG1CQUFrQztRQUNsRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQ25FLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FDMUQsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtZQUMzQixRQUFRLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtZQUNwQyxJQUFJLEVBQUUsZUFBZSxDQUFDLEtBQUs7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQVNyQjtRQUNDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUUxRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUUsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFJLEVBQUUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNwRixNQUFNLFNBQVMsR0FBRztZQUNoQixHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7WUFDbEQsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1lBQ3pCLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSztTQUNkLENBQUM7UUFFaEIsTUFBTSxrQkFBa0IsR0FBdUI7WUFDN0MsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFO1lBQzNDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDbkMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNyQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO1lBQzdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0RCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQ2hELE1BQU0sQ0FBQyxPQUFPLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNsQyxNQUFNLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7UUFFRixPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUN4QixtQkFBK0IsRUFDL0IsVUFBa0I7UUFFbEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQy9CLEdBQUcsbUJBQW1CO1lBQ3RCLEdBQUcsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztTQUN2RCxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBRUQsZUFBZSxXQUFXLENBQUMifQ==
|
|
@@ -12,47 +12,17 @@ declare class Order {
|
|
|
12
12
|
startDate?: number;
|
|
13
13
|
id: BlockchainId;
|
|
14
14
|
constructor(orderId: BlockchainId);
|
|
15
|
-
/**
|
|
16
|
-
* Check if order exist
|
|
17
|
-
*/
|
|
18
15
|
isExist(): Promise<boolean>;
|
|
19
|
-
/**
|
|
20
|
-
* Check if order is in `processing` state
|
|
21
|
-
*/
|
|
22
16
|
isOrderProcessing(): Promise<boolean>;
|
|
23
|
-
/**
|
|
24
|
-
* Function for fetching avaliable for unlock order profit.
|
|
25
|
-
*/
|
|
26
17
|
isOrderProfitAvailable(): Promise<TokenAmount>;
|
|
27
|
-
/**
|
|
28
|
-
* Function for fetching order price
|
|
29
|
-
*/
|
|
30
18
|
calculateCurrentPrice(): Promise<TokenAmount>;
|
|
31
|
-
/**
|
|
32
|
-
* Function for fetching order info from blockchain
|
|
33
|
-
*/
|
|
34
19
|
getOrderInfo(): Promise<OrderInfo>;
|
|
35
20
|
private checkIfOrderExistsWithInterval;
|
|
36
21
|
getConsumer(): Promise<string>;
|
|
37
|
-
/**
|
|
38
|
-
* Function for fetching order result from blockchain
|
|
39
|
-
*/
|
|
40
22
|
getOrderResult(): Promise<OrderResult>;
|
|
41
|
-
/**
|
|
42
|
-
* Function for fetching sub orders from blockchain
|
|
43
|
-
*/
|
|
44
23
|
getSubOrders(): Promise<BlockchainId[]>;
|
|
45
|
-
/**
|
|
46
|
-
* Function for fetching parent order from blockchain
|
|
47
|
-
*/
|
|
48
24
|
getParentOrder(): Promise<BlockchainId>;
|
|
49
|
-
/**
|
|
50
|
-
* Function for fetching order options deposit spent from blockchain
|
|
51
|
-
*/
|
|
52
25
|
getOptionsDepositSpent(): Promise<TokenAmount>;
|
|
53
|
-
/**
|
|
54
|
-
* Function for fetching order deposit spent from blockchain
|
|
55
|
-
*/
|
|
56
26
|
getSelectedUsage(): Promise<OrderUsage>;
|
|
57
27
|
getCertificate(): Promise<string>;
|
|
58
28
|
setCertificate(certificate?: string, transactionOptions?: TransactionOptions): Promise<void>;
|
|
@@ -60,9 +30,6 @@ declare class Order {
|
|
|
60
30
|
* Function for fetching hold deposits sum of the order and its suborders
|
|
61
31
|
*/
|
|
62
32
|
calculateTotalOrderDeposit(): Promise<TokenAmount>;
|
|
63
|
-
/**
|
|
64
|
-
* Function for fetching reserve for output order
|
|
65
|
-
*/
|
|
66
33
|
calculateOrderOutputReserve(): Promise<TokenAmount>;
|
|
67
34
|
/**
|
|
68
35
|
* Function for fetching spent deposits sum of the order and its suborders
|
|
@@ -72,78 +39,21 @@ declare class Order {
|
|
|
72
39
|
* Function for fetching unspent deposits sum of the order and its suborders
|
|
73
40
|
*/
|
|
74
41
|
calculateTotalDepositUnspent(): Promise<TokenAmount>;
|
|
75
|
-
/**
|
|
76
|
-
* Fetch new Origins (createdDate, createdBy, modifiedDate and modifiedBy)
|
|
77
|
-
*/
|
|
78
42
|
getOrigins(): Promise<Origins>;
|
|
79
|
-
/**
|
|
80
|
-
* Function for fetching parent order from blockchain
|
|
81
|
-
*/
|
|
82
43
|
getAwaitingPayment(): Promise<boolean>;
|
|
83
|
-
/**
|
|
84
|
-
* Function for fetching deposit of order from blockchain
|
|
85
|
-
*/
|
|
86
44
|
getDeposit(): Promise<TokenAmount>;
|
|
87
|
-
/**
|
|
88
|
-
* Function for fetching start of processing date
|
|
89
|
-
*/
|
|
90
45
|
getStartDate(): Promise<number>;
|
|
91
|
-
/**
|
|
92
|
-
* Function for fetching start of processing date
|
|
93
|
-
*/
|
|
94
46
|
calculateOrderTime(): Promise<number>;
|
|
95
|
-
/**
|
|
96
|
-
* Function for fetching parent order from blockchain
|
|
97
|
-
*/
|
|
98
47
|
setAwaitingPayment(value: boolean, transactionOptions?: TransactionOptions): Promise<void>;
|
|
99
|
-
/**
|
|
100
|
-
* Sets options deposit spent
|
|
101
|
-
*/
|
|
102
48
|
setOptionsDepositSpent(value: TokenAmount, transactionOptions?: TransactionOptions): Promise<void>;
|
|
103
|
-
/**
|
|
104
|
-
* Function for updating status of contract
|
|
105
|
-
*/
|
|
106
49
|
updateStatus(status: OrderStatus, transactionOptions?: TransactionOptions): Promise<void>;
|
|
107
|
-
/**
|
|
108
|
-
* Function for updating status of contract
|
|
109
|
-
*/
|
|
110
50
|
cancelOrder(transactionOptions?: TransactionOptions): Promise<void>;
|
|
111
|
-
/**
|
|
112
|
-
* Starts suspended order
|
|
113
|
-
*/
|
|
114
51
|
start(transactionOptions?: TransactionOptions): Promise<void>;
|
|
115
|
-
/**
|
|
116
|
-
* Updates order result
|
|
117
|
-
*/
|
|
118
52
|
updateOrderResult(encryptedResult?: string, transactionOptions?: TransactionOptions): Promise<void>;
|
|
119
|
-
/**
|
|
120
|
-
* Completes order
|
|
121
|
-
*/
|
|
122
53
|
complete(status: OrderStatus, encryptedResult?: string, transactionOptions?: TransactionOptions): Promise<void>;
|
|
123
|
-
/**
|
|
124
|
-
* Unlocks profit
|
|
125
|
-
*/
|
|
126
54
|
unlockProfit(transactionOptions?: TransactionOptions): Promise<void>;
|
|
127
|
-
/**
|
|
128
|
-
* Function for creating sub orders for current order
|
|
129
|
-
* @param subOrderInfo - order info for new subOrder
|
|
130
|
-
* @param blockParentOrder - is sub order blocking
|
|
131
|
-
* @param transactionOptions - object what contains alternative action account or gas limit (optional)
|
|
132
|
-
* @returns Promise<void> - Does not return id of created sub order!
|
|
133
|
-
*/
|
|
134
55
|
createSubOrder(subOrderInfo: OrderInfo, slots: OrderSlots, blockParentOrder: boolean, deposit?: TokenAmount, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<void>;
|
|
135
|
-
/**
|
|
136
|
-
* Function for creating pack of sub orders (wokflow) for current order
|
|
137
|
-
* @param subOrdersInfo - orders info for new subOrders
|
|
138
|
-
* @param transactionOptions - object what contains action account and web3 instance
|
|
139
|
-
* @returns {Promise<string[]>} - tx hashes
|
|
140
|
-
*/
|
|
141
56
|
createSubOrders(subOrdersInfo: ExtendedOrderInfo[], subOrdersSlots: OrderSlots[], transactionOptions: TransactionOptions): Promise<string[]>;
|
|
142
|
-
/**
|
|
143
|
-
* Function for adding event listeners to contract events
|
|
144
|
-
* @param callback - function for processing each order related with event
|
|
145
|
-
* @returns unsubscribe - function unsubscribing from event
|
|
146
|
-
*/
|
|
147
57
|
onStatusUpdated(callback: onOrderStatusUpdatedCallback): () => void;
|
|
148
58
|
}
|
|
149
59
|
export type onOrderStatusUpdatedCallback = (status: OrderStatus) => void;
|