@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,583 +1,581 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { SwapType } from "../../../../enums/SwapType";
4
- import { ChainType, SwapCommitState, SwapData } from "@atomiqlabs/base";
5
- import { Buffer } from "buffer";
6
- import { Fee } from "../../../../types/fees/Fee";
7
- import { IAddressSwap } from "../../../IAddressSwap";
8
- import { FromBTCLNAutoDefinition, FromBTCLNAutoWrapper } from "./FromBTCLNAutoWrapper";
9
- import { ISwapWithGasDrop } from "../../../ISwapWithGasDrop";
10
- import { MinimalLightningNetworkWalletInterface } from "../../../../types/wallets/MinimalLightningNetworkWalletInterface";
11
- import { IClaimableSwap } from "../../../IClaimableSwap";
12
- import { IEscrowSwap, IEscrowSwapInit } from "../../IEscrowSwap";
13
- import { FeeType } from "../../../../enums/FeeType";
14
- import { TokenAmount } from "../../../../types/TokenAmount";
15
- import { BtcToken, SCToken } from "../../../../types/Token";
16
- import { LoggerType } from "../../../../utils/Logger";
17
- import { LNURLWithdraw } from "../../../../types/lnurl/LNURLWithdraw";
18
- import { PriceInfoType } from "../../../../types/PriceInfoType";
19
- import { SwapExecutionAction } from "../../../../types/SwapExecutionAction";
20
- /**
21
- * State enum for FromBTCLNAuto swaps
22
- * @category Swaps/Lightning → Smart chain
23
- */
24
- export declare enum FromBTCLNAutoSwapState {
25
- /**
26
- * Swap has failed as the user didn't settle the HTLC on the destination before expiration
27
- */
28
- FAILED = -4,
29
- /**
30
- * Swap has expired for good and there is no way how it can be executed anymore
31
- */
32
- QUOTE_EXPIRED = -3,
33
- /**
34
- * A swap is almost expired, and it should be presented to the user as expired, though
35
- * there is still a chance that it will be processed
36
- */
37
- QUOTE_SOFT_EXPIRED = -2,
38
- /**
39
- * Swap HTLC on the destination chain has expired, it is not safe anymore to settle (claim) the
40
- * swap on the destination smart chain.
41
- */
42
- EXPIRED = -1,
43
- /**
44
- * Swap quote was created, use {@link FromBTCLNAutoSwap.getAddress} or {@link FromBTCLNAutoSwap.getHyperlink}
45
- * to get the bolt11 lightning network invoice to pay to initiate the swap, then use the
46
- * {@link FromBTCLNAutoSwap.waitForPayment} to wait till the lightning network payment is received
47
- * by the intermediary (LP) and the destination HTLC escrow is created
48
- */
49
- PR_CREATED = 0,
50
- /**
51
- * Lightning network payment has been received by the intermediary (LP), but the destination chain
52
- * HTLC escrow hasn't been created yet. Use {@link FromBTCLNAutoSwap.waitForPayment} to continue waiting
53
- * till the destination HTLC escrow is created.
54
- */
55
- PR_PAID = 1,
56
- /**
57
- * Swap escrow HTLC has been created on the destination chain, wait for automatic settlement by the watchtowers
58
- * using the {@link FromBTCLNAutoSwap.waitTillClaimed} function or settle manually using the
59
- * {@link FromBTCLNAutoSwap.claim} or {@link FromBTCLNAutoSwap.txsClaim} function.
60
- */
61
- CLAIM_COMMITED = 2,
62
- /**
63
- * Swap successfully settled and funds received on the destination chain
64
- */
65
- CLAIM_CLAIMED = 3
66
- }
67
- export type FromBTCLNAutoSwapInit<T extends SwapData> = IEscrowSwapInit<T> & {
68
- pr?: string;
69
- secret?: string;
70
- initialSwapData: T;
71
- btcAmountSwap?: bigint;
72
- btcAmountGas?: bigint;
73
- gasSwapFeeBtc: bigint;
74
- gasSwapFee: bigint;
75
- gasPricingInfo?: PriceInfoType;
76
- lnurl?: string;
77
- lnurlK1?: string;
78
- lnurlCallback?: string;
79
- };
80
- export declare function isFromBTCLNAutoSwapInit<T extends SwapData>(obj: any): obj is FromBTCLNAutoSwapInit<T>;
81
- /**
82
- * New escrow based (HTLC) swaps for Bitcoin Lightning -> Smart chain swaps not requiring manual settlement on
83
- * the destination by the user, and instead letting the LP initiate the escrow. Permissionless watchtower network
84
- * handles the claiming of HTLC, with the swap secret broadcasted over Nostr. Also adds a possibility for the user
85
- * to receive a native token on the destination chain as part of the swap (a "gas drop" feature).
86
- *
87
- * @category Swaps/Lightning Smart chain
88
- */
89
- export declare class FromBTCLNAutoSwap<T extends ChainType = ChainType> extends IEscrowSwap<T, FromBTCLNAutoDefinition<T>> implements IAddressSwap, ISwapWithGasDrop<T>, IClaimableSwap<T, FromBTCLNAutoDefinition<T>, FromBTCLNAutoSwapState> {
90
- protected readonly TYPE: SwapType.FROM_BTCLN_AUTO;
91
- /**
92
- * @internal
93
- */
94
- protected readonly swapStateName: (state: number) => string;
95
- /**
96
- * @internal
97
- */
98
- protected readonly swapStateDescription: {
99
- [-4]: string;
100
- [-3]: string;
101
- [-2]: string;
102
- [-1]: string;
103
- 0: string;
104
- 1: string;
105
- 2: string;
106
- 3: string;
107
- };
108
- /**
109
- * @internal
110
- */
111
- protected readonly logger: LoggerType;
112
- /**
113
- * @internal
114
- */
115
- protected readonly inputToken: BtcToken<true>;
116
- /**
117
- * Timestamp at which the HTLC was commited on the smart chain side
118
- * @internal
119
- */
120
- _commitedAt?: number;
121
- private readonly lnurlFailSignal;
122
- private readonly usesClaimHashAsId;
123
- private readonly initialSwapData;
124
- private readonly btcAmountSwap?;
125
- private readonly btcAmountGas?;
126
- private readonly gasSwapFeeBtc;
127
- private readonly gasSwapFee;
128
- private readonly gasPricingInfo?;
129
- /**
130
- * In case the swap is recovered from on-chain data, the pr saved here is just a payment hash,
131
- * as it is impossible to retrieve the actual lightning network invoice paid purely from on-chain
132
- * data
133
- * @private
134
- */
135
- private pr?;
136
- private secret?;
137
- private lnurl?;
138
- private lnurlK1?;
139
- private lnurlCallback?;
140
- private prPosted?;
141
- private broadcastTickCounter;
142
- /**
143
- * Sets the LNURL data for the swap
144
- *
145
- * @internal
146
- */
147
- _setLNURLData(lnurl: string, lnurlK1: string, lnurlCallback: string): void;
148
- constructor(wrapper: FromBTCLNAutoWrapper<T>, init: FromBTCLNAutoSwapInit<T["Data"]>);
149
- constructor(wrapper: FromBTCLNAutoWrapper<T>, obj: any);
150
- /**
151
- * @inheritDoc
152
- * @internal
153
- */
154
- protected getSwapData(): T["Data"];
155
- /**
156
- * @inheritDoc
157
- * @internal
158
- */
159
- protected upgradeVersion(): void;
160
- /**
161
- * @inheritDoc
162
- * @internal
163
- */
164
- protected tryRecomputeSwapPrice(): void;
165
- /**
166
- * @inheritDoc
167
- */
168
- refreshPriceData(): Promise<void>;
169
- /**
170
- * @inheritDoc
171
- * @internal
172
- */
173
- _getEscrowHash(): string | null;
174
- /**
175
- * @inheritDoc
176
- * @internal
177
- */
178
- _getInitiator(): string;
179
- /**
180
- * @inheritDoc
181
- */
182
- getId(): string;
183
- /**
184
- * @inheritDoc
185
- */
186
- getOutputAddress(): string | null;
187
- /**
188
- * @inheritDoc
189
- */
190
- getOutputTxId(): string | null;
191
- /**
192
- * @inheritDoc
193
- */
194
- requiresAction(): boolean;
195
- /**
196
- * @inheritDoc
197
- * @internal
198
- */
199
- protected getIdentifierHashString(): string;
200
- /**
201
- * Returns the payment hash of the swap and lightning network invoice, or `null` if not known (i.e. if
202
- * the swap was recovered from on-chain data, the payment hash might not be known)
203
- *
204
- * @internal
205
- */
206
- protected getPaymentHash(): Buffer | null;
207
- /**
208
- * @inheritDoc
209
- */
210
- getInputAddress(): string | null;
211
- /**
212
- * @inheritDoc
213
- */
214
- getInputTxId(): string | null;
215
- /**
216
- * Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap
217
- */
218
- getAddress(): string;
219
- /**
220
- * @inheritDoc
221
- */
222
- getHyperlink(): string;
223
- /**
224
- * Returns the timeout time (in UNIX milliseconds) when the swap will definitelly be considered as expired
225
- * if the LP doesn't make it expired sooner
226
- */
227
- getDefinitiveExpiryTime(): number;
228
- /**
229
- * Returns timeout time (in UNIX milliseconds) when the swap htlc will expire
230
- */
231
- getHtlcTimeoutTime(): number | null;
232
- /**
233
- * @inheritDoc
234
- */
235
- isFinished(): boolean;
236
- /**
237
- * @inheritDoc
238
- */
239
- isClaimable(): boolean;
240
- /**
241
- * @inheritDoc
242
- */
243
- isSuccessful(): boolean;
244
- /**
245
- * @inheritDoc
246
- */
247
- isFailed(): boolean;
248
- /**
249
- * @inheritDoc
250
- */
251
- isInProgress(): boolean;
252
- /**
253
- * @inheritDoc
254
- */
255
- isQuoteExpired(): boolean;
256
- /**
257
- * @inheritDoc
258
- */
259
- isQuoteSoftExpired(): boolean;
260
- /**
261
- * @inheritDoc
262
- */
263
- _verifyQuoteDefinitelyExpired(): Promise<boolean>;
264
- /**
265
- * @inheritDoc
266
- */
267
- _verifyQuoteValid(): Promise<boolean>;
268
- /**
269
- * Returns the satoshi amount of the lightning network invoice, or `null` if the lightning network
270
- * invoice is not known (i.e. when the swap was recovered from on-chain data, the paid invoice
271
- * cannot be recovered because it is purely off-chain)
272
- *
273
- * @internal
274
- */
275
- protected getLightningInvoiceSats(): bigint | null;
276
- /**
277
- * Returns the watchtower fee paid in BTC satoshis, or null if known (i.e. if the swap was recovered from
278
- * on-chain data)
279
- *
280
- * @protected
281
- */
282
- protected getWatchtowerFeeAmountBtc(): bigint | null;
283
- /**
284
- * Returns the input amount for the actual swap (excluding the input amount used to cover the "gas drop"
285
- * part of the swap), excluding fees
286
- *
287
- * @internal
288
- */
289
- protected getInputSwapAmountWithoutFee(): bigint | null;
290
- /**
291
- * Returns the input amount purely for the "gas drop" part of the swap (this much BTC in sats will be
292
- * swapped into the native gas token on the destination chain), excluding fees
293
- *
294
- * @internal
295
- */
296
- protected getInputGasAmountWithoutFee(): bigint | null;
297
- /**
298
- * Get total btc amount in sats on the input, excluding the swap fee and watchtower fee
299
- *
300
- * @internal
301
- */
302
- protected getInputAmountWithoutFee(): bigint | null;
303
- /**
304
- * Returns the "would be" output amount if the swap charged no swap fee
305
- *
306
- * @internal
307
- */
308
- protected getOutputAmountWithoutFee(): bigint;
309
- /**
310
- * @inheritDoc
311
- */
312
- getInputToken(): BtcToken<true>;
313
- /**
314
- * @inheritDoc
315
- */
316
- getInput(): TokenAmount<BtcToken<true>>;
317
- /**
318
- * @inheritDoc
319
- */
320
- getInputWithoutFee(): TokenAmount<BtcToken<true>>;
321
- /**
322
- * @inheritDoc
323
- */
324
- getOutputToken(): SCToken<T["ChainId"]>;
325
- /**
326
- * @inheritDoc
327
- */
328
- getOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
329
- /**
330
- * @inheritDoc
331
- */
332
- getGasDropOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
333
- /**
334
- * Returns the swap fee charged by the intermediary (LP) on this swap
335
- *
336
- * @internal
337
- */
338
- protected getSwapFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
339
- /**
340
- * Returns the fee to be paid to watchtowers on the destination chain to automatically
341
- * process and settle this swap without requiring any user interaction
342
- *
343
- * @internal
344
- */
345
- protected getWatchtowerFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
346
- /**
347
- * @inheritDoc
348
- */
349
- getFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
350
- /**
351
- * @inheritDoc
352
- */
353
- getFeeBreakdown(): [
354
- {
355
- type: FeeType.SWAP;
356
- fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
357
- },
358
- {
359
- type: FeeType.NETWORK_OUTPUT;
360
- fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
361
- }
362
- ];
363
- private isValidSecretPreimage;
364
- /**
365
- * Sets the secret preimage for the swap, in case it is not known already
366
- *
367
- * @param secret Secret preimage that matches the expected payment hash
368
- *
369
- * @throws {Error} If an invalid secret preimage is provided
370
- */
371
- setSecretPreimage(secret: string): void;
372
- /**
373
- * Returns whether the secret preimage for this swap is known
374
- */
375
- hasSecretPreimage(): boolean;
376
- /**
377
- * Executes the swap with the provided bitcoin lightning network wallet or LNURL
378
- *
379
- * @param walletOrLnurlWithdraw Bitcoin lightning wallet to use to pay the lightning network invoice, or an LNURL-withdraw
380
- * link, wallet is not required and the LN invoice can be paid externally as well (just pass null or undefined here)
381
- * @param callbacks Callbacks to track the progress of the swap
382
- * @param options Optional options for the swap like AbortSignal, and timeouts/intervals
383
- * @param options.secret A swap secret to broadcast to watchtowers, generally only needed if the swap
384
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
385
- *
386
- * @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
387
- * user, in case `false` is returned the user should call `swap.claim()` to settle the swap on the destination manually
388
- */
389
- execute(walletOrLnurlWithdraw?: MinimalLightningNetworkWalletInterface | LNURLWithdraw | string | null | undefined, callbacks?: {
390
- onSourceTransactionReceived?: (sourceTxId: string) => void;
391
- onSwapSettled?: (destinationTxId: string) => void;
392
- }, options?: {
393
- abortSignal?: AbortSignal;
394
- lightningTxCheckIntervalSeconds?: number;
395
- maxWaitTillAutomaticSettlementSeconds?: number;
396
- secret?: string;
397
- }): Promise<boolean>;
398
- /**
399
- * @inheritDoc
400
- */
401
- txsExecute(): Promise<{
402
- name: "Payment";
403
- description: string;
404
- chain: "LIGHTNING";
405
- txs: {
406
- type: "BOLT11_PAYMENT_REQUEST";
407
- address: string;
408
- hyperlink: string;
409
- }[];
410
- }[]>;
411
- /**
412
- *
413
- * @param options.manualSettlementSmartChainSigner Optional smart chain signer to create a manual claim (settlement) transaction
414
- * @param options.maxWaitTillAutomaticSettlementSeconds Maximum time to wait for an automatic settlement after
415
- * the bitcoin transaction is confirmed (defaults to 60 seconds)
416
- * @param options.secret A swap secret to broadcast to watchtowers, generally only needed if the swap
417
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
418
- */
419
- getCurrentActions(options?: {
420
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
421
- maxWaitTillAutomaticSettlementSeconds?: number;
422
- secret?: string;
423
- }): Promise<SwapExecutionAction<T>[]>;
424
- /**
425
- * Checks whether the LP received the LN payment
426
- *
427
- * @param save If the new swap state should be saved
428
- *
429
- * @internal
430
- */
431
- _checkIntermediaryPaymentReceived(save?: boolean): Promise<boolean | null>;
432
- /**
433
- * Checks and overrides the swap data for this swap. This is used to set the swap data from
434
- * on-chain events.
435
- *
436
- * @param data Swap data of the escrow swap
437
- * @param save If the new data should be saved
438
- *
439
- * @internal
440
- */
441
- _saveRealSwapData(data: T["Data"], save?: boolean): Promise<boolean>;
442
- /**
443
- * Checks the data returned by the intermediary in the payment auth request
444
- *
445
- * @param data Parsed swap data as returned by the intermediary
446
- *
447
- * @throws {IntermediaryError} If the returned are not valid
448
- * @throws {Error} If the swap is already committed on-chain
449
- *
450
- * @private
451
- */
452
- private checkIntermediaryReturnedData;
453
- /**
454
- * Waits till a lightning network payment is received by the intermediary, and the intermediary
455
- * initiates the swap HTLC on the smart chain side. After the HTLC is initiated you can wait
456
- * for an automatic settlement by the watchtowers with the {@link waitTillClaimed} function,
457
- * or settle manually using the {@link claim} or {@link txsClaim} functions.
458
- *
459
- * If this swap is using an LNURL-withdraw link as input, it automatically posts the
460
- * generated invoice to the LNURL service to pay it.
461
- *
462
- * @param onPaymentReceived Callback as for when the LP reports having received the ln payment
463
- * @param abortSignal Abort signal to stop waiting for payment
464
- * @param checkIntervalSeconds How often to poll the intermediary for answer (default 5 seconds)
465
- */
466
- waitForPayment(onPaymentReceived?: (txId: string) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
467
- /**
468
- * Waits till the intermediary (LP) initiates the swap HTLC escrow on the destination smart chain side
469
- *
470
- * @param checkIntervalSeconds How often to check via a polling watchdog
471
- * @param abortSignal Abort signal
472
- *
473
- * @internal
474
- */
475
- protected waitTillCommited(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<void>;
476
- /**
477
- * @inheritDoc
478
- *
479
- * @param _signer Optional signer address to use for claiming the swap, can also be different from the initializer
480
- * @param secret A swap secret to use for the claim transaction, generally only needed if the swap
481
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
482
- *
483
- * @throws {Error} If in invalid state (must be {@link FromBTCLNAutoSwapState.CLAIM_COMMITED})
484
- */
485
- txsClaim(_signer?: string | T["Signer"] | T["NativeSigner"], secret?: string): Promise<T["TX"][]>;
486
- /**
487
- * @inheritDoc
488
- *
489
- * @param _signer Signer to sign the transactions with, can also be different to the initializer
490
- * @param abortSignal Abort signal to stop waiting for transaction confirmation
491
- * @param onBeforeTxSent
492
- * @param secret A swap secret to use for the claim transaction, generally only needed if the swap
493
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
494
- */
495
- claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void, secret?: string): Promise<string>;
496
- /**
497
- * Waits till the swap is successfully settled (claimed), should be called after sending the claim (settlement)
498
- * transactions manually to wait till the SDK processes the settlement and updates the swap state accordingly.
499
- *
500
- * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
501
- * @param abortSignal AbortSignal
502
- * @param secret A swap secret to broadcast to watchtowers, generally only needed if the swap
503
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
504
- *
505
- * @throws {Error} If swap is in invalid state (must be {@link FromBTCLNAutoSwapState.CLAIM_COMMITED})
506
- * @throws {Error} If the LP refunded sooner than we were able to claim
507
- * @returns {boolean} whether the swap was claimed in time or not
508
- */
509
- waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal, secret?: string): Promise<boolean>;
510
- /**
511
- * Whether this swap uses an LNURL-withdraw link
512
- */
513
- isLNURL(): boolean;
514
- /**
515
- * Gets the used LNURL or `null` if this is not an LNURL-withdraw swap
516
- */
517
- getLNURL(): string | null;
518
- /**
519
- * Pay the generated lightning network invoice with an LNURL-withdraw link, this
520
- * is useful when you want to display a lightning payment QR code and also want to
521
- * allow payments using LNURL-withdraw NFC cards.
522
- *
523
- * Note that the swap needs to be created **without** an LNURL to begin with for this function
524
- * to work. If this swap is already using an LNURL-withdraw link, this function throws.
525
- */
526
- settleWithLNURLWithdraw(lnurl: string | LNURLWithdraw): Promise<void>;
527
- /**
528
- * @inheritDoc
529
- */
530
- serialize(): any;
531
- /**
532
- * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
533
- * data
534
- *
535
- * @private
536
- */
537
- private syncStateFromChain;
538
- /**
539
- * @inheritDoc
540
- * @internal
541
- */
542
- _shouldFetchOnchainState(): boolean;
543
- /**
544
- * @inheritDoc
545
- * @internal
546
- */
547
- _shouldFetchExpiryStatus(): boolean;
548
- /**
549
- * @inheritDoc
550
- * @internal
551
- */
552
- _shouldCheckIntermediary(): boolean;
553
- /**
554
- * @inheritDoc
555
- * @internal
556
- */
557
- _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState, skipLpCheck?: boolean): Promise<boolean>;
558
- /**
559
- * @inheritDoc
560
- * @internal
561
- */
562
- _forciblySetOnchainState(commitStatus: SwapCommitState): Promise<boolean>;
563
- /**
564
- * Broadcasts the swap secret to the underlying data propagation layer (e.g. Nostr by default)
565
- *
566
- * @param noCheckExpiry Whether a swap expiration check should be skipped broadcasting
567
- * @param secret An optional secret pre-image for the swap to broadcast
568
- *
569
- * @internal
570
- */
571
- _broadcastSecret(noCheckExpiry?: boolean, secret?: string): Promise<void>;
572
- /**
573
- * @inheritDoc
574
- * @internal
575
- */
576
- _tick(save?: boolean): Promise<boolean>;
577
- /**
578
- * Forcibly sets the swap secret pre-image from on-chain data
579
- *
580
- * @internal
581
- */
582
- _setSwapSecret(secret: string): void;
583
- }
1
+ import { SwapType } from "../../../../enums/SwapType";
2
+ import { ChainType, SwapCommitState, SwapData } from "@atomiqlabs/base";
3
+ import { Buffer } from "buffer";
4
+ import { Fee } from "../../../../types/fees/Fee";
5
+ import { IAddressSwap } from "../../../IAddressSwap";
6
+ import { FromBTCLNAutoDefinition, FromBTCLNAutoWrapper } from "./FromBTCLNAutoWrapper";
7
+ import { ISwapWithGasDrop } from "../../../ISwapWithGasDrop";
8
+ import { MinimalLightningNetworkWalletInterface } from "../../../../types/wallets/MinimalLightningNetworkWalletInterface";
9
+ import { IClaimableSwap } from "../../../IClaimableSwap";
10
+ import { IEscrowSwap, IEscrowSwapInit } from "../../IEscrowSwap";
11
+ import { FeeType } from "../../../../enums/FeeType";
12
+ import { TokenAmount } from "../../../../types/TokenAmount";
13
+ import { BtcToken, SCToken } from "../../../../types/Token";
14
+ import { LoggerType } from "../../../../utils/Logger";
15
+ import { LNURLWithdraw } from "../../../../types/lnurl/LNURLWithdraw";
16
+ import { PriceInfoType } from "../../../../types/PriceInfoType";
17
+ import { SwapExecutionAction } from "../../../../types/SwapExecutionAction";
18
+ /**
19
+ * State enum for FromBTCLNAuto swaps
20
+ * @category Swaps/Lightning → Smart chain
21
+ */
22
+ export declare enum FromBTCLNAutoSwapState {
23
+ /**
24
+ * Swap has failed as the user didn't settle the HTLC on the destination before expiration
25
+ */
26
+ FAILED = -4,
27
+ /**
28
+ * Swap has expired for good and there is no way how it can be executed anymore
29
+ */
30
+ QUOTE_EXPIRED = -3,
31
+ /**
32
+ * A swap is almost expired, and it should be presented to the user as expired, though
33
+ * there is still a chance that it will be processed
34
+ */
35
+ QUOTE_SOFT_EXPIRED = -2,
36
+ /**
37
+ * Swap HTLC on the destination chain has expired, it is not safe anymore to settle (claim) the
38
+ * swap on the destination smart chain.
39
+ */
40
+ EXPIRED = -1,
41
+ /**
42
+ * Swap quote was created, use {@link FromBTCLNAutoSwap.getAddress} or {@link FromBTCLNAutoSwap.getHyperlink}
43
+ * to get the bolt11 lightning network invoice to pay to initiate the swap, then use the
44
+ * {@link FromBTCLNAutoSwap.waitForPayment} to wait till the lightning network payment is received
45
+ * by the intermediary (LP) and the destination HTLC escrow is created
46
+ */
47
+ PR_CREATED = 0,
48
+ /**
49
+ * Lightning network payment has been received by the intermediary (LP), but the destination chain
50
+ * HTLC escrow hasn't been created yet. Use {@link FromBTCLNAutoSwap.waitForPayment} to continue waiting
51
+ * till the destination HTLC escrow is created.
52
+ */
53
+ PR_PAID = 1,
54
+ /**
55
+ * Swap escrow HTLC has been created on the destination chain, wait for automatic settlement by the watchtowers
56
+ * using the {@link FromBTCLNAutoSwap.waitTillClaimed} function or settle manually using the
57
+ * {@link FromBTCLNAutoSwap.claim} or {@link FromBTCLNAutoSwap.txsClaim} function.
58
+ */
59
+ CLAIM_COMMITED = 2,
60
+ /**
61
+ * Swap successfully settled and funds received on the destination chain
62
+ */
63
+ CLAIM_CLAIMED = 3
64
+ }
65
+ export type FromBTCLNAutoSwapInit<T extends SwapData> = IEscrowSwapInit<T> & {
66
+ pr?: string;
67
+ secret?: string;
68
+ initialSwapData: T;
69
+ btcAmountSwap?: bigint;
70
+ btcAmountGas?: bigint;
71
+ gasSwapFeeBtc: bigint;
72
+ gasSwapFee: bigint;
73
+ gasPricingInfo?: PriceInfoType;
74
+ lnurl?: string;
75
+ lnurlK1?: string;
76
+ lnurlCallback?: string;
77
+ };
78
+ export declare function isFromBTCLNAutoSwapInit<T extends SwapData>(obj: any): obj is FromBTCLNAutoSwapInit<T>;
79
+ /**
80
+ * New escrow based (HTLC) swaps for Bitcoin Lightning -> Smart chain swaps not requiring manual settlement on
81
+ * the destination by the user, and instead letting the LP initiate the escrow. Permissionless watchtower network
82
+ * handles the claiming of HTLC, with the swap secret broadcasted over Nostr. Also adds a possibility for the user
83
+ * to receive a native token on the destination chain as part of the swap (a "gas drop" feature).
84
+ *
85
+ * @category Swaps/Lightning Smart chain
86
+ */
87
+ export declare class FromBTCLNAutoSwap<T extends ChainType = ChainType> extends IEscrowSwap<T, FromBTCLNAutoDefinition<T>> implements IAddressSwap, ISwapWithGasDrop<T>, IClaimableSwap<T, FromBTCLNAutoDefinition<T>, FromBTCLNAutoSwapState> {
88
+ protected readonly TYPE: SwapType.FROM_BTCLN_AUTO;
89
+ /**
90
+ * @internal
91
+ */
92
+ protected readonly swapStateName: (state: number) => string;
93
+ /**
94
+ * @internal
95
+ */
96
+ protected readonly swapStateDescription: {
97
+ [-4]: string;
98
+ [-3]: string;
99
+ [-2]: string;
100
+ [-1]: string;
101
+ 0: string;
102
+ 1: string;
103
+ 2: string;
104
+ 3: string;
105
+ };
106
+ /**
107
+ * @internal
108
+ */
109
+ protected readonly logger: LoggerType;
110
+ /**
111
+ * @internal
112
+ */
113
+ protected readonly inputToken: BtcToken<true>;
114
+ /**
115
+ * Timestamp at which the HTLC was commited on the smart chain side
116
+ * @internal
117
+ */
118
+ _commitedAt?: number;
119
+ private readonly lnurlFailSignal;
120
+ private readonly usesClaimHashAsId;
121
+ private readonly initialSwapData;
122
+ private readonly btcAmountSwap?;
123
+ private readonly btcAmountGas?;
124
+ private readonly gasSwapFeeBtc;
125
+ private readonly gasSwapFee;
126
+ private readonly gasPricingInfo?;
127
+ /**
128
+ * In case the swap is recovered from on-chain data, the pr saved here is just a payment hash,
129
+ * as it is impossible to retrieve the actual lightning network invoice paid purely from on-chain
130
+ * data
131
+ * @private
132
+ */
133
+ private pr?;
134
+ private secret?;
135
+ private lnurl?;
136
+ private lnurlK1?;
137
+ private lnurlCallback?;
138
+ private prPosted?;
139
+ private broadcastTickCounter;
140
+ /**
141
+ * Sets the LNURL data for the swap
142
+ *
143
+ * @internal
144
+ */
145
+ _setLNURLData(lnurl: string, lnurlK1: string, lnurlCallback: string): void;
146
+ constructor(wrapper: FromBTCLNAutoWrapper<T>, init: FromBTCLNAutoSwapInit<T["Data"]>);
147
+ constructor(wrapper: FromBTCLNAutoWrapper<T>, obj: any);
148
+ /**
149
+ * @inheritDoc
150
+ * @internal
151
+ */
152
+ protected getSwapData(): T["Data"];
153
+ /**
154
+ * @inheritDoc
155
+ * @internal
156
+ */
157
+ protected upgradeVersion(): void;
158
+ /**
159
+ * @inheritDoc
160
+ * @internal
161
+ */
162
+ protected tryRecomputeSwapPrice(): void;
163
+ /**
164
+ * @inheritDoc
165
+ */
166
+ refreshPriceData(): Promise<void>;
167
+ /**
168
+ * @inheritDoc
169
+ * @internal
170
+ */
171
+ _getEscrowHash(): string | null;
172
+ /**
173
+ * @inheritDoc
174
+ * @internal
175
+ */
176
+ _getInitiator(): string;
177
+ /**
178
+ * @inheritDoc
179
+ */
180
+ getId(): string;
181
+ /**
182
+ * @inheritDoc
183
+ */
184
+ getOutputAddress(): string | null;
185
+ /**
186
+ * @inheritDoc
187
+ */
188
+ getOutputTxId(): string | null;
189
+ /**
190
+ * @inheritDoc
191
+ */
192
+ requiresAction(): boolean;
193
+ /**
194
+ * @inheritDoc
195
+ * @internal
196
+ */
197
+ protected getIdentifierHashString(): string;
198
+ /**
199
+ * Returns the payment hash of the swap and lightning network invoice, or `null` if not known (i.e. if
200
+ * the swap was recovered from on-chain data, the payment hash might not be known)
201
+ *
202
+ * @internal
203
+ */
204
+ protected getPaymentHash(): Buffer | null;
205
+ /**
206
+ * @inheritDoc
207
+ */
208
+ getInputAddress(): string | null;
209
+ /**
210
+ * @inheritDoc
211
+ */
212
+ getInputTxId(): string | null;
213
+ /**
214
+ * Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap
215
+ */
216
+ getAddress(): string;
217
+ /**
218
+ * @inheritDoc
219
+ */
220
+ getHyperlink(): string;
221
+ /**
222
+ * Returns the timeout time (in UNIX milliseconds) when the swap will definitelly be considered as expired
223
+ * if the LP doesn't make it expired sooner
224
+ */
225
+ getDefinitiveExpiryTime(): number;
226
+ /**
227
+ * Returns timeout time (in UNIX milliseconds) when the swap htlc will expire
228
+ */
229
+ getHtlcTimeoutTime(): number | null;
230
+ /**
231
+ * @inheritDoc
232
+ */
233
+ isFinished(): boolean;
234
+ /**
235
+ * @inheritDoc
236
+ */
237
+ isClaimable(): boolean;
238
+ /**
239
+ * @inheritDoc
240
+ */
241
+ isSuccessful(): boolean;
242
+ /**
243
+ * @inheritDoc
244
+ */
245
+ isFailed(): boolean;
246
+ /**
247
+ * @inheritDoc
248
+ */
249
+ isInProgress(): boolean;
250
+ /**
251
+ * @inheritDoc
252
+ */
253
+ isQuoteExpired(): boolean;
254
+ /**
255
+ * @inheritDoc
256
+ */
257
+ isQuoteSoftExpired(): boolean;
258
+ /**
259
+ * @inheritDoc
260
+ */
261
+ _verifyQuoteDefinitelyExpired(): Promise<boolean>;
262
+ /**
263
+ * @inheritDoc
264
+ */
265
+ _verifyQuoteValid(): Promise<boolean>;
266
+ /**
267
+ * Returns the satoshi amount of the lightning network invoice, or `null` if the lightning network
268
+ * invoice is not known (i.e. when the swap was recovered from on-chain data, the paid invoice
269
+ * cannot be recovered because it is purely off-chain)
270
+ *
271
+ * @internal
272
+ */
273
+ protected getLightningInvoiceSats(): bigint | null;
274
+ /**
275
+ * Returns the watchtower fee paid in BTC satoshis, or null if known (i.e. if the swap was recovered from
276
+ * on-chain data)
277
+ *
278
+ * @protected
279
+ */
280
+ protected getWatchtowerFeeAmountBtc(): bigint | null;
281
+ /**
282
+ * Returns the input amount for the actual swap (excluding the input amount used to cover the "gas drop"
283
+ * part of the swap), excluding fees
284
+ *
285
+ * @internal
286
+ */
287
+ protected getInputSwapAmountWithoutFee(): bigint | null;
288
+ /**
289
+ * Returns the input amount purely for the "gas drop" part of the swap (this much BTC in sats will be
290
+ * swapped into the native gas token on the destination chain), excluding fees
291
+ *
292
+ * @internal
293
+ */
294
+ protected getInputGasAmountWithoutFee(): bigint | null;
295
+ /**
296
+ * Get total btc amount in sats on the input, excluding the swap fee and watchtower fee
297
+ *
298
+ * @internal
299
+ */
300
+ protected getInputAmountWithoutFee(): bigint | null;
301
+ /**
302
+ * Returns the "would be" output amount if the swap charged no swap fee
303
+ *
304
+ * @internal
305
+ */
306
+ protected getOutputAmountWithoutFee(): bigint;
307
+ /**
308
+ * @inheritDoc
309
+ */
310
+ getInputToken(): BtcToken<true>;
311
+ /**
312
+ * @inheritDoc
313
+ */
314
+ getInput(): TokenAmount<BtcToken<true>>;
315
+ /**
316
+ * @inheritDoc
317
+ */
318
+ getInputWithoutFee(): TokenAmount<BtcToken<true>>;
319
+ /**
320
+ * @inheritDoc
321
+ */
322
+ getOutputToken(): SCToken<T["ChainId"]>;
323
+ /**
324
+ * @inheritDoc
325
+ */
326
+ getOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
327
+ /**
328
+ * @inheritDoc
329
+ */
330
+ getGasDropOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
331
+ /**
332
+ * Returns the swap fee charged by the intermediary (LP) on this swap
333
+ *
334
+ * @internal
335
+ */
336
+ protected getSwapFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
337
+ /**
338
+ * Returns the fee to be paid to watchtowers on the destination chain to automatically
339
+ * process and settle this swap without requiring any user interaction
340
+ *
341
+ * @internal
342
+ */
343
+ protected getWatchtowerFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
344
+ /**
345
+ * @inheritDoc
346
+ */
347
+ getFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
348
+ /**
349
+ * @inheritDoc
350
+ */
351
+ getFeeBreakdown(): [
352
+ {
353
+ type: FeeType.SWAP;
354
+ fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
355
+ },
356
+ {
357
+ type: FeeType.NETWORK_OUTPUT;
358
+ fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
359
+ }
360
+ ];
361
+ private isValidSecretPreimage;
362
+ /**
363
+ * Sets the secret preimage for the swap, in case it is not known already
364
+ *
365
+ * @param secret Secret preimage that matches the expected payment hash
366
+ *
367
+ * @throws {Error} If an invalid secret preimage is provided
368
+ */
369
+ setSecretPreimage(secret: string): void;
370
+ /**
371
+ * Returns whether the secret preimage for this swap is known
372
+ */
373
+ hasSecretPreimage(): boolean;
374
+ /**
375
+ * Executes the swap with the provided bitcoin lightning network wallet or LNURL
376
+ *
377
+ * @param walletOrLnurlWithdraw Bitcoin lightning wallet to use to pay the lightning network invoice, or an LNURL-withdraw
378
+ * link, wallet is not required and the LN invoice can be paid externally as well (just pass null or undefined here)
379
+ * @param callbacks Callbacks to track the progress of the swap
380
+ * @param options Optional options for the swap like AbortSignal, and timeouts/intervals
381
+ * @param options.secret A swap secret to broadcast to watchtowers, generally only needed if the swap
382
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
383
+ *
384
+ * @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
385
+ * user, in case `false` is returned the user should call `swap.claim()` to settle the swap on the destination manually
386
+ */
387
+ execute(walletOrLnurlWithdraw?: MinimalLightningNetworkWalletInterface | LNURLWithdraw | string | null | undefined, callbacks?: {
388
+ onSourceTransactionReceived?: (sourceTxId: string) => void;
389
+ onSwapSettled?: (destinationTxId: string) => void;
390
+ }, options?: {
391
+ abortSignal?: AbortSignal;
392
+ lightningTxCheckIntervalSeconds?: number;
393
+ maxWaitTillAutomaticSettlementSeconds?: number;
394
+ secret?: string;
395
+ }): Promise<boolean>;
396
+ /**
397
+ * @inheritDoc
398
+ */
399
+ txsExecute(): Promise<{
400
+ name: "Payment";
401
+ description: string;
402
+ chain: "LIGHTNING";
403
+ txs: {
404
+ type: "BOLT11_PAYMENT_REQUEST";
405
+ address: string;
406
+ hyperlink: string;
407
+ }[];
408
+ }[]>;
409
+ /**
410
+ *
411
+ * @param options.manualSettlementSmartChainSigner Optional smart chain signer to create a manual claim (settlement) transaction
412
+ * @param options.maxWaitTillAutomaticSettlementSeconds Maximum time to wait for an automatic settlement after
413
+ * the bitcoin transaction is confirmed (defaults to 60 seconds)
414
+ * @param options.secret A swap secret to broadcast to watchtowers, generally only needed if the swap
415
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
416
+ */
417
+ getCurrentActions(options?: {
418
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
419
+ maxWaitTillAutomaticSettlementSeconds?: number;
420
+ secret?: string;
421
+ }): Promise<SwapExecutionAction<T>[]>;
422
+ /**
423
+ * Checks whether the LP received the LN payment
424
+ *
425
+ * @param save If the new swap state should be saved
426
+ *
427
+ * @internal
428
+ */
429
+ _checkIntermediaryPaymentReceived(save?: boolean): Promise<boolean | null>;
430
+ /**
431
+ * Checks and overrides the swap data for this swap. This is used to set the swap data from
432
+ * on-chain events.
433
+ *
434
+ * @param data Swap data of the escrow swap
435
+ * @param save If the new data should be saved
436
+ *
437
+ * @internal
438
+ */
439
+ _saveRealSwapData(data: T["Data"], save?: boolean): Promise<boolean>;
440
+ /**
441
+ * Checks the data returned by the intermediary in the payment auth request
442
+ *
443
+ * @param data Parsed swap data as returned by the intermediary
444
+ *
445
+ * @throws {IntermediaryError} If the returned are not valid
446
+ * @throws {Error} If the swap is already committed on-chain
447
+ *
448
+ * @private
449
+ */
450
+ private checkIntermediaryReturnedData;
451
+ /**
452
+ * Waits till a lightning network payment is received by the intermediary, and the intermediary
453
+ * initiates the swap HTLC on the smart chain side. After the HTLC is initiated you can wait
454
+ * for an automatic settlement by the watchtowers with the {@link waitTillClaimed} function,
455
+ * or settle manually using the {@link claim} or {@link txsClaim} functions.
456
+ *
457
+ * If this swap is using an LNURL-withdraw link as input, it automatically posts the
458
+ * generated invoice to the LNURL service to pay it.
459
+ *
460
+ * @param onPaymentReceived Callback as for when the LP reports having received the ln payment
461
+ * @param abortSignal Abort signal to stop waiting for payment
462
+ * @param checkIntervalSeconds How often to poll the intermediary for answer (default 5 seconds)
463
+ */
464
+ waitForPayment(onPaymentReceived?: (txId: string) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
465
+ /**
466
+ * Waits till the intermediary (LP) initiates the swap HTLC escrow on the destination smart chain side
467
+ *
468
+ * @param checkIntervalSeconds How often to check via a polling watchdog
469
+ * @param abortSignal Abort signal
470
+ *
471
+ * @internal
472
+ */
473
+ protected waitTillCommited(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<void>;
474
+ /**
475
+ * @inheritDoc
476
+ *
477
+ * @param _signer Optional signer address to use for claiming the swap, can also be different from the initializer
478
+ * @param secret A swap secret to use for the claim transaction, generally only needed if the swap
479
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
480
+ *
481
+ * @throws {Error} If in invalid state (must be {@link FromBTCLNAutoSwapState.CLAIM_COMMITED})
482
+ */
483
+ txsClaim(_signer?: string | T["Signer"] | T["NativeSigner"], secret?: string): Promise<T["TX"][]>;
484
+ /**
485
+ * @inheritDoc
486
+ *
487
+ * @param _signer Signer to sign the transactions with, can also be different to the initializer
488
+ * @param abortSignal Abort signal to stop waiting for transaction confirmation
489
+ * @param onBeforeTxSent
490
+ * @param secret A swap secret to use for the claim transaction, generally only needed if the swap
491
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
492
+ */
493
+ claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void, secret?: string): Promise<string>;
494
+ /**
495
+ * Waits till the swap is successfully settled (claimed), should be called after sending the claim (settlement)
496
+ * transactions manually to wait till the SDK processes the settlement and updates the swap state accordingly.
497
+ *
498
+ * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
499
+ * @param abortSignal AbortSignal
500
+ * @param secret A swap secret to broadcast to watchtowers, generally only needed if the swap
501
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
502
+ *
503
+ * @throws {Error} If swap is in invalid state (must be {@link FromBTCLNAutoSwapState.CLAIM_COMMITED})
504
+ * @throws {Error} If the LP refunded sooner than we were able to claim
505
+ * @returns {boolean} whether the swap was claimed in time or not
506
+ */
507
+ waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal, secret?: string): Promise<boolean>;
508
+ /**
509
+ * Whether this swap uses an LNURL-withdraw link
510
+ */
511
+ isLNURL(): boolean;
512
+ /**
513
+ * Gets the used LNURL or `null` if this is not an LNURL-withdraw swap
514
+ */
515
+ getLNURL(): string | null;
516
+ /**
517
+ * Pay the generated lightning network invoice with an LNURL-withdraw link, this
518
+ * is useful when you want to display a lightning payment QR code and also want to
519
+ * allow payments using LNURL-withdraw NFC cards.
520
+ *
521
+ * Note that the swap needs to be created **without** an LNURL to begin with for this function
522
+ * to work. If this swap is already using an LNURL-withdraw link, this function throws.
523
+ */
524
+ settleWithLNURLWithdraw(lnurl: string | LNURLWithdraw): Promise<void>;
525
+ /**
526
+ * @inheritDoc
527
+ */
528
+ serialize(): any;
529
+ /**
530
+ * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
531
+ * data
532
+ *
533
+ * @private
534
+ */
535
+ private syncStateFromChain;
536
+ /**
537
+ * @inheritDoc
538
+ * @internal
539
+ */
540
+ _shouldFetchOnchainState(): boolean;
541
+ /**
542
+ * @inheritDoc
543
+ * @internal
544
+ */
545
+ _shouldFetchExpiryStatus(): boolean;
546
+ /**
547
+ * @inheritDoc
548
+ * @internal
549
+ */
550
+ _shouldCheckIntermediary(): boolean;
551
+ /**
552
+ * @inheritDoc
553
+ * @internal
554
+ */
555
+ _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState, skipLpCheck?: boolean): Promise<boolean>;
556
+ /**
557
+ * @inheritDoc
558
+ * @internal
559
+ */
560
+ _forciblySetOnchainState(commitStatus: SwapCommitState): Promise<boolean>;
561
+ /**
562
+ * Broadcasts the swap secret to the underlying data propagation layer (e.g. Nostr by default)
563
+ *
564
+ * @param noCheckExpiry Whether a swap expiration check should be skipped broadcasting
565
+ * @param secret An optional secret pre-image for the swap to broadcast
566
+ *
567
+ * @internal
568
+ */
569
+ _broadcastSecret(noCheckExpiry?: boolean, secret?: string): Promise<void>;
570
+ /**
571
+ * @inheritDoc
572
+ * @internal
573
+ */
574
+ _tick(save?: boolean): Promise<boolean>;
575
+ /**
576
+ * Forcibly sets the swap secret pre-image from on-chain data
577
+ *
578
+ * @internal
579
+ */
580
+ _setSwapSecret(secret: string): void;
581
+ }