@super-protocol/sdk-js 2.1.4-beta.1 → 2.1.4-beta.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.
Files changed (499) hide show
  1. package/{build → dist/cjs}/TIIGenerator.d.ts +2 -2
  2. package/dist/cjs/TIIGenerator.js +246 -0
  3. package/{build → dist/cjs}/analytics/Analytics.d.ts +1 -1
  4. package/dist/cjs/analytics/Analytics.js +74 -0
  5. package/{build → dist/cjs}/analytics/AnalyticsError.js +1 -1
  6. package/{build → dist/cjs}/analytics/eventProviders/BrowserEventProvider.d.ts +1 -1
  7. package/{build → dist/cjs}/analytics/eventProviders/BrowserEventProvider.js +3 -3
  8. package/dist/cjs/analytics/eventProviders/EventProvider.js +14 -0
  9. package/{build → dist/cjs}/analytics/eventProviders/NodeEventProvider.d.ts +1 -1
  10. package/dist/cjs/analytics/eventProviders/NodeEventProvider.js +48 -0
  11. package/{build → dist/cjs}/analytics/transports/AxiosTransport.d.ts +1 -1
  12. package/{build → dist/cjs}/analytics/transports/AxiosTransport.js +4 -4
  13. package/{build → dist/cjs}/analytics/transports/FetchTransport.d.ts +1 -1
  14. package/dist/cjs/analytics/transports/FetchTransport.js +42 -0
  15. package/{build → dist/cjs}/analytics/types.d.ts +1 -1
  16. package/{build → dist/cjs}/analytics/types.js +1 -1
  17. package/{build → dist/cjs}/config.js +1 -1
  18. package/{build → dist/cjs}/connectors/BaseConnector.d.ts +1 -1
  19. package/{build → dist/cjs}/connectors/BaseConnector.js +3 -3
  20. package/{build → dist/cjs}/connectors/BlockchainConnector.d.ts +3 -3
  21. package/dist/cjs/connectors/BlockchainConnector.js +358 -0
  22. package/{build → dist/cjs}/connectors/BlockchainEventsListener.d.ts +1 -1
  23. package/{build → dist/cjs}/connectors/BlockchainEventsListener.js +15 -15
  24. package/{build → dist/cjs}/connectors/index.d.ts +2 -2
  25. package/{build → dist/cjs}/connectors/index.js +5 -5
  26. package/{build → dist/cjs}/constants.js +1 -1
  27. package/{build → dist/cjs}/contracts/abi.js +1 -1
  28. package/dist/cjs/crypto/Crypto.js +119 -0
  29. package/dist/cjs/crypto/index.d.ts +2 -0
  30. package/{build → dist/cjs}/crypto/index.js +3 -3
  31. package/{build → dist/cjs}/crypto/nodejs/AES.js +6 -6
  32. package/{build → dist/cjs}/crypto/nodejs/ARIA.js +6 -6
  33. package/{build → dist/cjs}/crypto/nodejs/ECIES.js +1 -1
  34. package/dist/cjs/crypto/nodejs/NativeCrypto.js +183 -0
  35. package/dist/cjs/crypto/nodejs/RSA-Hybrid.js +95 -0
  36. package/dist/cjs/index.d.ts +79 -0
  37. package/dist/cjs/index.js +142 -0
  38. package/{build → dist/cjs}/logger.js +1 -1
  39. package/{build → dist/cjs}/models/EtlModel.d.ts +1 -1
  40. package/{build → dist/cjs}/models/EtlModel.js +8 -8
  41. package/{build → dist/cjs}/models/Offer.d.ts +1 -1
  42. package/dist/cjs/models/Offer.js +407 -0
  43. package/{build → dist/cjs}/models/Order.d.ts +1 -1
  44. package/dist/cjs/models/Order.js +577 -0
  45. package/{build → dist/cjs}/models/Provider.d.ts +1 -1
  46. package/dist/cjs/models/Provider.js +137 -0
  47. package/{build → dist/cjs}/models/TCB.d.ts +1 -1
  48. package/dist/cjs/models/TCB.js +135 -0
  49. package/{build → dist/cjs}/models/TeeOffer.d.ts +2 -2
  50. package/dist/cjs/models/TeeOffer.js +600 -0
  51. package/dist/cjs/models/index.d.ts +5 -0
  52. package/dist/cjs/models/index.js +17 -0
  53. package/dist/cjs/package.json +1 -0
  54. package/dist/cjs/polyfills.js +7 -0
  55. package/dist/cjs/proto/Compression.js +132 -0
  56. package/dist/cjs/proto/TRI.js +293 -0
  57. package/dist/cjs/proto/TeeProperties.js +401 -0
  58. package/{build → dist/cjs}/providers/storage/ChunksDownloadDecorator.d.ts +2 -2
  59. package/{build → dist/cjs}/providers/storage/ChunksDownloadDecorator.js +1 -1
  60. package/{build → dist/cjs}/providers/storage/IStorageProvider.d.ts +1 -1
  61. package/{build → dist/cjs}/providers/storage/IStorageProvider.js +1 -1
  62. package/{build → dist/cjs}/providers/storage/S3StorageProvider.d.ts +2 -2
  63. package/{build → dist/cjs}/providers/storage/S3StorageProvider.js +3 -3
  64. package/{build → dist/cjs}/providers/storage/StorageAdapter.d.ts +2 -2
  65. package/dist/cjs/providers/storage/StorageAdapter.js +323 -0
  66. package/{build → dist/cjs}/providers/storage/StorageContentWriter.d.ts +2 -2
  67. package/{build → dist/cjs}/providers/storage/StorageContentWriter.js +3 -3
  68. package/{build → dist/cjs}/providers/storage/StorageKeyValueAdapter.d.ts +2 -2
  69. package/{build → dist/cjs}/providers/storage/StorageKeyValueAdapter.js +8 -8
  70. package/{build → dist/cjs}/providers/storage/StorageMetadataReader.d.ts +3 -3
  71. package/{build → dist/cjs}/providers/storage/StorageMetadataReader.js +3 -3
  72. package/{build → dist/cjs}/providers/storage/StorjAdapter.d.ts +2 -2
  73. package/{build → dist/cjs}/providers/storage/StorjAdapter.js +5 -5
  74. package/{build → dist/cjs}/providers/storage/StorjStorageProvider.d.ts +2 -2
  75. package/{build → dist/cjs}/providers/storage/StorjStorageProvider.js +6 -6
  76. package/dist/cjs/providers/storage/getStorageProvider.d.ts +4 -0
  77. package/dist/cjs/providers/storage/getStorageProvider.js +20 -0
  78. package/{build → dist/cjs}/providers/storage/types.js +1 -1
  79. package/{build → dist/cjs}/staticModels/ActiveOffers.d.ts +1 -1
  80. package/{build → dist/cjs}/staticModels/ActiveOffers.js +7 -7
  81. package/{build → dist/cjs}/staticModels/ActiveOrders.d.ts +1 -1
  82. package/{build → dist/cjs}/staticModels/ActiveOrders.js +12 -12
  83. package/{build → dist/cjs}/staticModels/Consensus.d.ts +1 -1
  84. package/dist/cjs/staticModels/Consensus.js +247 -0
  85. package/{build → dist/cjs}/staticModels/Deposits.d.ts +1 -1
  86. package/dist/cjs/staticModels/Deposits.js +214 -0
  87. package/{build → dist/cjs}/staticModels/Marks.d.ts +1 -1
  88. package/dist/cjs/staticModels/Marks.js +43 -0
  89. package/{build → dist/cjs}/staticModels/ModelPackager.js +6 -6
  90. package/{build → dist/cjs}/staticModels/Offers.d.ts +2 -2
  91. package/dist/cjs/staticModels/Offers.js +207 -0
  92. package/{build → dist/cjs}/staticModels/Orders.d.ts +2 -2
  93. package/dist/cjs/staticModels/Orders.js +502 -0
  94. package/{build → dist/cjs}/staticModels/ProviderRegistry.d.ts +1 -1
  95. package/{build → dist/cjs}/staticModels/ProviderRegistry.js +28 -28
  96. package/{build → dist/cjs}/staticModels/StaticModel.d.ts +2 -2
  97. package/dist/cjs/staticModels/StaticModel.js +46 -0
  98. package/{build → dist/cjs}/staticModels/Superpro.d.ts +2 -2
  99. package/dist/cjs/staticModels/Superpro.js +24 -0
  100. package/{build → dist/cjs}/staticModels/SuperproToken.d.ts +1 -1
  101. package/dist/cjs/staticModels/SuperproToken.js +154 -0
  102. package/{build → dist/cjs}/staticModels/TeeOffers.d.ts +1 -1
  103. package/dist/cjs/staticModels/TeeOffers.js +344 -0
  104. package/dist/cjs/store.js +17 -0
  105. package/{build → dist/cjs}/tee/QuoteParser.d.ts +1 -1
  106. package/dist/cjs/tee/QuoteParser.js +189 -0
  107. package/{build → dist/cjs}/tee/QuoteValidator.d.ts +1 -1
  108. package/dist/cjs/tee/QuoteValidator.js +414 -0
  109. package/{build → dist/cjs}/tee/errors.js +1 -1
  110. package/dist/cjs/tee/helpers.js +119 -0
  111. package/{build → dist/cjs}/tee/interface.d.ts +1 -1
  112. package/{build → dist/cjs}/tee/interface.js +1 -1
  113. package/{build → dist/cjs}/tee/statuses.js +1 -1
  114. package/{build → dist/cjs}/tee/types.js +1 -1
  115. package/{build → dist/cjs}/types/Compressor.js +1 -1
  116. package/{build → dist/cjs}/types/Consensus.d.ts +1 -1
  117. package/{build → dist/cjs}/types/Consensus.js +1 -1
  118. package/{build → dist/cjs}/types/DepositInfo.d.ts +1 -1
  119. package/{build → dist/cjs}/types/DepositInfo.js +1 -1
  120. package/{build → dist/cjs}/types/EtlModel.js +1 -1
  121. package/{build → dist/cjs}/types/Events.d.ts +2 -2
  122. package/{build → dist/cjs}/types/Events.js +1 -1
  123. package/dist/cjs/types/HardwareInfo.d.ts +6 -0
  124. package/{build → dist/cjs}/types/HardwareInfo.js +1 -1
  125. package/{build → dist/cjs}/types/Marks.js +1 -1
  126. package/{build → dist/cjs}/types/Offer.d.ts +1 -1
  127. package/{build → dist/cjs}/types/Offer.js +1 -1
  128. package/{build → dist/cjs}/types/OptionInfo.js +1 -1
  129. package/{build → dist/cjs}/types/Order.d.ts +1 -1
  130. package/{build → dist/cjs}/types/Order.js +1 -1
  131. package/{build → dist/cjs}/types/OrderUsage.d.ts +4 -4
  132. package/{build → dist/cjs}/types/OrderUsage.js +1 -1
  133. package/{build → dist/cjs}/types/Origins.js +1 -1
  134. package/{build → dist/cjs}/types/Provider.js +1 -1
  135. package/{build → dist/cjs}/types/ResourceLoader.d.ts +1 -1
  136. package/{build → dist/cjs}/types/ResourceLoader.js +1 -1
  137. package/{build → dist/cjs}/types/SlotInfo.js +1 -1
  138. package/{build → dist/cjs}/types/SlotUsage.d.ts +1 -1
  139. package/{build → dist/cjs}/types/SlotUsage.js +1 -1
  140. package/{build → dist/cjs}/types/Superpro.js +1 -1
  141. package/{build → dist/cjs}/types/TeeOfferInfo.d.ts +1 -1
  142. package/{build → dist/cjs}/types/TeeOfferInfo.js +1 -1
  143. package/{build → dist/cjs}/types/TeeOfferOption.d.ts +3 -3
  144. package/{build → dist/cjs}/types/TeeOfferOption.js +1 -1
  145. package/dist/cjs/types/TeeOfferSlot.d.ts +8 -0
  146. package/{build → dist/cjs}/types/TeeOfferSlot.js +1 -1
  147. package/{build → dist/cjs}/types/ValueOfferSlot.d.ts +4 -4
  148. package/{build → dist/cjs}/types/ValueOfferSlot.js +1 -1
  149. package/{build → dist/cjs}/types/Web3.js +1 -1
  150. package/{build → dist/cjs}/types/blockchainConnector/StorageAccess.d.ts +1 -1
  151. package/{build → dist/cjs}/types/blockchainConnector/StorageAccess.js +1 -1
  152. package/dist/cjs/types/index.d.ts +22 -0
  153. package/dist/cjs/types/index.js +39 -0
  154. package/{build → dist/cjs}/types/storage/StorageAccess.js +1 -1
  155. package/{build → dist/cjs}/types/storage/StorageFileAccess.d.ts +1 -1
  156. package/{build → dist/cjs}/types/storage/StorageFileAccess.js +1 -1
  157. package/{build → dist/cjs}/types/storage/StorageObject.js +1 -1
  158. package/dist/cjs/utils/Monitoring.js +48 -0
  159. package/{build → dist/cjs}/utils/NonceTracker.js +3 -3
  160. package/dist/cjs/utils/PubSub.js +37 -0
  161. package/{build → dist/cjs}/utils/TxManager.d.ts +1 -1
  162. package/dist/cjs/utils/TxManager.js +179 -0
  163. package/{build → dist/cjs}/utils/compressors/GzipCompressor.d.ts +2 -2
  164. package/{build → dist/cjs}/utils/compressors/GzipCompressor.js +3 -3
  165. package/{build → dist/cjs}/utils/compressors/UncompressedCompressor.d.ts +2 -2
  166. package/dist/cjs/utils/compressors/UncompressedCompressor.js +17 -0
  167. package/dist/cjs/utils/compressors/index.d.ts +2 -0
  168. package/{build → dist/cjs}/utils/compressors/index.js +3 -3
  169. package/{build → dist/cjs}/utils/helper.d.ts +3 -3
  170. package/dist/cjs/utils/helper.js +286 -0
  171. package/{build → dist/cjs}/utils/helpers/getStreamChunks.js +1 -1
  172. package/dist/cjs/utils/helpers/index.d.ts +1 -0
  173. package/{build → dist/cjs}/utils/helpers/index.js +2 -2
  174. package/{build → dist/cjs}/utils/helpers/tryWithInterval.js +1 -1
  175. package/{build → dist/cjs}/utils/resourceLoaders/BaseResourceLoader.d.ts +1 -1
  176. package/{build → dist/cjs}/utils/resourceLoaders/BaseResourceLoader.js +1 -1
  177. package/{build → dist/cjs}/utils/resourceLoaders/StorageProviderLoader.d.ts +2 -2
  178. package/{build → dist/cjs}/utils/resourceLoaders/StorageProviderLoader.js +8 -8
  179. package/{build → dist/cjs}/utils/resourceLoaders/UrlResourceLoader.d.ts +1 -1
  180. package/{build → dist/cjs}/utils/resourceLoaders/UrlResourceLoader.js +3 -3
  181. package/{build → dist/cjs}/utils/resourceLoaders/getResourceLoader.d.ts +1 -1
  182. package/dist/cjs/utils/resourceLoaders/getResourceLoader.js +15 -0
  183. package/dist/cjs/utils/resourceLoaders/index.d.ts +1 -0
  184. package/{build → dist/cjs}/utils/resourceLoaders/index.js +2 -2
  185. package/dist/mjs/TIIGenerator.d.ts +22 -0
  186. package/dist/mjs/TIIGenerator.js +224 -0
  187. package/dist/mjs/analytics/Analytics.d.ts +15 -0
  188. package/dist/mjs/analytics/Analytics.js +61 -0
  189. package/dist/mjs/analytics/AnalyticsError.d.ts +7 -0
  190. package/dist/mjs/analytics/AnalyticsError.js +8 -0
  191. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.d.ts +18 -0
  192. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.js +32 -0
  193. package/dist/mjs/analytics/eventProviders/EventProvider.d.ts +24 -0
  194. package/dist/mjs/analytics/eventProviders/EventProvider.js +22 -0
  195. package/dist/mjs/analytics/eventProviders/NodeEventProvider.d.ts +22 -0
  196. package/dist/mjs/analytics/eventProviders/NodeEventProvider.js +50 -0
  197. package/dist/mjs/analytics/transports/AxiosTransport.d.ts +4 -0
  198. package/dist/mjs/analytics/transports/AxiosTransport.js +31 -0
  199. package/dist/mjs/analytics/transports/FetchTransport.d.ts +4 -0
  200. package/dist/mjs/analytics/transports/FetchTransport.js +28 -0
  201. package/dist/mjs/analytics/types.d.ts +22 -0
  202. package/dist/mjs/analytics/types.js +2 -0
  203. package/dist/mjs/config.d.ts +4 -0
  204. package/dist/mjs/config.js +5 -0
  205. package/dist/mjs/connectors/BaseConnector.d.ts +36 -0
  206. package/dist/mjs/connectors/BaseConnector.js +34 -0
  207. package/dist/mjs/connectors/BlockchainConnector.d.ts +81 -0
  208. package/dist/mjs/connectors/BlockchainConnector.js +313 -0
  209. package/dist/mjs/connectors/BlockchainEventsListener.d.ts +15 -0
  210. package/dist/mjs/connectors/BlockchainEventsListener.js +75 -0
  211. package/dist/mjs/connectors/index.d.ts +2 -0
  212. package/dist/mjs/connectors/index.js +3 -0
  213. package/dist/mjs/constants.d.ts +13 -0
  214. package/dist/mjs/constants.js +14 -0
  215. package/dist/mjs/contracts/abi.d.ts +9916 -0
  216. package/dist/mjs/contracts/abi.js +12941 -0
  217. package/dist/mjs/crypto/Crypto.d.ts +54 -0
  218. package/dist/mjs/crypto/Crypto.js +95 -0
  219. package/dist/mjs/crypto/index.d.ts +2 -0
  220. package/dist/mjs/crypto/index.js +3 -0
  221. package/dist/mjs/crypto/nodejs/AES.d.ts +24 -0
  222. package/dist/mjs/crypto/nodejs/AES.js +74 -0
  223. package/dist/mjs/crypto/nodejs/ARIA.d.ts +24 -0
  224. package/dist/mjs/crypto/nodejs/ARIA.js +73 -0
  225. package/dist/mjs/crypto/nodejs/ECIES.d.ts +6 -0
  226. package/dist/mjs/crypto/nodejs/ECIES.js +51 -0
  227. package/dist/mjs/crypto/nodejs/NativeCrypto.d.ts +58 -0
  228. package/dist/mjs/crypto/nodejs/NativeCrypto.js +168 -0
  229. package/dist/mjs/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
  230. package/dist/mjs/crypto/nodejs/RSA-Hybrid.js +89 -0
  231. package/dist/mjs/index.d.ts +79 -0
  232. package/dist/mjs/index.js +75 -0
  233. package/dist/mjs/logger.d.ts +7 -0
  234. package/dist/mjs/logger.js +7 -0
  235. package/dist/mjs/models/EtlModel.d.ts +34 -0
  236. package/dist/mjs/models/EtlModel.js +96 -0
  237. package/dist/mjs/models/Offer.d.ts +130 -0
  238. package/dist/mjs/models/Offer.js +356 -0
  239. package/dist/mjs/models/Order.d.ts +148 -0
  240. package/dist/mjs/models/Order.js +520 -0
  241. package/dist/mjs/models/Provider.d.ts +51 -0
  242. package/dist/mjs/models/Provider.js +114 -0
  243. package/dist/mjs/models/TCB.d.ts +58 -0
  244. package/dist/mjs/models/TCB.js +107 -0
  245. package/dist/mjs/models/TeeOffer.d.ts +204 -0
  246. package/dist/mjs/models/TeeOffer.js +533 -0
  247. package/dist/mjs/models/index.d.ts +5 -0
  248. package/dist/mjs/models/index.js +6 -0
  249. package/dist/mjs/package.json +1 -0
  250. package/dist/mjs/polyfills.d.ts +0 -0
  251. package/dist/mjs/polyfills.js +7 -0
  252. package/dist/mjs/proto/Compression.d.ts +36 -0
  253. package/dist/mjs/proto/Compression.js +123 -0
  254. package/dist/mjs/proto/TRI.d.ts +124 -0
  255. package/dist/mjs/proto/TRI.js +284 -0
  256. package/dist/mjs/proto/TeeProperties.d.ts +263 -0
  257. package/dist/mjs/proto/TeeProperties.js +391 -0
  258. package/dist/mjs/providers/storage/ChunksDownloadDecorator.d.ts +36 -0
  259. package/dist/mjs/providers/storage/ChunksDownloadDecorator.js +139 -0
  260. package/dist/mjs/providers/storage/IStorageProvider.d.ts +15 -0
  261. package/dist/mjs/providers/storage/IStorageProvider.js +2 -0
  262. package/dist/mjs/providers/storage/S3StorageProvider.d.ts +25 -0
  263. package/dist/mjs/providers/storage/S3StorageProvider.js +167 -0
  264. package/dist/mjs/providers/storage/StorageAdapter.d.ts +60 -0
  265. package/dist/mjs/providers/storage/StorageAdapter.js +271 -0
  266. package/dist/mjs/providers/storage/StorageContentWriter.d.ts +46 -0
  267. package/dist/mjs/providers/storage/StorageContentWriter.js +161 -0
  268. package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +23 -0
  269. package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +119 -0
  270. package/dist/mjs/providers/storage/StorageMetadataReader.d.ts +20 -0
  271. package/dist/mjs/providers/storage/StorageMetadataReader.js +51 -0
  272. package/dist/mjs/providers/storage/StorjAdapter.d.ts +19 -0
  273. package/dist/mjs/providers/storage/StorjAdapter.js +48 -0
  274. package/dist/mjs/providers/storage/StorjStorageProvider.d.ts +25 -0
  275. package/dist/mjs/providers/storage/StorjStorageProvider.js +141 -0
  276. package/dist/mjs/providers/storage/getStorageProvider.d.ts +4 -0
  277. package/dist/mjs/providers/storage/getStorageProvider.js +15 -0
  278. package/dist/mjs/providers/storage/types.d.ts +7 -0
  279. package/dist/mjs/providers/storage/types.js +2 -0
  280. package/dist/mjs/staticModels/ActiveOffers.d.ts +15 -0
  281. package/dist/mjs/staticModels/ActiveOffers.js +32 -0
  282. package/dist/mjs/staticModels/ActiveOrders.d.ts +20 -0
  283. package/dist/mjs/staticModels/ActiveOrders.js +71 -0
  284. package/dist/mjs/staticModels/Consensus.d.ts +42 -0
  285. package/dist/mjs/staticModels/Consensus.js +220 -0
  286. package/dist/mjs/staticModels/Deposits.d.ts +70 -0
  287. package/dist/mjs/staticModels/Deposits.js +190 -0
  288. package/dist/mjs/staticModels/Marks.d.ts +8 -0
  289. package/dist/mjs/staticModels/Marks.js +25 -0
  290. package/dist/mjs/staticModels/ModelPackager.d.ts +18 -0
  291. package/dist/mjs/staticModels/ModelPackager.js +45 -0
  292. package/dist/mjs/staticModels/Offers.d.ts +65 -0
  293. package/dist/mjs/staticModels/Offers.js +184 -0
  294. package/dist/mjs/staticModels/Orders.d.ts +155 -0
  295. package/dist/mjs/staticModels/Orders.js +472 -0
  296. package/dist/mjs/staticModels/ProviderRegistry.d.ts +74 -0
  297. package/dist/mjs/staticModels/ProviderRegistry.js +169 -0
  298. package/dist/mjs/staticModels/StaticModel.d.ts +8 -0
  299. package/dist/mjs/staticModels/StaticModel.js +30 -0
  300. package/dist/mjs/staticModels/Superpro.d.ts +16 -0
  301. package/dist/mjs/staticModels/Superpro.js +23 -0
  302. package/dist/mjs/staticModels/SuperproToken.d.ts +48 -0
  303. package/dist/mjs/staticModels/SuperproToken.js +136 -0
  304. package/dist/mjs/staticModels/TeeOffers.d.ts +115 -0
  305. package/dist/mjs/staticModels/TeeOffers.js +309 -0
  306. package/dist/mjs/store.d.ts +15 -0
  307. package/dist/mjs/store.js +15 -0
  308. package/dist/mjs/tee/QuoteParser.d.ts +27 -0
  309. package/dist/mjs/tee/QuoteParser.js +162 -0
  310. package/dist/mjs/tee/QuoteValidator.d.ts +38 -0
  311. package/dist/mjs/tee/QuoteValidator.js +382 -0
  312. package/dist/mjs/tee/errors.d.ts +6 -0
  313. package/dist/mjs/tee/errors.js +7 -0
  314. package/dist/mjs/tee/helpers.d.ts +14 -0
  315. package/dist/mjs/tee/helpers.js +115 -0
  316. package/dist/mjs/tee/interface.d.ts +63 -0
  317. package/dist/mjs/tee/interface.js +2 -0
  318. package/dist/mjs/tee/statuses.d.ts +21 -0
  319. package/dist/mjs/tee/statuses.js +25 -0
  320. package/dist/mjs/tee/types.d.ts +75 -0
  321. package/dist/mjs/tee/types.js +2 -0
  322. package/dist/mjs/types/Compressor.d.ts +5 -0
  323. package/dist/mjs/types/Compressor.js +2 -0
  324. package/dist/mjs/types/Consensus.d.ts +60 -0
  325. package/dist/mjs/types/Consensus.js +16 -0
  326. package/dist/mjs/types/DepositInfo.d.ts +6 -0
  327. package/dist/mjs/types/DepositInfo.js +2 -0
  328. package/dist/mjs/types/EtlModel.d.ts +2 -0
  329. package/dist/mjs/types/EtlModel.js +2 -0
  330. package/dist/mjs/types/Events.d.ts +34 -0
  331. package/dist/mjs/types/Events.js +2 -0
  332. package/dist/mjs/types/HardwareInfo.d.ts +6 -0
  333. package/dist/mjs/types/HardwareInfo.js +2 -0
  334. package/dist/mjs/types/Marks.d.ts +9 -0
  335. package/dist/mjs/types/Marks.js +7 -0
  336. package/dist/mjs/types/Offer.d.ts +33 -0
  337. package/dist/mjs/types/Offer.js +14 -0
  338. package/dist/mjs/types/OptionInfo.d.ts +8 -0
  339. package/dist/mjs/types/OptionInfo.js +2 -0
  340. package/dist/mjs/types/Order.d.ts +56 -0
  341. package/dist/mjs/types/Order.js +51 -0
  342. package/dist/mjs/types/OrderUsage.d.ts +26 -0
  343. package/dist/mjs/types/OrderUsage.js +2 -0
  344. package/dist/mjs/types/Origins.d.ts +6 -0
  345. package/dist/mjs/types/Origins.js +2 -0
  346. package/dist/mjs/types/Provider.d.ts +7 -0
  347. package/dist/mjs/types/Provider.js +2 -0
  348. package/dist/mjs/types/ResourceLoader.d.ts +28 -0
  349. package/dist/mjs/types/ResourceLoader.js +2 -0
  350. package/dist/mjs/types/SlotInfo.d.ts +6 -0
  351. package/dist/mjs/types/SlotInfo.js +2 -0
  352. package/dist/mjs/types/SlotUsage.d.ts +11 -0
  353. package/dist/mjs/types/SlotUsage.js +6 -0
  354. package/dist/mjs/types/Superpro.d.ts +9 -0
  355. package/dist/mjs/types/Superpro.js +11 -0
  356. package/dist/mjs/types/TeeOfferInfo.d.ts +10 -0
  357. package/dist/mjs/types/TeeOfferInfo.js +2 -0
  358. package/dist/mjs/types/TeeOfferOption.d.ts +13 -0
  359. package/dist/mjs/types/TeeOfferOption.js +2 -0
  360. package/dist/mjs/types/TeeOfferSlot.d.ts +8 -0
  361. package/dist/mjs/types/TeeOfferSlot.js +2 -0
  362. package/dist/mjs/types/ValueOfferSlot.d.ts +16 -0
  363. package/dist/mjs/types/ValueOfferSlot.js +2 -0
  364. package/dist/mjs/types/Web3.d.ts +62 -0
  365. package/dist/mjs/types/Web3.js +2 -0
  366. package/dist/mjs/types/blockchainConnector/StorageAccess.d.ts +8 -0
  367. package/dist/mjs/types/blockchainConnector/StorageAccess.js +2 -0
  368. package/dist/mjs/types/index.d.ts +22 -0
  369. package/dist/mjs/types/index.js +23 -0
  370. package/dist/mjs/types/storage/StorageAccess.d.ts +7 -0
  371. package/dist/mjs/types/storage/StorageAccess.js +2 -0
  372. package/dist/mjs/types/storage/StorageFileAccess.d.ts +5 -0
  373. package/dist/mjs/types/storage/StorageFileAccess.js +2 -0
  374. package/dist/mjs/types/storage/StorageObject.d.ts +8 -0
  375. package/dist/mjs/types/storage/StorageObject.js +2 -0
  376. package/dist/mjs/utils/Monitoring.d.ts +11 -0
  377. package/dist/mjs/utils/Monitoring.js +42 -0
  378. package/dist/mjs/utils/NonceTracker.d.ts +19 -0
  379. package/dist/mjs/utils/NonceTracker.js +73 -0
  380. package/dist/mjs/utils/PubSub.d.ts +9 -0
  381. package/dist/mjs/utils/PubSub.js +32 -0
  382. package/dist/mjs/utils/TxManager.d.ts +25 -0
  383. package/dist/mjs/utils/TxManager.js +162 -0
  384. package/dist/mjs/utils/compressors/GzipCompressor.d.ts +8 -0
  385. package/dist/mjs/utils/compressors/GzipCompressor.js +14 -0
  386. package/dist/mjs/utils/compressors/UncompressedCompressor.d.ts +8 -0
  387. package/dist/mjs/utils/compressors/UncompressedCompressor.js +13 -0
  388. package/dist/mjs/utils/compressors/index.d.ts +2 -0
  389. package/dist/mjs/utils/compressors/index.js +3 -0
  390. package/dist/mjs/utils/helper.d.ts +44 -0
  391. package/dist/mjs/utils/helper.js +258 -0
  392. package/dist/mjs/utils/helpers/getStreamChunks.d.ts +9 -0
  393. package/dist/mjs/utils/helpers/getStreamChunks.js +31 -0
  394. package/dist/mjs/utils/helpers/index.d.ts +1 -0
  395. package/dist/mjs/utils/helpers/index.js +2 -0
  396. package/dist/mjs/utils/helpers/tryWithInterval.d.ts +13 -0
  397. package/dist/mjs/utils/helpers/tryWithInterval.js +35 -0
  398. package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.d.ts +10 -0
  399. package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.js +10 -0
  400. package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.d.ts +18 -0
  401. package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.js +53 -0
  402. package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.d.ts +9 -0
  403. package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.js +44 -0
  404. package/dist/mjs/utils/resourceLoaders/getResourceLoader.d.ts +5 -0
  405. package/dist/mjs/utils/resourceLoaders/getResourceLoader.js +11 -0
  406. package/dist/mjs/utils/resourceLoaders/index.d.ts +1 -0
  407. package/dist/mjs/utils/resourceLoaders/index.js +2 -0
  408. package/package.json +13 -5
  409. package/build/TIIGenerator.js +0 -246
  410. package/build/analytics/Analytics.js +0 -74
  411. package/build/analytics/eventProviders/EventProvider.js +0 -14
  412. package/build/analytics/eventProviders/NodeEventProvider.js +0 -48
  413. package/build/analytics/transports/FetchTransport.js +0 -42
  414. package/build/connectors/BlockchainConnector.js +0 -358
  415. package/build/crypto/Crypto.js +0 -119
  416. package/build/crypto/index.d.ts +0 -2
  417. package/build/crypto/nodejs/NativeCrypto.js +0 -183
  418. package/build/crypto/nodejs/RSA-Hybrid.js +0 -95
  419. package/build/index.d.ts +0 -79
  420. package/build/index.js +0 -142
  421. package/build/models/Offer.js +0 -407
  422. package/build/models/Order.js +0 -577
  423. package/build/models/Provider.js +0 -137
  424. package/build/models/TCB.js +0 -135
  425. package/build/models/TeeOffer.js +0 -600
  426. package/build/models/index.d.ts +0 -5
  427. package/build/models/index.js +0 -17
  428. package/build/polyfills.js +0 -7
  429. package/build/proto/Compression.js +0 -132
  430. package/build/proto/TRI.js +0 -293
  431. package/build/proto/TeeProperties.js +0 -401
  432. package/build/providers/storage/StorageAdapter.js +0 -323
  433. package/build/providers/storage/getStorageProvider.d.ts +0 -4
  434. package/build/providers/storage/getStorageProvider.js +0 -20
  435. package/build/staticModels/Consensus.js +0 -247
  436. package/build/staticModels/Deposits.js +0 -214
  437. package/build/staticModels/Marks.js +0 -43
  438. package/build/staticModels/Offers.js +0 -207
  439. package/build/staticModels/Orders.js +0 -502
  440. package/build/staticModels/StaticModel.js +0 -46
  441. package/build/staticModels/Superpro.js +0 -24
  442. package/build/staticModels/SuperproToken.js +0 -154
  443. package/build/staticModels/TeeOffers.js +0 -344
  444. package/build/store.js +0 -17
  445. package/build/tee/QuoteParser.js +0 -189
  446. package/build/tee/QuoteValidator.js +0 -414
  447. package/build/tee/helpers.js +0 -119
  448. package/build/types/HardwareInfo.d.ts +0 -6
  449. package/build/types/TeeOfferSlot.d.ts +0 -8
  450. package/build/types/index.d.ts +0 -22
  451. package/build/types/index.js +0 -39
  452. package/build/utils/Monitoring.js +0 -48
  453. package/build/utils/PubSub.js +0 -37
  454. package/build/utils/TxManager.js +0 -179
  455. package/build/utils/compressors/UncompressedCompressor.js +0 -17
  456. package/build/utils/compressors/index.d.ts +0 -2
  457. package/build/utils/helper.js +0 -286
  458. package/build/utils/helpers/index.d.ts +0 -1
  459. package/build/utils/resourceLoaders/getResourceLoader.js +0 -15
  460. package/build/utils/resourceLoaders/index.d.ts +0 -1
  461. /package/{build → dist/cjs}/analytics/AnalyticsError.d.ts +0 -0
  462. /package/{build → dist/cjs}/analytics/eventProviders/EventProvider.d.ts +0 -0
  463. /package/{build → dist/cjs}/config.d.ts +0 -0
  464. /package/{build → dist/cjs}/constants.d.ts +0 -0
  465. /package/{build → dist/cjs}/contracts/abi.d.ts +0 -0
  466. /package/{build → dist/cjs}/crypto/Crypto.d.ts +0 -0
  467. /package/{build → dist/cjs}/crypto/nodejs/AES.d.ts +0 -0
  468. /package/{build → dist/cjs}/crypto/nodejs/ARIA.d.ts +0 -0
  469. /package/{build → dist/cjs}/crypto/nodejs/ECIES.d.ts +0 -0
  470. /package/{build → dist/cjs}/crypto/nodejs/NativeCrypto.d.ts +0 -0
  471. /package/{build → dist/cjs}/crypto/nodejs/RSA-Hybrid.d.ts +0 -0
  472. /package/{build → dist/cjs}/logger.d.ts +0 -0
  473. /package/{build → dist/cjs}/polyfills.d.ts +0 -0
  474. /package/{build → dist/cjs}/proto/Compression.d.ts +0 -0
  475. /package/{build → dist/cjs}/proto/TRI.d.ts +0 -0
  476. /package/{build → dist/cjs}/proto/TeeProperties.d.ts +0 -0
  477. /package/{build → dist/cjs}/providers/storage/types.d.ts +0 -0
  478. /package/{build → dist/cjs}/staticModels/ModelPackager.d.ts +0 -0
  479. /package/{build → dist/cjs}/store.d.ts +0 -0
  480. /package/{build → dist/cjs}/tee/errors.d.ts +0 -0
  481. /package/{build → dist/cjs}/tee/helpers.d.ts +0 -0
  482. /package/{build → dist/cjs}/tee/statuses.d.ts +0 -0
  483. /package/{build → dist/cjs}/tee/types.d.ts +0 -0
  484. /package/{build → dist/cjs}/types/Compressor.d.ts +0 -0
  485. /package/{build → dist/cjs}/types/EtlModel.d.ts +0 -0
  486. /package/{build → dist/cjs}/types/Marks.d.ts +0 -0
  487. /package/{build → dist/cjs}/types/OptionInfo.d.ts +0 -0
  488. /package/{build → dist/cjs}/types/Origins.d.ts +0 -0
  489. /package/{build → dist/cjs}/types/Provider.d.ts +0 -0
  490. /package/{build → dist/cjs}/types/SlotInfo.d.ts +0 -0
  491. /package/{build → dist/cjs}/types/Superpro.d.ts +0 -0
  492. /package/{build → dist/cjs}/types/Web3.d.ts +0 -0
  493. /package/{build → dist/cjs}/types/storage/StorageAccess.d.ts +0 -0
  494. /package/{build → dist/cjs}/types/storage/StorageObject.d.ts +0 -0
  495. /package/{build → dist/cjs}/utils/Monitoring.d.ts +0 -0
  496. /package/{build → dist/cjs}/utils/NonceTracker.d.ts +0 -0
  497. /package/{build → dist/cjs}/utils/PubSub.d.ts +0 -0
  498. /package/{build → dist/cjs}/utils/helpers/getStreamChunks.d.ts +0 -0
  499. /package/{build → dist/cjs}/utils/helpers/tryWithInterval.d.ts +0 -0
