@atomiqlabs/sdk 8.6.6 → 8.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/dist/SmartChainAssets.d.ts +181 -181
  2. package/dist/SmartChainAssets.js +181 -181
  3. package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -6
  4. package/dist/bitcoin/coinselect2/accumulative.js +52 -51
  5. package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -6
  6. package/dist/bitcoin/coinselect2/blackjack.js +38 -37
  7. package/dist/bitcoin/coinselect2/index.d.ts +19 -17
  8. package/dist/bitcoin/coinselect2/index.js +69 -69
  9. package/dist/bitcoin/coinselect2/utils.d.ts +77 -75
  10. package/dist/bitcoin/coinselect2/utils.js +123 -123
  11. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +130 -128
  12. package/dist/bitcoin/wallet/BitcoinWallet.js +322 -322
  13. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +78 -78
  14. package/dist/bitcoin/wallet/IBitcoinWallet.js +21 -20
  15. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +101 -99
  16. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +176 -176
  17. package/dist/enums/FeeType.d.ts +15 -15
  18. package/dist/enums/FeeType.js +19 -19
  19. package/dist/enums/SwapAmountType.d.ts +15 -15
  20. package/dist/enums/SwapAmountType.js +19 -19
  21. package/dist/enums/SwapDirection.d.ts +15 -15
  22. package/dist/enums/SwapDirection.js +19 -19
  23. package/dist/enums/SwapSide.d.ts +15 -15
  24. package/dist/enums/SwapSide.js +19 -19
  25. package/dist/enums/SwapType.d.ts +75 -75
  26. package/dist/enums/SwapType.js +79 -79
  27. package/dist/errors/IntermediaryError.d.ts +13 -13
  28. package/dist/errors/IntermediaryError.js +27 -27
  29. package/dist/errors/RequestError.d.ts +32 -32
  30. package/dist/errors/RequestError.js +54 -54
  31. package/dist/errors/UserError.d.ts +8 -8
  32. package/dist/errors/UserError.js +16 -16
  33. package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
  34. package/dist/events/UnifiedSwapEventListener.js +130 -130
  35. package/dist/http/HttpUtils.d.ts +27 -27
  36. package/dist/http/HttpUtils.js +91 -90
  37. package/dist/http/paramcoders/IParamReader.d.ts +8 -8
  38. package/dist/http/paramcoders/IParamReader.js +2 -2
  39. package/dist/http/paramcoders/ParamDecoder.d.ts +44 -42
  40. package/dist/http/paramcoders/ParamDecoder.js +137 -137
  41. package/dist/http/paramcoders/ParamEncoder.d.ts +20 -18
  42. package/dist/http/paramcoders/ParamEncoder.js +36 -36
  43. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
  44. package/dist/http/paramcoders/SchemaVerifier.js +145 -145
  45. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
  46. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
  47. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -11
  48. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
  49. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
  50. package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -173
  51. package/dist/index.d.ts +85 -85
  52. package/dist/index.js +158 -158
  53. package/dist/intermediaries/Intermediary.d.ts +157 -157
  54. package/dist/intermediaries/Intermediary.js +142 -142
  55. package/dist/intermediaries/IntermediaryDiscovery.d.ts +199 -198
  56. package/dist/intermediaries/IntermediaryDiscovery.js +406 -406
  57. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +439 -437
  58. package/dist/intermediaries/apis/IntermediaryAPI.js +603 -603
  59. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
  60. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
  61. package/dist/lnurl/LNURL.d.ts +102 -102
  62. package/dist/lnurl/LNURL.js +321 -321
  63. package/dist/prices/RedundantSwapPrice.d.ts +110 -110
  64. package/dist/prices/RedundantSwapPrice.js +222 -222
  65. package/dist/prices/SingleSwapPrice.d.ts +34 -34
  66. package/dist/prices/SingleSwapPrice.js +44 -44
  67. package/dist/prices/SwapPriceWithChain.d.ts +107 -107
  68. package/dist/prices/SwapPriceWithChain.js +128 -128
  69. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
  70. package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
  71. package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
  72. package/dist/prices/abstract/IPriceProvider.js +74 -74
  73. package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
  74. package/dist/prices/abstract/ISwapPrice.js +279 -279
  75. package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
  76. package/dist/prices/providers/BinancePriceProvider.js +30 -30
  77. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
  78. package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
  79. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
  80. package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
  81. package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
  82. package/dist/prices/providers/CustomPriceProvider.js +35 -35
  83. package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
  84. package/dist/prices/providers/KrakenPriceProvider.js +45 -45
  85. package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
  86. package/dist/prices/providers/OKXPriceProvider.js +29 -29
  87. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
  88. package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
  89. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
  90. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
  91. package/dist/storage/IUnifiedStorage.d.ts +85 -85
  92. package/dist/storage/IUnifiedStorage.js +2 -2
  93. package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
  94. package/dist/storage/UnifiedSwapStorage.js +116 -116
  95. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
  96. package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
  97. package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
  98. package/dist/storage-browser/LocalStorageManager.js +93 -93
  99. package/dist/swapper/Swapper.d.ts +687 -686
  100. package/dist/swapper/Swapper.js +1603 -1603
  101. package/dist/swapper/SwapperFactory.d.ts +135 -135
  102. package/dist/swapper/SwapperFactory.js +162 -162
  103. package/dist/swapper/SwapperUtils.d.ts +200 -200
  104. package/dist/swapper/SwapperUtils.js +467 -467
  105. package/dist/swapper/SwapperWithChain.d.ts +404 -404
  106. package/dist/swapper/SwapperWithChain.js +469 -469
  107. package/dist/swapper/SwapperWithSigner.d.ts +322 -322
  108. package/dist/swapper/SwapperWithSigner.js +318 -318
  109. package/dist/swaps/IAddressSwap.d.ts +22 -22
  110. package/dist/swaps/IAddressSwap.js +14 -13
  111. package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
  112. package/dist/swaps/IBTCWalletSwap.js +18 -17
  113. package/dist/swaps/IClaimableSwap.d.ts +49 -49
  114. package/dist/swaps/IClaimableSwap.js +15 -14
  115. package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
  116. package/dist/swaps/IClaimableSwapWrapper.js +2 -2
  117. package/dist/swaps/IRefundableSwap.d.ts +43 -43
  118. package/dist/swaps/IRefundableSwap.js +14 -13
  119. package/dist/swaps/ISwap.d.ts +387 -386
  120. package/dist/swaps/ISwap.js +346 -346
  121. package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
  122. package/dist/swaps/ISwapWithGasDrop.js +12 -11
  123. package/dist/swaps/ISwapWrapper.d.ts +285 -283
  124. package/dist/swaps/ISwapWrapper.js +353 -353
  125. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
  126. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
  127. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +135 -133
  128. package/dist/swaps/escrow_swaps/IEscrowSwap.js +169 -169
  129. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +115 -114
  130. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +134 -134
  131. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +101 -98
  132. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
  133. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
  134. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
  135. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +58 -58
  136. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +78 -78
  137. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +531 -529
  138. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
  139. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +184 -181
  140. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +418 -418
  141. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +583 -581
  142. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
  143. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +228 -225
  144. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +506 -506
  145. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
  146. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
  147. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +191 -190
  148. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +378 -378
  149. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
  150. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
  151. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +62 -62
  152. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +112 -112
  153. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +127 -125
  154. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
  155. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +242 -241
  156. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -520
  157. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
  158. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
  159. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +128 -127
  160. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +278 -278
  161. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +630 -630
  162. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1443 -1443
  163. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +214 -213
  164. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +756 -756
  165. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
  166. package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
  167. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
  168. package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
  169. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
  170. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
  171. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +69 -68
  172. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +92 -92
  173. package/dist/types/AmountData.d.ts +10 -10
  174. package/dist/types/AmountData.js +2 -2
  175. package/dist/types/CustomPriceFunction.d.ts +11 -11
  176. package/dist/types/CustomPriceFunction.js +2 -2
  177. package/dist/types/PriceInfoType.d.ts +28 -28
  178. package/dist/types/PriceInfoType.js +57 -56
  179. package/dist/types/SwapExecutionAction.d.ts +88 -88
  180. package/dist/types/SwapExecutionAction.js +2 -2
  181. package/dist/types/SwapStateInfo.d.ts +5 -5
  182. package/dist/types/SwapStateInfo.js +2 -2
  183. package/dist/types/SwapWithSigner.d.ts +17 -17
  184. package/dist/types/SwapWithSigner.js +43 -42
  185. package/dist/types/Token.d.ts +99 -99
  186. package/dist/types/Token.js +76 -76
  187. package/dist/types/TokenAmount.d.ts +69 -69
  188. package/dist/types/TokenAmount.js +60 -59
  189. package/dist/types/fees/Fee.d.ts +50 -50
  190. package/dist/types/fees/Fee.js +2 -2
  191. package/dist/types/fees/FeeBreakdown.d.ts +11 -11
  192. package/dist/types/fees/FeeBreakdown.js +2 -2
  193. package/dist/types/fees/PercentagePPM.d.ts +17 -17
  194. package/dist/types/fees/PercentagePPM.js +18 -17
  195. package/dist/types/lnurl/LNURLPay.d.ts +61 -61
  196. package/dist/types/lnurl/LNURLPay.js +31 -30
  197. package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
  198. package/dist/types/lnurl/LNURLWithdraw.js +27 -26
  199. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
  200. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -14
  201. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
  202. package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
  203. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
  204. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
  205. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
  206. package/dist/utils/AutomaticClockDriftCorrection.js +70 -69
  207. package/dist/utils/BitcoinUtils.d.ts +14 -12
  208. package/dist/utils/BitcoinUtils.js +102 -101
  209. package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
  210. package/dist/utils/BitcoinWalletUtils.js +14 -13
  211. package/dist/utils/Logger.d.ts +7 -7
  212. package/dist/utils/Logger.js +12 -11
  213. package/dist/utils/RetryUtils.d.ts +22 -22
  214. package/dist/utils/RetryUtils.js +67 -66
  215. package/dist/utils/SwapUtils.d.ts +88 -88
  216. package/dist/utils/SwapUtils.js +72 -72
  217. package/dist/utils/TimeoutUtils.d.ts +17 -17
  218. package/dist/utils/TimeoutUtils.js +55 -54
  219. package/dist/utils/TokenUtils.d.ts +19 -19
  220. package/dist/utils/TokenUtils.js +37 -36
  221. package/dist/utils/TypeUtils.d.ts +7 -7
  222. package/dist/utils/TypeUtils.js +2 -2
  223. package/dist/utils/Utils.d.ts +58 -56
  224. package/dist/utils/Utils.js +194 -193
  225. package/package.json +1 -1
