@super-protocol/sdk-js 2.1.4-beta.7 → 2.1.4-beta.9

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 (501) hide show
  1. package/{dist/cjs → build}/TIIGenerator.d.ts +4 -2
  2. package/build/TIIGenerator.js +261 -0
  3. package/{dist/mjs → build}/analytics/Analytics.d.ts +1 -1
  4. package/build/analytics/Analytics.js +74 -0
  5. package/{dist/cjs → build}/analytics/AnalyticsError.js +1 -1
  6. package/{dist/cjs → build}/analytics/eventProviders/BrowserEventProvider.d.ts +1 -1
  7. package/{dist/cjs → build}/analytics/eventProviders/BrowserEventProvider.js +3 -3
  8. package/build/analytics/eventProviders/EventProvider.js +14 -0
  9. package/{dist/cjs → build}/analytics/eventProviders/NodeEventProvider.d.ts +1 -1
  10. package/build/analytics/eventProviders/NodeEventProvider.js +48 -0
  11. package/{dist/mjs → build}/analytics/transports/AxiosTransport.d.ts +1 -1
  12. package/{dist/cjs → build}/analytics/transports/AxiosTransport.js +4 -4
  13. package/{dist/cjs → build}/analytics/transports/FetchTransport.d.ts +1 -1
  14. package/build/analytics/transports/FetchTransport.js +42 -0
  15. package/{dist/mjs → build}/analytics/types.d.ts +1 -1
  16. package/{dist/cjs → build}/analytics/types.js +1 -1
  17. package/{dist/cjs → build}/config.js +1 -1
  18. package/{dist/cjs → build}/connectors/BaseConnector.d.ts +1 -1
  19. package/{dist/cjs → build}/connectors/BaseConnector.js +3 -3
  20. package/{dist/mjs → build}/connectors/BlockchainConnector.d.ts +3 -3
  21. package/build/connectors/BlockchainConnector.js +358 -0
  22. package/{dist/mjs → build}/connectors/BlockchainEventsListener.d.ts +1 -1
  23. package/{dist/cjs → build}/connectors/BlockchainEventsListener.js +15 -15
  24. package/{dist/cjs → build}/connectors/index.d.ts +2 -2
  25. package/{dist/cjs → build}/connectors/index.js +5 -5
  26. package/{dist/cjs → build}/constants.js +1 -1
  27. package/{dist/cjs → build}/contracts/abi.d.ts +11 -11
  28. package/{dist/cjs → build}/contracts/abi.js +12 -12
  29. package/build/crypto/Crypto.js +119 -0
  30. package/build/crypto/index.d.ts +2 -0
  31. package/{dist/cjs → build}/crypto/index.js +3 -3
  32. package/{dist/cjs → build}/crypto/nodejs/AES.js +6 -6
  33. package/{dist/cjs → build}/crypto/nodejs/ARIA.js +6 -6
  34. package/{dist/cjs → build}/crypto/nodejs/ECIES.js +1 -1
  35. package/{dist/mjs → build}/crypto/nodejs/NativeCrypto.d.ts +3 -3
  36. package/build/crypto/nodejs/NativeCrypto.js +183 -0
  37. package/build/crypto/nodejs/RSA-Hybrid.js +95 -0
  38. package/build/index.d.ts +79 -0
  39. package/build/index.js +142 -0
  40. package/{dist/cjs → build}/logger.js +1 -1
  41. package/{dist/cjs → build}/models/EtlModel.d.ts +1 -1
  42. package/{dist/cjs → build}/models/EtlModel.js +8 -8
  43. package/{dist/mjs → build}/models/Offer.d.ts +1 -1
  44. package/build/models/Offer.js +407 -0
  45. package/{dist/mjs → build}/models/Order.d.ts +1 -1
  46. package/build/models/Order.js +577 -0
  47. package/{dist/mjs → build}/models/Provider.d.ts +1 -1
  48. package/build/models/Provider.js +137 -0
  49. package/{dist/cjs → build}/models/TCB.d.ts +1 -1
  50. package/build/models/TCB.js +135 -0
  51. package/{dist/mjs → build}/models/TeeOffer.d.ts +2 -2
  52. package/build/models/TeeOffer.js +600 -0
  53. package/build/models/index.d.ts +5 -0
  54. package/build/models/index.js +17 -0
  55. package/build/polyfills.js +7 -0
  56. package/{dist/cjs → build}/proto/Compression.d.ts +1 -1
  57. package/build/proto/Compression.js +132 -0
  58. package/{dist/mjs → build}/proto/TRI.d.ts +1 -1
  59. package/build/proto/TRI.js +293 -0
  60. package/{dist/mjs → build}/proto/TeeProperties.d.ts +1 -1
  61. package/build/proto/TeeProperties.js +401 -0
  62. package/{dist/cjs → build}/providers/storage/ChunksDownloadDecorator.d.ts +2 -2
  63. package/{dist/cjs → build}/providers/storage/ChunksDownloadDecorator.js +1 -1
  64. package/{dist/cjs → build}/providers/storage/IStorageProvider.d.ts +1 -1
  65. package/{dist/cjs → build}/providers/storage/IStorageProvider.js +1 -1
  66. package/{dist/mjs → build}/providers/storage/S3StorageProvider.d.ts +2 -2
  67. package/{dist/cjs → build}/providers/storage/S3StorageProvider.js +3 -3
  68. package/{dist/cjs → build}/providers/storage/StorageAdapter.d.ts +2 -2
  69. package/build/providers/storage/StorageAdapter.js +323 -0
  70. package/{dist/mjs → build}/providers/storage/StorageContentWriter.d.ts +2 -2
  71. package/{dist/cjs → build}/providers/storage/StorageContentWriter.js +3 -3
  72. package/{dist/cjs → build}/providers/storage/StorageKeyValueAdapter.d.ts +2 -2
  73. package/{dist/cjs → build}/providers/storage/StorageKeyValueAdapter.js +8 -8
  74. package/{dist/cjs → build}/providers/storage/StorageMetadataReader.d.ts +3 -3
  75. package/{dist/cjs → build}/providers/storage/StorageMetadataReader.js +3 -3
  76. package/{dist/mjs → build}/providers/storage/StorjAdapter.d.ts +2 -2
  77. package/{dist/cjs → build}/providers/storage/StorjAdapter.js +5 -5
  78. package/{dist/mjs → build}/providers/storage/StorjStorageProvider.d.ts +2 -2
  79. package/{dist/cjs → build}/providers/storage/StorjStorageProvider.js +6 -6
  80. package/build/providers/storage/getStorageProvider.d.ts +4 -0
  81. package/build/providers/storage/getStorageProvider.js +20 -0
  82. package/{dist/cjs → build}/providers/storage/types.js +1 -1
  83. package/{dist/mjs → build}/staticModels/ActiveOffers.d.ts +1 -1
  84. package/{dist/cjs → build}/staticModels/ActiveOffers.js +7 -7
  85. package/{dist/mjs → build}/staticModels/ActiveOrders.d.ts +1 -1
  86. package/{dist/cjs → build}/staticModels/ActiveOrders.js +12 -12
  87. package/{dist/cjs → build}/staticModels/Consensus.d.ts +1 -1
  88. package/build/staticModels/Consensus.js +247 -0
  89. package/{dist/mjs → build}/staticModels/Deposits.d.ts +1 -1
  90. package/build/staticModels/Deposits.js +214 -0
  91. package/{dist/cjs → build}/staticModels/Marks.d.ts +1 -1
  92. package/build/staticModels/Marks.js +43 -0
  93. package/{dist/cjs → build}/staticModels/ModelPackager.js +6 -6
  94. package/{dist/mjs → build}/staticModels/Offers.d.ts +2 -2
  95. package/build/staticModels/Offers.js +207 -0
  96. package/{dist/mjs → build}/staticModels/Orders.d.ts +2 -2
  97. package/build/staticModels/Orders.js +502 -0
  98. package/{dist/mjs → build}/staticModels/ProviderRegistry.d.ts +1 -1
  99. package/{dist/cjs → build}/staticModels/ProviderRegistry.js +28 -28
  100. package/{dist/cjs → build}/staticModels/StaticModel.d.ts +2 -2
  101. package/build/staticModels/StaticModel.js +46 -0
  102. package/{dist/cjs → build}/staticModels/Superpro.d.ts +2 -2
  103. package/build/staticModels/Superpro.js +24 -0
  104. package/{dist/cjs → build}/staticModels/SuperproToken.d.ts +1 -1
  105. package/build/staticModels/SuperproToken.js +154 -0
  106. package/{dist/cjs → build}/staticModels/TeeOffers.d.ts +1 -1
  107. package/build/staticModels/TeeOffers.js +344 -0
  108. package/build/store.js +17 -0
  109. package/{dist/cjs → build}/tee/QuoteParser.d.ts +1 -1
  110. package/build/tee/QuoteParser.js +189 -0
  111. package/{dist/cjs → build}/tee/QuoteValidator.d.ts +1 -1
  112. package/build/tee/QuoteValidator.js +414 -0
  113. package/{dist/cjs → build}/tee/errors.js +1 -1
  114. package/build/tee/helpers.js +119 -0
  115. package/{dist/cjs → build}/tee/interface.d.ts +1 -1
  116. package/{dist/cjs → build}/tee/interface.js +1 -1
  117. package/{dist/cjs → build}/tee/statuses.js +1 -1
  118. package/{dist/mjs → build}/tee/types.d.ts +0 -38
  119. package/build/tee/types.js +3 -0
  120. package/{dist/cjs → build}/types/Compressor.js +1 -1
  121. package/{dist/cjs → build}/types/Consensus.d.ts +1 -1
  122. package/{dist/cjs → build}/types/Consensus.js +1 -1
  123. package/{dist/mjs → build}/types/DepositInfo.d.ts +1 -1
  124. package/{dist/cjs → build}/types/DepositInfo.js +1 -1
  125. package/{dist/cjs → build}/types/EtlModel.js +1 -1
  126. package/{dist/mjs → build}/types/Events.d.ts +2 -2
  127. package/{dist/cjs → build}/types/Events.js +1 -1
  128. package/build/types/HardwareInfo.d.ts +6 -0
  129. package/{dist/cjs → build}/types/HardwareInfo.js +1 -1
  130. package/{dist/cjs → build}/types/Marks.js +1 -1
  131. package/{dist/mjs → build}/types/Offer.d.ts +1 -1
  132. package/{dist/cjs → build}/types/Offer.js +1 -1
  133. package/{dist/cjs → build}/types/OptionInfo.js +1 -1
  134. package/{dist/cjs → build}/types/Order.d.ts +6 -4
  135. package/build/types/Order.js +60 -0
  136. package/{dist/mjs → build}/types/OrderUsage.d.ts +4 -4
  137. package/{dist/cjs → build}/types/OrderUsage.js +1 -1
  138. package/{dist/cjs → build}/types/Origins.js +1 -1
  139. package/{dist/cjs → build}/types/Provider.js +1 -1
  140. package/{dist/mjs → build}/types/ResourceLoader.d.ts +1 -1
  141. package/{dist/cjs → build}/types/ResourceLoader.js +1 -1
  142. package/{dist/cjs → build}/types/SlotInfo.js +1 -1
  143. package/{dist/cjs → build}/types/SlotUsage.d.ts +1 -1
  144. package/{dist/cjs → build}/types/SlotUsage.js +1 -1
  145. package/{dist/cjs → build}/types/Superpro.js +1 -1
  146. package/{dist/cjs → build}/types/TeeOfferInfo.d.ts +1 -1
  147. package/{dist/cjs → build}/types/TeeOfferInfo.js +1 -1
  148. package/{dist/cjs → build}/types/TeeOfferOption.d.ts +3 -3
  149. package/{dist/cjs → build}/types/TeeOfferOption.js +1 -1
  150. package/build/types/TeeOfferSlot.d.ts +8 -0
  151. package/{dist/cjs → build}/types/TeeOfferSlot.js +1 -1
  152. package/{dist/cjs → build}/types/ValueOfferSlot.d.ts +4 -4
  153. package/{dist/cjs → build}/types/ValueOfferSlot.js +1 -1
  154. package/{dist/cjs → build}/types/Web3.js +1 -1
  155. package/{dist/cjs → build}/types/blockchainConnector/StorageAccess.d.ts +1 -1
  156. package/{dist/cjs → build}/types/blockchainConnector/StorageAccess.js +1 -1
  157. package/build/types/index.d.ts +22 -0
  158. package/build/types/index.js +39 -0
  159. package/{dist/cjs → build}/types/storage/StorageAccess.js +1 -1
  160. package/{dist/mjs → build}/types/storage/StorageFileAccess.d.ts +1 -1
  161. package/{dist/cjs → build}/types/storage/StorageFileAccess.js +1 -1
  162. package/{dist/cjs → build}/types/storage/StorageObject.js +1 -1
  163. package/build/utils/Monitoring.js +48 -0
  164. package/{dist/cjs → build}/utils/NonceTracker.js +3 -3
  165. package/build/utils/PubSub.js +37 -0
  166. package/{dist/mjs → build}/utils/TxManager.d.ts +1 -1
  167. package/build/utils/TxManager.js +179 -0
  168. package/{dist/mjs → build}/utils/compressors/GzipCompressor.d.ts +2 -2
  169. package/{dist/cjs → build}/utils/compressors/GzipCompressor.js +6 -10
  170. package/{dist/cjs → build}/utils/compressors/UncompressedCompressor.d.ts +2 -2
  171. package/build/utils/compressors/UncompressedCompressor.js +17 -0
  172. package/build/utils/compressors/index.d.ts +2 -0
  173. package/{dist/cjs → build}/utils/compressors/index.js +3 -3
  174. package/{dist/mjs → build}/utils/helper.d.ts +3 -3
  175. package/build/utils/helper.js +286 -0
  176. package/{dist/cjs → build}/utils/helpers/getStreamChunks.js +1 -1
  177. package/build/utils/helpers/index.d.ts +1 -0
  178. package/{dist/cjs → build}/utils/helpers/index.js +2 -2
  179. package/{dist/cjs → build}/utils/helpers/tryWithInterval.js +1 -1
  180. package/{dist/cjs → build}/utils/resourceLoaders/BaseResourceLoader.d.ts +1 -1
  181. package/{dist/cjs → build}/utils/resourceLoaders/BaseResourceLoader.js +1 -1
  182. package/{dist/mjs → build}/utils/resourceLoaders/StorageProviderLoader.d.ts +2 -2
  183. package/{dist/cjs → build}/utils/resourceLoaders/StorageProviderLoader.js +8 -8
  184. package/{dist/cjs → build}/utils/resourceLoaders/UrlResourceLoader.d.ts +1 -1
  185. package/{dist/cjs → build}/utils/resourceLoaders/UrlResourceLoader.js +3 -3
  186. package/{dist/cjs → build}/utils/resourceLoaders/getResourceLoader.d.ts +1 -1
  187. package/build/utils/resourceLoaders/getResourceLoader.js +15 -0
  188. package/build/utils/resourceLoaders/index.d.ts +1 -0
  189. package/{dist/cjs → build}/utils/resourceLoaders/index.js +2 -2
  190. package/package.json +5 -13
  191. package/dist/cjs/TIIGenerator.js +0 -247
  192. package/dist/cjs/analytics/Analytics.d.ts +0 -15
  193. package/dist/cjs/analytics/Analytics.js +0 -74
  194. package/dist/cjs/analytics/eventProviders/EventProvider.js +0 -14
  195. package/dist/cjs/analytics/eventProviders/NodeEventProvider.js +0 -48
  196. package/dist/cjs/analytics/transports/AxiosTransport.d.ts +0 -4
  197. package/dist/cjs/analytics/transports/FetchTransport.js +0 -42
  198. package/dist/cjs/analytics/types.d.ts +0 -22
  199. package/dist/cjs/connectors/BlockchainConnector.d.ts +0 -81
  200. package/dist/cjs/connectors/BlockchainConnector.js +0 -358
  201. package/dist/cjs/connectors/BlockchainEventsListener.d.ts +0 -15
  202. package/dist/cjs/crypto/Crypto.js +0 -119
  203. package/dist/cjs/crypto/index.d.ts +0 -2
  204. package/dist/cjs/crypto/nodejs/NativeCrypto.d.ts +0 -58
  205. package/dist/cjs/crypto/nodejs/NativeCrypto.js +0 -178
  206. package/dist/cjs/crypto/nodejs/RSA-Hybrid.js +0 -95
  207. package/dist/cjs/index.d.ts +0 -79
  208. package/dist/cjs/index.js +0 -142
  209. package/dist/cjs/models/Offer.d.ts +0 -130
  210. package/dist/cjs/models/Offer.js +0 -407
  211. package/dist/cjs/models/Order.d.ts +0 -148
  212. package/dist/cjs/models/Order.js +0 -577
  213. package/dist/cjs/models/Provider.d.ts +0 -51
  214. package/dist/cjs/models/Provider.js +0 -137
  215. package/dist/cjs/models/TCB.js +0 -135
  216. package/dist/cjs/models/TeeOffer.d.ts +0 -204
  217. package/dist/cjs/models/TeeOffer.js +0 -600
  218. package/dist/cjs/models/index.d.ts +0 -5
  219. package/dist/cjs/models/index.js +0 -17
  220. package/dist/cjs/package.json +0 -1
  221. package/dist/cjs/polyfills.js +0 -7
  222. package/dist/cjs/proto/Compression.js +0 -132
  223. package/dist/cjs/proto/TRI.d.ts +0 -124
  224. package/dist/cjs/proto/TRI.js +0 -293
  225. package/dist/cjs/proto/TeeProperties.d.ts +0 -263
  226. package/dist/cjs/proto/TeeProperties.js +0 -401
  227. package/dist/cjs/providers/storage/S3StorageProvider.d.ts +0 -25
  228. package/dist/cjs/providers/storage/StorageAdapter.js +0 -323
  229. package/dist/cjs/providers/storage/StorageContentWriter.d.ts +0 -46
  230. package/dist/cjs/providers/storage/StorjAdapter.d.ts +0 -19
  231. package/dist/cjs/providers/storage/StorjStorageProvider.d.ts +0 -25
  232. package/dist/cjs/providers/storage/getStorageProvider.d.ts +0 -4
  233. package/dist/cjs/providers/storage/getStorageProvider.js +0 -20
  234. package/dist/cjs/staticModels/ActiveOffers.d.ts +0 -15
  235. package/dist/cjs/staticModels/ActiveOrders.d.ts +0 -20
  236. package/dist/cjs/staticModels/Consensus.js +0 -247
  237. package/dist/cjs/staticModels/Deposits.d.ts +0 -70
  238. package/dist/cjs/staticModels/Deposits.js +0 -214
  239. package/dist/cjs/staticModels/Marks.js +0 -43
  240. package/dist/cjs/staticModels/Offers.d.ts +0 -65
  241. package/dist/cjs/staticModels/Offers.js +0 -207
  242. package/dist/cjs/staticModels/Orders.d.ts +0 -155
  243. package/dist/cjs/staticModels/Orders.js +0 -502
  244. package/dist/cjs/staticModels/ProviderRegistry.d.ts +0 -74
  245. package/dist/cjs/staticModels/StaticModel.js +0 -46
  246. package/dist/cjs/staticModels/Superpro.js +0 -24
  247. package/dist/cjs/staticModels/SuperproToken.js +0 -154
  248. package/dist/cjs/staticModels/TeeOffers.js +0 -344
  249. package/dist/cjs/store.js +0 -17
  250. package/dist/cjs/tee/QuoteParser.js +0 -189
  251. package/dist/cjs/tee/QuoteValidator.js +0 -416
  252. package/dist/cjs/tee/helpers.js +0 -119
  253. package/dist/cjs/tee/types.d.ts +0 -113
  254. package/dist/cjs/tee/types.js +0 -35
  255. package/dist/cjs/types/DepositInfo.d.ts +0 -6
  256. package/dist/cjs/types/Events.d.ts +0 -34
  257. package/dist/cjs/types/HardwareInfo.d.ts +0 -6
  258. package/dist/cjs/types/Offer.d.ts +0 -33
  259. package/dist/cjs/types/Order.js +0 -58
  260. package/dist/cjs/types/OrderUsage.d.ts +0 -26
  261. package/dist/cjs/types/ResourceLoader.d.ts +0 -28
  262. package/dist/cjs/types/TeeOfferSlot.d.ts +0 -8
  263. package/dist/cjs/types/index.d.ts +0 -22
  264. package/dist/cjs/types/index.js +0 -39
  265. package/dist/cjs/types/storage/StorageFileAccess.d.ts +0 -5
  266. package/dist/cjs/utils/Monitoring.js +0 -48
  267. package/dist/cjs/utils/PubSub.js +0 -37
  268. package/dist/cjs/utils/TxManager.d.ts +0 -25
  269. package/dist/cjs/utils/TxManager.js +0 -179
  270. package/dist/cjs/utils/compressors/GzipCompressor.d.ts +0 -8
  271. package/dist/cjs/utils/compressors/UncompressedCompressor.js +0 -17
  272. package/dist/cjs/utils/compressors/index.d.ts +0 -2
  273. package/dist/cjs/utils/helper.d.ts +0 -44
  274. package/dist/cjs/utils/helper.js +0 -286
  275. package/dist/cjs/utils/helpers/index.d.ts +0 -1
  276. package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.d.ts +0 -18
  277. package/dist/cjs/utils/resourceLoaders/getResourceLoader.js +0 -15
  278. package/dist/cjs/utils/resourceLoaders/index.d.ts +0 -1
  279. package/dist/mjs/TIIGenerator.d.ts +0 -22
  280. package/dist/mjs/TIIGenerator.js +0 -225
  281. package/dist/mjs/analytics/Analytics.js +0 -61
  282. package/dist/mjs/analytics/AnalyticsError.d.ts +0 -7
  283. package/dist/mjs/analytics/AnalyticsError.js +0 -8
  284. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.d.ts +0 -18
  285. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.js +0 -32
  286. package/dist/mjs/analytics/eventProviders/EventProvider.d.ts +0 -24
  287. package/dist/mjs/analytics/eventProviders/EventProvider.js +0 -22
  288. package/dist/mjs/analytics/eventProviders/NodeEventProvider.d.ts +0 -22
  289. package/dist/mjs/analytics/eventProviders/NodeEventProvider.js +0 -50
  290. package/dist/mjs/analytics/transports/AxiosTransport.js +0 -31
  291. package/dist/mjs/analytics/transports/FetchTransport.d.ts +0 -4
  292. package/dist/mjs/analytics/transports/FetchTransport.js +0 -28
  293. package/dist/mjs/analytics/types.js +0 -2
  294. package/dist/mjs/config.d.ts +0 -4
  295. package/dist/mjs/config.js +0 -5
  296. package/dist/mjs/connectors/BaseConnector.d.ts +0 -36
  297. package/dist/mjs/connectors/BaseConnector.js +0 -34
  298. package/dist/mjs/connectors/BlockchainConnector.js +0 -313
  299. package/dist/mjs/connectors/BlockchainEventsListener.js +0 -75
  300. package/dist/mjs/connectors/index.d.ts +0 -2
  301. package/dist/mjs/connectors/index.js +0 -3
  302. package/dist/mjs/constants.d.ts +0 -13
  303. package/dist/mjs/constants.js +0 -14
  304. package/dist/mjs/contracts/abi.d.ts +0 -9916
  305. package/dist/mjs/contracts/abi.js +0 -12941
  306. package/dist/mjs/crypto/Crypto.d.ts +0 -54
  307. package/dist/mjs/crypto/Crypto.js +0 -95
  308. package/dist/mjs/crypto/index.d.ts +0 -2
  309. package/dist/mjs/crypto/index.js +0 -3
  310. package/dist/mjs/crypto/nodejs/AES.d.ts +0 -24
  311. package/dist/mjs/crypto/nodejs/AES.js +0 -74
  312. package/dist/mjs/crypto/nodejs/ARIA.d.ts +0 -24
  313. package/dist/mjs/crypto/nodejs/ARIA.js +0 -73
  314. package/dist/mjs/crypto/nodejs/ECIES.d.ts +0 -6
  315. package/dist/mjs/crypto/nodejs/ECIES.js +0 -51
  316. package/dist/mjs/crypto/nodejs/NativeCrypto.js +0 -163
  317. package/dist/mjs/crypto/nodejs/RSA-Hybrid.d.ts +0 -15
  318. package/dist/mjs/crypto/nodejs/RSA-Hybrid.js +0 -89
  319. package/dist/mjs/index.d.ts +0 -79
  320. package/dist/mjs/index.js +0 -75
  321. package/dist/mjs/logger.d.ts +0 -7
  322. package/dist/mjs/logger.js +0 -7
  323. package/dist/mjs/models/EtlModel.d.ts +0 -34
  324. package/dist/mjs/models/EtlModel.js +0 -96
  325. package/dist/mjs/models/Offer.js +0 -356
  326. package/dist/mjs/models/Order.js +0 -520
  327. package/dist/mjs/models/Provider.js +0 -114
  328. package/dist/mjs/models/TCB.d.ts +0 -58
  329. package/dist/mjs/models/TCB.js +0 -107
  330. package/dist/mjs/models/TeeOffer.js +0 -533
  331. package/dist/mjs/models/index.d.ts +0 -5
  332. package/dist/mjs/models/index.js +0 -6
  333. package/dist/mjs/package.json +0 -1
  334. package/dist/mjs/polyfills.d.ts +0 -0
  335. package/dist/mjs/polyfills.js +0 -7
  336. package/dist/mjs/proto/Compression.d.ts +0 -36
  337. package/dist/mjs/proto/Compression.js +0 -123
  338. package/dist/mjs/proto/TRI.js +0 -284
  339. package/dist/mjs/proto/TeeProperties.js +0 -391
  340. package/dist/mjs/providers/storage/ChunksDownloadDecorator.d.ts +0 -36
  341. package/dist/mjs/providers/storage/ChunksDownloadDecorator.js +0 -139
  342. package/dist/mjs/providers/storage/IStorageProvider.d.ts +0 -15
  343. package/dist/mjs/providers/storage/IStorageProvider.js +0 -2
  344. package/dist/mjs/providers/storage/S3StorageProvider.js +0 -167
  345. package/dist/mjs/providers/storage/StorageAdapter.d.ts +0 -60
  346. package/dist/mjs/providers/storage/StorageAdapter.js +0 -271
  347. package/dist/mjs/providers/storage/StorageContentWriter.js +0 -161
  348. package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +0 -23
  349. package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +0 -119
  350. package/dist/mjs/providers/storage/StorageMetadataReader.d.ts +0 -20
  351. package/dist/mjs/providers/storage/StorageMetadataReader.js +0 -51
  352. package/dist/mjs/providers/storage/StorjAdapter.js +0 -48
  353. package/dist/mjs/providers/storage/StorjStorageProvider.js +0 -141
  354. package/dist/mjs/providers/storage/getStorageProvider.d.ts +0 -4
  355. package/dist/mjs/providers/storage/getStorageProvider.js +0 -15
  356. package/dist/mjs/providers/storage/types.d.ts +0 -7
  357. package/dist/mjs/providers/storage/types.js +0 -2
  358. package/dist/mjs/staticModels/ActiveOffers.js +0 -32
  359. package/dist/mjs/staticModels/ActiveOrders.js +0 -71
  360. package/dist/mjs/staticModels/Consensus.d.ts +0 -42
  361. package/dist/mjs/staticModels/Consensus.js +0 -220
  362. package/dist/mjs/staticModels/Deposits.js +0 -190
  363. package/dist/mjs/staticModels/Marks.d.ts +0 -8
  364. package/dist/mjs/staticModels/Marks.js +0 -25
  365. package/dist/mjs/staticModels/ModelPackager.d.ts +0 -18
  366. package/dist/mjs/staticModels/ModelPackager.js +0 -45
  367. package/dist/mjs/staticModels/Offers.js +0 -184
  368. package/dist/mjs/staticModels/Orders.js +0 -472
  369. package/dist/mjs/staticModels/ProviderRegistry.js +0 -169
  370. package/dist/mjs/staticModels/StaticModel.d.ts +0 -8
  371. package/dist/mjs/staticModels/StaticModel.js +0 -30
  372. package/dist/mjs/staticModels/Superpro.d.ts +0 -16
  373. package/dist/mjs/staticModels/Superpro.js +0 -23
  374. package/dist/mjs/staticModels/SuperproToken.d.ts +0 -48
  375. package/dist/mjs/staticModels/SuperproToken.js +0 -136
  376. package/dist/mjs/staticModels/TeeOffers.d.ts +0 -115
  377. package/dist/mjs/staticModels/TeeOffers.js +0 -309
  378. package/dist/mjs/store.d.ts +0 -15
  379. package/dist/mjs/store.js +0 -15
  380. package/dist/mjs/tee/QuoteParser.d.ts +0 -27
  381. package/dist/mjs/tee/QuoteParser.js +0 -162
  382. package/dist/mjs/tee/QuoteValidator.d.ts +0 -38
  383. package/dist/mjs/tee/QuoteValidator.js +0 -384
  384. package/dist/mjs/tee/errors.d.ts +0 -6
  385. package/dist/mjs/tee/errors.js +0 -7
  386. package/dist/mjs/tee/helpers.d.ts +0 -14
  387. package/dist/mjs/tee/helpers.js +0 -115
  388. package/dist/mjs/tee/interface.d.ts +0 -63
  389. package/dist/mjs/tee/interface.js +0 -2
  390. package/dist/mjs/tee/statuses.d.ts +0 -21
  391. package/dist/mjs/tee/statuses.js +0 -25
  392. package/dist/mjs/tee/types.js +0 -32
  393. package/dist/mjs/types/Compressor.d.ts +0 -5
  394. package/dist/mjs/types/Compressor.js +0 -2
  395. package/dist/mjs/types/Consensus.d.ts +0 -60
  396. package/dist/mjs/types/Consensus.js +0 -16
  397. package/dist/mjs/types/DepositInfo.js +0 -2
  398. package/dist/mjs/types/EtlModel.d.ts +0 -2
  399. package/dist/mjs/types/EtlModel.js +0 -2
  400. package/dist/mjs/types/Events.js +0 -2
  401. package/dist/mjs/types/HardwareInfo.d.ts +0 -6
  402. package/dist/mjs/types/HardwareInfo.js +0 -2
  403. package/dist/mjs/types/Marks.d.ts +0 -9
  404. package/dist/mjs/types/Marks.js +0 -7
  405. package/dist/mjs/types/Offer.js +0 -14
  406. package/dist/mjs/types/OptionInfo.d.ts +0 -8
  407. package/dist/mjs/types/OptionInfo.js +0 -2
  408. package/dist/mjs/types/Order.d.ts +0 -56
  409. package/dist/mjs/types/Order.js +0 -51
  410. package/dist/mjs/types/OrderUsage.js +0 -2
  411. package/dist/mjs/types/Origins.d.ts +0 -6
  412. package/dist/mjs/types/Origins.js +0 -2
  413. package/dist/mjs/types/Provider.d.ts +0 -7
  414. package/dist/mjs/types/Provider.js +0 -2
  415. package/dist/mjs/types/ResourceLoader.js +0 -2
  416. package/dist/mjs/types/SlotInfo.d.ts +0 -6
  417. package/dist/mjs/types/SlotInfo.js +0 -2
  418. package/dist/mjs/types/SlotUsage.d.ts +0 -11
  419. package/dist/mjs/types/SlotUsage.js +0 -6
  420. package/dist/mjs/types/Superpro.d.ts +0 -9
  421. package/dist/mjs/types/Superpro.js +0 -11
  422. package/dist/mjs/types/TeeOfferInfo.d.ts +0 -10
  423. package/dist/mjs/types/TeeOfferInfo.js +0 -2
  424. package/dist/mjs/types/TeeOfferOption.d.ts +0 -13
  425. package/dist/mjs/types/TeeOfferOption.js +0 -2
  426. package/dist/mjs/types/TeeOfferSlot.d.ts +0 -8
  427. package/dist/mjs/types/TeeOfferSlot.js +0 -2
  428. package/dist/mjs/types/ValueOfferSlot.d.ts +0 -16
  429. package/dist/mjs/types/ValueOfferSlot.js +0 -2
  430. package/dist/mjs/types/Web3.d.ts +0 -62
  431. package/dist/mjs/types/Web3.js +0 -2
  432. package/dist/mjs/types/blockchainConnector/StorageAccess.d.ts +0 -8
  433. package/dist/mjs/types/blockchainConnector/StorageAccess.js +0 -2
  434. package/dist/mjs/types/index.d.ts +0 -22
  435. package/dist/mjs/types/index.js +0 -23
  436. package/dist/mjs/types/storage/StorageAccess.d.ts +0 -7
  437. package/dist/mjs/types/storage/StorageAccess.js +0 -2
  438. package/dist/mjs/types/storage/StorageFileAccess.js +0 -2
  439. package/dist/mjs/types/storage/StorageObject.d.ts +0 -8
  440. package/dist/mjs/types/storage/StorageObject.js +0 -2
  441. package/dist/mjs/utils/Monitoring.d.ts +0 -11
  442. package/dist/mjs/utils/Monitoring.js +0 -42
  443. package/dist/mjs/utils/NonceTracker.d.ts +0 -19
  444. package/dist/mjs/utils/NonceTracker.js +0 -73
  445. package/dist/mjs/utils/PubSub.d.ts +0 -9
  446. package/dist/mjs/utils/PubSub.js +0 -32
  447. package/dist/mjs/utils/TxManager.js +0 -162
  448. package/dist/mjs/utils/compressors/GzipCompressor.js +0 -15
  449. package/dist/mjs/utils/compressors/UncompressedCompressor.d.ts +0 -8
  450. package/dist/mjs/utils/compressors/UncompressedCompressor.js +0 -13
  451. package/dist/mjs/utils/compressors/index.d.ts +0 -2
  452. package/dist/mjs/utils/compressors/index.js +0 -3
  453. package/dist/mjs/utils/helper.js +0 -258
  454. package/dist/mjs/utils/helpers/getStreamChunks.d.ts +0 -9
  455. package/dist/mjs/utils/helpers/getStreamChunks.js +0 -31
  456. package/dist/mjs/utils/helpers/index.d.ts +0 -1
  457. package/dist/mjs/utils/helpers/index.js +0 -2
  458. package/dist/mjs/utils/helpers/tryWithInterval.d.ts +0 -13
  459. package/dist/mjs/utils/helpers/tryWithInterval.js +0 -35
  460. package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.d.ts +0 -10
  461. package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.js +0 -10
  462. package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.js +0 -53
  463. package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.d.ts +0 -9
  464. package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.js +0 -44
  465. package/dist/mjs/utils/resourceLoaders/getResourceLoader.d.ts +0 -5
  466. package/dist/mjs/utils/resourceLoaders/getResourceLoader.js +0 -11
  467. package/dist/mjs/utils/resourceLoaders/index.d.ts +0 -1
  468. package/dist/mjs/utils/resourceLoaders/index.js +0 -2
  469. /package/{dist/cjs → build}/analytics/AnalyticsError.d.ts +0 -0
  470. /package/{dist/cjs → build}/analytics/eventProviders/EventProvider.d.ts +0 -0
  471. /package/{dist/cjs → build}/config.d.ts +0 -0
  472. /package/{dist/cjs → build}/constants.d.ts +0 -0
  473. /package/{dist/cjs → build}/crypto/Crypto.d.ts +0 -0
  474. /package/{dist/cjs → build}/crypto/nodejs/AES.d.ts +0 -0
  475. /package/{dist/cjs → build}/crypto/nodejs/ARIA.d.ts +0 -0
  476. /package/{dist/cjs → build}/crypto/nodejs/ECIES.d.ts +0 -0
  477. /package/{dist/cjs → build}/crypto/nodejs/RSA-Hybrid.d.ts +0 -0
  478. /package/{dist/cjs → build}/logger.d.ts +0 -0
  479. /package/{dist/cjs → build}/polyfills.d.ts +0 -0
  480. /package/{dist/cjs → build}/providers/storage/types.d.ts +0 -0
  481. /package/{dist/cjs → build}/staticModels/ModelPackager.d.ts +0 -0
  482. /package/{dist/cjs → build}/store.d.ts +0 -0
  483. /package/{dist/cjs → build}/tee/errors.d.ts +0 -0
  484. /package/{dist/cjs → build}/tee/helpers.d.ts +0 -0
  485. /package/{dist/cjs → build}/tee/statuses.d.ts +0 -0
  486. /package/{dist/cjs → build}/types/Compressor.d.ts +0 -0
  487. /package/{dist/cjs → build}/types/EtlModel.d.ts +0 -0
  488. /package/{dist/cjs → build}/types/Marks.d.ts +0 -0
  489. /package/{dist/cjs → build}/types/OptionInfo.d.ts +0 -0
  490. /package/{dist/cjs → build}/types/Origins.d.ts +0 -0
  491. /package/{dist/cjs → build}/types/Provider.d.ts +0 -0
  492. /package/{dist/cjs → build}/types/SlotInfo.d.ts +0 -0
  493. /package/{dist/cjs → build}/types/Superpro.d.ts +0 -0
  494. /package/{dist/cjs → build}/types/Web3.d.ts +0 -0
  495. /package/{dist/cjs → build}/types/storage/StorageAccess.d.ts +0 -0
  496. /package/{dist/cjs → build}/types/storage/StorageObject.d.ts +0 -0
  497. /package/{dist/cjs → build}/utils/Monitoring.d.ts +0 -0
  498. /package/{dist/cjs → build}/utils/NonceTracker.d.ts +0 -0
  499. /package/{dist/cjs → build}/utils/PubSub.d.ts +0 -0
  500. /package/{dist/cjs → build}/utils/helpers/getStreamChunks.d.ts +0 -0
  501. /package/{dist/cjs → build}/utils/helpers/tryWithInterval.d.ts +0 -0
@@ -1,472 +0,0 @@
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.js';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9PcmRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixtQkFBbUIsR0FDcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBYUwsY0FBYyxHQUNmLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzQyxPQUFPLFdBQVcsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQyxNQUFNLE1BQU07SUFDRixNQUFNLENBQVUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUVwRSxNQUFNLENBQUMsTUFBTSxDQUFrQjtJQUUvQixNQUFNLEtBQUssT0FBTztRQUN2QixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTTtRQUN4QixNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUks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