@atomiqlabs/sdk 8.6.4 → 8.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/dist/SmartChainAssets.d.ts +181 -181
  2. package/dist/SmartChainAssets.js +181 -181
  3. package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -6
  4. package/dist/bitcoin/coinselect2/accumulative.js +51 -52
  5. package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -6
  6. package/dist/bitcoin/coinselect2/blackjack.js +37 -38
  7. package/dist/bitcoin/coinselect2/index.d.ts +17 -19
  8. package/dist/bitcoin/coinselect2/index.js +69 -69
  9. package/dist/bitcoin/coinselect2/utils.d.ts +75 -77
  10. package/dist/bitcoin/coinselect2/utils.js +123 -123
  11. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +128 -130
  12. package/dist/bitcoin/wallet/BitcoinWallet.js +322 -322
  13. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +78 -78
  14. package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -21
  15. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +99 -101
  16. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +176 -176
  17. package/dist/enums/FeeType.d.ts +15 -15
  18. package/dist/enums/FeeType.js +19 -19
  19. package/dist/enums/SwapAmountType.d.ts +15 -15
  20. package/dist/enums/SwapAmountType.js +19 -19
  21. package/dist/enums/SwapDirection.d.ts +15 -15
  22. package/dist/enums/SwapDirection.js +19 -19
  23. package/dist/enums/SwapSide.d.ts +15 -15
  24. package/dist/enums/SwapSide.js +19 -19
  25. package/dist/enums/SwapType.d.ts +75 -75
  26. package/dist/enums/SwapType.js +79 -79
  27. package/dist/errors/IntermediaryError.d.ts +13 -13
  28. package/dist/errors/IntermediaryError.js +27 -27
  29. package/dist/errors/RequestError.d.ts +32 -32
  30. package/dist/errors/RequestError.js +54 -54
  31. package/dist/errors/UserError.d.ts +8 -8
  32. package/dist/errors/UserError.js +16 -16
  33. package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
  34. package/dist/events/UnifiedSwapEventListener.js +130 -130
  35. package/dist/http/HttpUtils.d.ts +27 -27
  36. package/dist/http/HttpUtils.js +90 -91
  37. package/dist/http/paramcoders/IParamReader.d.ts +8 -8
  38. package/dist/http/paramcoders/IParamReader.js +2 -2
  39. package/dist/http/paramcoders/ParamDecoder.d.ts +42 -44
  40. package/dist/http/paramcoders/ParamDecoder.js +137 -137
  41. package/dist/http/paramcoders/ParamEncoder.d.ts +18 -20
  42. package/dist/http/paramcoders/ParamEncoder.js +36 -36
  43. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
  44. package/dist/http/paramcoders/SchemaVerifier.js +145 -145
  45. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
  46. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
  47. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +11 -13
  48. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
  49. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
  50. package/dist/http/paramcoders/client/StreamingFetchPromise.js +173 -174
  51. package/dist/index.d.ts +85 -85
  52. package/dist/index.js +158 -158
  53. package/dist/intermediaries/Intermediary.d.ts +157 -157
  54. package/dist/intermediaries/Intermediary.js +142 -142
  55. package/dist/intermediaries/IntermediaryDiscovery.d.ts +198 -199
  56. package/dist/intermediaries/IntermediaryDiscovery.js +406 -406
  57. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +437 -438
  58. package/dist/intermediaries/apis/IntermediaryAPI.js +603 -602
  59. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
  60. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
  61. package/dist/lnurl/LNURL.d.ts +102 -102
  62. package/dist/lnurl/LNURL.js +321 -321
  63. package/dist/prices/RedundantSwapPrice.d.ts +110 -110
  64. package/dist/prices/RedundantSwapPrice.js +222 -222
  65. package/dist/prices/SingleSwapPrice.d.ts +34 -34
  66. package/dist/prices/SingleSwapPrice.js +44 -44
  67. package/dist/prices/SwapPriceWithChain.d.ts +107 -107
  68. package/dist/prices/SwapPriceWithChain.js +128 -128
  69. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
  70. package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
  71. package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
  72. package/dist/prices/abstract/IPriceProvider.js +74 -74
  73. package/dist/prices/abstract/ISwapPrice.d.ts +168 -166
  74. package/dist/prices/abstract/ISwapPrice.js +279 -267
  75. package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
  76. package/dist/prices/providers/BinancePriceProvider.js +30 -30
  77. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
  78. package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
  79. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
  80. package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
  81. package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
  82. package/dist/prices/providers/CustomPriceProvider.js +35 -35
  83. package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
  84. package/dist/prices/providers/KrakenPriceProvider.js +45 -45
  85. package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
  86. package/dist/prices/providers/OKXPriceProvider.js +29 -29
  87. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
  88. package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
  89. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
  90. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
  91. package/dist/storage/IUnifiedStorage.d.ts +85 -85
  92. package/dist/storage/IUnifiedStorage.js +2 -2
  93. package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
  94. package/dist/storage/UnifiedSwapStorage.js +116 -116
  95. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
  96. package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
  97. package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
  98. package/dist/storage-browser/LocalStorageManager.js +93 -93
  99. package/dist/swapper/Swapper.d.ts +686 -687
  100. package/dist/swapper/Swapper.js +1603 -1603
  101. package/dist/swapper/SwapperFactory.d.ts +135 -135
  102. package/dist/swapper/SwapperFactory.js +162 -162
  103. package/dist/swapper/SwapperUtils.d.ts +200 -200
  104. package/dist/swapper/SwapperUtils.js +467 -467
  105. package/dist/swapper/SwapperWithChain.d.ts +404 -404
  106. package/dist/swapper/SwapperWithChain.js +469 -469
  107. package/dist/swapper/SwapperWithSigner.d.ts +322 -322
  108. package/dist/swapper/SwapperWithSigner.js +318 -318
  109. package/dist/swaps/IAddressSwap.d.ts +22 -22
  110. package/dist/swaps/IAddressSwap.js +13 -14
  111. package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
  112. package/dist/swaps/IBTCWalletSwap.js +17 -18
  113. package/dist/swaps/IClaimableSwap.d.ts +49 -49
  114. package/dist/swaps/IClaimableSwap.js +14 -15
  115. package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
  116. package/dist/swaps/IClaimableSwapWrapper.js +2 -2
  117. package/dist/swaps/IRefundableSwap.d.ts +43 -43
  118. package/dist/swaps/IRefundableSwap.js +13 -14
  119. package/dist/swaps/ISwap.d.ts +386 -387
  120. package/dist/swaps/ISwap.js +346 -341
  121. package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
  122. package/dist/swaps/ISwapWithGasDrop.js +11 -12
  123. package/dist/swaps/ISwapWrapper.d.ts +283 -284
  124. package/dist/swaps/ISwapWrapper.js +353 -353
  125. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
  126. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
  127. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +133 -135
  128. package/dist/swaps/escrow_swaps/IEscrowSwap.js +169 -169
  129. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +114 -115
  130. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +134 -134
  131. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +98 -101
  132. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
  133. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
  134. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
  135. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +58 -58
  136. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +78 -78
  137. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +529 -531
  138. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
  139. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +181 -184
  140. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +418 -417
  141. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +581 -583
  142. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
  143. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +225 -228
  144. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +506 -506
  145. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
  146. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
  147. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +190 -191
  148. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +378 -377
  149. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
  150. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
  151. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +62 -62
  152. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +112 -112
  153. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +125 -127
  154. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
  155. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +241 -242
  156. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -520
  157. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
  158. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
  159. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +127 -128
  160. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +278 -278
  161. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +630 -630
  162. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1443 -1443
  163. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +213 -207
  164. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +756 -755
  165. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
  166. package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
  167. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
  168. package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
  169. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
  170. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
  171. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +68 -69
  172. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +92 -92
  173. package/dist/types/AmountData.d.ts +10 -10
  174. package/dist/types/AmountData.js +2 -2
  175. package/dist/types/CustomPriceFunction.d.ts +11 -11
  176. package/dist/types/CustomPriceFunction.js +2 -2
  177. package/dist/types/PriceInfoType.d.ts +28 -28
  178. package/dist/types/PriceInfoType.js +56 -57
  179. package/dist/types/SwapExecutionAction.d.ts +88 -88
  180. package/dist/types/SwapExecutionAction.js +2 -2
  181. package/dist/types/SwapStateInfo.d.ts +5 -5
  182. package/dist/types/SwapStateInfo.js +2 -2
  183. package/dist/types/SwapWithSigner.d.ts +17 -17
  184. package/dist/types/SwapWithSigner.js +42 -43
  185. package/dist/types/Token.d.ts +99 -99
  186. package/dist/types/Token.js +76 -76
  187. package/dist/types/TokenAmount.d.ts +69 -69
  188. package/dist/types/TokenAmount.js +59 -60
  189. package/dist/types/fees/Fee.d.ts +50 -50
  190. package/dist/types/fees/Fee.js +2 -2
  191. package/dist/types/fees/FeeBreakdown.d.ts +11 -11
  192. package/dist/types/fees/FeeBreakdown.js +2 -2
  193. package/dist/types/fees/PercentagePPM.d.ts +17 -17
  194. package/dist/types/fees/PercentagePPM.js +17 -18
  195. package/dist/types/lnurl/LNURLPay.d.ts +61 -61
  196. package/dist/types/lnurl/LNURLPay.js +30 -31
  197. package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
  198. package/dist/types/lnurl/LNURLWithdraw.js +26 -27
  199. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
  200. package/dist/types/wallets/LightningInvoiceCreateService.js +14 -15
  201. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
  202. package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
  203. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
  204. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
  205. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
  206. package/dist/utils/AutomaticClockDriftCorrection.js +69 -70
  207. package/dist/utils/BitcoinUtils.d.ts +12 -14
  208. package/dist/utils/BitcoinUtils.js +101 -102
  209. package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
  210. package/dist/utils/BitcoinWalletUtils.js +13 -14
  211. package/dist/utils/Logger.d.ts +7 -7
  212. package/dist/utils/Logger.js +11 -12
  213. package/dist/utils/RetryUtils.d.ts +22 -22
  214. package/dist/utils/RetryUtils.js +66 -67
  215. package/dist/utils/SwapUtils.d.ts +88 -88
  216. package/dist/utils/SwapUtils.js +72 -72
  217. package/dist/utils/TimeoutUtils.d.ts +17 -17
  218. package/dist/utils/TimeoutUtils.js +54 -55
  219. package/dist/utils/TokenUtils.d.ts +19 -19
  220. package/dist/utils/TokenUtils.js +36 -37
  221. package/dist/utils/TypeUtils.d.ts +7 -7
  222. package/dist/utils/TypeUtils.js +2 -2
  223. package/dist/utils/Utils.d.ts +56 -58
  224. package/dist/utils/Utils.js +193 -194
  225. package/package.json +1 -1
  226. package/src/intermediaries/apis/IntermediaryAPI.ts +4 -2
  227. package/src/prices/abstract/ISwapPrice.ts +19 -6
  228. package/src/swaps/ISwap.ts +17 -6
  229. package/src/swaps/ISwapWrapper.ts +4 -3
  230. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +4 -2
  231. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +4 -1
  232. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +2 -2
  233. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +4 -2
  234. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +6 -6
  235. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +5 -5
  236. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +4 -1
  237. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +10 -2
  238. package/src/swaps/trusted/ln/LnForGasWrapper.ts +1 -1
  239. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +1 -1