@@ -1,386 +1,387 @@
1
- import { SwapType } from "../enums/SwapType";
2
- import { EventEmitter } from "events";
3
- import { ISwapWrapper, SwapTypeDefinition } from "./ISwapWrapper";
4
- import { ChainType } from "@atomiqlabs/base";
5
- import { SwapDirection } from "../enums/SwapDirection";
6
- import { Fee } from "../types/fees/Fee";
7
- import { FeeBreakdown } from "../types/fees/FeeBreakdown";
8
- import { PercentagePPM } from "../types/fees/PercentagePPM";
9
- import { TokenAmount } from "../types/TokenAmount";
10
- import { Token } from "../types/Token";
11
- import { SwapExecutionAction } from "../types/SwapExecutionAction";
12
- import { LoggerType } from "../utils/Logger";
13
- import { PriceInfoType } from "../types/PriceInfoType";
14
- import { SwapStateInfo } from "../types/SwapStateInfo";
15
- /**
16
- * Initialization data for creating a swap
17
- *
18
- * @category Swaps/Base
19
- */
20
- export type ISwapInit = {
21
- pricingInfo: PriceInfoType;
22
- url?: string;
23
- expiry: number;
24
- swapFee: bigint;
25
- swapFeeBtc: bigint;
26
- exactIn: boolean;
27
- };
28
- /**
29
- * Type guard to check if an object is an ISwapInit
30
- *
31
- * @category Swaps/Base
32
- */
33
- export declare function isISwapInit(obj: any): obj is ISwapInit;
34
- /**
35
- * Base abstract class for all swap types
36
- *
37
- * @category Swaps/Base
38
- */
39
- export declare abstract class ISwap<T extends ChainType = ChainType, D extends SwapTypeDefinition<T, ISwapWrapper<T, D>, ISwap<T, D, S>> = SwapTypeDefinition<T, ISwapWrapper<T, any>, ISwap<T, any, any>>, S extends number = number> {
40
- /**
41
- * Swap type
42
- */
43
- protected readonly abstract TYPE: SwapType;
44
- /**
45
- * Description for the states
46
- * @internal
47
- */
48
- protected readonly abstract swapStateDescription: Record<S, string>;
49
- /**
50
- * Name of the states
51
- * @internal
52
- */
53
- protected readonly abstract swapStateName: (state: number) => string;
54
- /**
55
- * Swap logger
56
- * @internal
57
- */
58
- protected readonly abstract logger: LoggerType;
59
- /**
60
- * Current newest defined version of the swap
61
- * @internal
62
- */
63
- protected readonly currentVersion: number;
64
- /**
65
- * Wrapper instance holding this swap
66
- * @internal
67
- */
68
- protected readonly wrapper: D["Wrapper"];
69
- /**
70
- * The current version of the swap
71
- * @internal
72
- */
73
- protected version: number;
74
- /**
75
- * Whether a swap was initialized, a swap is considered initialize on first interaction with it, i.e.
76
- * calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
77
- * direction. Not initiated swaps are not saved to the persistent storage by default (see
78
- * {@link SwapperOptions.saveUninitializedSwaps})
79
- * @internal
80
- */
81
- protected initiated: boolean;
82
- /**
83
- * Expiration of the swap quote
84
- * @internal
85
- */
86
- protected expiry: number;
87
- /**
88
- * Pricing information of the swap
89
- * @internal
90
- */
91
- protected pricingInfo?: PriceInfoType;
92
- /**
93
- * Swap fee in the non-bitcoin token
94
- * @internal
95
- */
96
- protected swapFee: bigint;
97
- /**
98
- * Swap fee in bitcoin satoshis
99
- * @internal
100
- */
101
- protected swapFeeBtc: bigint;
102
- /**
103
- * Swap state
104
- * @internal
105
- */
106
- _state: S;
107
- /**
108
- * Random nonce to differentiate the swap from others with the same identifier hash (i.e. when quoting the same swap
109
- * from multiple LPs)
110
- * @internal
111
- */
112
- _randomNonce: string;
113
- /**
114
- * Whether the swap is saved in the persistent storage or not.
115
- *
116
- * @remarks This field itself is not persisted but is instead derived during runtime
117
- *
118
- * @internal
119
- */
120
- _persisted: boolean;
121
- /**
122
- * Event emitter emitting `"swapState"` event when swap's state changes
123
- */
124
- readonly events: EventEmitter<{
125
- swapState: [D["Swap"]];
126
- }>;
127
- /**
128
- * URL of the intermediary (LP) used for this swap, already has the swap service specific path appended
129
- */
130
- readonly url?: string;
131
- /**
132
- * Smart chain identifier string corresponding to this swap
133
- */
134
- readonly chainIdentifier: T["ChainId"];
135
- /**
136
- * Whether a swap is an exact input swap
137
- */
138
- readonly exactIn: boolean;
139
- /**
140
- * A UNIX milliseconds timestamps of when this swap was created
141
- */
142
- createdAt: number;
143
- protected constructor(wrapper: D["Wrapper"], obj: any);
144
- protected constructor(wrapper: D["Wrapper"], swapInit: ISwapInit);
145
- /**
146
- * Called when swap is deserialized to potentially update the version of the data for the swap
147
- *
148
- * @internal
149
- */
150
- protected abstract upgradeVersion(): void;
151
- /**
152
- * Waits till the swap reaches a specific state
153
- *
154
- * @param targetState The state to wait for
155
- * @param type Whether to wait for the state exactly or also to a state with a higher number
156
- * @param abortSignal Abort signal
157
- * @internal
158
- */
159
- protected waitTillState(targetState: S, type?: "eq" | "gte" | "neq", abortSignal?: AbortSignal): Promise<void>;
160
- /**
161
- * Returns a list of steps or transactions required to finish and settle the swap
162
- *
163
- * @param options Additional options for executing the swap
164
- */
165
- abstract txsExecute(options?: any): Promise<SwapExecutionAction<T>[]>;
166
- /**
167
- * Executes the swap with the provided wallet, the exact arguments for this functions differ for various swap
168
- * types. Check the `execute()` function signature in the respective swap class to see the required arguments.
169
- *
170
- * @param args Execution arguments, usually contains a source wallet object, callbacks and options, for exact
171
- * syntax check the respective swap class.
172
- *
173
- * @returns Whether a swap was successfully executed or not, if it wasn't the user can refund or claim manually
174
- */
175
- abstract execute(...args: any[]): Promise<boolean>;
176
- /**
177
- * This attempts to populate missing fields in the pricing info based on the swap amounts
178
- *
179
- * @internal
180
- */
181
- protected tryRecomputeSwapPrice(): void;
182
- /**
183
- * Re-fetches & revalidates the price data based on the current market prices
184
- */
185
- refreshPriceData(): Promise<void>;
186
- /**
187
- * Checks if the pricing for the swap is valid, according to max allowed price difference set in the ISwapPrice
188
- */
189
- hasValidPrice(): boolean;
190
- /**
191
- * Returns pricing info about the swap
192
- */
193
- getPriceInfo(): {
194
- marketPrice?: number;
195
- swapPrice: number;
196
- difference: PercentagePPM;
197
- };
198
- /**
199
- * Asserts a given signer is the initiator of this swap
200
- *
201
- * @param signer Signer to check with this swap's initiator
202
- * @throws {Error} When signer's address doesn't match with the swap's initiator one
203
- * @internal
204
- */
205
- protected checkSigner(signer: T["Signer"] | string): void;
206
- /**
207
- * Returns an escrow hash of the swap
208
- *
209
- * @internal
210
- */
211
- abstract _getEscrowHash(): string | null;
212
- /**
213
- * Checks if the swap's quote is expired for good (i.e. the swap strictly cannot be initiated anymore)
214
- * @internal
215
- */
216
- abstract _verifyQuoteDefinitelyExpired(): Promise<boolean>;
217
- /**
218
- * Checks if the swap's quote is still valid
219
- * @internal
220
- */
221
- abstract _verifyQuoteValid(): Promise<boolean>;
222
- /**
223
- * Returns the intiator address of the swap - address that created this swap
224
- * @internal
225
- */
226
- abstract _getInitiator(): string;
227
- /**
228
- * Sets this swap as initiated
229
- * @internal
230
- */
231
- _setInitiated(): void;
232
- /**
233
- * Returns source address of the swap
234
- */
235
- abstract getInputAddress(): string | null;
236
- /**
237
- * Returns destination address of the swap
238
- */
239
- abstract getOutputAddress(): string | null;
240
- /**
241
- * Returns swap input transaction ID on the source chain
242
- */
243
- abstract getInputTxId(): string | null;
244
- /**
245
- * Returns swap output transaction ID on the destination chain
246
- */
247
- abstract getOutputTxId(): string | null;
248
- /**
249
- * Returns the ID of the swap, as used in the storage
250
- */
251
- abstract getId(): string;
252
- /**
253
- * Checks whether there is some action required from the user for this swap - can mean either refundable or claimable
254
- */
255
- abstract requiresAction(): boolean;
256
- /**
257
- * Returns whether the swap is finished and in its terminal state (this can mean successful, refunded or failed)
258
- */
259
- abstract isFinished(): boolean;
260
- /**
261
- * Checks whether the swap's quote has definitely expired and cannot be committed anymore, we can remove such swap
262
- */
263
- abstract isQuoteExpired(): boolean;
264
- /**
265
- * Checks whether the swap's quote is soft expired (this means there is not enough time buffer for it to commit,
266
- * but it still can happen)
267
- */
268
- abstract isQuoteSoftExpired(): boolean;
269
- /**
270
- * Returns whether the swap finished successful
271
- */
272
- abstract isSuccessful(): boolean;
273
- /**
274
- * Returns whether the swap failed (e.g. was refunded)
275
- */
276
- abstract isFailed(): boolean;
277
- /**
278
- * Returns whether the swap is currently being processed
279
- */
280
- abstract isInProgress(): boolean;
281
- /**
282
- * Whether a swap was initialized, a swap is considered initialized on first interaction with it, i.e.
283
- * calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
284
- * direction. Not initiated swaps are not saved to the persistent storage by default (see
285
- * {@link SwapperOptions.saveUninitializedSwaps})
286
- */
287
- isInitiated(): boolean;
288
- /**
289
- * Returns quote expiry in UNIX millis
290
- */
291
- getQuoteExpiry(): number;
292
- /**
293
- * Returns the type of the swap
294
- */
295
- getType(): SwapType;
296
- /**
297
- * Returns the direction of the swap
298
- */
299
- getDirection(): SwapDirection;
300
- /**
301
- * Returns the current state of the swap
302
- */
303
- getState(): S;
304
- /**
305
- * Returns the current state of the swap along with the human-readable description of the state
306
- */
307
- getStateInfo(): SwapStateInfo<S>;
308
- /**
309
- * Returns a state-dependent set of actions for the user to execute, or empty array if there is currently
310
- * no action required from the user to execute.
311
- */
312
- abstract getCurrentActions(): Promise<SwapExecutionAction<T>[]>;
313
- /**
314
- * Returns output amount of the swap, user receives this much
315
- */
316
- abstract getOutput(): TokenAmount;
317
- /**
318
- * Returns the output token of the swap
319
- */
320
- abstract getOutputToken(): Token<T["ChainId"]>;
321
- /**
322
- * Returns input amount of the swap, user needs to pay this much
323
- */
324
- abstract getInput(): TokenAmount;
325
- /**
326
- * Returns the input token of the swap
327
- */
328
- abstract getInputToken(): Token<T["ChainId"]>;
329
- /**
330
- * Returns input amount of the swap without the fees (swap fee, network fee)
331
- */
332
- abstract getInputWithoutFee(): TokenAmount;
333
- /**
334
- * Returns total fee for the swap, the fee is represented in source currency & destination currency, but is
335
- * paid only once
336
- */
337
- abstract getFee(): Fee;
338
- /**
339
- * Returns the breakdown of all the fees paid
340
- */
341
- abstract getFeeBreakdown(): FeeBreakdown<T["ChainId"]>;
342
- /**
343
- * Saves the swap data to the underlying storage, or removes it if it is in a quote expired state
344
- *
345
- * @internal
346
- */
347
- _save(): Promise<void>;
348
- /**
349
- * Saves the swap data and also emits a swap state change
350
- *
351
- * @param state Optional state to set before the swap is saved an event emitted
352
- *
353
- * @internal
354
- */
355
- _saveAndEmit(state?: S): Promise<void>;
356
- /**
357
- * Serializes the swap to a JSON stringifiable representation (i.e. no bigints, buffers etc.)
358
- */
359
- serialize(): any;
360
- /**
361
- * Emits a `swapState` event with the current swap
362
- *
363
- * @internal
364
- */
365
- _emitEvent(): void;
366
- /**
367
- * Synchronizes swap state from chain and/or LP node, usually ran on startup
368
- *
369
- * @param save whether to save the new swap state or not
370
- *
371
- * @returns {boolean} true if the swap changed, false if the swap hasn't changed
372
- *
373
- * @internal
374
- */
375
- abstract _sync(save?: boolean): Promise<boolean>;
376
- /**
377
- * Runs quick checks on the swap, such as checking the expiry, usually ran periodically every few seconds
378
- *
379
- * @param save whether to save the new swap state or not
380
- *
381
- * @returns {boolean} true if the swap changed, false if the swap hasn't changed
382
- *
383
- * @internal
384
- */
385
- abstract _tick(save?: boolean): Promise<boolean>;
386
- }
1
+ /// <reference types="node" />
2
+ import { SwapType } from "../enums/SwapType";
3
+ import { EventEmitter } from "events";
4
+ import { ISwapWrapper, SwapTypeDefinition } from "./ISwapWrapper";
5
+ import { ChainType } from "@atomiqlabs/base";
6
+ import { SwapDirection } from "../enums/SwapDirection";
7
+ import { Fee } from "../types/fees/Fee";
8
+ import { FeeBreakdown } from "../types/fees/FeeBreakdown";
9
+ import { PercentagePPM } from "../types/fees/PercentagePPM";
10
+ import { TokenAmount } from "../types/TokenAmount";
11
+ import { Token } from "../types/Token";
12
+ import { SwapExecutionAction } from "../types/SwapExecutionAction";
13
+ import { LoggerType } from "../utils/Logger";
14
+ import { PriceInfoType } from "../types/PriceInfoType";
15
+ import { SwapStateInfo } from "../types/SwapStateInfo";
16
+ /**
17
+ * Initialization data for creating a swap
18
+ *
19
+ * @category Swaps/Base
20
+ */
21
+ export type ISwapInit = {
22
+ pricingInfo: PriceInfoType;
23
+ url?: string;
24
+ expiry: number;
25
+ swapFee: bigint;
26
+ swapFeeBtc: bigint;
27
+ exactIn: boolean;
28
+ };
29
+ /**
30
+ * Type guard to check if an object is an ISwapInit
31
+ *
32
+ * @category Swaps/Base
33
+ */
34
+ export declare function isISwapInit(obj: any): obj is ISwapInit;
35
+ /**
36
+ * Base abstract class for all swap types
37
+ *
38
+ * @category Swaps/Base
39
+ */
40
+ export declare abstract class ISwap<T extends ChainType = ChainType, D extends SwapTypeDefinition<T, ISwapWrapper<T, D>, ISwap<T, D, S>> = SwapTypeDefinition<T, ISwapWrapper<T, any>, ISwap<T, any, any>>, S extends number = number> {
41
+ /**
42
+ * Swap type
43
+ */
44
+ protected readonly abstract TYPE: SwapType;
45
+ /**
46
+ * Description for the states
47
+ * @internal
48
+ */
49
+ protected readonly abstract swapStateDescription: Record<S, string>;
50
+ /**
51
+ * Name of the states
52
+ * @internal
53
+ */
54
+ protected readonly abstract swapStateName: (state: number) => string;
55
+ /**
56
+ * Swap logger
57
+ * @internal
58
+ */
59
+ protected readonly abstract logger: LoggerType;
60
+ /**
61
+ * Current newest defined version of the swap
62
+ * @internal
63
+ */
64
+ protected readonly currentVersion: number;
65
+ /**
66
+ * Wrapper instance holding this swap
67
+ * @internal
68
+ */
69
+ protected readonly wrapper: D["Wrapper"];
70
+ /**
71
+ * The current version of the swap
72
+ * @internal
73
+ */
74
+ protected version: number;
75
+ /**
76
+ * Whether a swap was initialized, a swap is considered initialize on first interaction with it, i.e.
77
+ * calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
78
+ * direction. Not initiated swaps are not saved to the persistent storage by default (see
79
+ * {@link SwapperOptions.saveUninitializedSwaps})
80
+ * @internal
81
+ */
82
+ protected initiated: boolean;
83
+ /**
84
+ * Expiration of the swap quote
85
+ * @internal
86
+ */
87
+ protected expiry: number;
88
+ /**
89
+ * Pricing information of the swap
90
+ * @internal
91
+ */
92
+ protected pricingInfo?: PriceInfoType;
93
+ /**
94
+ * Swap fee in the non-bitcoin token
95
+ * @internal
96
+ */
97
+ protected swapFee: bigint;
98
+ /**
99
+ * Swap fee in bitcoin satoshis
100
+ * @internal
101
+ */
102
+ protected swapFeeBtc: bigint;
103
+ /**
104
+ * Swap state
105
+ * @internal
106
+ */
107
+ _state: S;
108
+ /**
109
+ * Random nonce to differentiate the swap from others with the same identifier hash (i.e. when quoting the same swap
110
+ * from multiple LPs)
111
+ * @internal
112
+ */
113
+ _randomNonce: string;
114
+ /**
115
+ * Whether the swap is saved in the persistent storage or not.
116
+ *
117
+ * @remarks This field itself is not persisted but is instead derived during runtime
118
+ *
119
+ * @internal
120
+ */
121
+ _persisted: boolean;
122
+ /**
123
+ * Event emitter emitting `"swapState"` event when swap's state changes
124
+ */
125
+ readonly events: EventEmitter<{
126
+ swapState: [D["Swap"]];
127
+ }>;
128
+ /**
129
+ * URL of the intermediary (LP) used for this swap, already has the swap service specific path appended
130
+ */
131
+ readonly url?: string;
132
+ /**
133
+ * Smart chain identifier string corresponding to this swap
134
+ */
135
+ readonly chainIdentifier: T["ChainId"];
136
+ /**
137
+ * Whether a swap is an exact input swap
138
+ */
139
+ readonly exactIn: boolean;
140
+ /**
141
+ * A UNIX milliseconds timestamps of when this swap was created
142
+ */
143
+ createdAt: number;
144
+ protected constructor(wrapper: D["Wrapper"], obj: any);
145
+ protected constructor(wrapper: D["Wrapper"], swapInit: ISwapInit);
146
+ /**
147
+ * Called when swap is deserialized to potentially update the version of the data for the swap
148
+ *
149
+ * @internal
150
+ */
151
+ protected abstract upgradeVersion(): void;
152
+ /**
153
+ * Waits till the swap reaches a specific state
154
+ *
155
+ * @param targetState The state to wait for
156
+ * @param type Whether to wait for the state exactly or also to a state with a higher number
157
+ * @param abortSignal Abort signal
158
+ * @internal
159
+ */
160
+ protected waitTillState(targetState: S, type?: "eq" | "gte" | "neq", abortSignal?: AbortSignal): Promise<void>;
161
+ /**
162
+ * Returns a list of steps or transactions required to finish and settle the swap
163
+ *
164
+ * @param options Additional options for executing the swap
165
+ */
166
+ abstract txsExecute(options?: any): Promise<SwapExecutionAction<T>[]>;
167
+ /**
168
+ * Executes the swap with the provided wallet, the exact arguments for this functions differ for various swap
169
+ * types. Check the `execute()` function signature in the respective swap class to see the required arguments.
170
+ *
171
+ * @param args Execution arguments, usually contains a source wallet object, callbacks and options, for exact
172
+ * syntax check the respective swap class.
173
+ *
174
+ * @returns Whether a swap was successfully executed or not, if it wasn't the user can refund or claim manually
175
+ */
176
+ abstract execute(...args: any[]): Promise<boolean>;
177
+ /**
178
+ * This attempts to populate missing fields in the pricing info based on the swap amounts
179
+ *
180
+ * @internal
181
+ */
182
+ protected tryRecomputeSwapPrice(): void;
183
+ /**
184
+ * Re-fetches & revalidates the price data based on the current market prices
185
+ */
186
+ refreshPriceData(): Promise<void>;
187
+ /**
188
+ * Checks if the pricing for the swap is valid, according to max allowed price difference set in the ISwapPrice
189
+ */
190
+ hasValidPrice(): boolean;
191
+ /**
192
+ * Returns pricing info about the swap
193
+ */
194
+ getPriceInfo(): {
195
+ marketPrice?: number;
196
+ swapPrice: number;
197
+ difference: PercentagePPM;
198
+ };
199
+ /**
200
+ * Asserts a given signer is the initiator of this swap
201
+ *
202
+ * @param signer Signer to check with this swap's initiator
203
+ * @throws {Error} When signer's address doesn't match with the swap's initiator one
204
+ * @internal
205
+ */
206
+ protected checkSigner(signer: T["Signer"] | string): void;
207
+ /**
208
+ * Returns an escrow hash of the swap
209
+ *
210
+ * @internal
211
+ */
212
+ abstract _getEscrowHash(): string | null;
213
+ /**
214
+ * Checks if the swap's quote is expired for good (i.e. the swap strictly cannot be initiated anymore)
215
+ * @internal
216
+ */
217
+ abstract _verifyQuoteDefinitelyExpired(): Promise<boolean>;
218
+ /**
219
+ * Checks if the swap's quote is still valid
220
+ * @internal
221
+ */
222
+ abstract _verifyQuoteValid(): Promise<boolean>;
223
+ /**
224
+ * Returns the intiator address of the swap - address that created this swap
225
+ * @internal
226
+ */
227
+ abstract _getInitiator(): string;
228
+ /**
229
+ * Sets this swap as initiated
230
+ * @internal
231
+ */
232
+ _setInitiated(): void;
233
+ /**
234
+ * Returns source address of the swap
235
+ */
236
+ abstract getInputAddress(): string | null;
237
+ /**
238
+ * Returns destination address of the swap
239
+ */
240
+ abstract getOutputAddress(): string | null;
241
+ /**
242
+ * Returns swap input transaction ID on the source chain
243
+ */
244
+ abstract getInputTxId(): string | null;
245
+ /**
246
+ * Returns swap output transaction ID on the destination chain
247
+ */
248
+ abstract getOutputTxId(): string | null;
249
+ /**
250
+ * Returns the ID of the swap, as used in the storage
251
+ */
252
+ abstract getId(): string;
253
+ /**
254
+ * Checks whether there is some action required from the user for this swap - can mean either refundable or claimable
255
+ */
256
+ abstract requiresAction(): boolean;
257
+ /**
258
+ * Returns whether the swap is finished and in its terminal state (this can mean successful, refunded or failed)
259
+ */
260
+ abstract isFinished(): boolean;
261
+ /**
262
+ * Checks whether the swap's quote has definitely expired and cannot be committed anymore, we can remove such swap
263
+ */
264
+ abstract isQuoteExpired(): boolean;
265
+ /**
266
+ * Checks whether the swap's quote is soft expired (this means there is not enough time buffer for it to commit,
267
+ * but it still can happen)
268
+ */
269
+ abstract isQuoteSoftExpired(): boolean;
270
+ /**
271
+ * Returns whether the swap finished successful
272
+ */
273
+ abstract isSuccessful(): boolean;
274
+ /**
275
+ * Returns whether the swap failed (e.g. was refunded)
276
+ */
277
+ abstract isFailed(): boolean;
278
+ /**
279
+ * Returns whether the swap is currently being processed
280
+ */
281
+ abstract isInProgress(): boolean;
282
+ /**
283
+ * Whether a swap was initialized, a swap is considered initialized on first interaction with it, i.e.
284
+ * calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
285
+ * direction. Not initiated swaps are not saved to the persistent storage by default (see
286
+ * {@link SwapperOptions.saveUninitializedSwaps})
287
+ */
288
+ isInitiated(): boolean;
289
+ /**
290
+ * Returns quote expiry in UNIX millis
291
+ */
292
+ getQuoteExpiry(): number;
293
+ /**
294
+ * Returns the type of the swap
295
+ */
296
+ getType(): SwapType;
297
+ /**
298
+ * Returns the direction of the swap
299
+ */
300
+ getDirection(): SwapDirection;
301
+ /**
302
+ * Returns the current state of the swap
303
+ */
304
+ getState(): S;
305
+ /**
306
+ * Returns the current state of the swap along with the human-readable description of the state
307
+ */
308
+ getStateInfo(): SwapStateInfo<S>;
309
+ /**
310
+ * Returns a state-dependent set of actions for the user to execute, or empty array if there is currently
311
+ * no action required from the user to execute.
312
+ */
313
+ abstract getCurrentActions(): Promise<SwapExecutionAction<T>[]>;
314
+ /**
315
+ * Returns output amount of the swap, user receives this much
316
+ */
317
+ abstract getOutput(): TokenAmount;
318
+ /**
319
+ * Returns the output token of the swap
320
+ */
321
+ abstract getOutputToken(): Token<T["ChainId"]>;
322
+ /**
323
+ * Returns input amount of the swap, user needs to pay this much
324
+ */
325
+ abstract getInput(): TokenAmount;
326
+ /**
327
+ * Returns the input token of the swap
328
+ */
329
+ abstract getInputToken(): Token<T["ChainId"]>;
330
+ /**
331
+ * Returns input amount of the swap without the fees (swap fee, network fee)
332
+ */
333
+ abstract getInputWithoutFee(): TokenAmount;
334
+ /**
335
+ * Returns total fee for the swap, the fee is represented in source currency & destination currency, but is
336
+ * paid only once
337
+ */
338
+ abstract getFee(): Fee;
339
+ /**
340
+ * Returns the breakdown of all the fees paid
341
+ */
342
+ abstract getFeeBreakdown(): FeeBreakdown<T["ChainId"]>;
343
+ /**
344
+ * Saves the swap data to the underlying storage, or removes it if it is in a quote expired state
345
+ *
346
+ * @internal
347
+ */
348
+ _save(): Promise<void>;
349
+ /**
350
+ * Saves the swap data and also emits a swap state change
351
+ *
352
+ * @param state Optional state to set before the swap is saved an event emitted
353
+ *
354
+ * @internal
355
+ */
356
+ _saveAndEmit(state?: S): Promise<void>;
357
+ /**
358
+ * Serializes the swap to a JSON stringifiable representation (i.e. no bigints, buffers etc.)
359
+ */
360
+ serialize(): any;
361
+ /**
362
+ * Emits a `swapState` event with the current swap
363
+ *
364
+ * @internal
365
+ */
366
+ _emitEvent(): void;
367
+ /**
368
+ * Synchronizes swap state from chain and/or LP node, usually ran on startup
369
+ *
370
+ * @param save whether to save the new swap state or not
371
+ *
372
+ * @returns {boolean} true if the swap changed, false if the swap hasn't changed
373
+ *
374
+ * @internal
375
+ */
376
+ abstract _sync(save?: boolean): Promise<boolean>;
377
+ /**
378
+ * Runs quick checks on the swap, such as checking the expiry, usually ran periodically every few seconds
379
+ *
380
+ * @param save whether to save the new swap state or not
381
+ *
382
+ * @returns {boolean} true if the swap changed, false if the swap hasn't changed
383
+ *
384
+ * @internal
385
+ */
386
+ abstract _tick(save?: boolean): Promise<boolean>;
387
+ }