@atomiqlabs/sdk 8.6.6 → 8.6.7

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 (225) 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 +52 -51
  5. package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -6
  6. package/dist/bitcoin/coinselect2/blackjack.js +38 -37
  7. package/dist/bitcoin/coinselect2/index.d.ts +19 -17
  8. package/dist/bitcoin/coinselect2/index.js +69 -69
  9. package/dist/bitcoin/coinselect2/utils.d.ts +77 -75
  10. package/dist/bitcoin/coinselect2/utils.js +123 -123
  11. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +130 -128
  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 +21 -20
  15. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +101 -99
  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 +91 -90
  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 +44 -42
  40. package/dist/http/paramcoders/ParamDecoder.js +137 -137
  41. package/dist/http/paramcoders/ParamEncoder.d.ts +20 -18
  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 +13 -11
  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 +174 -173
  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 +199 -198
  56. package/dist/intermediaries/IntermediaryDiscovery.js +406 -406
  57. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +439 -437
  58. package/dist/intermediaries/apis/IntermediaryAPI.js +603 -603
  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 -168
  74. package/dist/prices/abstract/ISwapPrice.js +279 -279
  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 +687 -686
  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 +14 -13
  111. package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
  112. package/dist/swaps/IBTCWalletSwap.js +18 -17
  113. package/dist/swaps/IClaimableSwap.d.ts +49 -49
  114. package/dist/swaps/IClaimableSwap.js +15 -14
  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 +14 -13
  119. package/dist/swaps/ISwap.d.ts +387 -386
  120. package/dist/swaps/ISwap.js +346 -346
  121. package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
  122. package/dist/swaps/ISwapWithGasDrop.js +12 -11
  123. package/dist/swaps/ISwapWrapper.d.ts +285 -283
  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 +135 -133
  128. package/dist/swaps/escrow_swaps/IEscrowSwap.js +169 -169
  129. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +115 -114
  130. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +134 -134
  131. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +101 -98
  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 +531 -529
  138. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
  139. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +184 -181
  140. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +418 -418
  141. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +583 -581
  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 +228 -225
  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 +191 -190
  148. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +378 -378
  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 +127 -125
  154. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
  155. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +242 -241
  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 +128 -127
  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 +214 -213
  164. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +756 -756
  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 +69 -68
  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 +57 -56
  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 +43 -42
  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 +60 -59
  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 +18 -17
  195. package/dist/types/lnurl/LNURLPay.d.ts +61 -61
  196. package/dist/types/lnurl/LNURLPay.js +31 -30
  197. package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
  198. package/dist/types/lnurl/LNURLWithdraw.js +27 -26
  199. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
  200. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -14
  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 +70 -69
  207. package/dist/utils/BitcoinUtils.d.ts +14 -12
  208. package/dist/utils/BitcoinUtils.js +102 -101
  209. package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
  210. package/dist/utils/BitcoinWalletUtils.js +14 -13
  211. package/dist/utils/Logger.d.ts +7 -7
  212. package/dist/utils/Logger.js +12 -11
  213. package/dist/utils/RetryUtils.d.ts +22 -22
  214. package/dist/utils/RetryUtils.js +67 -66
  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 +55 -54
  219. package/dist/utils/TokenUtils.d.ts +19 -19
  220. package/dist/utils/TokenUtils.js +37 -36
  221. package/dist/utils/TypeUtils.d.ts +7 -7
  222. package/dist/utils/TypeUtils.js +2 -2
  223. package/dist/utils/Utils.d.ts +58 -56
  224. package/dist/utils/Utils.js +194 -193
  225. package/package.json +1 -1
