@super-protocol/sdk-js 3.16.4 → 3.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/dist/cjs/RIGenerator.d.ts +3 -2
  2. package/dist/cjs/RIGenerator.js +7 -6
  3. package/dist/cjs/TIIGenerator.d.ts +2 -2
  4. package/dist/cjs/TIIGenerator.js +32 -4
  5. package/dist/cjs/TeeInputGeneratorBase.d.ts +3 -3
  6. package/dist/cjs/TeeInputGeneratorBase.js +5 -5
  7. package/dist/cjs/certificates/serializer.d.ts +5 -3
  8. package/dist/cjs/certificates/serializer.js +26 -11
  9. package/dist/cjs/certificates/types.d.ts +1 -1
  10. package/dist/cjs/connectors/BaseConnector.d.ts +3 -3
  11. package/dist/cjs/connectors/BaseConnector.js +1 -1
  12. package/dist/cjs/connectors/BlockchainConnector.js +3 -3
  13. package/dist/cjs/connectors/BlockchainEventsListener.d.ts +2 -2
  14. package/dist/cjs/connectors/BlockchainEventsListener.js +3 -2
  15. package/dist/cjs/constants.d.ts +1 -3
  16. package/dist/cjs/constants.js +3 -7
  17. package/dist/cjs/contracts/abi.d.ts +1067 -1137
  18. package/dist/cjs/contracts/abi.js +1408 -1500
  19. package/dist/cjs/crypto/Crypto.d.ts +10 -13
  20. package/dist/cjs/crypto/Crypto.js +14 -17
  21. package/dist/cjs/crypto/nodejs/AES.d.ts +1 -1
  22. package/dist/cjs/crypto/nodejs/AES.js +2 -2
  23. package/dist/cjs/crypto/nodejs/ARIA.d.ts +1 -1
  24. package/dist/cjs/crypto/nodejs/ARIA.js +2 -2
  25. package/dist/cjs/errors/index.d.ts +1 -0
  26. package/dist/cjs/errors/index.js +4 -2
  27. package/dist/cjs/errors/insufficient-funds.error.d.ts +19 -0
  28. package/dist/cjs/errors/insufficient-funds.error.js +57 -0
  29. package/dist/cjs/index.d.ts +3 -6
  30. package/dist/cjs/index.js +6 -9
  31. package/dist/cjs/models/Offer.d.ts +16 -1
  32. package/dist/cjs/models/Offer.js +59 -9
  33. package/dist/cjs/models/Order.d.ts +1 -1
  34. package/dist/cjs/models/Order.js +11 -15
  35. package/dist/cjs/models/Provider.d.ts +0 -1
  36. package/dist/cjs/models/Provider.js +1 -7
  37. package/dist/cjs/models/TCB.d.ts +1 -28
  38. package/dist/cjs/models/TCB.js +1 -61
  39. package/dist/cjs/models/TeeOffer.d.ts +3 -18
  40. package/dist/cjs/models/TeeOffer.js +20 -106
  41. package/dist/cjs/providers/storage/S3StorageProvider.js +5 -5
  42. package/dist/cjs/providers/storage/StorageKeyValueAdapter.d.ts +1 -1
  43. package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +7 -7
  44. package/dist/cjs/providers/storage/fs-storage-provider.js +35 -15
  45. package/dist/cjs/providers/storage/parseStorageCredentials.d.ts +1 -2
  46. package/dist/cjs/staticModels/Consensus.d.ts +5 -16
  47. package/dist/cjs/staticModels/Consensus.js +17 -86
  48. package/dist/cjs/staticModels/Offers.d.ts +4 -1
  49. package/dist/cjs/staticModels/Offers.js +9 -8
  50. package/dist/cjs/staticModels/OffersCommon.d.ts +3 -1
  51. package/dist/cjs/staticModels/OffersCommon.js +6 -2
  52. package/dist/cjs/staticModels/Orders.js +12 -11
  53. package/dist/cjs/staticModels/ProviderRewards.js +2 -2
  54. package/dist/cjs/staticModels/StaticModel.js +5 -5
  55. package/dist/cjs/staticModels/SuperproToken.d.ts +7 -7
  56. package/dist/cjs/staticModels/SuperproToken.js +3 -3
  57. package/dist/cjs/staticModels/TeeOffers.d.ts +1 -7
  58. package/dist/cjs/staticModels/TeeOffers.js +11 -20
  59. package/dist/cjs/store.d.ts +0 -1
  60. package/dist/cjs/store.js +1 -2
  61. package/dist/cjs/tee/TeeBlockVerifier.d.ts +1 -2
  62. package/dist/cjs/tee/TeeBlockVerifier.js +17 -24
  63. package/dist/cjs/tee/TeeCertificateService.d.ts +1 -1
  64. package/dist/cjs/tee/TeeCertificateService.js +6 -10
  65. package/dist/cjs/tee/statuses.d.ts +0 -7
  66. package/dist/cjs/tee/statuses.js +2 -10
  67. package/dist/cjs/types/Consensus.d.ts +10 -31
  68. package/dist/cjs/types/Consensus.js +2 -10
  69. package/dist/cjs/types/Offer.d.ts +5 -0
  70. package/dist/cjs/types/Order.d.ts +26 -21
  71. package/dist/cjs/types/Order.js +24 -17
  72. package/dist/cjs/types/index.d.ts +0 -1
  73. package/dist/cjs/types/index.js +1 -2
  74. package/dist/cjs/utils/CryptoKeysTransformer.js +5 -5
  75. package/dist/cjs/utils/TxManager.js +21 -5
  76. package/dist/cjs/utils/helper.d.ts +2 -8
  77. package/dist/cjs/utils/helper.js +6 -75
  78. package/dist/cjs/utils/helpers/OrderArgsHelper.d.ts +2 -2
  79. package/dist/cjs/utils/helpers/OrderArgsHelper.js +5 -5
  80. package/dist/cjs/utils/helpers/index.d.ts +1 -0
  81. package/dist/cjs/utils/helpers/index.js +2 -1
  82. package/dist/cjs/utils/helpers/streamToBuffer.d.ts +4 -0
  83. package/dist/cjs/utils/helpers/streamToBuffer.js +13 -0
  84. package/dist/cjs/utils/order/versify.js +1 -7
  85. package/dist/cjs/utils/rent-calculator/rent-calculator.js +2 -3
  86. package/dist/cjs/utils/rent-calculator/types.d.ts +0 -1
  87. package/dist/cjs/utils/tcb.d.ts +2 -0
  88. package/dist/cjs/utils/tcb.js +13 -0
  89. package/dist/cjs/utils/types.d.ts +0 -5
  90. package/dist/mjs/RIGenerator.d.ts +3 -2
  91. package/dist/mjs/RIGenerator.js +8 -7
  92. package/dist/mjs/TIIGenerator.d.ts +2 -2
  93. package/dist/mjs/TIIGenerator.js +32 -4
  94. package/dist/mjs/TeeInputGeneratorBase.d.ts +3 -3
  95. package/dist/mjs/TeeInputGeneratorBase.js +5 -5
  96. package/dist/mjs/certificates/serializer.d.ts +5 -3
  97. package/dist/mjs/certificates/serializer.js +26 -11
  98. package/dist/mjs/certificates/types.d.ts +1 -1
  99. package/dist/mjs/connectors/BaseConnector.d.ts +3 -3
  100. package/dist/mjs/connectors/BaseConnector.js +1 -1
  101. package/dist/mjs/connectors/BlockchainConnector.js +3 -3
  102. package/dist/mjs/connectors/BlockchainEventsListener.d.ts +2 -2
  103. package/dist/mjs/connectors/BlockchainEventsListener.js +3 -2
  104. package/dist/mjs/constants.d.ts +1 -3
  105. package/dist/mjs/constants.js +2 -6
  106. package/dist/mjs/contracts/abi.d.ts +1067 -1137
  107. package/dist/mjs/contracts/abi.js +1406 -1498
  108. package/dist/mjs/crypto/Crypto.d.ts +10 -13
  109. package/dist/mjs/crypto/Crypto.js +14 -17
  110. package/dist/mjs/crypto/nodejs/AES.d.ts +1 -1
  111. package/dist/mjs/crypto/nodejs/AES.js +2 -2
  112. package/dist/mjs/crypto/nodejs/ARIA.d.ts +1 -1
  113. package/dist/mjs/crypto/nodejs/ARIA.js +2 -2
  114. package/dist/mjs/errors/index.d.ts +1 -0
  115. package/dist/mjs/errors/index.js +2 -1
  116. package/dist/mjs/errors/insufficient-funds.error.d.ts +19 -0
  117. package/dist/mjs/errors/insufficient-funds.error.js +53 -0
  118. package/dist/mjs/index.d.ts +3 -6
  119. package/dist/mjs/index.js +4 -7
  120. package/dist/mjs/models/Offer.d.ts +16 -1
  121. package/dist/mjs/models/Offer.js +53 -3
  122. package/dist/mjs/models/Order.d.ts +1 -1
  123. package/dist/mjs/models/Order.js +11 -15
  124. package/dist/mjs/models/Provider.d.ts +0 -1
  125. package/dist/mjs/models/Provider.js +1 -7
  126. package/dist/mjs/models/TCB.d.ts +1 -28
  127. package/dist/mjs/models/TCB.js +2 -62
  128. package/dist/mjs/models/TeeOffer.d.ts +3 -18
  129. package/dist/mjs/models/TeeOffer.js +13 -99
  130. package/dist/mjs/providers/storage/S3StorageProvider.js +5 -5
  131. package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +1 -1
  132. package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +7 -7
  133. package/dist/mjs/providers/storage/fs-storage-provider.js +35 -15
  134. package/dist/mjs/providers/storage/parseStorageCredentials.d.ts +1 -2
  135. package/dist/mjs/staticModels/Consensus.d.ts +5 -16
  136. package/dist/mjs/staticModels/Consensus.js +18 -87
  137. package/dist/mjs/staticModels/Offers.d.ts +4 -1
  138. package/dist/mjs/staticModels/Offers.js +9 -8
  139. package/dist/mjs/staticModels/OffersCommon.d.ts +3 -1
  140. package/dist/mjs/staticModels/OffersCommon.js +6 -2
  141. package/dist/mjs/staticModels/Orders.js +12 -11
  142. package/dist/mjs/staticModels/ProviderRewards.js +3 -3
  143. package/dist/mjs/staticModels/StaticModel.js +5 -5
  144. package/dist/mjs/staticModels/SuperproToken.d.ts +7 -7
  145. package/dist/mjs/staticModels/SuperproToken.js +3 -3
  146. package/dist/mjs/staticModels/TeeOffers.d.ts +1 -7
  147. package/dist/mjs/staticModels/TeeOffers.js +12 -21
  148. package/dist/mjs/store.d.ts +0 -1
  149. package/dist/mjs/store.js +2 -3
  150. package/dist/mjs/tee/TeeBlockVerifier.d.ts +1 -2
  151. package/dist/mjs/tee/TeeBlockVerifier.js +17 -24
  152. package/dist/mjs/tee/TeeCertificateService.d.ts +1 -1
  153. package/dist/mjs/tee/TeeCertificateService.js +7 -11
  154. package/dist/mjs/tee/statuses.d.ts +0 -7
  155. package/dist/mjs/tee/statuses.js +1 -9
  156. package/dist/mjs/types/Consensus.d.ts +10 -31
  157. package/dist/mjs/types/Consensus.js +1 -9
  158. package/dist/mjs/types/Offer.d.ts +5 -0
  159. package/dist/mjs/types/Order.d.ts +26 -21
  160. package/dist/mjs/types/Order.js +21 -17
  161. package/dist/mjs/types/index.d.ts +0 -1
  162. package/dist/mjs/types/index.js +1 -2
  163. package/dist/mjs/utils/CryptoKeysTransformer.js +5 -5
  164. package/dist/mjs/utils/TxManager.js +21 -5
  165. package/dist/mjs/utils/helper.d.ts +2 -8
  166. package/dist/mjs/utils/helper.js +5 -68
  167. package/dist/mjs/utils/helpers/OrderArgsHelper.d.ts +2 -2
  168. package/dist/mjs/utils/helpers/OrderArgsHelper.js +5 -5
  169. package/dist/mjs/utils/helpers/index.d.ts +1 -0
  170. package/dist/mjs/utils/helpers/index.js +2 -1
  171. package/dist/mjs/utils/helpers/streamToBuffer.d.ts +4 -0
  172. package/dist/mjs/utils/helpers/streamToBuffer.js +9 -0
  173. package/dist/mjs/utils/order/versify.js +1 -7
  174. package/dist/mjs/utils/rent-calculator/rent-calculator.js +2 -3
  175. package/dist/mjs/utils/rent-calculator/types.d.ts +0 -1
  176. package/dist/mjs/utils/tcb.d.ts +2 -0
  177. package/dist/mjs/utils/tcb.js +9 -0
  178. package/dist/mjs/utils/types.d.ts +0 -5
  179. package/package.json +8 -9
  180. package/dist/cjs/contracts/Campaign.d.ts +0 -1198
  181. package/dist/cjs/contracts/Campaign.js +0 -1554
  182. package/dist/cjs/contracts/adminCertificateHelperAbi.d.ts +0 -316
  183. package/dist/cjs/contracts/adminCertificateHelperAbi.js +0 -410
  184. package/dist/cjs/proto/TeeDeviceInfo.d.ts +0 -292
  185. package/dist/cjs/proto/TeeDeviceInfo.js +0 -491
  186. package/dist/cjs/staticModels/AdminCertificateHelper.d.ts +0 -24
  187. package/dist/cjs/staticModels/AdminCertificateHelper.js +0 -99
  188. package/dist/cjs/staticModels/Campaign.d.ts +0 -62
  189. package/dist/cjs/staticModels/Campaign.js +0 -318
  190. package/dist/cjs/tee/QuoteValidator.d.ts +0 -46
  191. package/dist/cjs/tee/QuoteValidator.js +0 -456
  192. package/dist/cjs/tee/TcbSerializer.d.ts +0 -20
  193. package/dist/cjs/tee/TcbSerializer.js +0 -27
  194. package/dist/cjs/types/Campaign.d.ts +0 -55
  195. package/dist/cjs/types/Campaign.js +0 -17
  196. package/dist/cjs/utils/admin-service.d.ts +0 -13
  197. package/dist/cjs/utils/admin-service.js +0 -73
  198. package/dist/mjs/contracts/Campaign.d.ts +0 -1198
  199. package/dist/mjs/contracts/Campaign.js +0 -1551
  200. package/dist/mjs/contracts/adminCertificateHelperAbi.d.ts +0 -316
  201. package/dist/mjs/contracts/adminCertificateHelperAbi.js +0 -407
  202. package/dist/mjs/proto/TeeDeviceInfo.d.ts +0 -292
  203. package/dist/mjs/proto/TeeDeviceInfo.js +0 -485
  204. package/dist/mjs/staticModels/AdminCertificateHelper.d.ts +0 -24
  205. package/dist/mjs/staticModels/AdminCertificateHelper.js +0 -92
  206. package/dist/mjs/staticModels/Campaign.d.ts +0 -62
  207. package/dist/mjs/staticModels/Campaign.js +0 -313
  208. package/dist/mjs/tee/QuoteValidator.d.ts +0 -46
  209. package/dist/mjs/tee/QuoteValidator.js +0 -449
  210. package/dist/mjs/tee/TcbSerializer.d.ts +0 -20
  211. package/dist/mjs/tee/TcbSerializer.js +0 -23
  212. package/dist/mjs/types/Campaign.d.ts +0 -55
  213. package/dist/mjs/types/Campaign.js +0 -14
  214. package/dist/mjs/utils/admin-service.d.ts +0 -13
  215. package/dist/mjs/utils/admin-service.js +0 -66