@@ -0,0 +1,155 @@
1
+ import { OrderInfo, OrderStatus, BlockInfo, TransactionOptions, OrderCreatedEvent, BlockchainId, TokenAmount, OrderSlots, OrderUsage, SlotInfo, SlotUsage, OptionInfo } from '../types/index.js';
2
+ import StaticModel from './StaticModel.js';
3
+ declare class Orders implements StaticModel {
4
+ private static readonly logger;
5
+ static orders?: BlockchainId[];
6
+ static get address(): string;
7
+ /**
8
+ * Function for fetching list of all orders ids
9
+ * @returns list of orders ids
10
+ */
11
+ static getAll(): Promise<BlockchainId[]>;
12
+ /**
13
+ * Function for fetching orders count
14
+ */
15
+ static getCount(): Promise<number>;
16
+ /**
17
+ * Function for creating orders
18
+ * @param orderInfo - order info for new order
19
+ * @param suspended - is orders suspended
20
+ * @param transactionOptions - object what contains alternative action account or gas limit (optional)
21
+ * @returns {Promise<void>} - Does not return id of created order!
22
+ */
23
+ static createOrder(orderInfo: OrderInfo, slots: OrderSlots, deposit?: TokenAmount, suspended?: boolean, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<void>;
24
+ static getByExternalId(filter: {
25
+ externalId: string;
26
+ consumer?: string;
27
+ }, fromBlock?: number | string, toBlock?: number | string): Promise<OrderCreatedEvent | null>;
28
+ /**
29
+ * Function for create workflow
30
+ * @param parentOrderInfo - order info for new order
31
+ * @param subOrdersInfo - array of sub orders infos
32
+ * @param externalId - external id
33
+ * @param transactionOptions - object what contains alternative action account or gas limit (optional)
34
+ * @returns {Promise<void>} - Does not return id of created order!
35
+ */
36
+ static createWorkflow(parentOrderInfo: OrderInfo, parentOrderSlot: OrderSlots, subOrdersInfo: OrderInfo[], subOrdersSlots: OrderSlots[], workflowDeposit: TokenAmount, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<void>;
37
+ /**
38
+ * Function for cancel workflow
39
+ * @param parentOrderId - Parent order id
40
+ * @returns {Promise<void>} - Does not return id of created order!
41
+ */
42
+ static cancelWorkflow(perentOrderId: BlockchainId, transactionOptions?: TransactionOptions): Promise<void>;
43
+ /**
44
+ * Function for refilling order deposit
45
+ * @param orderId - order id
46
+ * @param amount - amount of tokens to refilling
47
+ * @param transactionOptions - object what contains alternative action account or gas limit (optional)
48
+ */
49
+ static refillOrderDeposit(orderId: BlockchainId, amount: TokenAmount, transactionOptions?: TransactionOptions): Promise<void>;
50
+ static unlockProfitByOrderList(orderIds: BlockchainId[], transactionOptions?: TransactionOptions): Promise<void>;
51
+ /**
52
+ * Function for adding event listeners on order created event in orders factory contract
53
+ * @param callback - function for processing created order
54
+ * @returns unsubscribe - unsubscribe function from event
55
+ */
56
+ static onCreated(callback: onOrderCreatedCallback): () => void;
57
+ /**
58
+ * Function for adding event listeners on order started event in orders contract
59
+ * @param callback - function for processing suborder filled event
60
+ * @param orderId - order id
61
+ * @returns unsubscribe - unsubscribe function from event
62
+ */
63
+ static onStarted(callback: onOrderStartedCallback, orderId?: bigint): () => void;
64
+ /**
65
+ * Function for adding event listeners on order updated status event in orders contract
66
+ * @param callback - function for processing order updated status event
67
+ * @param orderId - order id
68
+ * @returns unsubscribe - unsubscribe function from event
69
+ */
70
+ static onStatusUpdated(callback: onOrdersStatusUpdatedCallback, orderId?: BlockchainId): () => void;
71
+ /**
72
+ * Function for adding event listeners on order refilled event in orders contract
73
+ * @param callback - function for processing order refilled event
74
+ * @param consumer - consumer address
75
+ * @param orderId - order id
76
+ * @returns unsubscribe - unsubscribe function from event
77
+ */
78
+ static onDepositRefilled(callback: onOrderDepositRefilledCallback, consumer?: string, orderId?: BlockchainId): () => void;
79
+ /**
80
+ * Function for adding event listeners on order changed withdrawn event in orders contract
81
+ * @param callback - function for processing order changed withdrawn event
82
+ * @param orderId - order id
83
+ * @returns unsubscribe - unsubscribe function from event
84
+ */
85
+ static onChangedWithdrawn(callback: onOrderChangeWithdrawnCallback, orderId?: BlockchainId): () => void;
86
+ /**
87
+ * Function for adding event listeners on order changed refunded event in orders contract
88
+ * @param callback - function for processing order changed refunded event
89
+ * @param tokenReceiver - token receiver address
90
+ * @param orderId - order id
91
+ * @returns unsubscribe - unsubscribe function from event
92
+ */
93
+ static onProfitWithdrawn(callback: onOrderProfitWithdrawnCallback, orderId?: BlockchainId, tokenReceiver?: string): () => void;
94
+ /**
95
+ * Function for adding event listeners on order awaiting payment event in orders contract
96
+ * @param callback - function for processing order awaiting payment event
97
+ * @param consumer - order creator address
98
+ * @param orderId - order id
99
+ * @returns unsubscribe - unsubscribe function from event
100
+ */
101
+ static onAwaitingPaymentChanged(callback: onOrderAwaitingPaymentChangedCallback, consumer?: string, orderId?: BlockchainId): () => void;
102
+ /**
103
+ * Function for adding event listeners on order encrypted result updated event in orders contract
104
+ * @param callback - function for processing order encrypted result updated event
105
+ * @param consumer - order creator address
106
+ * @param orderId - order id
107
+ * @returns unsubscribe - unsubscribe function from event
108
+ */
109
+ static onEncryptedResultUpdated(callback: onOrderEncryptedResultUpdatedCallback, consumer?: string, orderId?: BlockchainId): () => void;
110
+ /**
111
+ * Function for adding event listeners on OrderOptionsDepositSpentChanged event in orders contract
112
+ * @param callback - function for processing order encrypted result updated event
113
+ * @param consumer - order creator address
114
+ * @param orderId - order id
115
+ * @returns unsubscribe - unsubscribe function from event
116
+ */
117
+ static onOptionsDepositSpentChanged(callback: onOrderOptionsDepositSpentChangedCallback, consumer?: string, orderId?: BlockchainId): () => void;
118
+ /**
119
+ * Function for adding event listeners on onOrderProfitUnlocked event in orders contract
120
+ * @param callback - function for processing order encrypted result updated event
121
+ * @param tokenReceiver - tokenReceiver
122
+ * @param orderId - order id
123
+ * @returns unsubscribe - unsubscribe function from event
124
+ */
125
+ static onOProfitUnlocked(callback: onOrderProfitUnlockedCallback, tokenReceiver?: string, orderId?: BlockchainId): () => void;
126
+ /**
127
+ * Function that calculates resource needed for order
128
+ * @param selectedUsage - structure that order.getSelectedUsage() method returns
129
+ * @returns calculated resources
130
+ */
131
+ static accumulatedSlotInfo(selectedUsage: OrderUsage): SlotInfo;
132
+ /**
133
+ * Function that calculates total price for slot usage
134
+ * @param selectedUsage - structure that order.getSelectedUsage() method returns
135
+ * @returns slotUsage with totalPrices
136
+ */
137
+ static accumulatedSlotUsage(selectedUsage: OrderUsage): SlotUsage;
138
+ /**
139
+ * function that calculated requested options for order run
140
+ * @param selectedUsage - structure that order.getSelectedUsage() method returns
141
+ * @returns calculated options
142
+ */
143
+ static accumulatedOptionsInfo(selectedUsage: OrderUsage): OptionInfo;
144
+ }
145
+ export type onOrderStartedCallback = (orderId: BlockchainId, consumer: string, block?: BlockInfo) => void;
146
+ export type onOrdersStatusUpdatedCallback = (orderId: BlockchainId, status: OrderStatus, block?: BlockInfo) => void;
147
+ export type onOrderCreatedCallback = (consumer: string, externalId: string, offerId: BlockchainId, parentOrderId: BlockchainId, orderId: BlockchainId, deposit: TokenAmount, orderStatus: OrderStatus, block?: BlockInfo) => void;
148
+ export type onOrderDepositRefilledCallback = (orderId: BlockchainId, consumer: string, amount: TokenAmount, block?: BlockInfo) => void;
149
+ export type onOrderChangeWithdrawnCallback = (orderId: BlockchainId, consumer: string, change: TokenAmount, block?: BlockInfo) => void;
150
+ export type onOrderProfitWithdrawnCallback = (orderId: BlockchainId, tokenReceiver: string, profit: TokenAmount, block?: BlockInfo) => void;
151
+ export type onOrderAwaitingPaymentChangedCallback = (orderId: BlockchainId, consumer: string, awaitingPaymentFlag: boolean, block?: BlockInfo) => void;
152
+ export type onOrderEncryptedResultUpdatedCallback = (orderId: BlockchainId, consumer: string, encryptedResult: string, block?: BlockInfo) => void;
153
+ export type onOrderOptionsDepositSpentChangedCallback = (consumer: string, orderId: BlockchainId, value: TokenAmount, block?: BlockInfo) => void;
154
+ export type onOrderProfitUnlockedCallback = (tokenReceiver: string, orderId: BlockchainId, profit: TokenAmount, block?: BlockInfo) => void;
155
+ export default Orders;
@@ -0,0 +1,472 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { parseBytes32String } from 'ethers/lib/utils';
11
+ import rootLogger from '../logger.js';
12
+ import { checkIfActionAccountInitialized, cleanWeb3Data, convertBigIntToString, incrementMethodCall, } from '../utils/helper.js';
13
+ import { orderInfoToRaw, } from '../types/index.js';
14
+ import Superpro from './Superpro.js';
15
+ import TxManager from '../utils/TxManager.js';
16
+ import { BlockchainConnector, BlockchainEventsListener } from '../connectors/index.js';
17
+ import { Order } from '../models/index.js';
18
+ import StaticModel from './StaticModel.js';
19
+ class Orders {
20
+ static logger = rootLogger.child({ className: 'Orders' });
21
+ static orders;
22
+ static get address() {
23
+ return Superpro.address;
24
+ }
25
+ /**
26
+ * Function for fetching list of all orders ids
27
+ * @returns list of orders ids
28
+ */
29
+ static async getAll() {
30
+ const contract = BlockchainConnector.getInstance().getContract();
31
+ this.orders = this.orders ?? [];
32
+ const ordersSet = new Set(this.orders);
33
+ const ordersCount = Number(await contract.methods.getOrdersCount().call());
34
+ for (let orderId = ordersSet.size + 1; orderId <= ordersCount; orderId++) {
35
+ ordersSet.add(orderId.toString());
36
+ }
37
+ this.orders = Array.from(ordersSet);
38
+ return this.orders;
39
+ }
40
+ /**
41
+ * Function for fetching orders count
42
+ */
43
+ static async getCount() {
44
+ const contract = BlockchainConnector.getInstance().getContract();
45
+ return Number(await contract.methods.getOrdersCount().call());
46
+ }
47
+ /**
48
+ * Function for creating orders
49
+ * @param orderInfo - order info for new order
50
+ * @param suspended - is orders suspended
51
+ * @param transactionOptions - object what contains alternative action account or gas limit (optional)
52
+ * @returns {Promise<void>} - Does not return id of created order!
53
+ */
54
+ static async createOrder(orderInfo, slots, deposit, suspended = false, transactionOptions, checkTxBeforeSend = false) {
55
+ const contract = BlockchainConnector.getInstance().getContract();
56
+ checkIfActionAccountInitialized(transactionOptions);
57
+ deposit = deposit ?? '0';
58
+ const args = orderInfo.args;
59
+ const orderInfoArguments = orderInfoToRaw(orderInfo);
60
+ if (checkTxBeforeSend) {
61
+ await TxManager.dryRun(contract.methods.createOrder(orderInfoArguments, slots, args, deposit, suspended), transactionOptions);
62
+ }
63
+ await TxManager.execute(contract.methods.createOrder(orderInfoArguments, slots, args, deposit, suspended), transactionOptions);
64
+ }
65
+ static async getByExternalId(filter, fromBlock, toBlock) {
66
+ const founded = await StaticModel.findItemsById('OrderCreated', filter, fromBlock, toBlock);
67
+ if (!founded)
68
+ return null;
69
+ return founded;
70
+ }
71
+ /**
72
+ * Function for create workflow
73
+ * @param parentOrderInfo - order info for new order
74
+ * @param subOrdersInfo - array of sub orders infos
75
+ * @param externalId - external id
76
+ * @param transactionOptions - object what contains alternative action account or gas limit (optional)
77
+ * @returns {Promise<void>} - Does not return id of created order!
78
+ */
79
+ static async createWorkflow(parentOrderInfo, parentOrderSlot, subOrdersInfo, subOrdersSlots, workflowDeposit, transactionOptions, checkTxBeforeSend = false) {
80
+ const contract = BlockchainConnector.getInstance().getContract();
81
+ checkIfActionAccountInitialized(transactionOptions);
82
+ workflowDeposit = workflowDeposit ?? '0';
83
+ const parentArgs = parentOrderInfo.args;
84
+ const parentOrderInfoArgs = orderInfoToRaw(parentOrderInfo);
85
+ const subOrdersArgs = subOrdersInfo.map((i) => i.args);
86
+ const subOrdersInfoArgs = subOrdersInfo.map((o) => orderInfoToRaw(o));
87
+ if (checkTxBeforeSend) {
88
+ await TxManager.dryRun(contract.methods.createWorkflow(parentOrderInfoArgs, parentOrderSlot, parentArgs, workflowDeposit, subOrdersInfoArgs, subOrdersSlots, subOrdersArgs), transactionOptions);
89
+ }
90
+ await TxManager.execute(contract.methods.createWorkflow(parentOrderInfoArgs, parentOrderSlot, parentArgs, workflowDeposit, subOrdersInfoArgs, subOrdersSlots, subOrdersArgs), transactionOptions);
91
+ }
92
+ /**
93
+ * Function for cancel workflow
94
+ * @param parentOrderId - Parent order id
95
+ * @returns {Promise<void>} - Does not return id of created order!
96
+ */
97
+ static async cancelWorkflow(perentOrderId, transactionOptions) {
98
+ const contract = BlockchainConnector.getInstance().getContract();
99
+ checkIfActionAccountInitialized(transactionOptions);
100
+ await TxManager.execute(contract.methods.cancelWorkflow(perentOrderId), transactionOptions);
101
+ }
102
+ /**
103
+ * Function for refilling order deposit
104
+ * @param orderId - order id
105
+ * @param amount - amount of tokens to refilling
106
+ * @param transactionOptions - object what contains alternative action account or gas limit (optional)
107
+ */
108
+ static async refillOrderDeposit(orderId, amount, transactionOptions) {
109
+ const contract = BlockchainConnector.getInstance().getContract();
110
+ checkIfActionAccountInitialized(transactionOptions);
111
+ await TxManager.execute(contract.methods.refillOrder(orderId, amount), transactionOptions);
112
+ }
113
+ static async unlockProfitByOrderList(orderIds, transactionOptions) {
114
+ const contract = BlockchainConnector.getInstance().getContract();
115
+ checkIfActionAccountInitialized(transactionOptions);
116
+ let executedCount;
117
+ try {
118
+ executedCount = Number((await TxManager.dryRun(contract.methods.unlockProfitByList(orderIds), transactionOptions)));
119
+ }
120
+ catch (e) {
121
+ executedCount = 0;
122
+ }
123
+ if (executedCount === orderIds.length) {
124
+ await TxManager.execute(contract.methods.unlockProfitByList(orderIds), transactionOptions);
125
+ }
126
+ else {
127
+ for (const orderId of orderIds) {
128
+ await new Order(orderId).unlockProfit();
129
+ }
130
+ }
131
+ }
132
+ /**
133
+ * Function for adding event listeners on order created event in orders factory contract
134
+ * @param callback - function for processing created order
135
+ * @returns unsubscribe - unsubscribe function from event
136
+ */
137
+ static onCreated(callback) {
138
+ const contract = BlockchainEventsListener.getInstance().getContract();
139
+ const logger = this.logger.child({ method: 'onOrderCreated' });
140
+ const subscription = contract.events.OrderCreated();
141
+ subscription.on('data', (event) => {
142
+ const parsedEvent = cleanWeb3Data(event.returnValues);
143
+ callback(parsedEvent.consumer, parseBytes32String(parsedEvent.externalId), parsedEvent.offerId, parsedEvent.parentOrderId, parsedEvent.orderId, parsedEvent.deposit, parsedEvent.status, {
144
+ index: Number(event.blockNumber),
145
+ hash: event.blockHash,
146
+ });
147
+ });
148
+ subscription.on('error', (error) => {
149
+ logger.warn(error);
150
+ });
151
+ return () => subscription.unsubscribe();
152
+ }
153
+ /**
154
+ * Function for adding event listeners on order started event in orders contract
155
+ * @param callback - function for processing suborder filled event
156
+ * @param orderId - order id
157
+ * @returns unsubscribe - unsubscribe function from event
158
+ */
159
+ static onStarted(callback, orderId) {
160
+ const contract = BlockchainEventsListener.getInstance().getContract();
161
+ const logger = this.logger.child({ method: 'onOrderStarted' });
162
+ const subscription = contract.events.OrderStarted();
163
+ subscription.on('data', (event) => {
164
+ const parsedEvent = cleanWeb3Data(event.returnValues);
165
+ if (orderId && parsedEvent.orderId != convertBigIntToString(orderId)) {
166
+ return;
167
+ }
168
+ callback(parsedEvent.orderId, parsedEvent.consumer, {
169
+ index: Number(event.blockNumber),
170
+ hash: event.blockHash,
171
+ });
172
+ });
173
+ subscription.on('error', (error) => {
174
+ logger.warn(error);
175
+ });
176
+ return () => subscription.unsubscribe();
177
+ }
178
+ /**
179
+ * Function for adding event listeners on order updated status event in orders contract
180
+ * @param callback - function for processing order updated status event
181
+ * @param orderId - order id
182
+ * @returns unsubscribe - unsubscribe function from event
183
+ */
184
+ static onStatusUpdated(callback, orderId) {
185
+ const contract = BlockchainEventsListener.getInstance().getContract();
186
+ const logger = this.logger.child({ method: 'onOrdersStatusUpdated' });
187
+ const subscription = contract.events.OrderStatusUpdated();
188
+ subscription.on('data', (event) => {
189
+ const parsedEvent = cleanWeb3Data(event.returnValues);
190
+ if (orderId && parsedEvent.orderId != convertBigIntToString(orderId)) {
191
+ return;
192
+ }
193
+ callback(parsedEvent.orderId, parsedEvent.status, {
194
+ index: Number(event.blockNumber),
195
+ hash: event.blockHash,
196
+ });
197
+ });
198
+ subscription.on('error', (error) => {
199
+ logger.warn(error);
200
+ });
201
+ return () => subscription.unsubscribe();
202
+ }
203
+ /**
204
+ * Function for adding event listeners on order refilled event in orders contract
205
+ * @param callback - function for processing order refilled event
206
+ * @param consumer - consumer address
207
+ * @param orderId - order id
208
+ * @returns unsubscribe - unsubscribe function from event
209
+ */
210
+ static onDepositRefilled(callback, consumer, orderId) {
211
+ const contract = BlockchainEventsListener.getInstance().getContract();
212
+ const logger = this.logger.child({ method: 'onOrderDepositRefilled' });
213
+ const subscription = contract.events.OrderDepositRefilled();
214
+ subscription.on('data', (event) => {
215
+ const parsedEvent = cleanWeb3Data(event.returnValues);
216
+ if (orderId && parsedEvent.orderId != convertBigIntToString(orderId)) {
217
+ return;
218
+ }
219
+ if (consumer && parsedEvent.consumer != consumer) {
220
+ return;
221
+ }
222
+ callback(parsedEvent.orderId, parsedEvent.consumer, parsedEvent.amount, {
223
+ index: Number(event.blockNumber),
224
+ hash: event.blockHash,
225
+ });
226
+ });
227
+ subscription.on('error', (error) => {
228
+ logger.warn(error);
229
+ });
230
+ return () => subscription.unsubscribe();
231
+ }
232
+ /**
233
+ * Function for adding event listeners on order changed withdrawn event in orders contract
234
+ * @param callback - function for processing order changed withdrawn event
235
+ * @param orderId - order id
236
+ * @returns unsubscribe - unsubscribe function from event
237
+ */
238
+ static onChangedWithdrawn(callback, orderId) {
239
+ const contract = BlockchainEventsListener.getInstance().getContract();
240
+ const logger = this.logger.child({ method: 'onOrderChangeWithdrawn' });
241
+ const subscription = contract.events.OrderChangeWithdrawn();
242
+ subscription.on('data', (event) => {
243
+ const parsedEvent = cleanWeb3Data(event.returnValues);
244
+ if (orderId && parsedEvent.orderId != convertBigIntToString(orderId)) {
245
+ return;
246
+ }
247
+ callback(parsedEvent.orderId, parsedEvent.consumer, parsedEvent.change, {
248
+ index: Number(event.blockNumber),
249
+ hash: event.blockHash,
250
+ });
251
+ });
252
+ subscription.on('error', (error) => {
253
+ logger.warn(error);
254
+ });
255
+ return () => subscription.unsubscribe();
256
+ }
257
+ /**
258
+ * Function for adding event listeners on order changed refunded event in orders contract
259
+ * @param callback - function for processing order changed refunded event
260
+ * @param tokenReceiver - token receiver address
261
+ * @param orderId - order id
262
+ * @returns unsubscribe - unsubscribe function from event
263
+ */
264
+ static onProfitWithdrawn(callback, orderId, tokenReceiver) {
265
+ const contract = BlockchainEventsListener.getInstance().getContract();
266
+ const logger = this.logger.child({ method: 'onOrderProfitWithdrawn' });
267
+ const subscription = contract.events.OrderProfitWithdrawn();
268
+ subscription.on('data', (event) => {
269
+ const parsedEvent = cleanWeb3Data(event.returnValues);
270
+ if (orderId && parsedEvent.orderId != convertBigIntToString(orderId)) {
271
+ return;
272
+ }
273
+ if (tokenReceiver && parsedEvent.tokenReceiver != tokenReceiver) {
274
+ return;
275
+ }
276
+ callback(parsedEvent.orderId, parsedEvent.tokenReceiver, parsedEvent.profit, {
277
+ index: Number(event.blockNumber),
278
+ hash: event.blockHash,
279
+ });
280
+ });
281
+ subscription.on('error', (error) => {
282
+ logger.warn(error);
283
+ });
284
+ return () => subscription.unsubscribe();
285
+ }
286
+ /**
287
+ * Function for adding event listeners on order awaiting payment event in orders contract
288
+ * @param callback - function for processing order awaiting payment event
289
+ * @param consumer - order creator address
290
+ * @param orderId - order id
291
+ * @returns unsubscribe - unsubscribe function from event
292
+ */
293
+ static onAwaitingPaymentChanged(callback, consumer, orderId) {
294
+ const contract = BlockchainEventsListener.getInstance().getContract();
295
+ const logger = this.logger.child({ method: 'onOrderAwaitingPaymentChanged' });
296
+ const subscription = contract.events.OrderAwaitingPaymentChanged();
297
+ subscription.on('data', (event) => {
298
+ const parsedEvent = cleanWeb3Data(event.returnValues);
299
+ if (orderId && parsedEvent.orderId != convertBigIntToString(orderId)) {
300
+ return;
301
+ }
302
+ if (consumer && parsedEvent.consumer != consumer) {
303
+ return;
304
+ }
305
+ callback(parsedEvent.orderId, parsedEvent.consumer, parsedEvent.awaitingPayment, {
306
+ index: Number(event.blockNumber),
307
+ hash: event.blockHash,
308
+ });
309
+ });
310
+ subscription.on('error', (error) => {
311
+ logger.warn(error);
312
+ });
313
+ return () => subscription.unsubscribe();
314
+ }
315
+ /**
316
+ * Function for adding event listeners on order encrypted result updated event in orders contract
317
+ * @param callback - function for processing order encrypted result updated event
318
+ * @param consumer - order creator address
319
+ * @param orderId - order id
320
+ * @returns unsubscribe - unsubscribe function from event
321
+ */
322
+ static onEncryptedResultUpdated(callback, consumer, orderId) {
323
+ const contract = BlockchainEventsListener.getInstance().getContract();
324
+ const logger = this.logger.child({ method: 'onOrderEncryptedResultUpdated' });
325
+ const subscription = contract.events.OrderEncryptedResultUpdated();
326
+ subscription.on('data', (event) => {
327
+ const parsedEvent = cleanWeb3Data(event.returnValues);
328
+ if (orderId && parsedEvent.orderId != convertBigIntToString(orderId)) {
329
+ return;
330
+ }
331
+ if (consumer && parsedEvent.consumer != consumer) {
332
+ return;
333
+ }
334
+ callback(parsedEvent.orderId, parsedEvent.consumer, parsedEvent.encryptedResult, {
335
+ index: Number(event.blockNumber),
336
+ hash: event.blockHash,
337
+ });
338
+ });
339
+ subscription.on('error', (error) => {
340
+ logger.warn(error);
341
+ });
342
+ return () => subscription.unsubscribe();
343
+ }
344
+ /**
345
+ * Function for adding event listeners on OrderOptionsDepositSpentChanged event in orders contract
346
+ * @param callback - function for processing order encrypted result updated event
347
+ * @param consumer - order creator address
348
+ * @param orderId - order id
349
+ * @returns unsubscribe - unsubscribe function from event
350
+ */
351
+ static onOptionsDepositSpentChanged(callback, consumer, orderId) {
352
+ const contract = BlockchainEventsListener.getInstance().getContract();
353
+ const logger = this.logger.child({ method: 'onOrderOptionsDepositSpentChanged' });
354
+ const subscription = contract.events.OrderOptionsDepositSpentChanged();
355
+ subscription.on('data', (event) => {
356
+ const parsedEvent = cleanWeb3Data(event.returnValues);
357
+ if (orderId && parsedEvent.orderId != convertBigIntToString(orderId)) {
358
+ return;
359
+ }
360
+ if (consumer && parsedEvent.consumer != consumer) {
361
+ return;
362
+ }
363
+ callback(parsedEvent.consumer, parsedEvent.orderId, parsedEvent.value, {
364
+ index: Number(event.blockNumber),
365
+ hash: event.blockHash,
366
+ });
367
+ });
368
+ subscription.on('error', (error) => {
369
+ logger.warn(error);
370
+ });
371
+ return () => subscription.unsubscribe();
372
+ }
373
+ /**
374
+ * Function for adding event listeners on onOrderProfitUnlocked event in orders contract
375
+ * @param callback - function for processing order encrypted result updated event
376
+ * @param tokenReceiver - tokenReceiver
377
+ * @param orderId - order id
378
+ * @returns unsubscribe - unsubscribe function from event
379
+ */
380
+ static onOProfitUnlocked(callback, tokenReceiver, orderId) {
381
+ const contract = BlockchainEventsListener.getInstance().getContract();
382
+ const logger = this.logger.child({ method: 'onOrderProfitUnlocked' });
383
+ const subscription = contract.events.OrderProfitUnlocked();
384
+ subscription.on('data', (event) => {
385
+ const parsedEvent = cleanWeb3Data(event.returnValues);
386
+ if (orderId && parsedEvent.orderId != convertBigIntToString(orderId)) {
387
+ return;
388
+ }
389
+ if (tokenReceiver && parsedEvent.tokenReceiver != tokenReceiver) {
390
+ return;
391
+ }
392
+ callback(parsedEvent.tokenReceiver, parsedEvent.orderId, parsedEvent.profit, {
393
+ index: Number(event.blockNumber),
394
+ hash: event.blockHash,
395
+ });
396
+ });
397
+ subscription.on('error', (error) => {
398
+ logger.warn(error);
399
+ });
400
+ return () => subscription.unsubscribe();
401
+ }
402
+ /**
403
+ * Function that calculates resource needed for order
404
+ * @param selectedUsage - structure that order.getSelectedUsage() method returns
405
+ * @returns calculated resources
406
+ */
407
+ static accumulatedSlotInfo(selectedUsage) {
408
+ const slotCount = selectedUsage.slotCount;
409
+ const { cpuCores, ram, diskUsage, gpuCores } = selectedUsage.slotInfo;
410
+ return {
411
+ cpuCores: cpuCores * slotCount,
412
+ ram: ram * slotCount,
413
+ diskUsage: diskUsage * slotCount,
414
+ gpuCores: gpuCores * slotCount,
415
+ };
416
+ }
417
+ /**
418
+ * Function that calculates total price for slot usage
419
+ * @param selectedUsage - structure that order.getSelectedUsage() method returns
420
+ * @returns slotUsage with totalPrices
421
+ */
422
+ static accumulatedSlotUsage(selectedUsage) {
423
+ const slotCount = selectedUsage.slotCount;
424
+ const slotUsage = selectedUsage.slotUsage;
425
+ const totalPrice = BigInt(slotUsage.price) * BigInt(slotCount);
426
+ return {
427
+ priceType: slotUsage.priceType,
428
+ price: totalPrice.toString(),
429
+ minTimeMinutes: slotUsage.minTimeMinutes,
430
+ maxTimeMinutes: slotUsage.maxTimeMinutes,
431
+ };
432
+ }
433
+ /**
434
+ * function that calculated requested options for order run
435
+ * @param selectedUsage - structure that order.getSelectedUsage() method returns
436
+ * @returns calculated options
437
+ */
438
+ static accumulatedOptionsInfo(selectedUsage) {
439
+ return selectedUsage.optionInfo.reduce((accumulatedInfo, optionInfo, optionInfoIndex) => {
440
+ const { bandwidth, externalPort, traffic } = optionInfo;
441
+ const optionCount = selectedUsage.optionsCount.at(optionInfoIndex) || 0;
442
+ accumulatedInfo.bandwidth += bandwidth * optionCount;
443
+ accumulatedInfo.externalPort += externalPort * optionCount;
444
+ accumulatedInfo.traffic += traffic * optionCount;
445
+ return accumulatedInfo;
446
+ }, {
447
+ bandwidth: 0,
448
+ externalPort: 0,
449
+ traffic: 0,
450
+ });
451
+ }
452
+ }
453
+ __decorate([
454
+ incrementMethodCall(),
455
+ __metadata("design:type", Function),
456
+ __metadata("design:paramtypes", [Object, Object, String, Object, Object, Object]),
457
+ __metadata("design:returntype", Promise)
458
+ ], Orders, "createOrder", null);
459
+ __decorate([
460
+ incrementMethodCall(),
461
+ __metadata("design:type", Function),
462
+ __metadata("design:paramtypes", [Object, Object, Object]),
463
+ __metadata("design:returntype", Promise)
464
+ ], Orders, "getByExternalId", null);
465
+ __decorate([
466
+ incrementMethodCall(),
467
+ __metadata("design:type", Function),
468
+ __metadata("design:paramtypes", [Object, Object, Array, Array, String, Object, Object]),
469
+ __metadata("design:returntype", Promise)
470
+ ], Orders, "createWorkflow", null);
471
+ export default Orders;
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9PcmRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixtQkFBbUIsR0FDcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBYUwsY0FBYyxHQUNmLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzQyxPQUFPLFdBQVcsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQyxNQUFNLE1BQU07SUFDRixNQUFNLENBQVUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUVwRSxNQUFNLENBQUMsTUFBTSxDQUFrQjtJQUUvQixNQUFNLEtBQUssT0FBTztRQUN2QixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTTtRQUN4QixNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUks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