@atomiqlabs/sdk 8.6.6 → 8.6.8

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 (226) 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 +190 -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
  226. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +14 -2
@@ -1,213 +1,214 @@
1
- import { ISwapWrapper, ISwapWrapperOptions, SwapTypeDefinition, WrapperCtorTokens } from "../ISwapWrapper";
2
- import { BitcoinRpcWithAddressIndex, BtcBlock, BtcRelay, ChainEvent, ChainType, RelaySynchronizer, SpvVaultData, SpvWithdrawalClaimedState, SpvWithdrawalFrontedState } from "@atomiqlabs/base";
3
- import { SpvFromBTCSwap, SpvFromBTCSwapState } from "./SpvFromBTCSwap";
4
- import { BTC_NETWORK } from "@scure/btc-signer/utils";
5
- import { SwapType } from "../../enums/SwapType";
6
- import { UnifiedSwapStorage } from "../../storage/UnifiedSwapStorage";
7
- import { UnifiedSwapEventListener } from "../../events/UnifiedSwapEventListener";
8
- import { ISwapPrice } from "../../prices/abstract/ISwapPrice";
9
- import { EventEmitter } from "events";
10
- import { Intermediary } from "../../intermediaries/Intermediary";
11
- import { Transaction } from "@scure/btc-signer";
12
- import { ISwap } from "../ISwap";
13
- import { IClaimableSwapWrapper } from "../IClaimableSwapWrapper";
14
- import { AmountData } from "../../types/AmountData";
15
- import { AllOptional } from "../../utils/TypeUtils";
16
- export type SpvFromBTCOptions = {
17
- /**
18
- * Optional additional native token to receive as an output of the swap (e.g. STRK on Starknet or cBTC on Citrea).
19
- *
20
- * When passed as a `bigint` it is specified in base units of the token and in `string` it is the human readable
21
- * decimal format.
22
- */
23
- gasAmount?: bigint | string;
24
- /**
25
- * The LP enforces a minimum bitcoin fee rate in sats/vB for the swap transaction. With this config you can optionally
26
- * limit how high of a minimum fee rate would you accept.
27
- *
28
- * By default the maximum allowed fee rate is calculated dynamically based on current bitcoin fee rate as:
29
- *
30
- * `maxAllowedBitcoinFeeRate` = 10 + `currentBitcoinFeeRate` * 1.5
31
- */
32
- maxAllowedBitcoinFeeRate?: number;
33
- /**
34
- * A flag to attach 0 watchtower fee to the swap, this would make the settlement unattractive for the watchtowers
35
- * and therefore automatic settlement for such swaps will not be possible, you will have to settle manually
36
- * with {@link FromBTCLNSwap.claim} or {@link FromBTCLNSwap.txsClaim} functions.
37
- */
38
- unsafeZeroWatchtowerFee?: boolean;
39
- /**
40
- * A safety factor to use when estimating the watchtower fee to attach to the swap (this has to cover the gas fee
41
- * of watchtowers settling the swap). A higher multiple here would mean that a swap is more attractive for
42
- * watchtowers to settle automatically.
43
- *
44
- * Uses a `1.25` multiple by default (i.e. the current network fee is multiplied by 1.25 and then used to estimate
45
- * the settlement gas fee cost)
46
- */
47
- feeSafetyFactor?: number;
48
- /**
49
- * Instruct the LP to create a "sticky address" for your destination wallet address. After the first successful
50
- * swap with that LP, the used bitcoin address will be permanently linked to your destination wallet address. So
51
- * all subsequent swaps to the same address will yield the same LP deposit bitcoin address. Useful for corporate
52
- * whitelist-only wallets
53
- */
54
- stickyAddress?: boolean;
55
- /**
56
- * @deprecated Use `maxAllowedBitcoinFeeRate` instead!
57
- */
58
- maxAllowedNetworkFeeRate?: number;
59
- };
60
- export type SpvFromBTCWrapperOptions = ISwapWrapperOptions & {
61
- maxConfirmations: number;
62
- bitcoinNetwork: BTC_NETWORK;
63
- bitcoinBlocktime: number;
64
- maxTransactionsDelta: number;
65
- maxRawAmountAdjustmentDifferencePPM: number;
66
- maxBtcFeeMultiplier: number;
67
- maxBtcFeeOffset: number;
68
- };
69
- export type SpvFromBTCTypeDefinition<T extends ChainType> = SwapTypeDefinition<T, SpvFromBTCWrapper<T>, SpvFromBTCSwap<T>>;
70
- /**
71
- * New spv vault (UTXO-controlled vault) based swaps for Bitcoin -> Smart chain swaps not requiring
72
- * any initiation on the destination chain, and with the added possibility for the user to receive
73
- * a native token on the destination chain as part of the swap (a "gas drop" feature).
74
- *
75
- * @category Swaps/Bitcoin → Smart chain
76
- */
77
- export declare class SpvFromBTCWrapper<T extends ChainType> extends ISwapWrapper<T, SpvFromBTCTypeDefinition<T>, SpvFromBTCWrapperOptions> implements IClaimableSwapWrapper<SpvFromBTCSwap<T>> {
78
- readonly TYPE: SwapType.SPV_VAULT_FROM_BTC;
79
- /**
80
- * @internal
81
- */
82
- readonly _claimableSwapStates: SpvFromBTCSwapState[];
83
- /**
84
- * @internal
85
- */
86
- readonly _swapDeserializer: typeof SpvFromBTCSwap;
87
- /**
88
- * @internal
89
- */
90
- protected readonly btcRelay: T["BtcRelay"];
91
- /**
92
- * @internal
93
- */
94
- protected readonly tickSwapState: Array<SpvFromBTCSwap<T>["_state"]>;
95
- /**
96
- * @internal
97
- */
98
- readonly _synchronizer: RelaySynchronizer<any, T["TX"], any>;
99
- /**
100
- * @internal
101
- */
102
- readonly _contract: T["SpvVaultContract"];
103
- /**
104
- * @internal
105
- */
106
- readonly _btcRpc: BitcoinRpcWithAddressIndex<BtcBlock>;
107
- /**
108
- * @internal
109
- */
110
- readonly _spvWithdrawalDataDeserializer: new (data: any) => T["SpvVaultWithdrawalData"];
111
- /**
112
- * @internal
113
- */
114
- readonly _pendingSwapStates: Array<SpvFromBTCSwap<T>["_state"]>;
115
- /**
116
- * @param chainIdentifier
117
- * @param unifiedStorage Storage interface for the current environment
118
- * @param unifiedChainEvents On-chain event listener
119
- * @param chain
120
- * @param contract Underlying contract handling the swaps
121
- * @param prices Pricing to use
122
- * @param tokens
123
- * @param spvWithdrawalDataDeserializer Deserializer for SpvVaultWithdrawalData
124
- * @param btcRelay
125
- * @param synchronizer Btc relay synchronizer
126
- * @param btcRpc Bitcoin RPC which also supports getting transactions by txoHash
127
- * @param options
128
- * @param events Instance to use for emitting events
129
- */
130
- constructor(chainIdentifier: string, unifiedStorage: UnifiedSwapStorage<T>, unifiedChainEvents: UnifiedSwapEventListener<T>, chain: T["ChainInterface"], contract: T["SpvVaultContract"], prices: ISwapPrice, tokens: WrapperCtorTokens, spvWithdrawalDataDeserializer: new (data: any) => T["SpvVaultWithdrawalData"], btcRelay: BtcRelay<any, T["TX"], any>, synchronizer: RelaySynchronizer<any, T["TX"], any>, btcRpc: BitcoinRpcWithAddressIndex<any>, options?: AllOptional<SpvFromBTCWrapperOptions>, events?: EventEmitter<{
131
- swapState: [ISwap];
132
- }>);
133
- private processEventFront;
134
- private processEventClaim;
135
- private processEventClose;
136
- /**
137
- * @inheritDoc
138
- * @internal
139
- */
140
- protected processEvent(event: ChainEvent<T["Data"]>, swap: SpvFromBTCSwap<T>): Promise<void>;
141
- /**
142
- * Pre-fetches latest finalized block height of the smart chain
143
- *
144
- * @param abortController
145
- * @private
146
- */
147
- private preFetchFinalizedBlockHeight;
148
- /**
149
- * Pre-fetches caller (watchtower) bounty data for the swap. Doesn't throw, instead returns null and aborts the
150
- * provided abortController
151
- *
152
- * @param amountData
153
- * @param options Options as passed to the swap creation function
154
- * @param pricePrefetch
155
- * @param nativeTokenPricePrefetch
156
- * @param abortController
157
- * @private
158
- */
159
- private preFetchCallerFeeShare;
160
- /**
161
- * Verifies response returned from intermediary
162
- *
163
- * @param resp Response as returned by the intermediary
164
- * @param amountData
165
- * @param lp Intermediary
166
- * @param options Options as passed to the swap creation function
167
- * @param callerFeeShare
168
- * @param bitcoinFeeRatePromise Maximum accepted fee rate from the LPs
169
- * @param abortSignal
170
- * @private
171
- * @throws {IntermediaryError} in case the response is invalid
172
- */
173
- private verifyReturnedData;
174
- /**
175
- * Returns a newly created Bitcoin -> Smart chain swap using the SPV vault (UTXO-controlled vault) swap protocol,
176
- * with the passed amount. Also allows specifying additional "gas drop" native token that the receipient receives
177
- * on the destination chain in the `options` argument.
178
- *
179
- * @param recipient Recipient address on the destination smart chain
180
- * @param amountData Amount, token and exact input/output data for to swap
181
- * @param lps An array of intermediaries (LPs) to get the quotes from
182
- * @param options Optional additional quote options
183
- * @param additionalParams Optional additional parameters sent to the LP when creating the swap
184
- * @param abortSignal Abort signal
185
- */
186
- create(recipient: string, amountData: AmountData, lps: Intermediary[], options?: SpvFromBTCOptions, additionalParams?: Record<string, any>, abortSignal?: AbortSignal): {
187
- quote: Promise<SpvFromBTCSwap<T>>;
188
- intermediary: Intermediary;
189
- }[];
190
- /**
191
- * Recovers an SPV vault (UTXO-controlled vault) based swap from smart chain on-chain data
192
- *
193
- * @param state State of the spv vault withdrawal recovered from on-chain data
194
- * @param vault SPV vault processing the swap
195
- * @param lp Intermediary (LP) used as a counterparty for the swap
196
- */
197
- recoverFromState(state: SpvWithdrawalClaimedState | SpvWithdrawalFrontedState, vault?: SpvVaultData | null, lp?: Intermediary): Promise<SpvFromBTCSwap<T> | null>;
198
- /**
199
- * Returns a random dummy PSBT that can be used for fee estimation, the last output (the LP output) is omitted
200
- * to allow for coinselection algorithm to determine maximum sendable amount there
201
- *
202
- * @param includeGasToken Whether to return the PSBT also with the gas token amount (increases the vSize by 8)
203
- */
204
- getDummySwapPsbt(includeGasToken?: boolean): Transaction;
205
- /**
206
- * @inheritDoc
207
- * @internal
208
- */
209
- protected _checkPastSwaps(pastSwaps: SpvFromBTCSwap<T>[]): Promise<{
210
- changedSwaps: SpvFromBTCSwap<T>[];
211
- removeSwaps: SpvFromBTCSwap<T>[];
212
- }>;
213
- }
1
+ /// <reference types="node" />
2
+ import { ISwapWrapper, ISwapWrapperOptions, SwapTypeDefinition, WrapperCtorTokens } from "../ISwapWrapper";
3
+ import { BitcoinRpcWithAddressIndex, BtcBlock, BtcRelay, ChainEvent, ChainType, RelaySynchronizer, SpvVaultData, SpvWithdrawalClaimedState, SpvWithdrawalFrontedState } from "@atomiqlabs/base";
4
+ import { SpvFromBTCSwap, SpvFromBTCSwapState } from "./SpvFromBTCSwap";
5
+ import { BTC_NETWORK } from "@scure/btc-signer/utils";
6
+ import { SwapType } from "../../enums/SwapType";
7
+ import { UnifiedSwapStorage } from "../../storage/UnifiedSwapStorage";
8
+ import { UnifiedSwapEventListener } from "../../events/UnifiedSwapEventListener";
9
+ import { ISwapPrice } from "../../prices/abstract/ISwapPrice";
10
+ import { EventEmitter } from "events";
11
+ import { Intermediary } from "../../intermediaries/Intermediary";
12
+ import { Transaction } from "@scure/btc-signer";
13
+ import { ISwap } from "../ISwap";
14
+ import { IClaimableSwapWrapper } from "../IClaimableSwapWrapper";
15
+ import { AmountData } from "../../types/AmountData";
16
+ import { AllOptional } from "../../utils/TypeUtils";
17
+ export type SpvFromBTCOptions = {
18
+ /**
19
+ * Optional additional native token to receive as an output of the swap (e.g. STRK on Starknet or cBTC on Citrea).
20
+ *
21
+ * When passed as a `bigint` it is specified in base units of the token and in `string` it is the human readable
22
+ * decimal format.
23
+ */
24
+ gasAmount?: bigint | string;
25
+ /**
26
+ * The LP enforces a minimum bitcoin fee rate in sats/vB for the swap transaction. With this config you can optionally
27
+ * limit how high of a minimum fee rate would you accept.
28
+ *
29
+ * By default the maximum allowed fee rate is calculated dynamically based on current bitcoin fee rate as:
30
+ *
31
+ * `maxAllowedBitcoinFeeRate` = 10 + `currentBitcoinFeeRate` * 1.5
32
+ */
33
+ maxAllowedBitcoinFeeRate?: number;
34
+ /**
35
+ * A flag to attach 0 watchtower fee to the swap, this would make the settlement unattractive for the watchtowers
36
+ * and therefore automatic settlement for such swaps will not be possible, you will have to settle manually
37
+ * with {@link FromBTCLNSwap.claim} or {@link FromBTCLNSwap.txsClaim} functions.
38
+ */
39
+ unsafeZeroWatchtowerFee?: boolean;
40
+ /**
41
+ * A safety factor to use when estimating the watchtower fee to attach to the swap (this has to cover the gas fee
42
+ * of watchtowers settling the swap). A higher multiple here would mean that a swap is more attractive for
43
+ * watchtowers to settle automatically.
44
+ *
45
+ * Uses a `1.25` multiple by default (i.e. the current network fee is multiplied by 1.25 and then used to estimate
46
+ * the settlement gas fee cost)
47
+ */
48
+ feeSafetyFactor?: number;
49
+ /**
50
+ * Instruct the LP to create a "sticky address" for your destination wallet address. After the first successful
51
+ * swap with that LP, the used bitcoin address will be permanently linked to your destination wallet address. So
52
+ * all subsequent swaps to the same address will yield the same LP deposit bitcoin address. Useful for corporate
53
+ * whitelist-only wallets
54
+ */
55
+ stickyAddress?: boolean;
56
+ /**
57
+ * @deprecated Use `maxAllowedBitcoinFeeRate` instead!
58
+ */
59
+ maxAllowedNetworkFeeRate?: number;
60
+ };
61
+ export type SpvFromBTCWrapperOptions = ISwapWrapperOptions & {
62
+ maxConfirmations: number;
63
+ bitcoinNetwork: BTC_NETWORK;
64
+ bitcoinBlocktime: number;
65
+ maxTransactionsDelta: number;
66
+ maxRawAmountAdjustmentDifferencePPM: number;
67
+ maxBtcFeeMultiplier: number;
68
+ maxBtcFeeOffset: number;
69
+ };
70
+ export type SpvFromBTCTypeDefinition<T extends ChainType> = SwapTypeDefinition<T, SpvFromBTCWrapper<T>, SpvFromBTCSwap<T>>;
71
+ /**
72
+ * New spv vault (UTXO-controlled vault) based swaps for Bitcoin -> Smart chain swaps not requiring
73
+ * any initiation on the destination chain, and with the added possibility for the user to receive
74
+ * a native token on the destination chain as part of the swap (a "gas drop" feature).
75
+ *
76
+ * @category Swaps/Bitcoin → Smart chain
77
+ */
78
+ export declare class SpvFromBTCWrapper<T extends ChainType> extends ISwapWrapper<T, SpvFromBTCTypeDefinition<T>, SpvFromBTCWrapperOptions> implements IClaimableSwapWrapper<SpvFromBTCSwap<T>> {
79
+ readonly TYPE: SwapType.SPV_VAULT_FROM_BTC;
80
+ /**
81
+ * @internal
82
+ */
83
+ readonly _claimableSwapStates: SpvFromBTCSwapState[];
84
+ /**
85
+ * @internal
86
+ */
87
+ readonly _swapDeserializer: typeof SpvFromBTCSwap;
88
+ /**
89
+ * @internal
90
+ */
91
+ protected readonly btcRelay: T["BtcRelay"];
92
+ /**
93
+ * @internal
94
+ */
95
+ protected readonly tickSwapState: Array<SpvFromBTCSwap<T>["_state"]>;
96
+ /**
97
+ * @internal
98
+ */
99
+ readonly _synchronizer: RelaySynchronizer<any, T["TX"], any>;
100
+ /**
101
+ * @internal
102
+ */
103
+ readonly _contract: T["SpvVaultContract"];
104
+ /**
105
+ * @internal
106
+ */
107
+ readonly _btcRpc: BitcoinRpcWithAddressIndex<BtcBlock>;
108
+ /**
109
+ * @internal
110
+ */
111
+ readonly _spvWithdrawalDataDeserializer: new (data: any) => T["SpvVaultWithdrawalData"];
112
+ /**
113
+ * @internal
114
+ */
115
+ readonly _pendingSwapStates: Array<SpvFromBTCSwap<T>["_state"]>;
116
+ /**
117
+ * @param chainIdentifier
118
+ * @param unifiedStorage Storage interface for the current environment
119
+ * @param unifiedChainEvents On-chain event listener
120
+ * @param chain
121
+ * @param contract Underlying contract handling the swaps
122
+ * @param prices Pricing to use
123
+ * @param tokens
124
+ * @param spvWithdrawalDataDeserializer Deserializer for SpvVaultWithdrawalData
125
+ * @param btcRelay
126
+ * @param synchronizer Btc relay synchronizer
127
+ * @param btcRpc Bitcoin RPC which also supports getting transactions by txoHash
128
+ * @param options
129
+ * @param events Instance to use for emitting events
130
+ */
131
+ constructor(chainIdentifier: string, unifiedStorage: UnifiedSwapStorage<T>, unifiedChainEvents: UnifiedSwapEventListener<T>, chain: T["ChainInterface"], contract: T["SpvVaultContract"], prices: ISwapPrice, tokens: WrapperCtorTokens, spvWithdrawalDataDeserializer: new (data: any) => T["SpvVaultWithdrawalData"], btcRelay: BtcRelay<any, T["TX"], any>, synchronizer: RelaySynchronizer<any, T["TX"], any>, btcRpc: BitcoinRpcWithAddressIndex<any>, options?: AllOptional<SpvFromBTCWrapperOptions>, events?: EventEmitter<{
132
+ swapState: [ISwap];
133
+ }>);
134
+ private processEventFront;
135
+ private processEventClaim;
136
+ private processEventClose;
137
+ /**
138
+ * @inheritDoc
139
+ * @internal
140
+ */
141
+ protected processEvent(event: ChainEvent<T["Data"]>, swap: SpvFromBTCSwap<T>): Promise<void>;
142
+ /**
143
+ * Pre-fetches latest finalized block height of the smart chain
144
+ *
145
+ * @param abortController
146
+ * @private
147
+ */
148
+ private preFetchFinalizedBlockHeight;
149
+ /**
150
+ * Pre-fetches caller (watchtower) bounty data for the swap. Doesn't throw, instead returns null and aborts the
151
+ * provided abortController
152
+ *
153
+ * @param amountData
154
+ * @param options Options as passed to the swap creation function
155
+ * @param pricePrefetch
156
+ * @param nativeTokenPricePrefetch
157
+ * @param abortController
158
+ * @private
159
+ */
160
+ private preFetchCallerFeeShare;
161
+ /**
162
+ * Verifies response returned from intermediary
163
+ *
164
+ * @param resp Response as returned by the intermediary
165
+ * @param amountData
166
+ * @param lp Intermediary
167
+ * @param options Options as passed to the swap creation function
168
+ * @param callerFeeShare
169
+ * @param bitcoinFeeRatePromise Maximum accepted fee rate from the LPs
170
+ * @param abortSignal
171
+ * @private
172
+ * @throws {IntermediaryError} in case the response is invalid
173
+ */
174
+ private verifyReturnedData;
175
+ /**
176
+ * Returns a newly created Bitcoin -> Smart chain swap using the SPV vault (UTXO-controlled vault) swap protocol,
177
+ * with the passed amount. Also allows specifying additional "gas drop" native token that the receipient receives
178
+ * on the destination chain in the `options` argument.
179
+ *
180
+ * @param recipient Recipient address on the destination smart chain
181
+ * @param amountData Amount, token and exact input/output data for to swap
182
+ * @param lps An array of intermediaries (LPs) to get the quotes from
183
+ * @param options Optional additional quote options
184
+ * @param additionalParams Optional additional parameters sent to the LP when creating the swap
185
+ * @param abortSignal Abort signal
186
+ */
187
+ create(recipient: string, amountData: AmountData, lps: Intermediary[], options?: SpvFromBTCOptions, additionalParams?: Record<string, any>, abortSignal?: AbortSignal): {
188
+ quote: Promise<SpvFromBTCSwap<T>>;
189
+ intermediary: Intermediary;
190
+ }[];
191
+ /**
192
+ * Recovers an SPV vault (UTXO-controlled vault) based swap from smart chain on-chain data
193
+ *
194
+ * @param state State of the spv vault withdrawal recovered from on-chain data
195
+ * @param vault SPV vault processing the swap
196
+ * @param lp Intermediary (LP) used as a counterparty for the swap
197
+ */
198
+ recoverFromState(state: SpvWithdrawalClaimedState | SpvWithdrawalFrontedState, vault?: SpvVaultData | null, lp?: Intermediary): Promise<SpvFromBTCSwap<T> | null>;
199
+ /**
200
+ * Returns a random dummy PSBT that can be used for fee estimation, the last output (the LP output) is omitted
201
+ * to allow for coinselection algorithm to determine maximum sendable amount there
202
+ *
203
+ * @param includeGasToken Whether to return the PSBT also with the gas token amount (increases the vSize by 8)
204
+ */
205
+ getDummySwapPsbt(includeGasToken?: boolean): Transaction;
206
+ /**
207
+ * @inheritDoc
208
+ * @internal
209
+ */
210
+ protected _checkPastSwaps(pastSwaps: SpvFromBTCSwap<T>[]): Promise<{
211
+ changedSwaps: SpvFromBTCSwap<T>[];
212
+ removeSwaps: SpvFromBTCSwap<T>[];
213
+ }>;
214
+ }