@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
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.StaticModel = void 0;
|
|
7
|
-
const BlockchainConnector_1 = __importDefault(require("../connectors/BlockchainConnector"));
|
|
8
|
-
class StaticModel {
|
|
9
|
-
static getPastEvents(eventName, filter, fromBlock, toBlock) {
|
|
10
|
-
const contract = BlockchainConnector_1.default.getInstance().getContract();
|
|
11
|
-
const options = { filter };
|
|
12
|
-
if (fromBlock)
|
|
13
|
-
options.fromBlock = fromBlock;
|
|
14
|
-
if (toBlock)
|
|
15
|
-
options.toBlock = toBlock;
|
|
16
|
-
return contract.getPastEvents(eventName, options);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.StaticModel = StaticModel;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVN0YXRpY01vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRpY01vZGVscy9CYXNlU3RhdGljTW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsNEZBQW9FO0FBRXBFLE1BQXNCLFdBQVc7SUFDN0IsTUFBTSxDQUFDLGFBQWEsQ0FDaEIsU0FBaUIsRUFDakIsTUFBYyxFQUNkLFNBQTJCLEVBQzNCLE9BQXlCO1FBRXpCLE1BQU0sUUFBUSxHQUFHLDZCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sT0FBTyxHQUFxQixFQUFFLE1BQU0sRUFBRSxDQUFDO1FBRTdDLElBQUksU0FBUztZQUFFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdDLElBQUksT0FBTztZQUFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZDLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNKO0FBZkQsa0NBZUMifQ==
|
package/build/utils.js
DELETED
|
@@ -1,196 +0,0 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.packSlotInfo = exports.unpackSlotInfo = exports.unpackDeviceId = exports.packDevicId = exports.incrementMethodCall = exports.objectToTuple = exports.tupleToObjectsArray = exports.tupleToObject = exports.isNodeJS = exports.createTransactionOptions = exports.getGasPrice = exports.checkForUsingExternalTxManager = exports.checkIfActionAccountInitialized = void 0;
|
|
16
|
-
const store_1 = __importDefault(require("./store"));
|
|
17
|
-
const lodash_1 = require("lodash");
|
|
18
|
-
const Monitoring_1 = require("./utils/Monitoring");
|
|
19
|
-
/**
|
|
20
|
-
* Function for checking if provider action account initialized (required for set methods)
|
|
21
|
-
* Used in all set methods
|
|
22
|
-
*/
|
|
23
|
-
const checkIfActionAccountInitialized = (transactionOptions) => {
|
|
24
|
-
if (!store_1.default.actionAccount && !(transactionOptions === null || transactionOptions === void 0 ? void 0 : transactionOptions.web3))
|
|
25
|
-
throw new Error("Provider action account is not initialized, needs to run 'BlockchainConnector.getInstance().initializeActionAccount(SECRET_KEY)' first");
|
|
26
|
-
};
|
|
27
|
-
exports.checkIfActionAccountInitialized = checkIfActionAccountInitialized;
|
|
28
|
-
/**
|
|
29
|
-
* Function for checking if current configuration supposed to use external transaction manager like MetaMask and etc.
|
|
30
|
-
*/
|
|
31
|
-
const checkForUsingExternalTxManager = (transactionOptions) => {
|
|
32
|
-
// TODO: Agree on more proper way of signaling, that we use an external transaction manager, than just passing a web3 instance.
|
|
33
|
-
return !!(transactionOptions === null || transactionOptions === void 0 ? void 0 : transactionOptions.web3);
|
|
34
|
-
};
|
|
35
|
-
exports.checkForUsingExternalTxManager = checkForUsingExternalTxManager;
|
|
36
|
-
/**
|
|
37
|
-
* Updates gas price determined by the last few blocks median
|
|
38
|
-
*/
|
|
39
|
-
const getGasPrice = (web3) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
-
return web3.eth.getGasPrice();
|
|
41
|
-
});
|
|
42
|
-
exports.getGasPrice = getGasPrice;
|
|
43
|
-
/**
|
|
44
|
-
* Merge transaction options from arguments and from store
|
|
45
|
-
* Used in all set methods
|
|
46
|
-
*/
|
|
47
|
-
const createTransactionOptions = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
-
if (!options)
|
|
49
|
-
options = {};
|
|
50
|
-
if (!options.from)
|
|
51
|
-
options.from = store_1.default.actionAccount;
|
|
52
|
-
if (!options.gas)
|
|
53
|
-
options.gas = store_1.default.gasLimit;
|
|
54
|
-
if (!options.gasPriceMultiplier)
|
|
55
|
-
options.gasPriceMultiplier = store_1.default.gasPriceMultiplier;
|
|
56
|
-
if (!options.gasPrice) {
|
|
57
|
-
const web3 = options.web3 || store_1.default.web3Https;
|
|
58
|
-
if (web3) {
|
|
59
|
-
try {
|
|
60
|
-
options.gasPrice = yield (0, exports.getGasPrice)(web3);
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
options.gasPrice = store_1.default.gasPrice;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
throw Error('web3 is undefined, define it in transaction options or initialize BlockchainConnector with web3 instance.');
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
delete options.web3;
|
|
71
|
-
return options;
|
|
72
|
-
});
|
|
73
|
-
exports.createTransactionOptions = createTransactionOptions;
|
|
74
|
-
const isNodeJS = () => {
|
|
75
|
-
// @ts-ignore
|
|
76
|
-
return typeof window === 'undefined';
|
|
77
|
-
};
|
|
78
|
-
exports.isNodeJS = isNodeJS;
|
|
79
|
-
const tupleToObject = (data, format) => {
|
|
80
|
-
const processItem = (dataItem, formatItem) => {
|
|
81
|
-
if (formatItem === null || formatItem === void 0 ? void 0 : formatItem.$obj) {
|
|
82
|
-
return formatItem.$obj(dataItem);
|
|
83
|
-
}
|
|
84
|
-
else if (typeof formatItem === 'function') {
|
|
85
|
-
if (formatItem.name === 'Number') {
|
|
86
|
-
const value = formatItem(dataItem);
|
|
87
|
-
return value < Number.MAX_SAFE_INTEGER ? value : Number.MAX_SAFE_INTEGER;
|
|
88
|
-
}
|
|
89
|
-
return formatItem(dataItem);
|
|
90
|
-
}
|
|
91
|
-
else if (typeof formatItem === 'object' && typeof dataItem === 'object') {
|
|
92
|
-
return (0, exports.tupleToObject)(dataItem, formatItem);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
return dataItem;
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
if ((0, lodash_1.isArray)(format)) {
|
|
99
|
-
const result = data.map((dataItem, index) => {
|
|
100
|
-
const formatItem = index < format.length ? format[index] : format[format.length - 1];
|
|
101
|
-
return processItem(dataItem, formatItem);
|
|
102
|
-
});
|
|
103
|
-
return result;
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
const result = {};
|
|
107
|
-
Object.keys(format).forEach((key, index) => {
|
|
108
|
-
const formatItem = format[key];
|
|
109
|
-
const dataItem = data[index];
|
|
110
|
-
result[key] = processItem(dataItem, formatItem);
|
|
111
|
-
});
|
|
112
|
-
return result;
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
exports.tupleToObject = tupleToObject;
|
|
116
|
-
const tupleToObjectsArray = (data, format) => {
|
|
117
|
-
return data.map((item) => (0, exports.tupleToObject)(item, format));
|
|
118
|
-
};
|
|
119
|
-
exports.tupleToObjectsArray = tupleToObjectsArray;
|
|
120
|
-
const objectToTuple = (data, format) => {
|
|
121
|
-
const processItem = (dataItem, formatItem) => {
|
|
122
|
-
if (formatItem === null || formatItem === void 0 ? void 0 : formatItem.$tuple) {
|
|
123
|
-
return formatItem.$tuple(dataItem);
|
|
124
|
-
}
|
|
125
|
-
else if (typeof formatItem === 'object' && typeof dataItem === 'object') {
|
|
126
|
-
return (0, exports.objectToTuple)(dataItem, formatItem);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
return dataItem;
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
if ((0, lodash_1.isArray)(format)) {
|
|
133
|
-
return data.map((dataItem, index) => {
|
|
134
|
-
const formatItem = index < format.length ? format[index] : format[format.length - 1];
|
|
135
|
-
return processItem(dataItem, formatItem);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
return Object.keys(format).map((key) => {
|
|
140
|
-
const dataItem = data[key];
|
|
141
|
-
const formatItem = format[key];
|
|
142
|
-
return processItem(dataItem, formatItem);
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
exports.objectToTuple = objectToTuple;
|
|
147
|
-
function incrementMethodCall() {
|
|
148
|
-
return function (_target, propertyName, propertyDescriptor) {
|
|
149
|
-
const monitoring = Monitoring_1.Monitoring.getInstance();
|
|
150
|
-
const method = propertyDescriptor.value;
|
|
151
|
-
propertyDescriptor.value = function (...args) {
|
|
152
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
153
|
-
monitoring.incrementCall(propertyName);
|
|
154
|
-
return method.apply(this, args);
|
|
155
|
-
});
|
|
156
|
-
};
|
|
157
|
-
return propertyDescriptor;
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
exports.incrementMethodCall = incrementMethodCall;
|
|
161
|
-
const hexRegex = /^[0-9a-fA-F]+$/;
|
|
162
|
-
function packDevicId(hexedDeviceId) {
|
|
163
|
-
if (hexedDeviceId.length !== 64) {
|
|
164
|
-
throw new Error('DeviceId must be equal 64 hex symbols');
|
|
165
|
-
}
|
|
166
|
-
if (!hexRegex.test(hexedDeviceId)) {
|
|
167
|
-
throw new Error('DeviceId must be a hexedecimal');
|
|
168
|
-
}
|
|
169
|
-
return '0x' + hexedDeviceId;
|
|
170
|
-
}
|
|
171
|
-
exports.packDevicId = packDevicId;
|
|
172
|
-
function unpackDeviceId(bytes32) {
|
|
173
|
-
if (bytes32.length !== 66) {
|
|
174
|
-
throw new Error('DeviceId bytes must be equal 66 symbols');
|
|
175
|
-
}
|
|
176
|
-
// removes '0x'
|
|
177
|
-
return bytes32.slice(2, 66);
|
|
178
|
-
}
|
|
179
|
-
exports.unpackDeviceId = unpackDeviceId;
|
|
180
|
-
function unpackSlotInfo(slotInfo, cpuDenominator) {
|
|
181
|
-
return {
|
|
182
|
-
cpuCores: slotInfo.cpuCores / cpuDenominator,
|
|
183
|
-
ram: slotInfo.ram,
|
|
184
|
-
diskUsage: slotInfo.diskUsage,
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
exports.unpackSlotInfo = unpackSlotInfo;
|
|
188
|
-
function packSlotInfo(slotInfo, cpuDenominator) {
|
|
189
|
-
return {
|
|
190
|
-
cpuCores: slotInfo.cpuCores * cpuDenominator,
|
|
191
|
-
ram: slotInfo.ram,
|
|
192
|
-
diskUsage: slotInfo.diskUsage,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
exports.packSlotInfo = packSlotInfo;
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLG1DQUFpQztBQUVqQyxtREFBZ0Q7QUFHaEQ7OztHQUdHO0FBQ0ksTUFBTSwrQkFBK0IsR0FBRyxDQUFDLGtCQUF1QyxFQUFFLEVBQUU7SUFDdkYsSUFBSSxDQUFDLGVBQUssQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFBLGtCQUFrQixhQUFsQixrQkFBa0IsdUJBQWxCLGtCQUFrQixDQUFFLElBQUksQ0FBQTtRQUNqRCxNQUFNLElBQUksS0FBSyxDQUNYLHdJQUF3SSxDQUMzSSxDQUFDO0FBQ1YsQ0FBQyxDQUFDO0FBTFcsUUFBQSwrQkFBK0IsbUNBSzFDO0FBRUY7O0dBRUc7QUFDSSxNQUFNLDhCQUE4QixHQUFHLENBQzFDLGtCQUF1QyxFQUNoQyxFQUFFO0lBQ1QsK0hBQStIO0lBQy9ILE9BQU8sQ0FBQyxDQUFDLENBQUEsa0JBQWtCLGFBQWxCLGtCQUFrQix1QkFBbEIsa0JBQWtCLENBQUUsSUFBSSxDQUFBLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBTFcsUUFBQSw4QkFBOEIsa0NBS3pDO0FBRUY7O0dBRUc7QUFDSSxNQUFNLFdBQVcsR0FBRyxDQUFPLElBQVUsRUFBbUIsRUFBRTtJQUM3RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbEMsQ0FBQyxDQUFBLENBQUM7QUFGVyxRQUFBLFdBQVcsZUFFdEI7QUFFRjs7O0dBR0c7QUFDSSxNQUFNLHdCQUF3QixHQUFHLENBQ3BDLE9BQTRCLEVBQ0QsRUFBRTtJQUM3QixJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1FBQUUsT0FBTyxDQUFDLElBQUksR0FBRyxlQUFLLENBQUMsYUFBYSxDQUFDO0lBQ3RE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
|