@atomiqlabs/sdk 8.6.5 → 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 (227) 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 -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 +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 -346
  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 -285
  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 -418
  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 -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 +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/swaps/spv_swaps/SpvFromBTCWrapper.ts +8 -0
@@ -1,207 +1,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
- * @deprecated Use `maxAllowedBitcoinFeeRate` instead!
51
- */
52
- maxAllowedNetworkFeeRate?: number;
53
- };
54
- export type SpvFromBTCWrapperOptions = ISwapWrapperOptions & {
55
- maxConfirmations: number;
56
- bitcoinNetwork: BTC_NETWORK;
57
- bitcoinBlocktime: number;
58
- maxTransactionsDelta: number;
59
- maxRawAmountAdjustmentDifferencePPM: number;
60
- maxBtcFeeMultiplier: number;
61
- maxBtcFeeOffset: number;
62
- };
63
- export type SpvFromBTCTypeDefinition<T extends ChainType> = SwapTypeDefinition<T, SpvFromBTCWrapper<T>, SpvFromBTCSwap<T>>;
64
- /**
65
- * New spv vault (UTXO-controlled vault) based swaps for Bitcoin -> Smart chain swaps not requiring
66
- * any initiation on the destination chain, and with the added possibility for the user to receive
67
- * a native token on the destination chain as part of the swap (a "gas drop" feature).
68
- *
69
- * @category Swaps/Bitcoin Smart chain
70
- */
71
- export declare class SpvFromBTCWrapper<T extends ChainType> extends ISwapWrapper<T, SpvFromBTCTypeDefinition<T>, SpvFromBTCWrapperOptions> implements IClaimableSwapWrapper<SpvFromBTCSwap<T>> {
72
- readonly TYPE: SwapType.SPV_VAULT_FROM_BTC;
73
- /**
74
- * @internal
75
- */
76
- readonly _claimableSwapStates: SpvFromBTCSwapState[];
77
- /**
78
- * @internal
79
- */
80
- readonly _swapDeserializer: typeof SpvFromBTCSwap;
81
- /**
82
- * @internal
83
- */
84
- protected readonly btcRelay: T["BtcRelay"];
85
- /**
86
- * @internal
87
- */
88
- protected readonly tickSwapState: Array<SpvFromBTCSwap<T>["_state"]>;
89
- /**
90
- * @internal
91
- */
92
- readonly _synchronizer: RelaySynchronizer<any, T["TX"], any>;
93
- /**
94
- * @internal
95
- */
96
- readonly _contract: T["SpvVaultContract"];
97
- /**
98
- * @internal
99
- */
100
- readonly _btcRpc: BitcoinRpcWithAddressIndex<BtcBlock>;
101
- /**
102
- * @internal
103
- */
104
- readonly _spvWithdrawalDataDeserializer: new (data: any) => T["SpvVaultWithdrawalData"];
105
- /**
106
- * @internal
107
- */
108
- readonly _pendingSwapStates: Array<SpvFromBTCSwap<T>["_state"]>;
109
- /**
110
- * @param chainIdentifier
111
- * @param unifiedStorage Storage interface for the current environment
112
- * @param unifiedChainEvents On-chain event listener
113
- * @param chain
114
- * @param contract Underlying contract handling the swaps
115
- * @param prices Pricing to use
116
- * @param tokens
117
- * @param spvWithdrawalDataDeserializer Deserializer for SpvVaultWithdrawalData
118
- * @param btcRelay
119
- * @param synchronizer Btc relay synchronizer
120
- * @param btcRpc Bitcoin RPC which also supports getting transactions by txoHash
121
- * @param options
122
- * @param events Instance to use for emitting events
123
- */
124
- 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<{
125
- swapState: [ISwap];
126
- }>);
127
- private processEventFront;
128
- private processEventClaim;
129
- private processEventClose;
130
- /**
131
- * @inheritDoc
132
- * @internal
133
- */
134
- protected processEvent(event: ChainEvent<T["Data"]>, swap: SpvFromBTCSwap<T>): Promise<void>;
135
- /**
136
- * Pre-fetches latest finalized block height of the smart chain
137
- *
138
- * @param abortController
139
- * @private
140
- */
141
- private preFetchFinalizedBlockHeight;
142
- /**
143
- * Pre-fetches caller (watchtower) bounty data for the swap. Doesn't throw, instead returns null and aborts the
144
- * provided abortController
145
- *
146
- * @param amountData
147
- * @param options Options as passed to the swap creation function
148
- * @param pricePrefetch
149
- * @param nativeTokenPricePrefetch
150
- * @param abortController
151
- * @private
152
- */
153
- private preFetchCallerFeeShare;
154
- /**
155
- * Verifies response returned from intermediary
156
- *
157
- * @param resp Response as returned by the intermediary
158
- * @param amountData
159
- * @param lp Intermediary
160
- * @param options Options as passed to the swap creation function
161
- * @param callerFeeShare
162
- * @param bitcoinFeeRatePromise Maximum accepted fee rate from the LPs
163
- * @param abortSignal
164
- * @private
165
- * @throws {IntermediaryError} in case the response is invalid
166
- */
167
- private verifyReturnedData;
168
- /**
169
- * Returns a newly created Bitcoin -> Smart chain swap using the SPV vault (UTXO-controlled vault) swap protocol,
170
- * with the passed amount. Also allows specifying additional "gas drop" native token that the receipient receives
171
- * on the destination chain in the `options` argument.
172
- *
173
- * @param recipient Recipient address on the destination smart chain
174
- * @param amountData Amount, token and exact input/output data for to swap
175
- * @param lps An array of intermediaries (LPs) to get the quotes from
176
- * @param options Optional additional quote options
177
- * @param additionalParams Optional additional parameters sent to the LP when creating the swap
178
- * @param abortSignal Abort signal
179
- */
180
- create(recipient: string, amountData: AmountData, lps: Intermediary[], options?: SpvFromBTCOptions, additionalParams?: Record<string, any>, abortSignal?: AbortSignal): {
181
- quote: Promise<SpvFromBTCSwap<T>>;
182
- intermediary: Intermediary;
183
- }[];
184
- /**
185
- * Recovers an SPV vault (UTXO-controlled vault) based swap from smart chain on-chain data
186
- *
187
- * @param state State of the spv vault withdrawal recovered from on-chain data
188
- * @param vault SPV vault processing the swap
189
- * @param lp Intermediary (LP) used as a counterparty for the swap
190
- */
191
- recoverFromState(state: SpvWithdrawalClaimedState | SpvWithdrawalFrontedState, vault?: SpvVaultData | null, lp?: Intermediary): Promise<SpvFromBTCSwap<T> | null>;
192
- /**
193
- * Returns a random dummy PSBT that can be used for fee estimation, the last output (the LP output) is omitted
194
- * to allow for coinselection algorithm to determine maximum sendable amount there
195
- *
196
- * @param includeGasToken Whether to return the PSBT also with the gas token amount (increases the vSize by 8)
197
- */
198
- getDummySwapPsbt(includeGasToken?: boolean): Transaction;
199
- /**
200
- * @inheritDoc
201
- * @internal
202
- */
203
- protected _checkPastSwaps(pastSwaps: SpvFromBTCSwap<T>[]): Promise<{
204
- changedSwaps: SpvFromBTCSwap<T>[];
205
- removeSwaps: SpvFromBTCSwap<T>[];
206
- }>;
207
- }
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
+ }