@@ -1,101 +1,98 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- import { ChainType, LightningNetworkApi, LNNodeLiquidity, SwapData } from "@atomiqlabs/base";
5
- import { IFromBTCDefinition, IFromBTCWrapper } from "./IFromBTCWrapper";
6
- import { ISwapWrapperOptions, WrapperCtorTokens } from "../../ISwapWrapper";
7
- import { UnifiedSwapStorage } from "../../../storage/UnifiedSwapStorage";
8
- import { UnifiedSwapEventListener } from "../../../events/UnifiedSwapEventListener";
9
- import { ISwapPrice } from "../../../prices/abstract/ISwapPrice";
10
- import { EventEmitter } from "events";
11
- import { Buffer } from "buffer";
12
- import { Intermediary } from "../../../intermediaries/Intermediary";
13
- import { PaymentRequestObject, TagsObject } from "@atomiqlabs/bolt11";
14
- import { IEscrowSwap } from "../IEscrowSwap";
15
- import { LNURLWithdrawParamsWithUrl } from "../../../types/lnurl/LNURLWithdraw";
16
- export type IFromBTCLNDefinition<T extends ChainType, W extends IFromBTCLNWrapper<T, any>, S extends IEscrowSwap<T>> = IFromBTCDefinition<T, W, S>;
17
- /**
18
- * Base class for wrappers of escrow-based Lightning -> Smart chain swaps
19
- *
20
- * @category Swaps/Abstract
21
- */
22
- export declare abstract class IFromBTCLNWrapper<T extends ChainType, D extends IFromBTCLNDefinition<T, IFromBTCLNWrapper<T, D>, IEscrowSwap<T, D>>, O extends ISwapWrapperOptions = ISwapWrapperOptions> extends IFromBTCWrapper<T, D, O> {
23
- /**
24
- * @internal
25
- */
26
- protected readonly lnApi: LightningNetworkApi;
27
- /**
28
- * @param chainIdentifier
29
- * @param unifiedStorage Storage interface for the current environment
30
- * @param unifiedChainEvents On-chain event listener
31
- * @param chain
32
- * @param contract Underlying contract handling the swaps
33
- * @param prices Swap pricing handler
34
- * @param tokens
35
- * @param swapDataDeserializer Deserializer for SwapData
36
- * @param lnApi
37
- * @param options
38
- * @param events Instance to use for emitting events
39
- */
40
- constructor(chainIdentifier: string, unifiedStorage: UnifiedSwapStorage<T>, unifiedChainEvents: UnifiedSwapEventListener<T>, chain: T["ChainInterface"], contract: T["Contract"], prices: ISwapPrice, tokens: WrapperCtorTokens, swapDataDeserializer: new (data: any) => T["Data"], lnApi: LightningNetworkApi, options: O, events?: EventEmitter<{
41
- swapState: [IEscrowSwap];
42
- }>);
43
- /**
44
- * Generates a new 32-byte secret to be used as pre-image for lightning network invoice & HTLC swap
45
- *
46
- * @returns Hash pre-image & payment hash
47
- *
48
- * @internal
49
- */
50
- protected getSecretAndHash(): {
51
- secret: Buffer;
52
- paymentHash: Buffer;
53
- };
54
- /**
55
- * Pre-fetches intermediary's LN node capacity, doesn't throw, instead returns null
56
- *
57
- * @param pubkeyPromise Promise that resolves when we receive "lnPublicKey" param from the intermediary through
58
- * streaming
59
- *
60
- * @returns LN Node liquidity
61
- *
62
- * @internal
63
- */
64
- protected preFetchLnCapacity(pubkeyPromise: Promise<string | null>): Promise<LNNodeLiquidity | null>;
65
- /**
66
- * Verifies whether the intermediary's lightning node has enough inbound capacity to receive the LN payment
67
- *
68
- * @param lp Intermediary
69
- * @param decodedPr Decoded bolt11 lightning network invoice
70
- * @param lnCapacityPrefetchPromise Pre-fetch for LN node capacity, preFetchLnCapacity()
71
- * @param abortSignal Abort signal
72
- *
73
- * @throws {IntermediaryError} if the lightning network node doesn't have enough inbound liquidity
74
- * @throws {Error} if the lightning network node's inbound liquidity might be enough, but the swap would
75
- * deplete more than half of the liquidity
76
- *
77
- * @internal
78
- */
79
- protected verifyLnNodeCapacity(lp: Intermediary, decodedPr: PaymentRequestObject & {
80
- tagsObject: TagsObject;
81
- }, lnCapacityPrefetchPromise?: Promise<LNNodeLiquidity | null>, abortSignal?: AbortSignal): Promise<void>;
82
- /**
83
- * Parses and fetches lnurl withdraw params from the specified lnurl
84
- *
85
- * @param lnurl LNURL to be parsed and fetched
86
- * @param abortSignal Abort signal
87
- *
88
- * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-withdraw
89
- *
90
- * @internal
91
- */
92
- protected getLNURLWithdraw(lnurl: string | LNURLWithdrawParamsWithUrl, abortSignal: AbortSignal): Promise<LNURLWithdrawParamsWithUrl>;
93
- /**
94
- * Returns the swap expiry, leaving enough time for the user to claim the HTLC
95
- *
96
- * @param data Parsed swap data
97
- *
98
- * @internal
99
- */
100
- _getHtlcTimeout(data: SwapData): bigint;
101
- }
1
+ import { ChainType, LightningNetworkApi, LNNodeLiquidity, SwapData } from "@atomiqlabs/base";
2
+ import { IFromBTCDefinition, IFromBTCWrapper } from "./IFromBTCWrapper";
3
+ import { ISwapWrapperOptions, WrapperCtorTokens } from "../../ISwapWrapper";
4
+ import { UnifiedSwapStorage } from "../../../storage/UnifiedSwapStorage";
5
+ import { UnifiedSwapEventListener } from "../../../events/UnifiedSwapEventListener";
6
+ import { ISwapPrice } from "../../../prices/abstract/ISwapPrice";
7
+ import { EventEmitter } from "events";
8
+ import { Buffer } from "buffer";
9
+ import { Intermediary } from "../../../intermediaries/Intermediary";
10
+ import { PaymentRequestObject, TagsObject } from "@atomiqlabs/bolt11";
11
+ import { IEscrowSwap } from "../IEscrowSwap";
12
+ import { LNURLWithdrawParamsWithUrl } from "../../../types/lnurl/LNURLWithdraw";
13
+ export type IFromBTCLNDefinition<T extends ChainType, W extends IFromBTCLNWrapper<T, any>, S extends IEscrowSwap<T>> = IFromBTCDefinition<T, W, S>;
14
+ /**
15
+ * Base class for wrappers of escrow-based Lightning -> Smart chain swaps
16
+ *
17
+ * @category Swaps/Abstract
18
+ */
19
+ export declare abstract class IFromBTCLNWrapper<T extends ChainType, D extends IFromBTCLNDefinition<T, IFromBTCLNWrapper<T, D>, IEscrowSwap<T, D>>, O extends ISwapWrapperOptions = ISwapWrapperOptions> extends IFromBTCWrapper<T, D, O> {
20
+ /**
21
+ * @internal
22
+ */
23
+ protected readonly lnApi: LightningNetworkApi;
24
+ /**
25
+ * @param chainIdentifier
26
+ * @param unifiedStorage Storage interface for the current environment
27
+ * @param unifiedChainEvents On-chain event listener
28
+ * @param chain
29
+ * @param contract Underlying contract handling the swaps
30
+ * @param prices Swap pricing handler
31
+ * @param tokens
32
+ * @param swapDataDeserializer Deserializer for SwapData
33
+ * @param lnApi
34
+ * @param options
35
+ * @param events Instance to use for emitting events
36
+ */
37
+ constructor(chainIdentifier: string, unifiedStorage: UnifiedSwapStorage<T>, unifiedChainEvents: UnifiedSwapEventListener<T>, chain: T["ChainInterface"], contract: T["Contract"], prices: ISwapPrice, tokens: WrapperCtorTokens, swapDataDeserializer: new (data: any) => T["Data"], lnApi: LightningNetworkApi, options: O, events?: EventEmitter<{
38
+ swapState: [IEscrowSwap];
39
+ }>);
40
+ /**
41
+ * Generates a new 32-byte secret to be used as pre-image for lightning network invoice & HTLC swap
42
+ *
43
+ * @returns Hash pre-image & payment hash
44
+ *
45
+ * @internal
46
+ */
47
+ protected getSecretAndHash(): {
48
+ secret: Buffer;
49
+ paymentHash: Buffer;
50
+ };
51
+ /**
52
+ * Pre-fetches intermediary's LN node capacity, doesn't throw, instead returns null
53
+ *
54
+ * @param pubkeyPromise Promise that resolves when we receive "lnPublicKey" param from the intermediary through
55
+ * streaming
56
+ *
57
+ * @returns LN Node liquidity
58
+ *
59
+ * @internal
60
+ */
61
+ protected preFetchLnCapacity(pubkeyPromise: Promise<string | null>): Promise<LNNodeLiquidity | null>;
62
+ /**
63
+ * Verifies whether the intermediary's lightning node has enough inbound capacity to receive the LN payment
64
+ *
65
+ * @param lp Intermediary
66
+ * @param decodedPr Decoded bolt11 lightning network invoice
67
+ * @param lnCapacityPrefetchPromise Pre-fetch for LN node capacity, preFetchLnCapacity()
68
+ * @param abortSignal Abort signal
69
+ *
70
+ * @throws {IntermediaryError} if the lightning network node doesn't have enough inbound liquidity
71
+ * @throws {Error} if the lightning network node's inbound liquidity might be enough, but the swap would
72
+ * deplete more than half of the liquidity
73
+ *
74
+ * @internal
75
+ */
76
+ protected verifyLnNodeCapacity(lp: Intermediary, decodedPr: PaymentRequestObject & {
77
+ tagsObject: TagsObject;
78
+ }, lnCapacityPrefetchPromise?: Promise<LNNodeLiquidity | null>, abortSignal?: AbortSignal): Promise<void>;
79
+ /**
80
+ * Parses and fetches lnurl withdraw params from the specified lnurl
81
+ *
82
+ * @param lnurl LNURL to be parsed and fetched
83
+ * @param abortSignal Abort signal
84
+ *
85
+ * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-withdraw
86
+ *
87
+ * @internal
88
+ */
89
+ protected getLNURLWithdraw(lnurl: string | LNURLWithdrawParamsWithUrl, abortSignal: AbortSignal): Promise<LNURLWithdrawParamsWithUrl>;
90
+ /**
91
+ * Returns the swap expiry, leaving enough time for the user to claim the HTLC
92
+ *
93
+ * @param data Parsed swap data
94
+ *
95
+ * @internal
96
+ */
97
+ _getHtlcTimeout(data: SwapData): bigint;
98
+ }
@@ -1,130 +1,130 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IFromBTCLNWrapper = void 0;
4
- const IFromBTCWrapper_1 = require("./IFromBTCWrapper");
5
- const buffer_1 = require("buffer");
6
- const Utils_1 = require("../../../utils/Utils");
7
- const IntermediaryError_1 = require("../../../errors/IntermediaryError");
8
- const LNURL_1 = require("../../../lnurl/LNURL");
9
- const UserError_1 = require("../../../errors/UserError");
10
- const sha256_1 = require("@noble/hashes/sha256");
11
- /**
12
- * Base class for wrappers of escrow-based Lightning -> Smart chain swaps
13
- *
14
- * @category Swaps/Abstract
15
- */
16
- class IFromBTCLNWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {
17
- /**
18
- * @param chainIdentifier
19
- * @param unifiedStorage Storage interface for the current environment
20
- * @param unifiedChainEvents On-chain event listener
21
- * @param chain
22
- * @param contract Underlying contract handling the swaps
23
- * @param prices Swap pricing handler
24
- * @param tokens
25
- * @param swapDataDeserializer Deserializer for SwapData
26
- * @param lnApi
27
- * @param options
28
- * @param events Instance to use for emitting events
29
- */
30
- constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, contract, prices, tokens, swapDataDeserializer, lnApi, options, events) {
31
- super(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, contract, prices, tokens, swapDataDeserializer, options, events);
32
- this.lnApi = lnApi;
33
- }
34
- /**
35
- * Generates a new 32-byte secret to be used as pre-image for lightning network invoice & HTLC swap
36
- *
37
- * @returns Hash pre-image & payment hash
38
- *
39
- * @internal
40
- */
41
- getSecretAndHash() {
42
- const secret = (0, Utils_1.randomBytes)(32);
43
- const paymentHash = buffer_1.Buffer.from((0, sha256_1.sha256)(secret));
44
- return { secret, paymentHash };
45
- }
46
- /**
47
- * Pre-fetches intermediary's LN node capacity, doesn't throw, instead returns null
48
- *
49
- * @param pubkeyPromise Promise that resolves when we receive "lnPublicKey" param from the intermediary through
50
- * streaming
51
- *
52
- * @returns LN Node liquidity
53
- *
54
- * @internal
55
- */
56
- preFetchLnCapacity(pubkeyPromise) {
57
- return pubkeyPromise.then(pubkey => {
58
- if (pubkey == null)
59
- return null;
60
- return this.lnApi.getLNNodeLiquidity(pubkey);
61
- }).catch(e => {
62
- this.logger.warn("preFetchLnCapacity(): Error: ", e);
63
- return null;
64
- });
65
- }
66
- /**
67
- * Verifies whether the intermediary's lightning node has enough inbound capacity to receive the LN payment
68
- *
69
- * @param lp Intermediary
70
- * @param decodedPr Decoded bolt11 lightning network invoice
71
- * @param lnCapacityPrefetchPromise Pre-fetch for LN node capacity, preFetchLnCapacity()
72
- * @param abortSignal Abort signal
73
- *
74
- * @throws {IntermediaryError} if the lightning network node doesn't have enough inbound liquidity
75
- * @throws {Error} if the lightning network node's inbound liquidity might be enough, but the swap would
76
- * deplete more than half of the liquidity
77
- *
78
- * @internal
79
- */
80
- async verifyLnNodeCapacity(lp, decodedPr, lnCapacityPrefetchPromise, abortSignal) {
81
- if (decodedPr.payeeNodeKey == null)
82
- throw new Error("Unable to extract payee pubkey from the swap invoice!");
83
- if (decodedPr.millisatoshis == null)
84
- throw new Error("Swap invoice doesn't contains msat amount field!");
85
- const _result = await lnCapacityPrefetchPromise ?? await this.lnApi.getLNNodeLiquidity(decodedPr.payeeNodeKey);
86
- if (_result === null)
87
- throw new IntermediaryError_1.IntermediaryError("LP's lightning node not found in the lightning network graph!");
88
- if (abortSignal != null)
89
- abortSignal.throwIfAborted();
90
- lp.lnData = _result;
91
- if (decodedPr.payeeNodeKey !== _result.publicKey)
92
- throw new IntermediaryError_1.IntermediaryError("Invalid pr returned - payee pubkey");
93
- const amountIn = (BigInt(decodedPr.millisatoshis) + 999n) / 1000n;
94
- if (_result.capacity < amountIn)
95
- throw new IntermediaryError_1.IntermediaryError("LP's lightning node doesn't have enough inbound capacity for the swap!");
96
- if ((_result.capacity / 2n) < amountIn)
97
- throw new Error("LP's lightning node probably doesn't have enough inbound capacity for the swap!");
98
- }
99
- /**
100
- * Parses and fetches lnurl withdraw params from the specified lnurl
101
- *
102
- * @param lnurl LNURL to be parsed and fetched
103
- * @param abortSignal Abort signal
104
- *
105
- * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-withdraw
106
- *
107
- * @internal
108
- */
109
- async getLNURLWithdraw(lnurl, abortSignal) {
110
- if (typeof (lnurl) !== "string")
111
- return lnurl;
112
- const res = await LNURL_1.LNURL.getLNURL(lnurl, true, this._options.getRequestTimeout, abortSignal);
113
- if (res == null)
114
- throw new UserError_1.UserError("Invalid LNURL");
115
- if (res.tag !== "withdrawRequest")
116
- throw new UserError_1.UserError("Not a LNURL-withdrawal");
117
- return res;
118
- }
119
- /**
120
- * Returns the swap expiry, leaving enough time for the user to claim the HTLC
121
- *
122
- * @param data Parsed swap data
123
- *
124
- * @internal
125
- */
126
- _getHtlcTimeout(data) {
127
- return data.getExpiry() - 600n;
128
- }
129
- }
130
- exports.IFromBTCLNWrapper = IFromBTCLNWrapper;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IFromBTCLNWrapper = void 0;
4
+ const IFromBTCWrapper_1 = require("./IFromBTCWrapper");
5
+ const buffer_1 = require("buffer");
6
+ const Utils_1 = require("../../../utils/Utils");
7
+ const IntermediaryError_1 = require("../../../errors/IntermediaryError");
8
+ const LNURL_1 = require("../../../lnurl/LNURL");
9
+ const UserError_1 = require("../../../errors/UserError");
10
+ const sha256_1 = require("@noble/hashes/sha256");
11
+ /**
12
+ * Base class for wrappers of escrow-based Lightning -> Smart chain swaps
13
+ *
14
+ * @category Swaps/Abstract
15
+ */
16
+ class IFromBTCLNWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {
17
+ /**
18
+ * @param chainIdentifier
19
+ * @param unifiedStorage Storage interface for the current environment
20
+ * @param unifiedChainEvents On-chain event listener
21
+ * @param chain
22
+ * @param contract Underlying contract handling the swaps
23
+ * @param prices Swap pricing handler
24
+ * @param tokens
25
+ * @param swapDataDeserializer Deserializer for SwapData
26
+ * @param lnApi
27
+ * @param options
28
+ * @param events Instance to use for emitting events
29
+ */
30
+ constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, contract, prices, tokens, swapDataDeserializer, lnApi, options, events) {
31
+ super(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, contract, prices, tokens, swapDataDeserializer, options, events);
32
+ this.lnApi = lnApi;
33
+ }
34
+ /**
35
+ * Generates a new 32-byte secret to be used as pre-image for lightning network invoice & HTLC swap
36
+ *
37
+ * @returns Hash pre-image & payment hash
38
+ *
39
+ * @internal
40
+ */
41
+ getSecretAndHash() {
42
+ const secret = (0, Utils_1.randomBytes)(32);
43
+ const paymentHash = buffer_1.Buffer.from((0, sha256_1.sha256)(secret));
44
+ return { secret, paymentHash };
45
+ }
46
+ /**
47
+ * Pre-fetches intermediary's LN node capacity, doesn't throw, instead returns null
48
+ *
49
+ * @param pubkeyPromise Promise that resolves when we receive "lnPublicKey" param from the intermediary through
50
+ * streaming
51
+ *
52
+ * @returns LN Node liquidity
53
+ *
54
+ * @internal
55
+ */
56
+ preFetchLnCapacity(pubkeyPromise) {
57
+ return pubkeyPromise.then(pubkey => {
58
+ if (pubkey == null)
59
+ return null;
60
+ return this.lnApi.getLNNodeLiquidity(pubkey);
61
+ }).catch(e => {
62
+ this.logger.warn("preFetchLnCapacity(): Error: ", e);
63
+ return null;
64
+ });
65
+ }
66
+ /**
67
+ * Verifies whether the intermediary's lightning node has enough inbound capacity to receive the LN payment
68
+ *
69
+ * @param lp Intermediary
70
+ * @param decodedPr Decoded bolt11 lightning network invoice
71
+ * @param lnCapacityPrefetchPromise Pre-fetch for LN node capacity, preFetchLnCapacity()
72
+ * @param abortSignal Abort signal
73
+ *
74
+ * @throws {IntermediaryError} if the lightning network node doesn't have enough inbound liquidity
75
+ * @throws {Error} if the lightning network node's inbound liquidity might be enough, but the swap would
76
+ * deplete more than half of the liquidity
77
+ *
78
+ * @internal
79
+ */
80
+ async verifyLnNodeCapacity(lp, decodedPr, lnCapacityPrefetchPromise, abortSignal) {
81
+ if (decodedPr.payeeNodeKey == null)
82
+ throw new Error("Unable to extract payee pubkey from the swap invoice!");
83
+ if (decodedPr.millisatoshis == null)
84
+ throw new Error("Swap invoice doesn't contains msat amount field!");
85
+ const _result = await lnCapacityPrefetchPromise ?? await this.lnApi.getLNNodeLiquidity(decodedPr.payeeNodeKey);
86
+ if (_result === null)
87
+ throw new IntermediaryError_1.IntermediaryError("LP's lightning node not found in the lightning network graph!");
88
+ if (abortSignal != null)
89
+ abortSignal.throwIfAborted();
90
+ lp.lnData = _result;
91
+ if (decodedPr.payeeNodeKey !== _result.publicKey)
92
+ throw new IntermediaryError_1.IntermediaryError("Invalid pr returned - payee pubkey");
93
+ const amountIn = (BigInt(decodedPr.millisatoshis) + 999n) / 1000n;
94
+ if (_result.capacity < amountIn)
95
+ throw new IntermediaryError_1.IntermediaryError("LP's lightning node doesn't have enough inbound capacity for the swap!");
96
+ if ((_result.capacity / 2n) < amountIn)
97
+ throw new Error("LP's lightning node probably doesn't have enough inbound capacity for the swap!");
98
+ }
99
+ /**
100
+ * Parses and fetches lnurl withdraw params from the specified lnurl
101
+ *
102
+ * @param lnurl LNURL to be parsed and fetched
103
+ * @param abortSignal Abort signal
104
+ *
105
+ * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-withdraw
106
+ *
107
+ * @internal
108
+ */
109
+ async getLNURLWithdraw(lnurl, abortSignal) {
110
+ if (typeof (lnurl) !== "string")
111
+ return lnurl;
112
+ const res = await LNURL_1.LNURL.getLNURL(lnurl, true, this._options.getRequestTimeout, abortSignal);
113
+ if (res == null)
114
+ throw new UserError_1.UserError("Invalid LNURL");
115
+ if (res.tag !== "withdrawRequest")
116
+ throw new UserError_1.UserError("Not a LNURL-withdrawal");
117
+ return res;
118
+ }
119
+ /**
120
+ * Returns the swap expiry, leaving enough time for the user to claim the HTLC
121
+ *
122
+ * @param data Parsed swap data
123
+ *
124
+ * @internal
125
+ */
126
+ _getHtlcTimeout(data) {
127
+ return data.getExpiry() - 600n;
128
+ }
129
+ }
130
+ exports.IFromBTCLNWrapper = IFromBTCLNWrapper;