@atomiqlabs/sdk 8.9.0 → 8.9.2
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/api/index.d.ts +1 -1
- package/api/index.js +3 -3
- package/dist/ApiList.d.ts +37 -37
- package/dist/ApiList.js +30 -30
- package/dist/SmartChainAssets.d.ts +181 -181
- package/dist/SmartChainAssets.js +181 -181
- package/dist/api/ApiEndpoints.d.ts +393 -393
- package/dist/api/ApiEndpoints.js +2 -2
- package/dist/api/ApiParser.d.ts +10 -10
- package/dist/api/ApiParser.js +134 -134
- package/dist/api/ApiTypes.d.ts +157 -157
- package/dist/api/ApiTypes.js +75 -75
- package/dist/api/SerializedAction.d.ts +40 -40
- package/dist/api/SerializedAction.js +59 -59
- package/dist/api/SwapperApi.d.ts +50 -50
- package/dist/api/SwapperApi.js +431 -431
- package/dist/api/index.d.ts +5 -5
- package/dist/api/index.js +24 -24
- 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 +24 -24
- package/dist/events/UnifiedSwapEventListener.js +138 -138
- package/dist/http/HttpUtils.d.ts +29 -29
- package/dist/http/HttpUtils.js +97 -97
- 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 +17 -17
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +175 -175
- package/dist/index.d.ts +86 -86
- package/dist/index.js +159 -159
- package/dist/intermediaries/Intermediary.d.ts +178 -178
- package/dist/intermediaries/Intermediary.js +166 -166
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +216 -216
- package/dist/intermediaries/IntermediaryDiscovery.js +424 -424
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +607 -607
- package/dist/intermediaries/apis/IntermediaryAPI.js +764 -764
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
- package/dist/intermediaries/auth/SignedKeyBasedAuth.d.ts +14 -14
- package/dist/intermediaries/auth/SignedKeyBasedAuth.js +68 -68
- 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 +127 -127
- package/dist/storage/IUnifiedStorage.js +2 -2
- package/dist/storage/UnifiedSwapStorage.d.ts +120 -120
- package/dist/storage/UnifiedSwapStorage.js +154 -154
- 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 +765 -765
- package/dist/swapper/Swapper.js +1749 -1749
- package/dist/swapper/SwapperFactory.d.ts +135 -135
- package/dist/swapper/SwapperFactory.js +162 -162
- package/dist/swapper/SwapperUtils.d.ts +222 -222
- package/dist/swapper/SwapperUtils.js +519 -519
- 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 +453 -453
- package/dist/swaps/ISwap.js +371 -371
- package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
- package/dist/swaps/ISwapWithGasDrop.js +12 -12
- package/dist/swaps/ISwapWrapper.d.ts +295 -295
- package/dist/swaps/ISwapWrapper.js +373 -373
- 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 +172 -172
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +129 -129
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +167 -167
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +107 -107
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
- 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 +547 -547
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1419 -1419
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +192 -192
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +432 -432
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +650 -650
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1577 -1577
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +237 -237
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +525 -525
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +491 -491
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1463 -1463
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +204 -204
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +406 -406
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +446 -446
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +1097 -1097
- 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 +252 -252
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +535 -535
- 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 +134 -134
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +286 -286
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +694 -694
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1687 -1687
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +259 -259
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +947 -947
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +302 -302
- package/dist/swaps/trusted/ln/LnForGasSwap.js +625 -625
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +343 -343
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +698 -698
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +71 -71
- 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 +195 -195
- package/dist/types/SwapExecutionAction.js +106 -106
- package/dist/types/SwapExecutionStep.d.ts +144 -144
- package/dist/types/SwapExecutionStep.js +87 -87
- 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 +75 -75
- package/dist/types/TokenAmount.js +85 -85
- 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 +18 -18
- package/dist/utils/BitcoinUtils.js +174 -174
- 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 +69 -69
- package/dist/utils/Utils.js +214 -214
- package/package.json +46 -46
- package/src/SmartChainAssets.ts +186 -186
- package/src/api/ApiEndpoints.ts +427 -427
- package/src/api/ApiParser.ts +138 -138
- package/src/api/ApiTypes.ts +229 -229
- package/src/api/SerializedAction.ts +97 -97
- package/src/api/SwapperApi.ts +545 -545
- package/src/api/index.ts +5 -5
- 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 +181 -181
- package/src/http/HttpUtils.ts +97 -97
- 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 +194 -194
- package/src/index.ts +141 -141
- package/src/intermediaries/Intermediary.ts +280 -280
- package/src/intermediaries/IntermediaryDiscovery.ts +548 -548
- package/src/intermediaries/apis/IntermediaryAPI.ts +1247 -1247
- package/src/intermediaries/auth/SignedKeyBasedAuth.ts +69 -69
- 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 +136 -136
- package/src/storage/UnifiedSwapStorage.ts +175 -175
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +350 -350
- package/src/storage-browser/LocalStorageManager.ts +106 -106
- package/src/swapper/Swapper.ts +2557 -2557
- package/src/swapper/SwapperFactory.ts +307 -307
- package/src/swapper/SwapperUtils.ts +610 -610
- 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 +775 -775
- package/src/swaps/ISwapWithGasDrop.ts +25 -25
- package/src/swaps/ISwapWrapper.ts +564 -564
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +217 -217
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +271 -271
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +284 -284
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +172 -172
- 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 +1670 -1671
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +603 -603
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1883 -1883
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +752 -752
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +1753 -1753
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +612 -612
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +1327 -1327
- 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 +787 -787
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +206 -206
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +403 -403
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +2148 -2148
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +1238 -1238
- package/src/swaps/trusted/ln/LnForGasSwap.ts +753 -753
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +90 -90
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +843 -843
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +133 -133
- 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 +323 -323
- package/src/types/SwapExecutionStep.ts +224 -224
- 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 +167 -167
- 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 +164 -164
- 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 +221 -221
package/dist/api/ApiEndpoints.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/api/ApiParser.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { InputSchema } from "./ApiTypes";
|
|
2
|
-
/**
|
|
3
|
-
* Parses raw input values according to the endpoint schema.
|
|
4
|
-
*
|
|
5
|
-
* This accepts untyped transport input such as HTTP query params, JSON request bodies,
|
|
6
|
-
* or CLI arguments and returns the normalized callback input type.
|
|
7
|
-
*
|
|
8
|
-
* @category API
|
|
9
|
-
*/
|
|
10
|
-
export declare function parseApiInput<TInput>(inputSchema: InputSchema<TInput>, rawInput: unknown): TInput;
|
|
1
|
+
import { InputSchema } from "./ApiTypes";
|
|
2
|
+
/**
|
|
3
|
+
* Parses raw input values according to the endpoint schema.
|
|
4
|
+
*
|
|
5
|
+
* This accepts untyped transport input such as HTTP query params, JSON request bodies,
|
|
6
|
+
* or CLI arguments and returns the normalized callback input type.
|
|
7
|
+
*
|
|
8
|
+
* @category API
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseApiInput<TInput>(inputSchema: InputSchema<TInput>, rawInput: unknown): TInput;
|
package/dist/api/ApiParser.js
CHANGED
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseApiInput = void 0;
|
|
4
|
-
// Errors
|
|
5
|
-
function invalidInput(path, expected, value) {
|
|
6
|
-
const actualType = value == null ? String(value) : Array.isArray(value) ? "array" : typeof (value);
|
|
7
|
-
return new Error(`Invalid input "${path}", expected ${expected}, got ${actualType}`);
|
|
8
|
-
}
|
|
9
|
-
function missingInput(path) {
|
|
10
|
-
return new Error(`Missing required input "${path}"`);
|
|
11
|
-
}
|
|
12
|
-
function invalidAllowedValue(path, allowedValues, value) {
|
|
13
|
-
return new Error(`Invalid input "${path}", expected one of: ${allowedValues.map(val => val.toString()).join(", ")}, got ${value.toString()}`);
|
|
14
|
-
}
|
|
15
|
-
// Parsers
|
|
16
|
-
function parseNumber(path, value) {
|
|
17
|
-
let result;
|
|
18
|
-
if (typeof (value) === "number") {
|
|
19
|
-
result = value;
|
|
20
|
-
}
|
|
21
|
-
else if (typeof (value) === "string") {
|
|
22
|
-
const trimmedValue = value.trim();
|
|
23
|
-
if (trimmedValue === "")
|
|
24
|
-
throw invalidInput(path, "finite number", value);
|
|
25
|
-
result = Number(trimmedValue);
|
|
26
|
-
}
|
|
27
|
-
else
|
|
28
|
-
throw invalidInput(path, "finite number", value);
|
|
29
|
-
if (!Number.isFinite(result))
|
|
30
|
-
throw invalidInput(path, "finite number", value);
|
|
31
|
-
return result;
|
|
32
|
-
}
|
|
33
|
-
function parseBigInt(path, value) {
|
|
34
|
-
if (typeof (value) === "bigint")
|
|
35
|
-
return value;
|
|
36
|
-
if (typeof (value) === "number") {
|
|
37
|
-
if (!Number.isSafeInteger(value))
|
|
38
|
-
throw invalidInput(path, "safe integer", value);
|
|
39
|
-
return BigInt(value);
|
|
40
|
-
}
|
|
41
|
-
if (typeof (value) === "string") {
|
|
42
|
-
const trimmedValue = value.trim();
|
|
43
|
-
if (!/^[+-]?\d+$/.test(trimmedValue))
|
|
44
|
-
throw invalidInput(path, "integer", value);
|
|
45
|
-
return BigInt(trimmedValue);
|
|
46
|
-
}
|
|
47
|
-
throw invalidInput(path, "integer", value);
|
|
48
|
-
}
|
|
49
|
-
function parseBoolean(path, value) {
|
|
50
|
-
Boolean(value);
|
|
51
|
-
if (typeof (value) === "boolean")
|
|
52
|
-
return value;
|
|
53
|
-
if (value === "true")
|
|
54
|
-
return true;
|
|
55
|
-
if (value === "false")
|
|
56
|
-
return false;
|
|
57
|
-
throw invalidInput(path, "boolean", value);
|
|
58
|
-
}
|
|
59
|
-
// Object type check
|
|
60
|
-
function isObject(value) {
|
|
61
|
-
return value != null && typeof (value) === "object" && !Array.isArray(value);
|
|
62
|
-
}
|
|
63
|
-
// Allowed values for enums
|
|
64
|
-
function applyAllowedValues(path, value, allowedValues) {
|
|
65
|
-
if (allowedValues != null && !allowedValues.includes(value)) {
|
|
66
|
-
throw invalidAllowedValue(path, allowedValues, value);
|
|
67
|
-
}
|
|
68
|
-
return value;
|
|
69
|
-
}
|
|
70
|
-
function parseField(field, value, path) {
|
|
71
|
-
switch (field.type) {
|
|
72
|
-
case "string": {
|
|
73
|
-
if (typeof (value) !== "string")
|
|
74
|
-
throw invalidInput(path, "string", value);
|
|
75
|
-
return applyAllowedValues(path, value, field.allowedValues);
|
|
76
|
-
}
|
|
77
|
-
case "number": {
|
|
78
|
-
const parsedValue = parseNumber(path, value);
|
|
79
|
-
return applyAllowedValues(path, parsedValue, field.allowedValues);
|
|
80
|
-
}
|
|
81
|
-
case "bigint": {
|
|
82
|
-
const parsedValue = parseBigInt(path, value);
|
|
83
|
-
return applyAllowedValues(path, parsedValue, field.allowedValues);
|
|
84
|
-
}
|
|
85
|
-
case "boolean":
|
|
86
|
-
return parseBoolean(path, value);
|
|
87
|
-
case "array": {
|
|
88
|
-
if (!Array.isArray(value))
|
|
89
|
-
throw invalidInput(path, "array", value);
|
|
90
|
-
if (field.items == null)
|
|
91
|
-
return [...value];
|
|
92
|
-
return value.map((item, index) => parseField(field.items, item, `${path}[${index}]`));
|
|
93
|
-
}
|
|
94
|
-
case "object": {
|
|
95
|
-
if (!isObject(value))
|
|
96
|
-
throw invalidInput(path, "object", value);
|
|
97
|
-
if (field.properties == null)
|
|
98
|
-
return { ...value };
|
|
99
|
-
return _parseApiInput(field.properties, value, path);
|
|
100
|
-
}
|
|
101
|
-
default:
|
|
102
|
-
throw new Error(`Unsupported input schema type for "${path}": ${field.type}`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
function _parseApiInput(inputSchema, rawInput, parentPath = "") {
|
|
106
|
-
if (!isObject(rawInput)) {
|
|
107
|
-
throw invalidInput(parentPath || "input", "object", rawInput);
|
|
108
|
-
}
|
|
109
|
-
const parsedInput = {};
|
|
110
|
-
for (const key in inputSchema) {
|
|
111
|
-
const field = inputSchema[key];
|
|
112
|
-
const value = rawInput[key];
|
|
113
|
-
const path = parentPath === "" ? key : `${parentPath}.${key}`;
|
|
114
|
-
if (value == null) {
|
|
115
|
-
if (field.required)
|
|
116
|
-
throw missingInput(path);
|
|
117
|
-
continue;
|
|
118
|
-
}
|
|
119
|
-
parsedInput[key] = parseField(field, value, path);
|
|
120
|
-
}
|
|
121
|
-
return parsedInput;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Parses raw input values according to the endpoint schema.
|
|
125
|
-
*
|
|
126
|
-
* This accepts untyped transport input such as HTTP query params, JSON request bodies,
|
|
127
|
-
* or CLI arguments and returns the normalized callback input type.
|
|
128
|
-
*
|
|
129
|
-
* @category API
|
|
130
|
-
*/
|
|
131
|
-
function parseApiInput(inputSchema, rawInput) {
|
|
132
|
-
return _parseApiInput(inputSchema, rawInput);
|
|
133
|
-
}
|
|
134
|
-
exports.parseApiInput = parseApiInput;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseApiInput = void 0;
|
|
4
|
+
// Errors
|
|
5
|
+
function invalidInput(path, expected, value) {
|
|
6
|
+
const actualType = value == null ? String(value) : Array.isArray(value) ? "array" : typeof (value);
|
|
7
|
+
return new Error(`Invalid input "${path}", expected ${expected}, got ${actualType}`);
|
|
8
|
+
}
|
|
9
|
+
function missingInput(path) {
|
|
10
|
+
return new Error(`Missing required input "${path}"`);
|
|
11
|
+
}
|
|
12
|
+
function invalidAllowedValue(path, allowedValues, value) {
|
|
13
|
+
return new Error(`Invalid input "${path}", expected one of: ${allowedValues.map(val => val.toString()).join(", ")}, got ${value.toString()}`);
|
|
14
|
+
}
|
|
15
|
+
// Parsers
|
|
16
|
+
function parseNumber(path, value) {
|
|
17
|
+
let result;
|
|
18
|
+
if (typeof (value) === "number") {
|
|
19
|
+
result = value;
|
|
20
|
+
}
|
|
21
|
+
else if (typeof (value) === "string") {
|
|
22
|
+
const trimmedValue = value.trim();
|
|
23
|
+
if (trimmedValue === "")
|
|
24
|
+
throw invalidInput(path, "finite number", value);
|
|
25
|
+
result = Number(trimmedValue);
|
|
26
|
+
}
|
|
27
|
+
else
|
|
28
|
+
throw invalidInput(path, "finite number", value);
|
|
29
|
+
if (!Number.isFinite(result))
|
|
30
|
+
throw invalidInput(path, "finite number", value);
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
function parseBigInt(path, value) {
|
|
34
|
+
if (typeof (value) === "bigint")
|
|
35
|
+
return value;
|
|
36
|
+
if (typeof (value) === "number") {
|
|
37
|
+
if (!Number.isSafeInteger(value))
|
|
38
|
+
throw invalidInput(path, "safe integer", value);
|
|
39
|
+
return BigInt(value);
|
|
40
|
+
}
|
|
41
|
+
if (typeof (value) === "string") {
|
|
42
|
+
const trimmedValue = value.trim();
|
|
43
|
+
if (!/^[+-]?\d+$/.test(trimmedValue))
|
|
44
|
+
throw invalidInput(path, "integer", value);
|
|
45
|
+
return BigInt(trimmedValue);
|
|
46
|
+
}
|
|
47
|
+
throw invalidInput(path, "integer", value);
|
|
48
|
+
}
|
|
49
|
+
function parseBoolean(path, value) {
|
|
50
|
+
Boolean(value);
|
|
51
|
+
if (typeof (value) === "boolean")
|
|
52
|
+
return value;
|
|
53
|
+
if (value === "true")
|
|
54
|
+
return true;
|
|
55
|
+
if (value === "false")
|
|
56
|
+
return false;
|
|
57
|
+
throw invalidInput(path, "boolean", value);
|
|
58
|
+
}
|
|
59
|
+
// Object type check
|
|
60
|
+
function isObject(value) {
|
|
61
|
+
return value != null && typeof (value) === "object" && !Array.isArray(value);
|
|
62
|
+
}
|
|
63
|
+
// Allowed values for enums
|
|
64
|
+
function applyAllowedValues(path, value, allowedValues) {
|
|
65
|
+
if (allowedValues != null && !allowedValues.includes(value)) {
|
|
66
|
+
throw invalidAllowedValue(path, allowedValues, value);
|
|
67
|
+
}
|
|
68
|
+
return value;
|
|
69
|
+
}
|
|
70
|
+
function parseField(field, value, path) {
|
|
71
|
+
switch (field.type) {
|
|
72
|
+
case "string": {
|
|
73
|
+
if (typeof (value) !== "string")
|
|
74
|
+
throw invalidInput(path, "string", value);
|
|
75
|
+
return applyAllowedValues(path, value, field.allowedValues);
|
|
76
|
+
}
|
|
77
|
+
case "number": {
|
|
78
|
+
const parsedValue = parseNumber(path, value);
|
|
79
|
+
return applyAllowedValues(path, parsedValue, field.allowedValues);
|
|
80
|
+
}
|
|
81
|
+
case "bigint": {
|
|
82
|
+
const parsedValue = parseBigInt(path, value);
|
|
83
|
+
return applyAllowedValues(path, parsedValue, field.allowedValues);
|
|
84
|
+
}
|
|
85
|
+
case "boolean":
|
|
86
|
+
return parseBoolean(path, value);
|
|
87
|
+
case "array": {
|
|
88
|
+
if (!Array.isArray(value))
|
|
89
|
+
throw invalidInput(path, "array", value);
|
|
90
|
+
if (field.items == null)
|
|
91
|
+
return [...value];
|
|
92
|
+
return value.map((item, index) => parseField(field.items, item, `${path}[${index}]`));
|
|
93
|
+
}
|
|
94
|
+
case "object": {
|
|
95
|
+
if (!isObject(value))
|
|
96
|
+
throw invalidInput(path, "object", value);
|
|
97
|
+
if (field.properties == null)
|
|
98
|
+
return { ...value };
|
|
99
|
+
return _parseApiInput(field.properties, value, path);
|
|
100
|
+
}
|
|
101
|
+
default:
|
|
102
|
+
throw new Error(`Unsupported input schema type for "${path}": ${field.type}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function _parseApiInput(inputSchema, rawInput, parentPath = "") {
|
|
106
|
+
if (!isObject(rawInput)) {
|
|
107
|
+
throw invalidInput(parentPath || "input", "object", rawInput);
|
|
108
|
+
}
|
|
109
|
+
const parsedInput = {};
|
|
110
|
+
for (const key in inputSchema) {
|
|
111
|
+
const field = inputSchema[key];
|
|
112
|
+
const value = rawInput[key];
|
|
113
|
+
const path = parentPath === "" ? key : `${parentPath}.${key}`;
|
|
114
|
+
if (value == null) {
|
|
115
|
+
if (field.required)
|
|
116
|
+
throw missingInput(path);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
parsedInput[key] = parseField(field, value, path);
|
|
120
|
+
}
|
|
121
|
+
return parsedInput;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Parses raw input values according to the endpoint schema.
|
|
125
|
+
*
|
|
126
|
+
* This accepts untyped transport input such as HTTP query params, JSON request bodies,
|
|
127
|
+
* or CLI arguments and returns the normalized callback input type.
|
|
128
|
+
*
|
|
129
|
+
* @category API
|
|
130
|
+
*/
|
|
131
|
+
function parseApiInput(inputSchema, rawInput) {
|
|
132
|
+
return _parseApiInput(inputSchema, rawInput);
|
|
133
|
+
}
|
|
134
|
+
exports.parseApiInput = parseApiInput;
|
package/dist/api/ApiTypes.d.ts
CHANGED
|
@@ -1,157 +1,157 @@
|
|
|
1
|
-
import { Token } from "../types/Token";
|
|
2
|
-
import { TokenAmount } from "../types/TokenAmount";
|
|
3
|
-
import { LNURLPay, LNURLPayParamsWithUrl } from "../types/lnurl/LNURLPay";
|
|
4
|
-
import { LNURLWithdraw, LNURLWithdrawParamsWithUrl } from "../types/lnurl/LNURLWithdraw";
|
|
5
|
-
import { Swapper } from "../swapper/Swapper";
|
|
6
|
-
/**
|
|
7
|
-
* Unified amount type for all API responses
|
|
8
|
-
*
|
|
9
|
-
* @category API
|
|
10
|
-
*/
|
|
11
|
-
export type ApiAmount = {
|
|
12
|
-
/** Decimal format of the amount, e.g. "1.5" */
|
|
13
|
-
amount: string;
|
|
14
|
-
/** Raw base units as string, e.g. "1500000000000000000" */
|
|
15
|
-
rawAmount: string;
|
|
16
|
-
/** Token decimals, e.g. 18 */
|
|
17
|
-
decimals: number;
|
|
18
|
-
/** Token ticker, e.g. "STRK" */
|
|
19
|
-
symbol: string;
|
|
20
|
-
/** Chain identifier, e.g. "STARKNET", "BITCOIN", "LIGHTNING" */
|
|
21
|
-
chain: string;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Serializable token representation for API responses
|
|
25
|
-
*
|
|
26
|
-
* @category API
|
|
27
|
-
*/
|
|
28
|
-
export type ApiToken = {
|
|
29
|
-
/** Canonical token identifier accepted by the API, e.g. "BITCOIN-BTC", "LIGHTNING-BTC", "STARKNET-STRK" */
|
|
30
|
-
id: string;
|
|
31
|
-
/** Chain identifier, e.g. "STARKNET", "BITCOIN", "LIGHTNING" */
|
|
32
|
-
chainId: string;
|
|
33
|
-
/** Token ticker, e.g. "STRK" */
|
|
34
|
-
ticker: string;
|
|
35
|
-
/** Full token name */
|
|
36
|
-
name: string;
|
|
37
|
-
/** Decimal places of the token */
|
|
38
|
-
decimals: number;
|
|
39
|
-
/** Token contract address, or empty string for BTC on Bitcoin/Lightning */
|
|
40
|
-
address: string;
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Serializable LNURL-pay representation for API responses
|
|
44
|
-
*
|
|
45
|
-
* @category API
|
|
46
|
-
*/
|
|
47
|
-
export type ApiLNURLPay = {
|
|
48
|
-
/** Marks the LNURL payload as an LNURL-pay response. */
|
|
49
|
-
type: "pay";
|
|
50
|
-
/** Minimum payable amount supported by the LNURL-pay endpoint. */
|
|
51
|
-
min: ApiAmount;
|
|
52
|
-
/** Maximum payable amount supported by the LNURL-pay endpoint. */
|
|
53
|
-
max: ApiAmount;
|
|
54
|
-
/** Maximum comment length accepted by the LNURL-pay endpoint. */
|
|
55
|
-
commentMaxLength: number;
|
|
56
|
-
/** Short human-readable description of the payee, when provided by the LNURL service. */
|
|
57
|
-
shortDescription?: string;
|
|
58
|
-
/** Longer human-readable description of the payee, when provided by the LNURL service. */
|
|
59
|
-
longDescription?: string;
|
|
60
|
-
/** Optional icon for the payee, usually encoded as a data URL. */
|
|
61
|
-
icon?: string;
|
|
62
|
-
/** Raw LNURL-pay metadata and callback parameters. */
|
|
63
|
-
params: LNURLPayParamsWithUrl;
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Serializable LNURL-withdraw representation for API responses
|
|
67
|
-
*
|
|
68
|
-
* @category API
|
|
69
|
-
*/
|
|
70
|
-
export type ApiLNURLWithdraw = {
|
|
71
|
-
/** Marks the LNURL payload as an LNURL-withdraw response. */
|
|
72
|
-
type: "withdraw";
|
|
73
|
-
/** Minimum withdrawable amount supported by the LNURL-withdraw endpoint. */
|
|
74
|
-
min: ApiAmount;
|
|
75
|
-
/** Maximum withdrawable amount supported by the LNURL-withdraw endpoint. */
|
|
76
|
-
max: ApiAmount;
|
|
77
|
-
/** Raw LNURL-withdraw metadata and callback parameters. */
|
|
78
|
-
params: LNURLWithdrawParamsWithUrl;
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Serializable LNURL representation for API responses
|
|
82
|
-
*
|
|
83
|
-
* @category API
|
|
84
|
-
*/
|
|
85
|
-
export type ApiLNURL = ApiLNURLPay | ApiLNURLWithdraw;
|
|
86
|
-
/**
|
|
87
|
-
* Converts a TokenAmount to the serializable ApiAmount format
|
|
88
|
-
*
|
|
89
|
-
* @category API
|
|
90
|
-
*/
|
|
91
|
-
export declare function toApiAmount(tokenAmount: TokenAmount): ApiAmount;
|
|
92
|
-
/**
|
|
93
|
-
* Converts a Token to the serializable ApiToken format
|
|
94
|
-
*
|
|
95
|
-
* @category API
|
|
96
|
-
*/
|
|
97
|
-
export declare function toApiToken(token: Token): ApiToken;
|
|
98
|
-
/**
|
|
99
|
-
* Converts LNURL data to the serializable API format
|
|
100
|
-
*
|
|
101
|
-
* @category API
|
|
102
|
-
*/
|
|
103
|
-
export declare function toApiLNURL(lnurl: LNURLPay | LNURLWithdraw, swapper: Swapper<any>): ApiLNURL;
|
|
104
|
-
/**
|
|
105
|
-
* Maps a TypeScript type to its schema type string representation
|
|
106
|
-
*
|
|
107
|
-
* @category API
|
|
108
|
-
*/
|
|
109
|
-
type TypeToSchemaType<T> = NonNullable<T> extends string ? "string" : NonNullable<T> extends number ? "number" : NonNullable<T> extends bigint ? "bigint" : NonNullable<T> extends boolean ? "boolean" : NonNullable<T> extends any[] ? "array" : "object";
|
|
110
|
-
/**
|
|
111
|
-
* Schema definition for a single API input field.
|
|
112
|
-
*
|
|
113
|
-
* @category API
|
|
114
|
-
*/
|
|
115
|
-
export type InputSchemaField<T = unknown> = {
|
|
116
|
-
/** Primitive schema type inferred from the TypeScript field type. */
|
|
117
|
-
type: TypeToSchemaType<T>;
|
|
118
|
-
/** Whether the field is required by the endpoint input parser. */
|
|
119
|
-
required: boolean;
|
|
120
|
-
/** Human-readable description of the field exposed by the API schema. */
|
|
121
|
-
description: string;
|
|
122
|
-
/** Nested schema properties for object-like fields. */
|
|
123
|
-
properties?: T extends readonly any[] ? never : T extends object ? {
|
|
124
|
-
[K in keyof T]-?: InputSchemaField<T[K]>;
|
|
125
|
-
} : never;
|
|
126
|
-
/** Schema definition for array items when the field is an array. */
|
|
127
|
-
items?: T extends readonly (infer U)[] ? InputSchemaField<U> : never;
|
|
128
|
-
/** Enumerated allowed values for string, number, or bigint fields when constrained. */
|
|
129
|
-
allowedValues?: NonNullable<T> extends string | number | bigint ? NonNullable<T>[] : never;
|
|
130
|
-
};
|
|
131
|
-
/**
|
|
132
|
-
* Schema definition describing the accepted input shape for an API endpoint.
|
|
133
|
-
*
|
|
134
|
-
* @category API
|
|
135
|
-
*/
|
|
136
|
-
export type InputSchema<TInput> = {
|
|
137
|
-
[K in keyof TInput]-?: InputSchemaField<TInput[K]>;
|
|
138
|
-
};
|
|
139
|
-
/**
|
|
140
|
-
* Typed API endpoint definition for framework-agnostic integration
|
|
141
|
-
*
|
|
142
|
-
* @category API
|
|
143
|
-
*/
|
|
144
|
-
export type ApiEndpoint<TInput, TOutput, Type extends "GET" | "POST"> = {
|
|
145
|
-
/** HTTP method used by the endpoint. */
|
|
146
|
-
type: Type;
|
|
147
|
-
/** Human-readable description of what this endpoint does, written for AI agent consumption. */
|
|
148
|
-
description: string;
|
|
149
|
-
/** Structured schema describing the accepted input payload. */
|
|
150
|
-
inputSchema: InputSchema<TInput>;
|
|
151
|
-
/** Typed endpoint implementation that receives already-validated input. */
|
|
152
|
-
callback: (input: TInput, abortSignal?: AbortSignal) => Promise<TOutput>;
|
|
153
|
-
/** Raw endpoint implementation that parses unknown input into the typed callback. */
|
|
154
|
-
callbackRaw: (input: unknown, abortSignal?: AbortSignal) => Promise<TOutput>;
|
|
155
|
-
};
|
|
156
|
-
export declare function createApiEndpoint<TInput, TOutput, Type extends "GET" | "POST">(type: Type, description: string, callback: (input: TInput, abortSignal?: AbortSignal) => Promise<TOutput>, inputSchema: InputSchema<TInput>): ApiEndpoint<TInput, TOutput, Type>;
|
|
157
|
-
export {};
|
|
1
|
+
import { Token } from "../types/Token";
|
|
2
|
+
import { TokenAmount } from "../types/TokenAmount";
|
|
3
|
+
import { LNURLPay, LNURLPayParamsWithUrl } from "../types/lnurl/LNURLPay";
|
|
4
|
+
import { LNURLWithdraw, LNURLWithdrawParamsWithUrl } from "../types/lnurl/LNURLWithdraw";
|
|
5
|
+
import { Swapper } from "../swapper/Swapper";
|
|
6
|
+
/**
|
|
7
|
+
* Unified amount type for all API responses
|
|
8
|
+
*
|
|
9
|
+
* @category API
|
|
10
|
+
*/
|
|
11
|
+
export type ApiAmount = {
|
|
12
|
+
/** Decimal format of the amount, e.g. "1.5" */
|
|
13
|
+
amount: string;
|
|
14
|
+
/** Raw base units as string, e.g. "1500000000000000000" */
|
|
15
|
+
rawAmount: string;
|
|
16
|
+
/** Token decimals, e.g. 18 */
|
|
17
|
+
decimals: number;
|
|
18
|
+
/** Token ticker, e.g. "STRK" */
|
|
19
|
+
symbol: string;
|
|
20
|
+
/** Chain identifier, e.g. "STARKNET", "BITCOIN", "LIGHTNING" */
|
|
21
|
+
chain: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Serializable token representation for API responses
|
|
25
|
+
*
|
|
26
|
+
* @category API
|
|
27
|
+
*/
|
|
28
|
+
export type ApiToken = {
|
|
29
|
+
/** Canonical token identifier accepted by the API, e.g. "BITCOIN-BTC", "LIGHTNING-BTC", "STARKNET-STRK" */
|
|
30
|
+
id: string;
|
|
31
|
+
/** Chain identifier, e.g. "STARKNET", "BITCOIN", "LIGHTNING" */
|
|
32
|
+
chainId: string;
|
|
33
|
+
/** Token ticker, e.g. "STRK" */
|
|
34
|
+
ticker: string;
|
|
35
|
+
/** Full token name */
|
|
36
|
+
name: string;
|
|
37
|
+
/** Decimal places of the token */
|
|
38
|
+
decimals: number;
|
|
39
|
+
/** Token contract address, or empty string for BTC on Bitcoin/Lightning */
|
|
40
|
+
address: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Serializable LNURL-pay representation for API responses
|
|
44
|
+
*
|
|
45
|
+
* @category API
|
|
46
|
+
*/
|
|
47
|
+
export type ApiLNURLPay = {
|
|
48
|
+
/** Marks the LNURL payload as an LNURL-pay response. */
|
|
49
|
+
type: "pay";
|
|
50
|
+
/** Minimum payable amount supported by the LNURL-pay endpoint. */
|
|
51
|
+
min: ApiAmount;
|
|
52
|
+
/** Maximum payable amount supported by the LNURL-pay endpoint. */
|
|
53
|
+
max: ApiAmount;
|
|
54
|
+
/** Maximum comment length accepted by the LNURL-pay endpoint. */
|
|
55
|
+
commentMaxLength: number;
|
|
56
|
+
/** Short human-readable description of the payee, when provided by the LNURL service. */
|
|
57
|
+
shortDescription?: string;
|
|
58
|
+
/** Longer human-readable description of the payee, when provided by the LNURL service. */
|
|
59
|
+
longDescription?: string;
|
|
60
|
+
/** Optional icon for the payee, usually encoded as a data URL. */
|
|
61
|
+
icon?: string;
|
|
62
|
+
/** Raw LNURL-pay metadata and callback parameters. */
|
|
63
|
+
params: LNURLPayParamsWithUrl;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Serializable LNURL-withdraw representation for API responses
|
|
67
|
+
*
|
|
68
|
+
* @category API
|
|
69
|
+
*/
|
|
70
|
+
export type ApiLNURLWithdraw = {
|
|
71
|
+
/** Marks the LNURL payload as an LNURL-withdraw response. */
|
|
72
|
+
type: "withdraw";
|
|
73
|
+
/** Minimum withdrawable amount supported by the LNURL-withdraw endpoint. */
|
|
74
|
+
min: ApiAmount;
|
|
75
|
+
/** Maximum withdrawable amount supported by the LNURL-withdraw endpoint. */
|
|
76
|
+
max: ApiAmount;
|
|
77
|
+
/** Raw LNURL-withdraw metadata and callback parameters. */
|
|
78
|
+
params: LNURLWithdrawParamsWithUrl;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Serializable LNURL representation for API responses
|
|
82
|
+
*
|
|
83
|
+
* @category API
|
|
84
|
+
*/
|
|
85
|
+
export type ApiLNURL = ApiLNURLPay | ApiLNURLWithdraw;
|
|
86
|
+
/**
|
|
87
|
+
* Converts a TokenAmount to the serializable ApiAmount format
|
|
88
|
+
*
|
|
89
|
+
* @category API
|
|
90
|
+
*/
|
|
91
|
+
export declare function toApiAmount(tokenAmount: TokenAmount): ApiAmount;
|
|
92
|
+
/**
|
|
93
|
+
* Converts a Token to the serializable ApiToken format
|
|
94
|
+
*
|
|
95
|
+
* @category API
|
|
96
|
+
*/
|
|
97
|
+
export declare function toApiToken(token: Token): ApiToken;
|
|
98
|
+
/**
|
|
99
|
+
* Converts LNURL data to the serializable API format
|
|
100
|
+
*
|
|
101
|
+
* @category API
|
|
102
|
+
*/
|
|
103
|
+
export declare function toApiLNURL(lnurl: LNURLPay | LNURLWithdraw, swapper: Swapper<any>): ApiLNURL;
|
|
104
|
+
/**
|
|
105
|
+
* Maps a TypeScript type to its schema type string representation
|
|
106
|
+
*
|
|
107
|
+
* @category API
|
|
108
|
+
*/
|
|
109
|
+
type TypeToSchemaType<T> = NonNullable<T> extends string ? "string" : NonNullable<T> extends number ? "number" : NonNullable<T> extends bigint ? "bigint" : NonNullable<T> extends boolean ? "boolean" : NonNullable<T> extends any[] ? "array" : "object";
|
|
110
|
+
/**
|
|
111
|
+
* Schema definition for a single API input field.
|
|
112
|
+
*
|
|
113
|
+
* @category API
|
|
114
|
+
*/
|
|
115
|
+
export type InputSchemaField<T = unknown> = {
|
|
116
|
+
/** Primitive schema type inferred from the TypeScript field type. */
|
|
117
|
+
type: TypeToSchemaType<T>;
|
|
118
|
+
/** Whether the field is required by the endpoint input parser. */
|
|
119
|
+
required: boolean;
|
|
120
|
+
/** Human-readable description of the field exposed by the API schema. */
|
|
121
|
+
description: string;
|
|
122
|
+
/** Nested schema properties for object-like fields. */
|
|
123
|
+
properties?: T extends readonly any[] ? never : T extends object ? {
|
|
124
|
+
[K in keyof T]-?: InputSchemaField<T[K]>;
|
|
125
|
+
} : never;
|
|
126
|
+
/** Schema definition for array items when the field is an array. */
|
|
127
|
+
items?: T extends readonly (infer U)[] ? InputSchemaField<U> : never;
|
|
128
|
+
/** Enumerated allowed values for string, number, or bigint fields when constrained. */
|
|
129
|
+
allowedValues?: NonNullable<T> extends string | number | bigint ? NonNullable<T>[] : never;
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Schema definition describing the accepted input shape for an API endpoint.
|
|
133
|
+
*
|
|
134
|
+
* @category API
|
|
135
|
+
*/
|
|
136
|
+
export type InputSchema<TInput> = {
|
|
137
|
+
[K in keyof TInput]-?: InputSchemaField<TInput[K]>;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Typed API endpoint definition for framework-agnostic integration
|
|
141
|
+
*
|
|
142
|
+
* @category API
|
|
143
|
+
*/
|
|
144
|
+
export type ApiEndpoint<TInput, TOutput, Type extends "GET" | "POST"> = {
|
|
145
|
+
/** HTTP method used by the endpoint. */
|
|
146
|
+
type: Type;
|
|
147
|
+
/** Human-readable description of what this endpoint does, written for AI agent consumption. */
|
|
148
|
+
description: string;
|
|
149
|
+
/** Structured schema describing the accepted input payload. */
|
|
150
|
+
inputSchema: InputSchema<TInput>;
|
|
151
|
+
/** Typed endpoint implementation that receives already-validated input. */
|
|
152
|
+
callback: (input: TInput, abortSignal?: AbortSignal) => Promise<TOutput>;
|
|
153
|
+
/** Raw endpoint implementation that parses unknown input into the typed callback. */
|
|
154
|
+
callbackRaw: (input: unknown, abortSignal?: AbortSignal) => Promise<TOutput>;
|
|
155
|
+
};
|
|
156
|
+
export declare function createApiEndpoint<TInput, TOutput, Type extends "GET" | "POST">(type: Type, description: string, callback: (input: TInput, abortSignal?: AbortSignal) => Promise<TOutput>, inputSchema: InputSchema<TInput>): ApiEndpoint<TInput, TOutput, Type>;
|
|
157
|
+
export {};
|