@@ -1,73 +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.AdminService = void 0;
7
- const crypto_1 = require("crypto");
8
- const ethers_1 = require("ethers");
9
- const logger_js_1 = __importDefault(require("../logger.js"));
10
- const index_js_1 = require("../certificates/index.js");
11
- const store_js_1 = __importDefault(require("../store.js"));
12
- const CryptoKeysTransformer_js_1 = require("../utils/CryptoKeysTransformer.js");
13
- const AdminCertificateHelper_js_1 = require("../staticModels/AdminCertificateHelper.js");
14
- class AdminService {
15
- logger = logger_js_1.default.child({ module: AdminService.name });
16
- constructor(adminCertificateContractAddress) {
17
- AdminCertificateHelper_js_1.AdminCertificateHelper.address = adminCertificateContractAddress;
18
- }
19
- async registerAdmin(params) {
20
- const { adminAccountAddress, certPrivateKeyPem, certsPem } = params;
21
- const { certs } = index_js_1.CertificatesHelper.extractCAFromChain(certsPem);
22
- const chain = index_js_1.CertificatesHelper.splitPemCerts(certs);
23
- if (!chain.length) {
24
- throw new Error('No certificates found to register admin');
25
- }
26
- const blockchainSerializedChain = chain.map((certPem) => index_js_1.CertificateSerializer.serializeForBlockchain(certPem));
27
- const signatureNonce = await AdminCertificateHelper_js_1.AdminCertificateHelper.getSignatureNonce();
28
- const chainId = store_js_1.default.chainId;
29
- const signatureBase = store_js_1.default.web3Https.eth.abi.encodeParameters(['address', 'uint256', 'address', 'uint256'], [
30
- adminAccountAddress,
31
- BigInt(chainId),
32
- AdminCertificateHelper_js_1.AdminCertificateHelper.address,
33
- BigInt(signatureNonce),
34
- ]);
35
- const messageBytes = Buffer.from(signatureBase.replace(/^0x/, ''), 'hex');
36
- const digest = (0, crypto_1.createHash)('sha256').update(messageBytes).digest();
37
- const keyObj = (0, crypto_1.createPrivateKey)(certPrivateKeyPem);
38
- const privHex = CryptoKeysTransformer_js_1.CryptoKeysTransformer.getStructuredPrivateKeyFromKeyObj(keyObj); // hex without 0x
39
- const signingKey = new ethers_1.ethers.utils.SigningKey('0x' + privHex);
40
- const sig = signingKey.signDigest('0x' + digest.toString('hex'));
41
- const signatureHex = ethers_1.ethers.utils.joinSignature(sig);
42
- this.logger.info({
43
- admin: adminAccountAddress,
44
- chainId,
45
- certsCount: chain.length,
46
- signatureNonce,
47
- signaturePreview: `${signatureHex.slice(0, 5)}…${signatureHex.slice(-5)}`,
48
- }, 'Registering admin with certificate');
49
- try {
50
- const tx = await AdminCertificateHelper_js_1.AdminCertificateHelper.addAdmin(blockchainSerializedChain, signatureHex, {
51
- from: adminAccountAddress,
52
- });
53
- this.logger.trace({ admin: adminAccountAddress, txHash: tx.transactionHash }, 'Admin registration successful');
54
- }
55
- catch (err) {
56
- this.logger.error({ err }, 'Admin registration failed');
57
- throw err;
58
- }
59
- }
60
- async isAdmin(caller) {
61
- return await AdminCertificateHelper_js_1.AdminCertificateHelper.isAdmin(caller);
62
- }
63
- async getAdminData() {
64
- const data = await AdminCertificateHelper_js_1.AdminCertificateHelper.getAdminData();
65
- return {
66
- admin: data.admin,
67
- rootCertId: data.rootCertId,
68
- certsChain: data.certsChain,
69
- };
70
- }
71
- }
72
- exports.AdminService = AdminService;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9hZG1pbi1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1DQUFzRDtBQUN0RCxtQ0FBZ0M7QUFFaEMsNkRBQXNDO0FBQ3RDLHVEQUlrQztBQUNsQywyREFBZ0M7QUFDaEMsZ0ZBQTBFO0FBQzFFLHlGQUFtRjtBQUVuRixNQUFhLFlBQVk7SUFDTixNQUFNLEdBQUcsbUJBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUUsWUFBWSwrQkFBdUM7UUFDakQsa0RBQXNCLENBQUMsT0FBTyxHQUFHLCtCQUErQixDQUFDO0lBQ25FLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQTJCO1FBQzdDLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFcEUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLDZCQUFrQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sS0FBSyxHQUFHLDZCQUFrQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDdEQsZ0NBQXFCLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQ3RELENBQUM7UUFFRixNQUFNLGNBQWMsR0FBRyxNQUFNLGtEQUFzQixDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDeEUsTUFBTSxPQUFPLEdBQUcsa0JB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