@atomiqlabs/sdk 8.8.3 → 8.8.4
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/LICENSE +201 -201
- package/README.md +1760 -1760
- package/dist/SmartChainAssets.d.ts +181 -181
- package/dist/SmartChainAssets.js +181 -181
- package/dist/bitcoin/coinselect2/accumulative.d.ts +7 -7
- package/dist/bitcoin/coinselect2/accumulative.js +52 -52
- package/dist/bitcoin/coinselect2/blackjack.d.ts +7 -7
- package/dist/bitcoin/coinselect2/blackjack.js +38 -38
- package/dist/bitcoin/coinselect2/index.d.ts +20 -20
- package/dist/bitcoin/coinselect2/index.js +69 -69
- package/dist/bitcoin/coinselect2/utils.d.ts +82 -82
- package/dist/bitcoin/coinselect2/utils.js +158 -158
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +113 -113
- package/dist/bitcoin/wallet/BitcoinWallet.js +335 -335
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +116 -116
- package/dist/bitcoin/wallet/IBitcoinWallet.js +21 -21
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +106 -106
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +196 -196
- package/dist/enums/FeeType.d.ts +15 -15
- package/dist/enums/FeeType.js +19 -19
- package/dist/enums/SwapAmountType.d.ts +15 -15
- package/dist/enums/SwapAmountType.js +19 -19
- package/dist/enums/SwapDirection.d.ts +15 -15
- package/dist/enums/SwapDirection.js +19 -19
- package/dist/enums/SwapSide.d.ts +15 -15
- package/dist/enums/SwapSide.js +19 -19
- package/dist/enums/SwapType.d.ts +75 -75
- package/dist/enums/SwapType.js +79 -79
- package/dist/errors/IntermediaryError.d.ts +13 -13
- package/dist/errors/IntermediaryError.js +27 -27
- package/dist/errors/RequestError.d.ts +32 -32
- package/dist/errors/RequestError.js +54 -54
- package/dist/errors/UserError.d.ts +8 -8
- package/dist/errors/UserError.js +16 -16
- package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
- package/dist/events/UnifiedSwapEventListener.js +132 -132
- package/dist/http/HttpUtils.d.ts +27 -27
- package/dist/http/HttpUtils.js +91 -91
- package/dist/http/paramcoders/IParamReader.d.ts +8 -8
- package/dist/http/paramcoders/IParamReader.js +2 -2
- package/dist/http/paramcoders/ParamDecoder.d.ts +44 -44
- package/dist/http/paramcoders/ParamDecoder.js +137 -137
- package/dist/http/paramcoders/ParamEncoder.d.ts +20 -20
- package/dist/http/paramcoders/ParamEncoder.js +36 -36
- package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
- package/dist/http/paramcoders/SchemaVerifier.js +145 -145
- package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
- package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
- package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -13
- package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
- package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -174
- package/dist/index.d.ts +85 -85
- package/dist/index.js +158 -158
- package/dist/intermediaries/Intermediary.d.ts +178 -178
- package/dist/intermediaries/Intermediary.js +166 -166
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +211 -211
- package/dist/intermediaries/IntermediaryDiscovery.js +424 -424
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +450 -450
- package/dist/intermediaries/apis/IntermediaryAPI.js +618 -618
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
- package/dist/lnurl/LNURL.d.ts +102 -102
- package/dist/lnurl/LNURL.js +321 -321
- package/dist/prices/RedundantSwapPrice.d.ts +110 -110
- package/dist/prices/RedundantSwapPrice.js +222 -222
- package/dist/prices/SingleSwapPrice.d.ts +34 -34
- package/dist/prices/SingleSwapPrice.js +44 -44
- package/dist/prices/SwapPriceWithChain.d.ts +107 -107
- package/dist/prices/SwapPriceWithChain.js +128 -128
- package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
- package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
- package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
- package/dist/prices/abstract/IPriceProvider.js +74 -74
- package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
- package/dist/prices/abstract/ISwapPrice.js +279 -279
- package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
- package/dist/prices/providers/BinancePriceProvider.js +30 -30
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
- package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
- package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
- package/dist/prices/providers/CustomPriceProvider.js +35 -35
- package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
- package/dist/prices/providers/KrakenPriceProvider.js +45 -45
- package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
- package/dist/prices/providers/OKXPriceProvider.js +29 -29
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
- package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
- package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
- package/dist/storage/IUnifiedStorage.d.ts +85 -85
- package/dist/storage/IUnifiedStorage.js +2 -2
- package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
- package/dist/storage/UnifiedSwapStorage.js +116 -116
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
- package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
- package/dist/storage-browser/LocalStorageManager.js +93 -93
- package/dist/swapper/Swapper.d.ts +732 -732
- package/dist/swapper/Swapper.js +1713 -1713
- package/dist/swapper/SwapperFactory.d.ts +135 -135
- package/dist/swapper/SwapperFactory.js +162 -162
- package/dist/swapper/SwapperUtils.d.ts +206 -206
- package/dist/swapper/SwapperUtils.js +481 -481
- package/dist/swapper/SwapperWithChain.d.ts +404 -404
- package/dist/swapper/SwapperWithChain.js +469 -469
- package/dist/swapper/SwapperWithSigner.d.ts +322 -322
- package/dist/swapper/SwapperWithSigner.js +318 -318
- package/dist/swaps/IAddressSwap.d.ts +22 -22
- package/dist/swaps/IAddressSwap.js +14 -14
- package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
- package/dist/swaps/IBTCWalletSwap.js +18 -18
- package/dist/swaps/IClaimableSwap.d.ts +49 -49
- package/dist/swaps/IClaimableSwap.js +15 -15
- package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
- package/dist/swaps/IClaimableSwapWrapper.js +2 -2
- package/dist/swaps/IRefundableSwap.d.ts +43 -43
- package/dist/swaps/IRefundableSwap.js +14 -14
- package/dist/swaps/ISwap.d.ts +392 -392
- package/dist/swaps/ISwap.js +349 -349
- package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
- package/dist/swaps/ISwapWithGasDrop.js +12 -12
- package/dist/swaps/ISwapWrapper.d.ts +285 -285
- package/dist/swaps/ISwapWrapper.js +353 -353
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +139 -139
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +170 -170
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +128 -128
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +167 -167
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +105 -105
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +129 -129
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +64 -64
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +82 -82
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +531 -531
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +190 -190
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +432 -432
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +583 -583
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +235 -235
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +525 -525
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +202 -202
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +406 -406
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +68 -68
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +117 -117
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +127 -127
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +251 -251
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +536 -536
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +132 -132
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +286 -286
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +637 -637
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1448 -1448
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +257 -257
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +947 -947
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
- package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +83 -83
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +69 -69
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +93 -93
- package/dist/types/AmountData.d.ts +10 -10
- package/dist/types/AmountData.js +2 -2
- package/dist/types/CustomPriceFunction.d.ts +11 -11
- package/dist/types/CustomPriceFunction.js +2 -2
- package/dist/types/PriceInfoType.d.ts +28 -28
- package/dist/types/PriceInfoType.js +57 -57
- package/dist/types/SwapExecutionAction.d.ts +88 -88
- package/dist/types/SwapExecutionAction.js +2 -2
- package/dist/types/SwapStateInfo.d.ts +5 -5
- package/dist/types/SwapStateInfo.js +2 -2
- package/dist/types/SwapWithSigner.d.ts +17 -17
- package/dist/types/SwapWithSigner.js +43 -43
- package/dist/types/Token.d.ts +99 -99
- package/dist/types/Token.js +76 -76
- package/dist/types/TokenAmount.d.ts +69 -69
- package/dist/types/TokenAmount.js +60 -60
- package/dist/types/fees/Fee.d.ts +50 -50
- package/dist/types/fees/Fee.js +2 -2
- package/dist/types/fees/FeeBreakdown.d.ts +11 -11
- package/dist/types/fees/FeeBreakdown.js +2 -2
- package/dist/types/fees/PercentagePPM.d.ts +17 -17
- package/dist/types/fees/PercentagePPM.js +18 -18
- package/dist/types/lnurl/LNURLPay.d.ts +61 -61
- package/dist/types/lnurl/LNURLPay.js +31 -31
- package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
- package/dist/types/lnurl/LNURLWithdraw.js +27 -27
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
- package/dist/types/wallets/LightningInvoiceCreateService.js +15 -15
- package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
- package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
- package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
- package/dist/utils/AutomaticClockDriftCorrection.js +70 -70
- package/dist/utils/BitcoinUtils.d.ts +16 -16
- package/dist/utils/BitcoinUtils.js +141 -141
- package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
- package/dist/utils/BitcoinWalletUtils.js +14 -14
- package/dist/utils/Logger.d.ts +7 -7
- package/dist/utils/Logger.js +12 -12
- package/dist/utils/RetryUtils.d.ts +22 -22
- package/dist/utils/RetryUtils.js +67 -67
- package/dist/utils/SwapUtils.d.ts +88 -88
- package/dist/utils/SwapUtils.js +72 -72
- package/dist/utils/TimeoutUtils.d.ts +17 -17
- package/dist/utils/TimeoutUtils.js +55 -55
- package/dist/utils/TokenUtils.d.ts +19 -19
- package/dist/utils/TokenUtils.js +37 -37
- package/dist/utils/TypeUtils.d.ts +7 -7
- package/dist/utils/TypeUtils.js +2 -2
- package/dist/utils/Utils.d.ts +67 -67
- package/dist/utils/Utils.js +208 -208
- package/package.json +43 -43
- package/src/SmartChainAssets.ts +186 -186
- package/src/bitcoin/coinselect2/accumulative.ts +69 -69
- package/src/bitcoin/coinselect2/blackjack.ts +50 -50
- package/src/bitcoin/coinselect2/index.ts +93 -93
- package/src/bitcoin/coinselect2/utils.ts +236 -236
- package/src/bitcoin/wallet/BitcoinWallet.ts +439 -439
- package/src/bitcoin/wallet/IBitcoinWallet.ts +140 -140
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +225 -225
- package/src/enums/FeeType.ts +15 -15
- package/src/enums/SwapAmountType.ts +16 -16
- package/src/enums/SwapDirection.ts +15 -15
- package/src/enums/SwapSide.ts +16 -16
- package/src/enums/SwapType.ts +75 -75
- package/src/errors/IntermediaryError.ts +28 -28
- package/src/errors/RequestError.ts +64 -64
- package/src/errors/UserError.ts +15 -15
- package/src/events/UnifiedSwapEventListener.ts +173 -173
- package/src/http/HttpUtils.ts +91 -91
- package/src/http/paramcoders/IParamReader.ts +9 -9
- package/src/http/paramcoders/ParamDecoder.ts +145 -145
- package/src/http/paramcoders/ParamEncoder.ts +40 -40
- package/src/http/paramcoders/SchemaVerifier.ts +153 -153
- package/src/http/paramcoders/client/ResponseParamDecoder.ts +57 -57
- package/src/http/paramcoders/client/StreamParamEncoder.ts +28 -28
- package/src/http/paramcoders/client/StreamingFetchPromise.ts +192 -192
- package/src/index.ts +140 -140
- package/src/intermediaries/Intermediary.ts +280 -280
- package/src/intermediaries/IntermediaryDiscovery.ts +541 -541
- package/src/intermediaries/apis/IntermediaryAPI.ts +963 -963
- package/src/intermediaries/apis/TrustedIntermediaryAPI.ts +257 -257
- package/src/lnurl/LNURL.ts +402 -402
- package/src/prices/RedundantSwapPrice.ts +264 -264
- package/src/prices/SingleSwapPrice.ts +50 -50
- package/src/prices/SwapPriceWithChain.ts +194 -194
- package/src/prices/abstract/ICachedSwapPrice.ts +85 -85
- package/src/prices/abstract/IPriceProvider.ts +127 -127
- package/src/prices/abstract/ISwapPrice.ts +390 -390
- package/src/prices/providers/BinancePriceProvider.ts +48 -48
- package/src/prices/providers/CoinGeckoPriceProvider.ts +46 -46
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +49 -49
- package/src/prices/providers/CustomPriceProvider.ts +40 -40
- package/src/prices/providers/KrakenPriceProvider.ts +83 -83
- package/src/prices/providers/OKXPriceProvider.ts +59 -59
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +31 -31
- package/src/prices/providers/abstract/HttpPriceProvider.ts +14 -14
- package/src/storage/IUnifiedStorage.ts +95 -95
- package/src/storage/UnifiedSwapStorage.ts +141 -141
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +350 -350
- package/src/storage-browser/LocalStorageManager.ts +106 -106
- package/src/swapper/Swapper.ts +2488 -2488
- package/src/swapper/SwapperFactory.ts +307 -307
- package/src/swapper/SwapperUtils.ts +570 -570
- package/src/swapper/SwapperWithChain.ts +707 -707
- package/src/swapper/SwapperWithSigner.ts +511 -511
- package/src/swaps/IAddressSwap.ts +30 -30
- package/src/swaps/IBTCWalletSwap.ts +92 -92
- package/src/swaps/IClaimableSwap.ts +65 -65
- package/src/swaps/IClaimableSwapWrapper.ts +17 -17
- package/src/swaps/IRefundableSwap.ts +58 -58
- package/src/swaps/ISwap.ts +703 -703
- package/src/swaps/ISwapWithGasDrop.ts +25 -25
- package/src/swaps/ISwapWrapper.ts +539 -539
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +217 -217
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +269 -269
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +282 -282
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +169 -169
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +300 -300
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +107 -107
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1473 -1474
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +601 -601
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1582 -1582
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +750 -750
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +1299 -1299
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +610 -610
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +1096 -1096
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +138 -138
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +304 -304
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +786 -786
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +206 -206
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +401 -401
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +1812 -1812
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +1236 -1236
- package/src/swaps/trusted/ln/LnForGasSwap.ts +589 -589
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +91 -91
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +862 -862
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +131 -131
- package/src/types/AmountData.ts +9 -9
- package/src/types/CustomPriceFunction.ts +11 -11
- package/src/types/PriceInfoType.ts +66 -66
- package/src/types/SwapExecutionAction.ts +99 -99
- package/src/types/SwapStateInfo.ts +6 -6
- package/src/types/SwapWithSigner.ts +61 -61
- package/src/types/Token.ts +163 -163
- package/src/types/TokenAmount.ts +132 -132
- package/src/types/fees/Fee.ts +56 -56
- package/src/types/fees/FeeBreakdown.ts +11 -11
- package/src/types/fees/PercentagePPM.ts +26 -26
- package/src/types/lnurl/LNURLPay.ts +79 -79
- package/src/types/lnurl/LNURLWithdraw.ts +61 -61
- package/src/types/wallets/LightningInvoiceCreateService.ts +30 -30
- package/src/types/wallets/MinimalBitcoinWalletInterface.ts +21 -21
- package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +9 -9
- package/src/utils/AutomaticClockDriftCorrection.ts +71 -71
- package/src/utils/BitcoinUtils.ts +132 -132
- package/src/utils/BitcoinWalletUtils.ts +15 -15
- package/src/utils/Logger.ts +14 -14
- package/src/utils/RetryUtils.ts +78 -78
- package/src/utils/SwapUtils.ts +99 -99
- package/src/utils/TimeoutUtils.ts +49 -49
- package/src/utils/TokenUtils.ts +33 -33
- package/src/utils/TypeUtils.ts +8 -8
- package/src/utils/Utils.ts +212 -212
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import {CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
-
import {ExchangePriceProvider} from "./abstract/ExchangePriceProvider";
|
|
3
|
-
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
-
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
-
|
|
6
|
-
export type BinanceResponse = {
|
|
7
|
-
symbol: string;
|
|
8
|
-
price: string;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Price provider using Binance exchange API
|
|
13
|
-
*
|
|
14
|
-
* @category Pricing
|
|
15
|
-
*/
|
|
16
|
-
export class BinancePriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
|
|
17
|
-
|
|
18
|
-
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://api.binance.com/api/v3", httpRequestTimeout?: number) {
|
|
19
|
-
super(coinsMap, url, httpRequestTimeout);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @inheritDoc
|
|
24
|
-
*/
|
|
25
|
-
protected async fetchPair(pair: string, abortSignal?: AbortSignal) {
|
|
26
|
-
const response = await httpGet<BinanceResponse>(
|
|
27
|
-
this.url+"/ticker/price?symbol="+pair,
|
|
28
|
-
this.httpRequestTimeout,
|
|
29
|
-
abortSignal
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
return parseFloat(response.price);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* @inheritDoc
|
|
37
|
-
*/
|
|
38
|
-
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
39
|
-
const response = await httpGet<BinanceResponse>(
|
|
40
|
-
this.url+"/ticker/price?symbol=BTCUSDC",
|
|
41
|
-
this.httpRequestTimeout,
|
|
42
|
-
abortSignal
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
return parseFloat(response.price)/100000000;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
}
|
|
1
|
+
import {CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
+
import {ExchangePriceProvider} from "./abstract/ExchangePriceProvider";
|
|
3
|
+
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
+
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
+
|
|
6
|
+
export type BinanceResponse = {
|
|
7
|
+
symbol: string;
|
|
8
|
+
price: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Price provider using Binance exchange API
|
|
13
|
+
*
|
|
14
|
+
* @category Pricing
|
|
15
|
+
*/
|
|
16
|
+
export class BinancePriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
|
|
17
|
+
|
|
18
|
+
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://api.binance.com/api/v3", httpRequestTimeout?: number) {
|
|
19
|
+
super(coinsMap, url, httpRequestTimeout);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @inheritDoc
|
|
24
|
+
*/
|
|
25
|
+
protected async fetchPair(pair: string, abortSignal?: AbortSignal) {
|
|
26
|
+
const response = await httpGet<BinanceResponse>(
|
|
27
|
+
this.url+"/ticker/price?symbol="+pair,
|
|
28
|
+
this.httpRequestTimeout,
|
|
29
|
+
abortSignal
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
return parseFloat(response.price);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @inheritDoc
|
|
37
|
+
*/
|
|
38
|
+
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
39
|
+
const response = await httpGet<BinanceResponse>(
|
|
40
|
+
this.url+"/ticker/price?symbol=BTCUSDC",
|
|
41
|
+
this.httpRequestTimeout,
|
|
42
|
+
abortSignal
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
return parseFloat(response.price)/100000000;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
}
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import {CoinType, CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
-
import {HttpPriceProvider} from "./abstract/HttpPriceProvider";
|
|
3
|
-
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
-
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
-
|
|
6
|
-
export type CoinGeckoResponse<Currency extends string> = {
|
|
7
|
-
[coinId: string]: {[c in Currency]: number}
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Price provider using CoinGecko API
|
|
12
|
-
* @category Pricing
|
|
13
|
-
*/
|
|
14
|
-
export class CoinGeckoPriceProvider<T extends MultiChain> extends HttpPriceProvider<T> {
|
|
15
|
-
|
|
16
|
-
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://api.coingecko.com/api/v3", httpRequestTimeout?: number) {
|
|
17
|
-
super(coinsMap, url, httpRequestTimeout);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @inheritDoc
|
|
22
|
-
*/
|
|
23
|
-
protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
|
|
24
|
-
let response = await httpGet<CoinGeckoResponse<"sats">>(
|
|
25
|
-
this.url+"/simple/price?ids="+token.coinId+"&vs_currencies=sats&precision=6",
|
|
26
|
-
this.httpRequestTimeout,
|
|
27
|
-
abortSignal
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
return BigInt(response[token.coinId].sats*1000000);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @inheritDoc
|
|
35
|
-
*/
|
|
36
|
-
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
37
|
-
let response = await httpGet<CoinGeckoResponse<"usd">>(
|
|
38
|
-
this.url+"/simple/price?ids=bitcoin&vs_currencies=usd&precision=9",
|
|
39
|
-
this.httpRequestTimeout,
|
|
40
|
-
abortSignal
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
return response["bitcoin"].usd/100000000;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
}
|
|
1
|
+
import {CoinType, CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
+
import {HttpPriceProvider} from "./abstract/HttpPriceProvider";
|
|
3
|
+
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
+
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
+
|
|
6
|
+
export type CoinGeckoResponse<Currency extends string> = {
|
|
7
|
+
[coinId: string]: {[c in Currency]: number}
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Price provider using CoinGecko API
|
|
12
|
+
* @category Pricing
|
|
13
|
+
*/
|
|
14
|
+
export class CoinGeckoPriceProvider<T extends MultiChain> extends HttpPriceProvider<T> {
|
|
15
|
+
|
|
16
|
+
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://api.coingecko.com/api/v3", httpRequestTimeout?: number) {
|
|
17
|
+
super(coinsMap, url, httpRequestTimeout);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
|
|
24
|
+
let response = await httpGet<CoinGeckoResponse<"sats">>(
|
|
25
|
+
this.url+"/simple/price?ids="+token.coinId+"&vs_currencies=sats&precision=6",
|
|
26
|
+
this.httpRequestTimeout,
|
|
27
|
+
abortSignal
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
return BigInt(response[token.coinId].sats*1000000);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @inheritDoc
|
|
35
|
+
*/
|
|
36
|
+
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
37
|
+
let response = await httpGet<CoinGeckoResponse<"usd">>(
|
|
38
|
+
this.url+"/simple/price?ids=bitcoin&vs_currencies=usd&precision=9",
|
|
39
|
+
this.httpRequestTimeout,
|
|
40
|
+
abortSignal
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
return response["bitcoin"].usd/100000000;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
}
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import {CoinType, CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
-
import {HttpPriceProvider} from "./abstract/HttpPriceProvider";
|
|
3
|
-
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
-
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
-
|
|
6
|
-
export type CoinPaprikaResponse<Currency extends string> = {
|
|
7
|
-
quotes: {
|
|
8
|
-
[curr in Currency]: {
|
|
9
|
-
price: number
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Price provider using CoinPaprika API
|
|
16
|
-
* @category Pricing
|
|
17
|
-
*/
|
|
18
|
-
export class CoinPaprikaPriceProvider<T extends MultiChain> extends HttpPriceProvider<T> {
|
|
19
|
-
|
|
20
|
-
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://api.coinpaprika.com/v1", httpRequestTimeout?: number) {
|
|
21
|
-
super(coinsMap, url, httpRequestTimeout);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* @inheritDoc
|
|
26
|
-
*/
|
|
27
|
-
async fetchPrice(token: CoinType, abortSignal?: AbortSignal) {
|
|
28
|
-
const response = await httpGet<CoinPaprikaResponse<"BTC">>(
|
|
29
|
-
this.url+"/tickers/"+token.coinId+"?quotes=BTC",
|
|
30
|
-
this.httpRequestTimeout,
|
|
31
|
-
abortSignal
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
return BigInt(Math.floor(response.quotes.BTC.price*100000000000000));
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* @inheritDoc
|
|
39
|
-
*/
|
|
40
|
-
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
41
|
-
const response = await httpGet<CoinPaprikaResponse<"USD">>(
|
|
42
|
-
this.url+"/tickers/btc-bitcoin?quotes=USD",
|
|
43
|
-
this.httpRequestTimeout,
|
|
44
|
-
abortSignal
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
return response.quotes.USD.price/100000000;
|
|
48
|
-
}
|
|
49
|
-
|
|
1
|
+
import {CoinType, CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
+
import {HttpPriceProvider} from "./abstract/HttpPriceProvider";
|
|
3
|
+
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
+
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
+
|
|
6
|
+
export type CoinPaprikaResponse<Currency extends string> = {
|
|
7
|
+
quotes: {
|
|
8
|
+
[curr in Currency]: {
|
|
9
|
+
price: number
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Price provider using CoinPaprika API
|
|
16
|
+
* @category Pricing
|
|
17
|
+
*/
|
|
18
|
+
export class CoinPaprikaPriceProvider<T extends MultiChain> extends HttpPriceProvider<T> {
|
|
19
|
+
|
|
20
|
+
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://api.coinpaprika.com/v1", httpRequestTimeout?: number) {
|
|
21
|
+
super(coinsMap, url, httpRequestTimeout);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @inheritDoc
|
|
26
|
+
*/
|
|
27
|
+
async fetchPrice(token: CoinType, abortSignal?: AbortSignal) {
|
|
28
|
+
const response = await httpGet<CoinPaprikaResponse<"BTC">>(
|
|
29
|
+
this.url+"/tickers/"+token.coinId+"?quotes=BTC",
|
|
30
|
+
this.httpRequestTimeout,
|
|
31
|
+
abortSignal
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
return BigInt(Math.floor(response.quotes.BTC.price*100000000000000));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @inheritDoc
|
|
39
|
+
*/
|
|
40
|
+
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
41
|
+
const response = await httpGet<CoinPaprikaResponse<"USD">>(
|
|
42
|
+
this.url+"/tickers/btc-bitcoin?quotes=USD",
|
|
43
|
+
this.httpRequestTimeout,
|
|
44
|
+
abortSignal
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
return response.quotes.USD.price/100000000;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
50
|
}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import {CoinType, CtorCoinTypes, IPriceProvider} from "../abstract/IPriceProvider";
|
|
2
|
-
import {MultiChain} from "../../swapper/Swapper";
|
|
3
|
-
import {CustomPriceFunction} from "../../types/CustomPriceFunction";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Price provider using custom pricing function
|
|
7
|
-
*
|
|
8
|
-
* @category Pricing
|
|
9
|
-
*/
|
|
10
|
-
export class CustomPriceProvider<T extends MultiChain> extends IPriceProvider<T> {
|
|
11
|
-
|
|
12
|
-
readonly getUsdPriceFn: CustomPriceFunction;
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @param coinsMap Mapping of token tickers to token addresses
|
|
16
|
-
* @param getUsdPriceFn Pricing function, used to retrieve USD prices of the tokens
|
|
17
|
-
*/
|
|
18
|
-
constructor(coinsMap: CtorCoinTypes<T>, getUsdPriceFn: CustomPriceFunction) {
|
|
19
|
-
super(coinsMap);
|
|
20
|
-
this.getUsdPriceFn = getUsdPriceFn;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @inheritDoc
|
|
25
|
-
*/
|
|
26
|
-
protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
|
|
27
|
-
const [btcPrice, tokenPrice] = await this.getUsdPriceFn(["BTC",token.coinId], abortSignal);
|
|
28
|
-
const priceInBtc = tokenPrice / btcPrice;
|
|
29
|
-
return BigInt(Math.floor(priceInBtc*100_000_000*1_000_000));
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @inheritDoc
|
|
34
|
-
*/
|
|
35
|
-
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
36
|
-
const [btcPrice] = await this.getUsdPriceFn(["BTC"], abortSignal);
|
|
37
|
-
return btcPrice / 100_000_000;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
}
|
|
1
|
+
import {CoinType, CtorCoinTypes, IPriceProvider} from "../abstract/IPriceProvider";
|
|
2
|
+
import {MultiChain} from "../../swapper/Swapper";
|
|
3
|
+
import {CustomPriceFunction} from "../../types/CustomPriceFunction";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Price provider using custom pricing function
|
|
7
|
+
*
|
|
8
|
+
* @category Pricing
|
|
9
|
+
*/
|
|
10
|
+
export class CustomPriceProvider<T extends MultiChain> extends IPriceProvider<T> {
|
|
11
|
+
|
|
12
|
+
readonly getUsdPriceFn: CustomPriceFunction;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @param coinsMap Mapping of token tickers to token addresses
|
|
16
|
+
* @param getUsdPriceFn Pricing function, used to retrieve USD prices of the tokens
|
|
17
|
+
*/
|
|
18
|
+
constructor(coinsMap: CtorCoinTypes<T>, getUsdPriceFn: CustomPriceFunction) {
|
|
19
|
+
super(coinsMap);
|
|
20
|
+
this.getUsdPriceFn = getUsdPriceFn;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @inheritDoc
|
|
25
|
+
*/
|
|
26
|
+
protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
|
|
27
|
+
const [btcPrice, tokenPrice] = await this.getUsdPriceFn(["BTC",token.coinId], abortSignal);
|
|
28
|
+
const priceInBtc = tokenPrice / btcPrice;
|
|
29
|
+
return BigInt(Math.floor(priceInBtc*100_000_000*1_000_000));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @inheritDoc
|
|
34
|
+
*/
|
|
35
|
+
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
36
|
+
const [btcPrice] = await this.getUsdPriceFn(["BTC"], abortSignal);
|
|
37
|
+
return btcPrice / 100_000_000;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
}
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import {CoinType, CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
-
import {ExchangePriceProvider} from "./abstract/ExchangePriceProvider";
|
|
3
|
-
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
-
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
-
|
|
6
|
-
export type KrakenResponse = {
|
|
7
|
-
error: string[];
|
|
8
|
-
result: {
|
|
9
|
-
[ticker: string]: {
|
|
10
|
-
a: [string, string, string],
|
|
11
|
-
b: [string, string, string],
|
|
12
|
-
c: [string, string],
|
|
13
|
-
v: [string, string],
|
|
14
|
-
p: [string, string],
|
|
15
|
-
t: [number, number],
|
|
16
|
-
l: [string, string],
|
|
17
|
-
h: [string, string],
|
|
18
|
-
o: string
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Price provider using Kraken exchange API
|
|
25
|
-
* @category Pricing
|
|
26
|
-
*/
|
|
27
|
-
export class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
|
|
28
|
-
|
|
29
|
-
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://api.kraken.com/0", httpRequestTimeout?: number) {
|
|
30
|
-
super(coinsMap, url, httpRequestTimeout);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @inheritDoc
|
|
35
|
-
*/
|
|
36
|
-
protected async fetchPair(pair: string, abortSignal?: AbortSignal) {
|
|
37
|
-
const response = await httpGet<KrakenResponse>(
|
|
38
|
-
this.url+"/public/Ticker?pair="+pair,
|
|
39
|
-
this.httpRequestTimeout,
|
|
40
|
-
abortSignal
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
return parseFloat(response.result[pair].c[0]);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* @inheritDoc
|
|
48
|
-
*/
|
|
49
|
-
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
50
|
-
const response = await httpGet<KrakenResponse>(
|
|
51
|
-
this.url+"/public/Ticker?pair=XBTUSDC",
|
|
52
|
-
this.httpRequestTimeout,
|
|
53
|
-
abortSignal
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
return parseFloat(response.result["XBTUSDC"].c[0])/100000000;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* @inheritDoc
|
|
61
|
-
*/
|
|
62
|
-
protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
|
|
63
|
-
const pairs: string[] = token.coinId.split(";");
|
|
64
|
-
|
|
65
|
-
const response = await httpGet<KrakenResponse>(
|
|
66
|
-
this.url+"/public/Ticker?pair="+pairs.map(val => val.startsWith("!") ? val.substring(1) : val).join(","),
|
|
67
|
-
this.httpRequestTimeout,
|
|
68
|
-
abortSignal
|
|
69
|
-
);
|
|
70
|
-
|
|
71
|
-
const prices: number[] = pairs.map(pair => {
|
|
72
|
-
let invert = pair.startsWith("!");
|
|
73
|
-
if(invert) pair = pair.substring(1);
|
|
74
|
-
const value = parseFloat(response.result[pair].c[0]);
|
|
75
|
-
return invert ? 1/value : value;
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
const price = prices.reduce((previousValue, currentValue) => previousValue * currentValue, 1);
|
|
79
|
-
|
|
80
|
-
return BigInt(Math.floor(price*100000000000000));
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
}
|
|
1
|
+
import {CoinType, CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
+
import {ExchangePriceProvider} from "./abstract/ExchangePriceProvider";
|
|
3
|
+
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
+
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
+
|
|
6
|
+
export type KrakenResponse = {
|
|
7
|
+
error: string[];
|
|
8
|
+
result: {
|
|
9
|
+
[ticker: string]: {
|
|
10
|
+
a: [string, string, string],
|
|
11
|
+
b: [string, string, string],
|
|
12
|
+
c: [string, string],
|
|
13
|
+
v: [string, string],
|
|
14
|
+
p: [string, string],
|
|
15
|
+
t: [number, number],
|
|
16
|
+
l: [string, string],
|
|
17
|
+
h: [string, string],
|
|
18
|
+
o: string
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Price provider using Kraken exchange API
|
|
25
|
+
* @category Pricing
|
|
26
|
+
*/
|
|
27
|
+
export class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
|
|
28
|
+
|
|
29
|
+
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://api.kraken.com/0", httpRequestTimeout?: number) {
|
|
30
|
+
super(coinsMap, url, httpRequestTimeout);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @inheritDoc
|
|
35
|
+
*/
|
|
36
|
+
protected async fetchPair(pair: string, abortSignal?: AbortSignal) {
|
|
37
|
+
const response = await httpGet<KrakenResponse>(
|
|
38
|
+
this.url+"/public/Ticker?pair="+pair,
|
|
39
|
+
this.httpRequestTimeout,
|
|
40
|
+
abortSignal
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
return parseFloat(response.result[pair].c[0]);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @inheritDoc
|
|
48
|
+
*/
|
|
49
|
+
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
50
|
+
const response = await httpGet<KrakenResponse>(
|
|
51
|
+
this.url+"/public/Ticker?pair=XBTUSDC",
|
|
52
|
+
this.httpRequestTimeout,
|
|
53
|
+
abortSignal
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return parseFloat(response.result["XBTUSDC"].c[0])/100000000;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @inheritDoc
|
|
61
|
+
*/
|
|
62
|
+
protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
|
|
63
|
+
const pairs: string[] = token.coinId.split(";");
|
|
64
|
+
|
|
65
|
+
const response = await httpGet<KrakenResponse>(
|
|
66
|
+
this.url+"/public/Ticker?pair="+pairs.map(val => val.startsWith("!") ? val.substring(1) : val).join(","),
|
|
67
|
+
this.httpRequestTimeout,
|
|
68
|
+
abortSignal
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
const prices: number[] = pairs.map(pair => {
|
|
72
|
+
let invert = pair.startsWith("!");
|
|
73
|
+
if(invert) pair = pair.substring(1);
|
|
74
|
+
const value = parseFloat(response.result[pair].c[0]);
|
|
75
|
+
return invert ? 1/value : value;
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const price = prices.reduce((previousValue, currentValue) => previousValue * currentValue, 1);
|
|
79
|
+
|
|
80
|
+
return BigInt(Math.floor(price*100000000000000));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
}
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import {CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
-
import {ExchangePriceProvider} from "./abstract/ExchangePriceProvider";
|
|
3
|
-
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
-
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
-
|
|
6
|
-
export type OKXResponse = {
|
|
7
|
-
code: string;
|
|
8
|
-
msg: string;
|
|
9
|
-
data: [
|
|
10
|
-
{
|
|
11
|
-
instId: string;
|
|
12
|
-
idxPx: string;
|
|
13
|
-
high24h: string;
|
|
14
|
-
sodUtc0: string;
|
|
15
|
-
open24h: string;
|
|
16
|
-
low24h: string;
|
|
17
|
-
sodUtc8: string;
|
|
18
|
-
ts: string;
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Price provider using OKX exchange API
|
|
25
|
-
* @category Pricing
|
|
26
|
-
*/
|
|
27
|
-
export class OKXPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
|
|
28
|
-
|
|
29
|
-
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://www.okx.com/api/v5", httpRequestTimeout?: number) {
|
|
30
|
-
super(coinsMap, url, httpRequestTimeout);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @inheritDoc
|
|
35
|
-
*/
|
|
36
|
-
async fetchPair(pair: string, abortSignal?: AbortSignal) {
|
|
37
|
-
const response = await httpGet<OKXResponse>(
|
|
38
|
-
this.url+"/market/index-tickers?instId="+pair,
|
|
39
|
-
this.httpRequestTimeout,
|
|
40
|
-
abortSignal
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
return parseFloat(response.data[0].idxPx);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* @inheritDoc
|
|
48
|
-
*/
|
|
49
|
-
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
50
|
-
const response = await httpGet<OKXResponse>(
|
|
51
|
-
this.url+"/market/index-tickers?instId=BTC-USD",
|
|
52
|
-
this.httpRequestTimeout,
|
|
53
|
-
abortSignal
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
return parseFloat(response.data[0].idxPx)/100000000;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
}
|
|
1
|
+
import {CtorCoinTypes} from "../abstract/IPriceProvider";
|
|
2
|
+
import {ExchangePriceProvider} from "./abstract/ExchangePriceProvider";
|
|
3
|
+
import {MultiChain} from "../../swapper/Swapper";
|
|
4
|
+
import {httpGet} from "../../http/HttpUtils";
|
|
5
|
+
|
|
6
|
+
export type OKXResponse = {
|
|
7
|
+
code: string;
|
|
8
|
+
msg: string;
|
|
9
|
+
data: [
|
|
10
|
+
{
|
|
11
|
+
instId: string;
|
|
12
|
+
idxPx: string;
|
|
13
|
+
high24h: string;
|
|
14
|
+
sodUtc0: string;
|
|
15
|
+
open24h: string;
|
|
16
|
+
low24h: string;
|
|
17
|
+
sodUtc8: string;
|
|
18
|
+
ts: string;
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Price provider using OKX exchange API
|
|
25
|
+
* @category Pricing
|
|
26
|
+
*/
|
|
27
|
+
export class OKXPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
|
|
28
|
+
|
|
29
|
+
constructor(coinsMap: CtorCoinTypes<T>, url: string = "https://www.okx.com/api/v5", httpRequestTimeout?: number) {
|
|
30
|
+
super(coinsMap, url, httpRequestTimeout);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @inheritDoc
|
|
35
|
+
*/
|
|
36
|
+
async fetchPair(pair: string, abortSignal?: AbortSignal) {
|
|
37
|
+
const response = await httpGet<OKXResponse>(
|
|
38
|
+
this.url+"/market/index-tickers?instId="+pair,
|
|
39
|
+
this.httpRequestTimeout,
|
|
40
|
+
abortSignal
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
return parseFloat(response.data[0].idxPx);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @inheritDoc
|
|
48
|
+
*/
|
|
49
|
+
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
50
|
+
const response = await httpGet<OKXResponse>(
|
|
51
|
+
this.url+"/market/index-tickers?instId=BTC-USD",
|
|
52
|
+
this.httpRequestTimeout,
|
|
53
|
+
abortSignal
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return parseFloat(response.data[0].idxPx)/100000000;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
}
|