@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.
- package/{build → dist/cjs}/TIIGenerator.d.ts +2 -2
- package/dist/cjs/TIIGenerator.js +246 -0
- package/{build → dist/cjs}/analytics/Analytics.d.ts +1 -1
- package/dist/cjs/analytics/Analytics.js +74 -0
- package/{build → dist/cjs}/analytics/AnalyticsError.js +1 -1
- package/{build → dist/cjs}/analytics/eventProviders/BrowserEventProvider.d.ts +1 -1
- package/{build → dist/cjs}/analytics/eventProviders/BrowserEventProvider.js +3 -3
- package/dist/cjs/analytics/eventProviders/EventProvider.js +14 -0
- package/{build → dist/cjs}/analytics/eventProviders/NodeEventProvider.d.ts +1 -1
- package/dist/cjs/analytics/eventProviders/NodeEventProvider.js +48 -0
- package/{build → dist/cjs}/analytics/transports/AxiosTransport.d.ts +1 -1
- package/{build → dist/cjs}/analytics/transports/AxiosTransport.js +4 -4
- package/{build → dist/cjs}/analytics/transports/FetchTransport.d.ts +1 -1
- package/dist/cjs/analytics/transports/FetchTransport.js +42 -0
- package/{build → dist/cjs}/analytics/types.d.ts +1 -1
- package/{build → dist/cjs}/analytics/types.js +1 -1
- package/{build → dist/cjs}/config.js +1 -1
- package/{build → dist/cjs}/connectors/BaseConnector.d.ts +1 -1
- package/{build → dist/cjs}/connectors/BaseConnector.js +3 -3
- package/{build → dist/cjs}/connectors/BlockchainConnector.d.ts +3 -3
- package/dist/cjs/connectors/BlockchainConnector.js +358 -0
- package/{build → dist/cjs}/connectors/BlockchainEventsListener.d.ts +1 -1
- package/{build → dist/cjs}/connectors/BlockchainEventsListener.js +15 -15
- package/{build → dist/cjs}/connectors/index.d.ts +2 -2
- package/{build → dist/cjs}/connectors/index.js +5 -5
- package/{build → dist/cjs}/constants.js +1 -1
- package/{build → dist/cjs}/contracts/abi.js +1 -1
- package/dist/cjs/crypto/Crypto.js +119 -0
- package/dist/cjs/crypto/index.d.ts +2 -0
- package/{build → dist/cjs}/crypto/index.js +3 -3
- package/{build → dist/cjs}/crypto/nodejs/AES.js +6 -6
- package/{build → dist/cjs}/crypto/nodejs/ARIA.js +6 -6
- package/{build → dist/cjs}/crypto/nodejs/ECIES.js +1 -1
- package/dist/cjs/crypto/nodejs/NativeCrypto.js +183 -0
- package/dist/cjs/crypto/nodejs/RSA-Hybrid.js +95 -0
- package/dist/cjs/index.d.ts +79 -0
- package/dist/cjs/index.js +142 -0
- package/{build → dist/cjs}/logger.js +1 -1
- package/{build → dist/cjs}/models/EtlModel.d.ts +1 -1
- package/{build → dist/cjs}/models/EtlModel.js +8 -8
- package/{build → dist/cjs}/models/Offer.d.ts +1 -1
- package/dist/cjs/models/Offer.js +407 -0
- package/{build → dist/cjs}/models/Order.d.ts +1 -1
- package/dist/cjs/models/Order.js +577 -0
- package/{build → dist/cjs}/models/Provider.d.ts +1 -1
- package/dist/cjs/models/Provider.js +137 -0
- package/{build → dist/cjs}/models/TCB.d.ts +1 -1
- package/dist/cjs/models/TCB.js +135 -0
- package/{build → dist/cjs}/models/TeeOffer.d.ts +2 -2
- package/dist/cjs/models/TeeOffer.js +600 -0
- package/dist/cjs/models/index.d.ts +5 -0
- package/dist/cjs/models/index.js +17 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/polyfills.js +7 -0
- package/dist/cjs/proto/Compression.js +132 -0
- package/dist/cjs/proto/TRI.js +293 -0
- package/dist/cjs/proto/TeeProperties.js +401 -0
- package/{build → dist/cjs}/providers/storage/ChunksDownloadDecorator.d.ts +2 -2
- package/{build → dist/cjs}/providers/storage/ChunksDownloadDecorator.js +1 -1
- package/{build → dist/cjs}/providers/storage/IStorageProvider.d.ts +1 -1
- package/{build → dist/cjs}/providers/storage/IStorageProvider.js +1 -1
- package/{build → dist/cjs}/providers/storage/S3StorageProvider.d.ts +2 -2
- package/{build → dist/cjs}/providers/storage/S3StorageProvider.js +3 -3
- package/{build → dist/cjs}/providers/storage/StorageAdapter.d.ts +2 -2
- package/dist/cjs/providers/storage/StorageAdapter.js +323 -0
- package/{build → dist/cjs}/providers/storage/StorageContentWriter.d.ts +2 -2
- package/{build → dist/cjs}/providers/storage/StorageContentWriter.js +3 -3
- package/{build → dist/cjs}/providers/storage/StorageKeyValueAdapter.d.ts +2 -2
- package/{build → dist/cjs}/providers/storage/StorageKeyValueAdapter.js +8 -8
- package/{build → dist/cjs}/providers/storage/StorageMetadataReader.d.ts +3 -3
- package/{build → dist/cjs}/providers/storage/StorageMetadataReader.js +3 -3
- package/{build → dist/cjs}/providers/storage/StorjAdapter.d.ts +2 -2
- package/{build → dist/cjs}/providers/storage/StorjAdapter.js +5 -5
- package/{build → dist/cjs}/providers/storage/StorjStorageProvider.d.ts +2 -2
- package/{build → dist/cjs}/providers/storage/StorjStorageProvider.js +6 -6
- package/dist/cjs/providers/storage/getStorageProvider.d.ts +4 -0
- package/dist/cjs/providers/storage/getStorageProvider.js +20 -0
- package/{build → dist/cjs}/providers/storage/types.js +1 -1
- package/{build → dist/cjs}/staticModels/ActiveOffers.d.ts +1 -1
- package/{build → dist/cjs}/staticModels/ActiveOffers.js +7 -7
- package/{build → dist/cjs}/staticModels/ActiveOrders.d.ts +1 -1
- package/{build → dist/cjs}/staticModels/ActiveOrders.js +12 -12
- package/{build → dist/cjs}/staticModels/Consensus.d.ts +1 -1
- package/dist/cjs/staticModels/Consensus.js +247 -0
- package/{build → dist/cjs}/staticModels/Deposits.d.ts +1 -1
- package/dist/cjs/staticModels/Deposits.js +214 -0
- package/{build → dist/cjs}/staticModels/Marks.d.ts +1 -1
- package/dist/cjs/staticModels/Marks.js +43 -0
- package/{build → dist/cjs}/staticModels/ModelPackager.js +6 -6
- package/{build → dist/cjs}/staticModels/Offers.d.ts +2 -2
- package/dist/cjs/staticModels/Offers.js +207 -0
- package/{build → dist/cjs}/staticModels/Orders.d.ts +2 -2
- package/dist/cjs/staticModels/Orders.js +502 -0
- package/{build → dist/cjs}/staticModels/ProviderRegistry.d.ts +1 -1
- package/{build → dist/cjs}/staticModels/ProviderRegistry.js +28 -28
- package/{build → dist/cjs}/staticModels/StaticModel.d.ts +2 -2
- package/dist/cjs/staticModels/StaticModel.js +46 -0
- package/{build → dist/cjs}/staticModels/Superpro.d.ts +2 -2
- package/dist/cjs/staticModels/Superpro.js +24 -0
- package/{build → dist/cjs}/staticModels/SuperproToken.d.ts +1 -1
- package/dist/cjs/staticModels/SuperproToken.js +154 -0
- package/{build → dist/cjs}/staticModels/TeeOffers.d.ts +1 -1
- package/dist/cjs/staticModels/TeeOffers.js +344 -0
- package/dist/cjs/store.js +17 -0
- package/{build → dist/cjs}/tee/QuoteParser.d.ts +1 -1
- package/dist/cjs/tee/QuoteParser.js +189 -0
- package/{build → dist/cjs}/tee/QuoteValidator.d.ts +1 -1
- package/dist/cjs/tee/QuoteValidator.js +414 -0
- package/{build → dist/cjs}/tee/errors.js +1 -1
- package/dist/cjs/tee/helpers.js +119 -0
- package/{build → dist/cjs}/tee/interface.d.ts +1 -1
- package/{build → dist/cjs}/tee/interface.js +1 -1
- package/{build → dist/cjs}/tee/statuses.js +1 -1
- package/{build → dist/cjs}/tee/types.js +1 -1
- package/{build → dist/cjs}/types/Compressor.js +1 -1
- package/{build → dist/cjs}/types/Consensus.d.ts +1 -1
- package/{build → dist/cjs}/types/Consensus.js +1 -1
- package/{build → dist/cjs}/types/DepositInfo.d.ts +1 -1
- package/{build → dist/cjs}/types/DepositInfo.js +1 -1
- package/{build → dist/cjs}/types/EtlModel.js +1 -1
- package/{build → dist/cjs}/types/Events.d.ts +2 -2
- package/{build → dist/cjs}/types/Events.js +1 -1
- package/dist/cjs/types/HardwareInfo.d.ts +6 -0
- package/{build → dist/cjs}/types/HardwareInfo.js +1 -1
- package/{build → dist/cjs}/types/Marks.js +1 -1
- package/{build → dist/cjs}/types/Offer.d.ts +1 -1
- package/{build → dist/cjs}/types/Offer.js +1 -1
- package/{build → dist/cjs}/types/OptionInfo.js +1 -1
- package/{build → dist/cjs}/types/Order.d.ts +1 -1
- package/{build → dist/cjs}/types/Order.js +1 -1
- package/{build → dist/cjs}/types/OrderUsage.d.ts +4 -4
- package/{build → dist/cjs}/types/OrderUsage.js +1 -1
- package/{build → dist/cjs}/types/Origins.js +1 -1
- package/{build → dist/cjs}/types/Provider.js +1 -1
- package/{build → dist/cjs}/types/ResourceLoader.d.ts +1 -1
- package/{build → dist/cjs}/types/ResourceLoader.js +1 -1
- package/{build → dist/cjs}/types/SlotInfo.js +1 -1
- package/{build → dist/cjs}/types/SlotUsage.d.ts +1 -1
- package/{build → dist/cjs}/types/SlotUsage.js +1 -1
- package/{build → dist/cjs}/types/Superpro.js +1 -1
- package/{build → dist/cjs}/types/TeeOfferInfo.d.ts +1 -1
- package/{build → dist/cjs}/types/TeeOfferInfo.js +1 -1
- package/{build → dist/cjs}/types/TeeOfferOption.d.ts +3 -3
- package/{build → dist/cjs}/types/TeeOfferOption.js +1 -1
- package/dist/cjs/types/TeeOfferSlot.d.ts +8 -0
- package/{build → dist/cjs}/types/TeeOfferSlot.js +1 -1
- package/{build → dist/cjs}/types/ValueOfferSlot.d.ts +4 -4
- package/{build → dist/cjs}/types/ValueOfferSlot.js +1 -1
- package/{build → dist/cjs}/types/Web3.js +1 -1
- package/{build → dist/cjs}/types/blockchainConnector/StorageAccess.d.ts +1 -1
- package/{build → dist/cjs}/types/blockchainConnector/StorageAccess.js +1 -1
- package/dist/cjs/types/index.d.ts +22 -0
- package/dist/cjs/types/index.js +39 -0
- package/{build → dist/cjs}/types/storage/StorageAccess.js +1 -1
- package/{build → dist/cjs}/types/storage/StorageFileAccess.d.ts +1 -1
- package/{build → dist/cjs}/types/storage/StorageFileAccess.js +1 -1
- package/{build → dist/cjs}/types/storage/StorageObject.js +1 -1
- package/dist/cjs/utils/Monitoring.js +48 -0
- package/{build → dist/cjs}/utils/NonceTracker.js +3 -3
- package/dist/cjs/utils/PubSub.js +37 -0
- package/{build → dist/cjs}/utils/TxManager.d.ts +1 -1
- package/dist/cjs/utils/TxManager.js +179 -0
- package/{build → dist/cjs}/utils/compressors/GzipCompressor.d.ts +2 -2
- package/{build → dist/cjs}/utils/compressors/GzipCompressor.js +3 -3
- package/{build → dist/cjs}/utils/compressors/UncompressedCompressor.d.ts +2 -2
- package/dist/cjs/utils/compressors/UncompressedCompressor.js +17 -0
- package/dist/cjs/utils/compressors/index.d.ts +2 -0
- package/{build → dist/cjs}/utils/compressors/index.js +3 -3
- package/{build → dist/cjs}/utils/helper.d.ts +3 -3
- package/dist/cjs/utils/helper.js +286 -0
- package/{build → dist/cjs}/utils/helpers/getStreamChunks.js +1 -1
- package/dist/cjs/utils/helpers/index.d.ts +1 -0
- package/{build → dist/cjs}/utils/helpers/index.js +2 -2
- package/{build → dist/cjs}/utils/helpers/tryWithInterval.js +1 -1
- package/{build → dist/cjs}/utils/resourceLoaders/BaseResourceLoader.d.ts +1 -1
- package/{build → dist/cjs}/utils/resourceLoaders/BaseResourceLoader.js +1 -1
- package/{build → dist/cjs}/utils/resourceLoaders/StorageProviderLoader.d.ts +2 -2
- package/{build → dist/cjs}/utils/resourceLoaders/StorageProviderLoader.js +8 -8
- package/{build → dist/cjs}/utils/resourceLoaders/UrlResourceLoader.d.ts +1 -1
- package/{build → dist/cjs}/utils/resourceLoaders/UrlResourceLoader.js +3 -3
- package/{build → dist/cjs}/utils/resourceLoaders/getResourceLoader.d.ts +1 -1
- package/dist/cjs/utils/resourceLoaders/getResourceLoader.js +15 -0
- package/dist/cjs/utils/resourceLoaders/index.d.ts +1 -0
- package/{build → dist/cjs}/utils/resourceLoaders/index.js +2 -2
- package/dist/mjs/TIIGenerator.d.ts +22 -0
- package/dist/mjs/TIIGenerator.js +224 -0
- package/dist/mjs/analytics/Analytics.d.ts +15 -0
- package/dist/mjs/analytics/Analytics.js +61 -0
- package/dist/mjs/analytics/AnalyticsError.d.ts +7 -0
- package/dist/mjs/analytics/AnalyticsError.js +8 -0
- package/dist/mjs/analytics/eventProviders/BrowserEventProvider.d.ts +18 -0
- package/dist/mjs/analytics/eventProviders/BrowserEventProvider.js +32 -0
- package/dist/mjs/analytics/eventProviders/EventProvider.d.ts +24 -0
- package/dist/mjs/analytics/eventProviders/EventProvider.js +22 -0
- package/dist/mjs/analytics/eventProviders/NodeEventProvider.d.ts +22 -0
- package/dist/mjs/analytics/eventProviders/NodeEventProvider.js +50 -0
- package/dist/mjs/analytics/transports/AxiosTransport.d.ts +4 -0
- package/dist/mjs/analytics/transports/AxiosTransport.js +31 -0
- package/dist/mjs/analytics/transports/FetchTransport.d.ts +4 -0
- package/dist/mjs/analytics/transports/FetchTransport.js +28 -0
- package/dist/mjs/analytics/types.d.ts +22 -0
- package/dist/mjs/analytics/types.js +2 -0
- package/dist/mjs/config.d.ts +4 -0
- package/dist/mjs/config.js +5 -0
- package/dist/mjs/connectors/BaseConnector.d.ts +36 -0
- package/dist/mjs/connectors/BaseConnector.js +34 -0
- package/dist/mjs/connectors/BlockchainConnector.d.ts +81 -0
- package/dist/mjs/connectors/BlockchainConnector.js +313 -0
- package/dist/mjs/connectors/BlockchainEventsListener.d.ts +15 -0
- package/dist/mjs/connectors/BlockchainEventsListener.js +75 -0
- package/dist/mjs/connectors/index.d.ts +2 -0
- package/dist/mjs/connectors/index.js +3 -0
- package/dist/mjs/constants.d.ts +13 -0
- package/dist/mjs/constants.js +14 -0
- package/dist/mjs/contracts/abi.d.ts +9916 -0
- package/dist/mjs/contracts/abi.js +12941 -0
- package/dist/mjs/crypto/Crypto.d.ts +54 -0
- package/dist/mjs/crypto/Crypto.js +95 -0
- package/dist/mjs/crypto/index.d.ts +2 -0
- package/dist/mjs/crypto/index.js +3 -0
- package/dist/mjs/crypto/nodejs/AES.d.ts +24 -0
- package/dist/mjs/crypto/nodejs/AES.js +74 -0
- package/dist/mjs/crypto/nodejs/ARIA.d.ts +24 -0
- package/dist/mjs/crypto/nodejs/ARIA.js +73 -0
- package/dist/mjs/crypto/nodejs/ECIES.d.ts +6 -0
- package/dist/mjs/crypto/nodejs/ECIES.js +51 -0
- package/dist/mjs/crypto/nodejs/NativeCrypto.d.ts +58 -0
- package/dist/mjs/crypto/nodejs/NativeCrypto.js +168 -0
- package/dist/mjs/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
- package/dist/mjs/crypto/nodejs/RSA-Hybrid.js +89 -0
- package/dist/mjs/index.d.ts +79 -0
- package/dist/mjs/index.js +75 -0
- package/dist/mjs/logger.d.ts +7 -0
- package/dist/mjs/logger.js +7 -0
- package/dist/mjs/models/EtlModel.d.ts +34 -0
- package/dist/mjs/models/EtlModel.js +96 -0
- package/dist/mjs/models/Offer.d.ts +130 -0
- package/dist/mjs/models/Offer.js +356 -0
- package/dist/mjs/models/Order.d.ts +148 -0
- package/dist/mjs/models/Order.js +520 -0
- package/dist/mjs/models/Provider.d.ts +51 -0
- package/dist/mjs/models/Provider.js +114 -0
- package/dist/mjs/models/TCB.d.ts +58 -0
- package/dist/mjs/models/TCB.js +107 -0
- package/dist/mjs/models/TeeOffer.d.ts +204 -0
- package/dist/mjs/models/TeeOffer.js +533 -0
- package/dist/mjs/models/index.d.ts +5 -0
- package/dist/mjs/models/index.js +6 -0
- package/dist/mjs/package.json +1 -0
- package/dist/mjs/polyfills.d.ts +0 -0
- package/dist/mjs/polyfills.js +7 -0
- package/dist/mjs/proto/Compression.d.ts +36 -0
- package/dist/mjs/proto/Compression.js +123 -0
- package/dist/mjs/proto/TRI.d.ts +124 -0
- package/dist/mjs/proto/TRI.js +284 -0
- package/dist/mjs/proto/TeeProperties.d.ts +263 -0
- package/dist/mjs/proto/TeeProperties.js +391 -0
- package/dist/mjs/providers/storage/ChunksDownloadDecorator.d.ts +36 -0
- package/dist/mjs/providers/storage/ChunksDownloadDecorator.js +139 -0
- package/dist/mjs/providers/storage/IStorageProvider.d.ts +15 -0
- package/dist/mjs/providers/storage/IStorageProvider.js +2 -0
- package/dist/mjs/providers/storage/S3StorageProvider.d.ts +25 -0
- package/dist/mjs/providers/storage/S3StorageProvider.js +167 -0
- package/dist/mjs/providers/storage/StorageAdapter.d.ts +60 -0
- package/dist/mjs/providers/storage/StorageAdapter.js +271 -0
- package/dist/mjs/providers/storage/StorageContentWriter.d.ts +46 -0
- package/dist/mjs/providers/storage/StorageContentWriter.js +161 -0
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +23 -0
- package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +119 -0
- package/dist/mjs/providers/storage/StorageMetadataReader.d.ts +20 -0
- package/dist/mjs/providers/storage/StorageMetadataReader.js +51 -0
- package/dist/mjs/providers/storage/StorjAdapter.d.ts +19 -0
- package/dist/mjs/providers/storage/StorjAdapter.js +48 -0
- package/dist/mjs/providers/storage/StorjStorageProvider.d.ts +25 -0
- package/dist/mjs/providers/storage/StorjStorageProvider.js +141 -0
- package/dist/mjs/providers/storage/getStorageProvider.d.ts +4 -0
- package/dist/mjs/providers/storage/getStorageProvider.js +15 -0
- package/dist/mjs/providers/storage/types.d.ts +7 -0
- package/dist/mjs/providers/storage/types.js +2 -0
- package/dist/mjs/staticModels/ActiveOffers.d.ts +15 -0
- package/dist/mjs/staticModels/ActiveOffers.js +32 -0
- package/dist/mjs/staticModels/ActiveOrders.d.ts +20 -0
- package/dist/mjs/staticModels/ActiveOrders.js +71 -0
- package/dist/mjs/staticModels/Consensus.d.ts +42 -0
- package/dist/mjs/staticModels/Consensus.js +220 -0
- package/dist/mjs/staticModels/Deposits.d.ts +70 -0
- package/dist/mjs/staticModels/Deposits.js +190 -0
- package/dist/mjs/staticModels/Marks.d.ts +8 -0
- package/dist/mjs/staticModels/Marks.js +25 -0
- package/dist/mjs/staticModels/ModelPackager.d.ts +18 -0
- package/dist/mjs/staticModels/ModelPackager.js +45 -0
- package/dist/mjs/staticModels/Offers.d.ts +65 -0
- package/dist/mjs/staticModels/Offers.js +184 -0
- package/dist/mjs/staticModels/Orders.d.ts +155 -0
- package/dist/mjs/staticModels/Orders.js +472 -0
- package/dist/mjs/staticModels/ProviderRegistry.d.ts +74 -0
- package/dist/mjs/staticModels/ProviderRegistry.js +169 -0
- package/dist/mjs/staticModels/StaticModel.d.ts +8 -0
- package/dist/mjs/staticModels/StaticModel.js +30 -0
- package/dist/mjs/staticModels/Superpro.d.ts +16 -0
- package/dist/mjs/staticModels/Superpro.js +23 -0
- package/dist/mjs/staticModels/SuperproToken.d.ts +48 -0
- package/dist/mjs/staticModels/SuperproToken.js +136 -0
- package/dist/mjs/staticModels/TeeOffers.d.ts +115 -0
- package/dist/mjs/staticModels/TeeOffers.js +309 -0
- package/dist/mjs/store.d.ts +15 -0
- package/dist/mjs/store.js +15 -0
- package/dist/mjs/tee/QuoteParser.d.ts +27 -0
- package/dist/mjs/tee/QuoteParser.js +162 -0
- package/dist/mjs/tee/QuoteValidator.d.ts +38 -0
- package/dist/mjs/tee/QuoteValidator.js +382 -0
- package/dist/mjs/tee/errors.d.ts +6 -0
- package/dist/mjs/tee/errors.js +7 -0
- package/dist/mjs/tee/helpers.d.ts +14 -0
- package/dist/mjs/tee/helpers.js +115 -0
- package/dist/mjs/tee/interface.d.ts +63 -0
- package/dist/mjs/tee/interface.js +2 -0
- package/dist/mjs/tee/statuses.d.ts +21 -0
- package/dist/mjs/tee/statuses.js +25 -0
- package/dist/mjs/tee/types.d.ts +75 -0
- package/dist/mjs/tee/types.js +2 -0
- package/dist/mjs/types/Compressor.d.ts +5 -0
- package/dist/mjs/types/Compressor.js +2 -0
- package/dist/mjs/types/Consensus.d.ts +60 -0
- package/dist/mjs/types/Consensus.js +16 -0
- package/dist/mjs/types/DepositInfo.d.ts +6 -0
- package/dist/mjs/types/DepositInfo.js +2 -0
- package/dist/mjs/types/EtlModel.d.ts +2 -0
- package/dist/mjs/types/EtlModel.js +2 -0
- package/dist/mjs/types/Events.d.ts +34 -0
- package/dist/mjs/types/Events.js +2 -0
- package/dist/mjs/types/HardwareInfo.d.ts +6 -0
- package/dist/mjs/types/HardwareInfo.js +2 -0
- package/dist/mjs/types/Marks.d.ts +9 -0
- package/dist/mjs/types/Marks.js +7 -0
- package/dist/mjs/types/Offer.d.ts +33 -0
- package/dist/mjs/types/Offer.js +14 -0
- package/dist/mjs/types/OptionInfo.d.ts +8 -0
- package/dist/mjs/types/OptionInfo.js +2 -0
- package/dist/mjs/types/Order.d.ts +56 -0
- package/dist/mjs/types/Order.js +51 -0
- package/dist/mjs/types/OrderUsage.d.ts +26 -0
- package/dist/mjs/types/OrderUsage.js +2 -0
- package/dist/mjs/types/Origins.d.ts +6 -0
- package/dist/mjs/types/Origins.js +2 -0
- package/dist/mjs/types/Provider.d.ts +7 -0
- package/dist/mjs/types/Provider.js +2 -0
- package/dist/mjs/types/ResourceLoader.d.ts +28 -0
- package/dist/mjs/types/ResourceLoader.js +2 -0
- package/dist/mjs/types/SlotInfo.d.ts +6 -0
- package/dist/mjs/types/SlotInfo.js +2 -0
- package/dist/mjs/types/SlotUsage.d.ts +11 -0
- package/dist/mjs/types/SlotUsage.js +6 -0
- package/dist/mjs/types/Superpro.d.ts +9 -0
- package/dist/mjs/types/Superpro.js +11 -0
- package/dist/mjs/types/TeeOfferInfo.d.ts +10 -0
- package/dist/mjs/types/TeeOfferInfo.js +2 -0
- package/dist/mjs/types/TeeOfferOption.d.ts +13 -0
- package/dist/mjs/types/TeeOfferOption.js +2 -0
- package/dist/mjs/types/TeeOfferSlot.d.ts +8 -0
- package/dist/mjs/types/TeeOfferSlot.js +2 -0
- package/dist/mjs/types/ValueOfferSlot.d.ts +16 -0
- package/dist/mjs/types/ValueOfferSlot.js +2 -0
- package/dist/mjs/types/Web3.d.ts +62 -0
- package/dist/mjs/types/Web3.js +2 -0
- package/dist/mjs/types/blockchainConnector/StorageAccess.d.ts +8 -0
- package/dist/mjs/types/blockchainConnector/StorageAccess.js +2 -0
- package/dist/mjs/types/index.d.ts +22 -0
- package/dist/mjs/types/index.js +23 -0
- package/dist/mjs/types/storage/StorageAccess.d.ts +7 -0
- package/dist/mjs/types/storage/StorageAccess.js +2 -0
- package/dist/mjs/types/storage/StorageFileAccess.d.ts +5 -0
- package/dist/mjs/types/storage/StorageFileAccess.js +2 -0
- package/dist/mjs/types/storage/StorageObject.d.ts +8 -0
- package/dist/mjs/types/storage/StorageObject.js +2 -0
- package/dist/mjs/utils/Monitoring.d.ts +11 -0
- package/dist/mjs/utils/Monitoring.js +42 -0
- package/dist/mjs/utils/NonceTracker.d.ts +19 -0
- package/dist/mjs/utils/NonceTracker.js +73 -0
- package/dist/mjs/utils/PubSub.d.ts +9 -0
- package/dist/mjs/utils/PubSub.js +32 -0
- package/dist/mjs/utils/TxManager.d.ts +25 -0
- package/dist/mjs/utils/TxManager.js +162 -0
- package/dist/mjs/utils/compressors/GzipCompressor.d.ts +8 -0
- package/dist/mjs/utils/compressors/GzipCompressor.js +14 -0
- package/dist/mjs/utils/compressors/UncompressedCompressor.d.ts +8 -0
- package/dist/mjs/utils/compressors/UncompressedCompressor.js +13 -0
- package/dist/mjs/utils/compressors/index.d.ts +2 -0
- package/dist/mjs/utils/compressors/index.js +3 -0
- package/dist/mjs/utils/helper.d.ts +44 -0
- package/dist/mjs/utils/helper.js +258 -0
- package/dist/mjs/utils/helpers/getStreamChunks.d.ts +9 -0
- package/dist/mjs/utils/helpers/getStreamChunks.js +31 -0
- package/dist/mjs/utils/helpers/index.d.ts +1 -0
- package/dist/mjs/utils/helpers/index.js +2 -0
- package/dist/mjs/utils/helpers/tryWithInterval.d.ts +13 -0
- package/dist/mjs/utils/helpers/tryWithInterval.js +35 -0
- package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.d.ts +10 -0
- package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.js +10 -0
- package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.d.ts +18 -0
- package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.js +53 -0
- package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.d.ts +9 -0
- package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.js +44 -0
- package/dist/mjs/utils/resourceLoaders/getResourceLoader.d.ts +5 -0
- package/dist/mjs/utils/resourceLoaders/getResourceLoader.js +11 -0
- package/dist/mjs/utils/resourceLoaders/index.d.ts +1 -0
- package/dist/mjs/utils/resourceLoaders/index.js +2 -0
- package/package.json +13 -5
- package/build/TIIGenerator.js +0 -246
- package/build/analytics/Analytics.js +0 -74
- package/build/analytics/eventProviders/EventProvider.js +0 -14
- package/build/analytics/eventProviders/NodeEventProvider.js +0 -48
- package/build/analytics/transports/FetchTransport.js +0 -42
- package/build/connectors/BlockchainConnector.js +0 -358
- package/build/crypto/Crypto.js +0 -119
- package/build/crypto/index.d.ts +0 -2
- package/build/crypto/nodejs/NativeCrypto.js +0 -183
- package/build/crypto/nodejs/RSA-Hybrid.js +0 -95
- package/build/index.d.ts +0 -79
- package/build/index.js +0 -142
- package/build/models/Offer.js +0 -407
- package/build/models/Order.js +0 -577
- package/build/models/Provider.js +0 -137
- package/build/models/TCB.js +0 -135
- package/build/models/TeeOffer.js +0 -600
- package/build/models/index.d.ts +0 -5
- package/build/models/index.js +0 -17
- package/build/polyfills.js +0 -7
- package/build/proto/Compression.js +0 -132
- package/build/proto/TRI.js +0 -293
- package/build/proto/TeeProperties.js +0 -401
- package/build/providers/storage/StorageAdapter.js +0 -323
- package/build/providers/storage/getStorageProvider.d.ts +0 -4
- package/build/providers/storage/getStorageProvider.js +0 -20
- package/build/staticModels/Consensus.js +0 -247
- package/build/staticModels/Deposits.js +0 -214
- package/build/staticModels/Marks.js +0 -43
- package/build/staticModels/Offers.js +0 -207
- package/build/staticModels/Orders.js +0 -502
- package/build/staticModels/StaticModel.js +0 -46
- package/build/staticModels/Superpro.js +0 -24
- package/build/staticModels/SuperproToken.js +0 -154
- package/build/staticModels/TeeOffers.js +0 -344
- package/build/store.js +0 -17
- package/build/tee/QuoteParser.js +0 -189
- package/build/tee/QuoteValidator.js +0 -414
- package/build/tee/helpers.js +0 -119
- package/build/types/HardwareInfo.d.ts +0 -6
- package/build/types/TeeOfferSlot.d.ts +0 -8
- package/build/types/index.d.ts +0 -22
- package/build/types/index.js +0 -39
- package/build/utils/Monitoring.js +0 -48
- package/build/utils/PubSub.js +0 -37
- package/build/utils/TxManager.js +0 -179
- package/build/utils/compressors/UncompressedCompressor.js +0 -17
- package/build/utils/compressors/index.d.ts +0 -2
- package/build/utils/helper.js +0 -286
- package/build/utils/helpers/index.d.ts +0 -1
- package/build/utils/resourceLoaders/getResourceLoader.js +0 -15
- package/build/utils/resourceLoaders/index.d.ts +0 -1
- /package/{build → dist/cjs}/analytics/AnalyticsError.d.ts +0 -0
- /package/{build → dist/cjs}/analytics/eventProviders/EventProvider.d.ts +0 -0
- /package/{build → dist/cjs}/config.d.ts +0 -0
- /package/{build → dist/cjs}/constants.d.ts +0 -0
- /package/{build → dist/cjs}/contracts/abi.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/Crypto.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/nodejs/AES.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/nodejs/ARIA.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/nodejs/ECIES.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/nodejs/NativeCrypto.d.ts +0 -0
- /package/{build → dist/cjs}/crypto/nodejs/RSA-Hybrid.d.ts +0 -0
- /package/{build → dist/cjs}/logger.d.ts +0 -0
- /package/{build → dist/cjs}/polyfills.d.ts +0 -0
- /package/{build → dist/cjs}/proto/Compression.d.ts +0 -0
- /package/{build → dist/cjs}/proto/TRI.d.ts +0 -0
- /package/{build → dist/cjs}/proto/TeeProperties.d.ts +0 -0
- /package/{build → dist/cjs}/providers/storage/types.d.ts +0 -0
- /package/{build → dist/cjs}/staticModels/ModelPackager.d.ts +0 -0
- /package/{build → dist/cjs}/store.d.ts +0 -0
- /package/{build → dist/cjs}/tee/errors.d.ts +0 -0
- /package/{build → dist/cjs}/tee/helpers.d.ts +0 -0
- /package/{build → dist/cjs}/tee/statuses.d.ts +0 -0
- /package/{build → dist/cjs}/tee/types.d.ts +0 -0
- /package/{build → dist/cjs}/types/Compressor.d.ts +0 -0
- /package/{build → dist/cjs}/types/EtlModel.d.ts +0 -0
- /package/{build → dist/cjs}/types/Marks.d.ts +0 -0
- /package/{build → dist/cjs}/types/OptionInfo.d.ts +0 -0
- /package/{build → dist/cjs}/types/Origins.d.ts +0 -0
- /package/{build → dist/cjs}/types/Provider.d.ts +0 -0
- /package/{build → dist/cjs}/types/SlotInfo.d.ts +0 -0
- /package/{build → dist/cjs}/types/Superpro.d.ts +0 -0
- /package/{build → dist/cjs}/types/Web3.d.ts +0 -0
- /package/{build → dist/cjs}/types/storage/StorageAccess.d.ts +0 -0
- /package/{build → dist/cjs}/types/storage/StorageObject.d.ts +0 -0
- /package/{build → dist/cjs}/utils/Monitoring.d.ts +0 -0
- /package/{build → dist/cjs}/utils/NonceTracker.d.ts +0 -0
- /package/{build → dist/cjs}/utils/PubSub.d.ts +0 -0
- /package/{build → dist/cjs}/utils/helpers/getStreamChunks.d.ts +0 -0
- /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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
|