@@ -1,241 +1,242 @@
1
- import { ToBTCLNSwap } from "./ToBTCLNSwap";
2
- import { IToBTCDefinition, IToBTCWrapper } from "../IToBTCWrapper";
3
- import { ChainType, SwapCommitState } from "@atomiqlabs/base";
4
- import { Intermediary } from "../../../../intermediaries/Intermediary";
5
- import { ISwapWrapperOptions, WrapperCtorTokens } from "../../../ISwapWrapper";
6
- import { ISwapPrice } from "../../../../prices/abstract/ISwapPrice";
7
- import { EventEmitter } from "events";
8
- import { SwapType } from "../../../../enums/SwapType";
9
- import { UnifiedSwapEventListener } from "../../../../events/UnifiedSwapEventListener";
10
- import { UnifiedSwapStorage } from "../../../../storage/UnifiedSwapStorage";
11
- import { ISwap } from "../../../ISwap";
12
- import { AmountData } from "../../../../types/AmountData";
13
- import { LNURLPayParamsWithUrl } from "../../../../types/lnurl/LNURLPay";
14
- import { AllOptional } from "../../../../utils/TypeUtils";
15
- import { LightningInvoiceCreateService } from "../../../../types/wallets/LightningInvoiceCreateService";
16
- export type ToBTCLNOptions = {
17
- /**
18
- * HTLC expiration timeout in seconds to use when offering the HTLC to the LP. Larger expirations mean that more
19
- * lightning network payment paths can be considered (every hop in the lightning network payment adds additional
20
- * timeout requirement). On the other side, larger expiration also means that user's funds are locked for longer
21
- * in case of a non-cooperative LP.
22
- *
23
- * Uses 5 days as default.
24
- */
25
- expirySeconds?: number;
26
- /**
27
- * Maximum fee for routing the swap output payment through the lightning network. Higher fee percentages means that
28
- * more payment routes can be considered (every hop in the lightning network payment adds additional fee
29
- * requirements).
30
- *
31
- * The fee is express as percentage of the swap value, uses `0.2` by default which means the maximum
32
- * routing fee is capped at 0.2% of the swap value.
33
- *
34
- * The full fee also contains the base component (set by `maxRoutingBaseFee` option), the resulting maximum routing
35
- * fee rate is:
36
- *
37
- * `maxRoutingFee` = `maxRoutingBaseFee` sats + `value` * `maxRoutingFeePercentage`%
38
- */
39
- maxRoutingFeePercentage?: number;
40
- /**
41
- *
42
- * Maximum base fee (in sats) for routing the swap output payment through the lightning network. Higher fee
43
- * percentages means that more payment routes can be considered (every hop in the lightning network payment adds additional fee
44
- * requirements).
45
- *
46
- * Uses 10 sats as a default.
47
- *
48
- * The full fee also contains the value percentage component (set by `maxRoutingFeePercentage` option), the
49
- * resulting maximum routing fee rate is:
50
- *
51
- * `maxRoutingFee` = `maxRoutingBaseFee` sats + (`value` * `maxRoutingFeePercentage`%)
52
- */
53
- maxRoutingBaseFee?: bigint;
54
- /**
55
- * @deprecated Use `maxRoutingFeePercentage` and express the routing fee in percentage instead!
56
- */
57
- maxRoutingPPM?: bigint;
58
- /**
59
- * @deprecated Adjust fee with `maxRoutingFeePercentage` & `maxRoutingBaseFee` params!
60
- */
61
- maxFee?: bigint | Promise<bigint>;
62
- /**
63
- * @deprecated Pass desired HTLC expiration timeout as `expirySeconds`
64
- */
65
- expiryTimestamp?: bigint;
66
- };
67
- export type ToBTCLNWrapperOptions = ISwapWrapperOptions & {
68
- lightningBaseFee: number;
69
- lightningFeePPM: number;
70
- paymentTimeoutSeconds: number;
71
- };
72
- export type ToBTCLNDefinition<T extends ChainType> = IToBTCDefinition<T, ToBTCLNWrapper<T>, ToBTCLNSwap<T>>;
73
- /**
74
- * Escrow based (HTLC) swap for Smart chains -> Bitcoin lightning
75
- *
76
- * @category Swaps/Smart chain → Lightning
77
- */
78
- export declare class ToBTCLNWrapper<T extends ChainType> extends IToBTCWrapper<T, ToBTCLNDefinition<T>, ToBTCLNWrapperOptions> {
79
- readonly TYPE: SwapType.TO_BTCLN;
80
- /**
81
- * @internal
82
- */
83
- readonly _swapDeserializer: typeof ToBTCLNSwap;
84
- 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"], options?: AllOptional<ToBTCLNWrapperOptions>, events?: EventEmitter<{
85
- swapState: [ISwap];
86
- }>);
87
- private toRequiredSwapOptions;
88
- /**
89
- * Verifies whether a given payment hash was already paid by checking the local
90
- * storage of known swaps
91
- *
92
- * @param paymentHash Payment hash to check
93
- *
94
- * @private
95
- */
96
- private checkPaymentHashWasPaid;
97
- /**
98
- * Calculates maximum lightning network routing fee based on amount
99
- *
100
- * @param amount BTC amount of the swap in satoshis
101
- * @param overrideBaseFee Override wrapper's default base fee
102
- * @param overrideFeePPM Override wrapper's default PPM
103
- *
104
- * @returns Maximum lightning routing fee in sats
105
- *
106
- * @private
107
- */
108
- private calculateFeeForAmount;
109
- /**
110
- * Verifies returned LP data
111
- *
112
- * @param signer
113
- * @param resp Response as returned by the LP
114
- * @param parsedPr Parsed bolt11 lightning invoice
115
- * @param token Smart chain token to be used in the swap
116
- * @param lp
117
- * @param calculatedOptions Swap options computed from the swap create options
118
- * @param data Parsed swap data returned by the LP
119
- * @param requiredTotal Required total to be paid on the input (for exactIn swaps)
120
- *
121
- * @throws {IntermediaryError} In case the response is not valid
122
- *
123
- * @private
124
- */
125
- private verifyReturnedData;
126
- /**
127
- * Returns the quote/swap from a given intermediary
128
- *
129
- * @param signer Smartchain signer initiating the swap
130
- * @param amountData
131
- * @param lp Intermediary
132
- * @param pr bolt11 lightning network invoice
133
- * @param parsedPr Parsed bolt11 lightning network invoice
134
- * @param calculatedOptions Swap options computed from the swap create options
135
- * @param preFetches
136
- * @param abort Abort signal or controller, if AbortController is passed it is used as-is, when AbortSignal is passed
137
- * it is extended with extendAbortController and then used
138
- * @param additionalParams Additional params that should be sent to the LP
139
- *
140
- * @private
141
- */
142
- private getIntermediaryQuote;
143
- /**
144
- * Returns a newly created Smart chain -> Lightning swap using the HTLC based escrow swap protocol,
145
- * the amount is parsed from the provided lightning network payment request (bolt11 invoice)
146
- *
147
- * @param signer Source chain signer address initiating the swap
148
- * @param recipient BOLT11 payment request (bitcoin lightning invoice) you wish to pay
149
- * @param amountData Token to swap
150
- * @param lps An array of intermediaries (LPs) to get the quotes from
151
- * @param options Optional additional quote options
152
- * @param additionalParams Optional additional parameters sent to the LP when creating the swap
153
- * @param abortSignal Abort signal
154
- * @param preFetches Optional existing pre-fetch promises for the swap (only used internally for LNURL swaps)
155
- */
156
- create(signer: string, recipient: string, amountData: Omit<AmountData, "amount"> & {
157
- exactIn: false;
158
- }, lps: Intermediary[], options?: ToBTCLNOptions, additionalParams?: Record<string, any>, abortSignal?: AbortSignal, preFetches?: {
159
- feeRatePromise: Promise<string | undefined>;
160
- pricePreFetchPromise: Promise<bigint | undefined>;
161
- usdPricePrefetchPromise: Promise<number | undefined>;
162
- signDataPrefetchPromise?: Promise<T["PreFetchVerification"] | undefined>;
163
- }): Promise<{
164
- quote: Promise<ToBTCLNSwap<T>>;
165
- intermediary: Intermediary;
166
- }[]>;
167
- /**
168
- * Parses and fetches lnurl pay params from the specified lnurl
169
- *
170
- * @param lnurl LNURL to be parsed and fetched
171
- * @param abortSignal Abort signal
172
- * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-pay
173
- *
174
- * @private
175
- */
176
- private getLNURLPay;
177
- /**
178
- * Returns the quote/swap from the given LP
179
- *
180
- * @param signer Source chain signer address initiating the swap
181
- * @param amountData Token to swap
182
- * @param invoiceCreateService Service for creating fixed amount invoices
183
- * @param lp Intermediary (LPs) to get the quote from
184
- * @param dummyPr Dummy minimum value bolt11 lightning invoice returned from the LNURL-pay, used to estimate
185
- * network fees for an actual invoice
186
- * @param calculatedOptions Swap options computed from the swap create options
187
- * @param preFetches Optional existing pre-fetch promises for the swap (only used internally for LNURL swaps)
188
- * @param abortSignal Abort signal
189
- * @param additionalParams Additional params to be sent to the intermediary
190
- *
191
- * @private
192
- */
193
- private getIntermediaryQuoteExactIn;
194
- /**
195
- * Returns a newly created Smart chain -> Lightning swap using the HTLC based escrow swap protocol via
196
- * invoice creation service. This allows exactIn swaps by requesting the desired fixed amount lightning
197
- * network invoice from the service.
198
- *
199
- * @param signer Source chain signer address initiating the swap
200
- * @param invoiceCreateServicePromise Service to request destination lightning network invoices from
201
- * @param amountData Amount, token and exact input/output data for to swap
202
- * @param lps An array of intermediaries (LPs) to get the quotes from
203
- * @param options Optional additional quote options
204
- * @param additionalParams Optional additional parameters sent to the LP when creating the swap
205
- * @param abortSignal Abort signal
206
- */
207
- createViaInvoiceCreateService(signer: string, invoiceCreateServicePromise: Promise<LightningInvoiceCreateService>, amountData: AmountData, lps: Intermediary[], options?: ToBTCLNOptions, additionalParams?: Record<string, any>, abortSignal?: AbortSignal): Promise<{
208
- quote: Promise<ToBTCLNSwap<T>>;
209
- intermediary: Intermediary;
210
- }[]>;
211
- /**
212
- * Returns a newly created Smart chain -> Lightning swap using the HTLC based escrow swap protocol. Pays to
213
- * an LNURL-pay link. This allows exactIn swaps by requesting the desired fixed amount lightning
214
- * network invoice from the LNURL service.
215
- *
216
- * @param signer Source chain signer address initiating the swap
217
- * @param lnurl LNURL-pay link of the recipient
218
- * @param amountData Amount, token and exact input/output data for to swap
219
- * @param lps An array of intermediaries (LPs) to get the quotes from
220
- * @param options Optional additional quote options
221
- * @param additionalParams Optional additional parameters sent to the LP when creating the swap
222
- * @param abortSignal Abort signal
223
- */
224
- createViaLNURL(signer: string, lnurl: string | LNURLPayParamsWithUrl, amountData: AmountData, lps: Intermediary[], options?: ToBTCLNOptions & {
225
- comment?: string;
226
- }, additionalParams?: Record<string, any>, abortSignal?: AbortSignal): Promise<{
227
- quote: Promise<ToBTCLNSwap<T>>;
228
- intermediary: Intermediary;
229
- }[]>;
230
- /**
231
- * @inheritDoc
232
- */
233
- recoverFromSwapDataAndState(init: {
234
- data: T["Data"];
235
- getInitTxId: () => Promise<string>;
236
- getTxBlock: () => Promise<{
237
- blockTime: number;
238
- blockHeight: number;
239
- }>;
240
- }, state: SwapCommitState, lp?: Intermediary): Promise<ToBTCLNSwap<T> | null>;
241
- }
1
+ /// <reference types="node" />
2
+ import { ToBTCLNSwap } from "./ToBTCLNSwap";
3
+ import { IToBTCDefinition, IToBTCWrapper } from "../IToBTCWrapper";
4
+ import { ChainType, SwapCommitState } from "@atomiqlabs/base";
5
+ import { Intermediary } from "../../../../intermediaries/Intermediary";
6
+ import { ISwapWrapperOptions, WrapperCtorTokens } from "../../../ISwapWrapper";
7
+ import { ISwapPrice } from "../../../../prices/abstract/ISwapPrice";
8
+ import { EventEmitter } from "events";
9
+ import { SwapType } from "../../../../enums/SwapType";
10
+ import { UnifiedSwapEventListener } from "../../../../events/UnifiedSwapEventListener";
11
+ import { UnifiedSwapStorage } from "../../../../storage/UnifiedSwapStorage";
12
+ import { ISwap } from "../../../ISwap";
13
+ import { AmountData } from "../../../../types/AmountData";
14
+ import { LNURLPayParamsWithUrl } from "../../../../types/lnurl/LNURLPay";
15
+ import { AllOptional } from "../../../../utils/TypeUtils";
16
+ import { LightningInvoiceCreateService } from "../../../../types/wallets/LightningInvoiceCreateService";
17
+ export type ToBTCLNOptions = {
18
+ /**
19
+ * HTLC expiration timeout in seconds to use when offering the HTLC to the LP. Larger expirations mean that more
20
+ * lightning network payment paths can be considered (every hop in the lightning network payment adds additional
21
+ * timeout requirement). On the other side, larger expiration also means that user's funds are locked for longer
22
+ * in case of a non-cooperative LP.
23
+ *
24
+ * Uses 5 days as default.
25
+ */
26
+ expirySeconds?: number;
27
+ /**
28
+ * Maximum fee for routing the swap output payment through the lightning network. Higher fee percentages means that
29
+ * more payment routes can be considered (every hop in the lightning network payment adds additional fee
30
+ * requirements).
31
+ *
32
+ * The fee is express as percentage of the swap value, uses `0.2` by default which means the maximum
33
+ * routing fee is capped at 0.2% of the swap value.
34
+ *
35
+ * The full fee also contains the base component (set by `maxRoutingBaseFee` option), the resulting maximum routing
36
+ * fee rate is:
37
+ *
38
+ * `maxRoutingFee` = `maxRoutingBaseFee` sats + `value` * `maxRoutingFeePercentage`%
39
+ */
40
+ maxRoutingFeePercentage?: number;
41
+ /**
42
+ *
43
+ * Maximum base fee (in sats) for routing the swap output payment through the lightning network. Higher fee
44
+ * percentages means that more payment routes can be considered (every hop in the lightning network payment adds additional fee
45
+ * requirements).
46
+ *
47
+ * Uses 10 sats as a default.
48
+ *
49
+ * The full fee also contains the value percentage component (set by `maxRoutingFeePercentage` option), the
50
+ * resulting maximum routing fee rate is:
51
+ *
52
+ * `maxRoutingFee` = `maxRoutingBaseFee` sats + (`value` * `maxRoutingFeePercentage`%)
53
+ */
54
+ maxRoutingBaseFee?: bigint;
55
+ /**
56
+ * @deprecated Use `maxRoutingFeePercentage` and express the routing fee in percentage instead!
57
+ */
58
+ maxRoutingPPM?: bigint;
59
+ /**
60
+ * @deprecated Adjust fee with `maxRoutingFeePercentage` & `maxRoutingBaseFee` params!
61
+ */
62
+ maxFee?: bigint | Promise<bigint>;
63
+ /**
64
+ * @deprecated Pass desired HTLC expiration timeout as `expirySeconds`
65
+ */
66
+ expiryTimestamp?: bigint;
67
+ };
68
+ export type ToBTCLNWrapperOptions = ISwapWrapperOptions & {
69
+ lightningBaseFee: number;
70
+ lightningFeePPM: number;
71
+ paymentTimeoutSeconds: number;
72
+ };
73
+ export type ToBTCLNDefinition<T extends ChainType> = IToBTCDefinition<T, ToBTCLNWrapper<T>, ToBTCLNSwap<T>>;
74
+ /**
75
+ * Escrow based (HTLC) swap for Smart chains -> Bitcoin lightning
76
+ *
77
+ * @category Swaps/Smart chain → Lightning
78
+ */
79
+ export declare class ToBTCLNWrapper<T extends ChainType> extends IToBTCWrapper<T, ToBTCLNDefinition<T>, ToBTCLNWrapperOptions> {
80
+ readonly TYPE: SwapType.TO_BTCLN;
81
+ /**
82
+ * @internal
83
+ */
84
+ readonly _swapDeserializer: typeof ToBTCLNSwap;
85
+ 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"], options?: AllOptional<ToBTCLNWrapperOptions>, events?: EventEmitter<{
86
+ swapState: [ISwap];
87
+ }>);
88
+ private toRequiredSwapOptions;
89
+ /**
90
+ * Verifies whether a given payment hash was already paid by checking the local
91
+ * storage of known swaps
92
+ *
93
+ * @param paymentHash Payment hash to check
94
+ *
95
+ * @private
96
+ */
97
+ private checkPaymentHashWasPaid;
98
+ /**
99
+ * Calculates maximum lightning network routing fee based on amount
100
+ *
101
+ * @param amount BTC amount of the swap in satoshis
102
+ * @param overrideBaseFee Override wrapper's default base fee
103
+ * @param overrideFeePPM Override wrapper's default PPM
104
+ *
105
+ * @returns Maximum lightning routing fee in sats
106
+ *
107
+ * @private
108
+ */
109
+ private calculateFeeForAmount;
110
+ /**
111
+ * Verifies returned LP data
112
+ *
113
+ * @param signer
114
+ * @param resp Response as returned by the LP
115
+ * @param parsedPr Parsed bolt11 lightning invoice
116
+ * @param token Smart chain token to be used in the swap
117
+ * @param lp
118
+ * @param calculatedOptions Swap options computed from the swap create options
119
+ * @param data Parsed swap data returned by the LP
120
+ * @param requiredTotal Required total to be paid on the input (for exactIn swaps)
121
+ *
122
+ * @throws {IntermediaryError} In case the response is not valid
123
+ *
124
+ * @private
125
+ */
126
+ private verifyReturnedData;
127
+ /**
128
+ * Returns the quote/swap from a given intermediary
129
+ *
130
+ * @param signer Smartchain signer initiating the swap
131
+ * @param amountData
132
+ * @param lp Intermediary
133
+ * @param pr bolt11 lightning network invoice
134
+ * @param parsedPr Parsed bolt11 lightning network invoice
135
+ * @param calculatedOptions Swap options computed from the swap create options
136
+ * @param preFetches
137
+ * @param abort Abort signal or controller, if AbortController is passed it is used as-is, when AbortSignal is passed
138
+ * it is extended with extendAbortController and then used
139
+ * @param additionalParams Additional params that should be sent to the LP
140
+ *
141
+ * @private
142
+ */
143
+ private getIntermediaryQuote;
144
+ /**
145
+ * Returns a newly created Smart chain -> Lightning swap using the HTLC based escrow swap protocol,
146
+ * the amount is parsed from the provided lightning network payment request (bolt11 invoice)
147
+ *
148
+ * @param signer Source chain signer address initiating the swap
149
+ * @param recipient BOLT11 payment request (bitcoin lightning invoice) you wish to pay
150
+ * @param amountData Token to swap
151
+ * @param lps An array of intermediaries (LPs) to get the quotes from
152
+ * @param options Optional additional quote options
153
+ * @param additionalParams Optional additional parameters sent to the LP when creating the swap
154
+ * @param abortSignal Abort signal
155
+ * @param preFetches Optional existing pre-fetch promises for the swap (only used internally for LNURL swaps)
156
+ */
157
+ create(signer: string, recipient: string, amountData: Omit<AmountData, "amount"> & {
158
+ exactIn: false;
159
+ }, lps: Intermediary[], options?: ToBTCLNOptions, additionalParams?: Record<string, any>, abortSignal?: AbortSignal, preFetches?: {
160
+ feeRatePromise: Promise<string | undefined>;
161
+ pricePreFetchPromise: Promise<bigint | undefined>;
162
+ usdPricePrefetchPromise: Promise<number | undefined>;
163
+ signDataPrefetchPromise?: Promise<T["PreFetchVerification"] | undefined>;
164
+ }): Promise<{
165
+ quote: Promise<ToBTCLNSwap<T>>;
166
+ intermediary: Intermediary;
167
+ }[]>;
168
+ /**
169
+ * Parses and fetches lnurl pay params from the specified lnurl
170
+ *
171
+ * @param lnurl LNURL to be parsed and fetched
172
+ * @param abortSignal Abort signal
173
+ * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-pay
174
+ *
175
+ * @private
176
+ */
177
+ private getLNURLPay;
178
+ /**
179
+ * Returns the quote/swap from the given LP
180
+ *
181
+ * @param signer Source chain signer address initiating the swap
182
+ * @param amountData Token to swap
183
+ * @param invoiceCreateService Service for creating fixed amount invoices
184
+ * @param lp Intermediary (LPs) to get the quote from
185
+ * @param dummyPr Dummy minimum value bolt11 lightning invoice returned from the LNURL-pay, used to estimate
186
+ * network fees for an actual invoice
187
+ * @param calculatedOptions Swap options computed from the swap create options
188
+ * @param preFetches Optional existing pre-fetch promises for the swap (only used internally for LNURL swaps)
189
+ * @param abortSignal Abort signal
190
+ * @param additionalParams Additional params to be sent to the intermediary
191
+ *
192
+ * @private
193
+ */
194
+ private getIntermediaryQuoteExactIn;
195
+ /**
196
+ * Returns a newly created Smart chain -> Lightning swap using the HTLC based escrow swap protocol via
197
+ * invoice creation service. This allows exactIn swaps by requesting the desired fixed amount lightning
198
+ * network invoice from the service.
199
+ *
200
+ * @param signer Source chain signer address initiating the swap
201
+ * @param invoiceCreateServicePromise Service to request destination lightning network invoices from
202
+ * @param amountData Amount, token and exact input/output data for to swap
203
+ * @param lps An array of intermediaries (LPs) to get the quotes from
204
+ * @param options Optional additional quote options
205
+ * @param additionalParams Optional additional parameters sent to the LP when creating the swap
206
+ * @param abortSignal Abort signal
207
+ */
208
+ createViaInvoiceCreateService(signer: string, invoiceCreateServicePromise: Promise<LightningInvoiceCreateService>, amountData: AmountData, lps: Intermediary[], options?: ToBTCLNOptions, additionalParams?: Record<string, any>, abortSignal?: AbortSignal): Promise<{
209
+ quote: Promise<ToBTCLNSwap<T>>;
210
+ intermediary: Intermediary;
211
+ }[]>;
212
+ /**
213
+ * Returns a newly created Smart chain -> Lightning swap using the HTLC based escrow swap protocol. Pays to
214
+ * an LNURL-pay link. This allows exactIn swaps by requesting the desired fixed amount lightning
215
+ * network invoice from the LNURL service.
216
+ *
217
+ * @param signer Source chain signer address initiating the swap
218
+ * @param lnurl LNURL-pay link of the recipient
219
+ * @param amountData Amount, token and exact input/output data for to swap
220
+ * @param lps An array of intermediaries (LPs) to get the quotes from
221
+ * @param options Optional additional quote options
222
+ * @param additionalParams Optional additional parameters sent to the LP when creating the swap
223
+ * @param abortSignal Abort signal
224
+ */
225
+ createViaLNURL(signer: string, lnurl: string | LNURLPayParamsWithUrl, amountData: AmountData, lps: Intermediary[], options?: ToBTCLNOptions & {
226
+ comment?: string;
227
+ }, additionalParams?: Record<string, any>, abortSignal?: AbortSignal): Promise<{
228
+ quote: Promise<ToBTCLNSwap<T>>;
229
+ intermediary: Intermediary;
230
+ }[]>;
231
+ /**
232
+ * @inheritDoc
233
+ */
234
+ recoverFromSwapDataAndState(init: {
235
+ data: T["Data"];
236
+ getInitTxId: () => Promise<string>;
237
+ getTxBlock: () => Promise<{
238
+ blockTime: number;
239
+ blockHeight: number;
240
+ }>;
241
+ }, state: SwapCommitState, lp?: Intermediary): Promise<ToBTCLNSwap<T> | null>;
242
+ }