@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,157 +1,157 @@
1
- import { SwapType } from "../enums/SwapType";
2
- import { SwapHandlerInfoType } from "./IntermediaryDiscovery";
3
- import { ChainSwapType, LNNodeLiquidity, SwapContract } from "@atomiqlabs/base";
4
- /**
5
- * Services offered by an intermediary
6
- *
7
- * @category LPs
8
- */
9
- export type ServicesType = {
10
- [key in SwapType]?: SwapHandlerInfoType;
11
- };
12
- /**
13
- * Reputation data for an intermediary on a single chain
14
- *
15
- * @category LPs
16
- */
17
- export type SingleChainReputationType = {
18
- [token: string]: {
19
- [key in ChainSwapType]: {
20
- successVolume: bigint;
21
- successCount: bigint;
22
- failVolume: bigint;
23
- failCount: bigint;
24
- coopCloseVolume: bigint;
25
- coopCloseCount: bigint;
26
- };
27
- };
28
- };
29
- /**
30
- * Smart chain liquidity data
31
- *
32
- * @category LPs
33
- */
34
- export type SCLiquidity = {
35
- [token: string]: bigint;
36
- };
37
- /**
38
- * Represents an intermediary (liquidity provider)
39
- *
40
- * @category LPs
41
- */
42
- export declare class Intermediary {
43
- /**
44
- * Base URL where the intermediary is listening for HTTP requests
45
- */
46
- readonly url: string;
47
- /**
48
- * Addresses of the intermediary on smart chains, used for checking the provided signatures
49
- */
50
- readonly addresses: {
51
- [chainIdentifier: string]: string;
52
- };
53
- /**
54
- * Swap protocol services offered by the intermediary
55
- */
56
- readonly services: ServicesType;
57
- /**
58
- * Input/output swap bounds for various swap protocols offered by the intermediary
59
- */
60
- readonly swapBounds: {
61
- [swapType in SwapType]?: {
62
- [chainIdentifier: string]: {
63
- [tokenAddress: string]: {
64
- input: {
65
- min?: bigint;
66
- max?: bigint;
67
- };
68
- output: {
69
- min?: bigint;
70
- max?: bigint;
71
- };
72
- };
73
- };
74
- };
75
- };
76
- /**
77
- * Reputation of the intermediary on different smart chains, this is only fetched
78
- * on-demand when creating a swap where reputation is checked
79
- */
80
- reputation: {
81
- [chainIdentifier: string]: SingleChainReputationType;
82
- };
83
- /**
84
- * Liquidity of the intermediary across different smart chains, this is only fetched
85
- * on-demand when creating a swap where intermediary's liquidity is checked
86
- */
87
- liquidity: {
88
- [chainIdentifier: string]: SCLiquidity;
89
- };
90
- /**
91
- * Data about a lightning network node used by this intermediary, if it offers lightning
92
- * network swaps, this is only fetched on-demand when creating a Bitcoin Lightning -> Smart chain
93
- * swap through the intermediary (which necessitates checking intermediary's channel capacities)
94
- */
95
- lnData?: LNNodeLiquidity;
96
- constructor(url: string, addresses: {
97
- [chainIdentifier: string]: string;
98
- }, services: ServicesType, reputation?: {
99
- [chainIdentifier: string]: SingleChainReputationType;
100
- });
101
- /**
102
- * Returns the input/output swap limit for given swap type, chain and token
103
- *
104
- * @param swapType Swap protocol service to check
105
- * @param chainId Chain identifier of the smart chain to check
106
- * @param tokenAddress Address of the token to check
107
- */
108
- getSwapLimits(swapType: SwapType, chainId: string, tokenAddress: string): {
109
- input: {
110
- min?: bigint;
111
- max?: bigint;
112
- };
113
- output: {
114
- min?: bigint;
115
- max?: bigint;
116
- };
117
- } | undefined;
118
- /**
119
- * Returns tokens supported by the intermediary, optionally constrained to the specific swap types
120
- *
121
- * @param chainIdentifier Chain identifier of the smart chain to check
122
- * @param swapTypesArr An array of swap type services to check
123
- * @private
124
- */
125
- private getSupportedTokens;
126
- /**
127
- * Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token
128
- *
129
- * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
130
- * @param swapContract Swap contract for the requested smart chain
131
- * @param tokens An optional array of tokens to fetch the data for (by default it uses all tokens supported
132
- * by the intermediary)
133
- * @param abortSignal
134
- */
135
- getReputation(chainIdentifier: string, swapContract: SwapContract<any>, tokens?: string[], abortSignal?: AbortSignal): Promise<SingleChainReputationType>;
136
- /**
137
- * Fetches, returns and saves the liquidity of the intermediary for a specific token
138
- *
139
- * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
140
- * @param swapContract Swap contract for the requested smart chain
141
- * @param token Token address of the token to fetch the liquidity for
142
- * @param abortSignal
143
- */
144
- getLiquidity(chainIdentifier: string, swapContract: SwapContract<any>, token: string, abortSignal?: AbortSignal): Promise<bigint>;
145
- /**
146
- * Checks whether the intermediary supports swaps of any tokens on the smart chain
147
- *
148
- * @param chainIdentifier Chain identifier of the smart chain
149
- */
150
- supportsChain(chainIdentifier: string): boolean;
151
- /**
152
- * Returns intermediary's address on a given smart chain
153
- *
154
- * @param chainIdentifier Chain identifier of the smart chain
155
- */
156
- getAddress(chainIdentifier: string): string;
157
- }
1
+ import { SwapType } from "../enums/SwapType";
2
+ import { SwapHandlerInfoType } from "./IntermediaryDiscovery";
3
+ import { ChainSwapType, LNNodeLiquidity, SwapContract } from "@atomiqlabs/base";
4
+ /**
5
+ * Services offered by an intermediary
6
+ *
7
+ * @category LPs
8
+ */
9
+ export type ServicesType = {
10
+ [key in SwapType]?: SwapHandlerInfoType;
11
+ };
12
+ /**
13
+ * Reputation data for an intermediary on a single chain
14
+ *
15
+ * @category LPs
16
+ */
17
+ export type SingleChainReputationType = {
18
+ [token: string]: {
19
+ [key in ChainSwapType]: {
20
+ successVolume: bigint;
21
+ successCount: bigint;
22
+ failVolume: bigint;
23
+ failCount: bigint;
24
+ coopCloseVolume: bigint;
25
+ coopCloseCount: bigint;
26
+ };
27
+ };
28
+ };
29
+ /**
30
+ * Smart chain liquidity data
31
+ *
32
+ * @category LPs
33
+ */
34
+ export type SCLiquidity = {
35
+ [token: string]: bigint;
36
+ };
37
+ /**
38
+ * Represents an intermediary (liquidity provider)
39
+ *
40
+ * @category LPs
41
+ */
42
+ export declare class Intermediary {
43
+ /**
44
+ * Base URL where the intermediary is listening for HTTP requests
45
+ */
46
+ readonly url: string;
47
+ /**
48
+ * Addresses of the intermediary on smart chains, used for checking the provided signatures
49
+ */
50
+ readonly addresses: {
51
+ [chainIdentifier: string]: string;
52
+ };
53
+ /**
54
+ * Swap protocol services offered by the intermediary
55
+ */
56
+ readonly services: ServicesType;
57
+ /**
58
+ * Input/output swap bounds for various swap protocols offered by the intermediary
59
+ */
60
+ readonly swapBounds: {
61
+ [swapType in SwapType]?: {
62
+ [chainIdentifier: string]: {
63
+ [tokenAddress: string]: {
64
+ input: {
65
+ min?: bigint;
66
+ max?: bigint;
67
+ };
68
+ output: {
69
+ min?: bigint;
70
+ max?: bigint;
71
+ };
72
+ };
73
+ };
74
+ };
75
+ };
76
+ /**
77
+ * Reputation of the intermediary on different smart chains, this is only fetched
78
+ * on-demand when creating a swap where reputation is checked
79
+ */
80
+ reputation: {
81
+ [chainIdentifier: string]: SingleChainReputationType;
82
+ };
83
+ /**
84
+ * Liquidity of the intermediary across different smart chains, this is only fetched
85
+ * on-demand when creating a swap where intermediary's liquidity is checked
86
+ */
87
+ liquidity: {
88
+ [chainIdentifier: string]: SCLiquidity;
89
+ };
90
+ /**
91
+ * Data about a lightning network node used by this intermediary, if it offers lightning
92
+ * network swaps, this is only fetched on-demand when creating a Bitcoin Lightning -> Smart chain
93
+ * swap through the intermediary (which necessitates checking intermediary's channel capacities)
94
+ */
95
+ lnData?: LNNodeLiquidity;
96
+ constructor(url: string, addresses: {
97
+ [chainIdentifier: string]: string;
98
+ }, services: ServicesType, reputation?: {
99
+ [chainIdentifier: string]: SingleChainReputationType;
100
+ });
101
+ /**
102
+ * Returns the input/output swap limit for given swap type, chain and token
103
+ *
104
+ * @param swapType Swap protocol service to check
105
+ * @param chainId Chain identifier of the smart chain to check
106
+ * @param tokenAddress Address of the token to check
107
+ */
108
+ getSwapLimits(swapType: SwapType, chainId: string, tokenAddress: string): {
109
+ input: {
110
+ min?: bigint;
111
+ max?: bigint;
112
+ };
113
+ output: {
114
+ min?: bigint;
115
+ max?: bigint;
116
+ };
117
+ } | undefined;
118
+ /**
119
+ * Returns tokens supported by the intermediary, optionally constrained to the specific swap types
120
+ *
121
+ * @param chainIdentifier Chain identifier of the smart chain to check
122
+ * @param swapTypesArr An array of swap type services to check
123
+ * @private
124
+ */
125
+ private getSupportedTokens;
126
+ /**
127
+ * Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token
128
+ *
129
+ * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
130
+ * @param swapContract Swap contract for the requested smart chain
131
+ * @param tokens An optional array of tokens to fetch the data for (by default it uses all tokens supported
132
+ * by the intermediary)
133
+ * @param abortSignal
134
+ */
135
+ getReputation(chainIdentifier: string, swapContract: SwapContract<any>, tokens?: string[], abortSignal?: AbortSignal): Promise<SingleChainReputationType>;
136
+ /**
137
+ * Fetches, returns and saves the liquidity of the intermediary for a specific token
138
+ *
139
+ * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
140
+ * @param swapContract Swap contract for the requested smart chain
141
+ * @param token Token address of the token to fetch the liquidity for
142
+ * @param abortSignal
143
+ */
144
+ getLiquidity(chainIdentifier: string, swapContract: SwapContract<any>, token: string, abortSignal?: AbortSignal): Promise<bigint>;
145
+ /**
146
+ * Checks whether the intermediary supports swaps of any tokens on the smart chain
147
+ *
148
+ * @param chainIdentifier Chain identifier of the smart chain
149
+ */
150
+ supportsChain(chainIdentifier: string): boolean;
151
+ /**
152
+ * Returns intermediary's address on a given smart chain
153
+ *
154
+ * @param chainIdentifier Chain identifier of the smart chain
155
+ */
156
+ getAddress(chainIdentifier: string): string;
157
+ }
@@ -1,142 +1,142 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Intermediary = void 0;
4
- const SwapType_1 = require("../enums/SwapType");
5
- const RetryUtils_1 = require("../utils/RetryUtils");
6
- /**
7
- * Represents an intermediary (liquidity provider)
8
- *
9
- * @category LPs
10
- */
11
- class Intermediary {
12
- constructor(url, addresses, services, reputation = {}) {
13
- /**
14
- * Reputation of the intermediary on different smart chains, this is only fetched
15
- * on-demand when creating a swap where reputation is checked
16
- */
17
- this.reputation = {};
18
- /**
19
- * Liquidity of the intermediary across different smart chains, this is only fetched
20
- * on-demand when creating a swap where intermediary's liquidity is checked
21
- */
22
- this.liquidity = {};
23
- this.url = url;
24
- this.addresses = addresses;
25
- this.services = services;
26
- this.reputation = reputation;
27
- this.swapBounds = {};
28
- for (let _swapType in this.services) {
29
- const swapType = parseInt(_swapType);
30
- const serviceInfo = this.services[swapType];
31
- const btcBounds = { min: BigInt(serviceInfo.min), max: BigInt(serviceInfo.max) };
32
- const isSend = swapType === SwapType_1.SwapType.TO_BTC || swapType === SwapType_1.SwapType.TO_BTCLN;
33
- this.swapBounds[swapType] = {};
34
- for (let chainIdentifier in serviceInfo.chainTokens) {
35
- this.swapBounds[swapType][chainIdentifier] = {};
36
- for (let tokenAddress of serviceInfo.chainTokens[chainIdentifier]) {
37
- this.swapBounds[swapType][chainIdentifier][tokenAddress] = {
38
- input: isSend ? {} : btcBounds,
39
- output: !isSend ? {} : btcBounds,
40
- };
41
- }
42
- }
43
- }
44
- }
45
- /**
46
- * Returns the input/output swap limit for given swap type, chain and token
47
- *
48
- * @param swapType Swap protocol service to check
49
- * @param chainId Chain identifier of the smart chain to check
50
- * @param tokenAddress Address of the token to check
51
- */
52
- getSwapLimits(swapType, chainId, tokenAddress) {
53
- return this.swapBounds[swapType]?.[chainId]?.[tokenAddress];
54
- }
55
- /**
56
- * Returns tokens supported by the intermediary, optionally constrained to the specific swap types
57
- *
58
- * @param chainIdentifier Chain identifier of the smart chain to check
59
- * @param swapTypesArr An array of swap type services to check
60
- * @private
61
- */
62
- getSupportedTokens(chainIdentifier, swapTypesArr = [
63
- SwapType_1.SwapType.TO_BTC,
64
- SwapType_1.SwapType.TO_BTCLN,
65
- SwapType_1.SwapType.FROM_BTC,
66
- SwapType_1.SwapType.FROM_BTCLN,
67
- SwapType_1.SwapType.SPV_VAULT_FROM_BTC,
68
- SwapType_1.SwapType.FROM_BTCLN_AUTO
69
- ]) {
70
- const swapTypes = new Set(swapTypesArr);
71
- let tokens = new Set();
72
- swapTypes.forEach((swapType) => {
73
- const supportedTokens = this.services[swapType]?.chainTokens?.[chainIdentifier];
74
- if (supportedTokens != null)
75
- supportedTokens.forEach(token => tokens.add(token));
76
- });
77
- return tokens;
78
- }
79
- /**
80
- * Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token
81
- *
82
- * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
83
- * @param swapContract Swap contract for the requested smart chain
84
- * @param tokens An optional array of tokens to fetch the data for (by default it uses all tokens supported
85
- * by the intermediary)
86
- * @param abortSignal
87
- */
88
- async getReputation(chainIdentifier, swapContract, tokens, abortSignal) {
89
- const checkReputationTokens = tokens == null ?
90
- this.getSupportedTokens(chainIdentifier, [SwapType_1.SwapType.TO_BTC, SwapType_1.SwapType.TO_BTCLN]) :
91
- new Set(tokens);
92
- const promises = [];
93
- const reputation = {};
94
- for (let token of checkReputationTokens) {
95
- promises.push((0, RetryUtils_1.tryWithRetries)(() => swapContract.getIntermediaryReputation(this.getAddress(chainIdentifier), token), undefined, undefined, abortSignal).then(result => {
96
- if (result != null)
97
- reputation[token] = result;
98
- }));
99
- }
100
- await Promise.all(promises);
101
- this.reputation ??= {};
102
- this.reputation[chainIdentifier] ??= {};
103
- for (let key in reputation) {
104
- this.reputation[chainIdentifier][key] = reputation[key];
105
- }
106
- return reputation;
107
- }
108
- /**
109
- * Fetches, returns and saves the liquidity of the intermediary for a specific token
110
- *
111
- * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
112
- * @param swapContract Swap contract for the requested smart chain
113
- * @param token Token address of the token to fetch the liquidity for
114
- * @param abortSignal
115
- */
116
- async getLiquidity(chainIdentifier, swapContract, token, abortSignal) {
117
- const result = await (0, RetryUtils_1.tryWithRetries)(() => swapContract.getBalance(this.getAddress(chainIdentifier), token, true), undefined, undefined, abortSignal);
118
- this.liquidity ??= {};
119
- this.liquidity[chainIdentifier] ??= {};
120
- this.liquidity[chainIdentifier][token] = result;
121
- return result;
122
- }
123
- /**
124
- * Checks whether the intermediary supports swaps of any tokens on the smart chain
125
- *
126
- * @param chainIdentifier Chain identifier of the smart chain
127
- */
128
- supportsChain(chainIdentifier) {
129
- if (this.addresses[chainIdentifier] == null)
130
- return false;
131
- return this.getSupportedTokens(chainIdentifier).size !== 0;
132
- }
133
- /**
134
- * Returns intermediary's address on a given smart chain
135
- *
136
- * @param chainIdentifier Chain identifier of the smart chain
137
- */
138
- getAddress(chainIdentifier) {
139
- return this.addresses[chainIdentifier];
140
- }
141
- }
142
- exports.Intermediary = Intermediary;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Intermediary = void 0;
4
+ const SwapType_1 = require("../enums/SwapType");
5
+ const RetryUtils_1 = require("../utils/RetryUtils");
6
+ /**
7
+ * Represents an intermediary (liquidity provider)
8
+ *
9
+ * @category LPs
10
+ */
11
+ class Intermediary {
12
+ constructor(url, addresses, services, reputation = {}) {
13
+ /**
14
+ * Reputation of the intermediary on different smart chains, this is only fetched
15
+ * on-demand when creating a swap where reputation is checked
16
+ */
17
+ this.reputation = {};
18
+ /**
19
+ * Liquidity of the intermediary across different smart chains, this is only fetched
20
+ * on-demand when creating a swap where intermediary's liquidity is checked
21
+ */
22
+ this.liquidity = {};
23
+ this.url = url;
24
+ this.addresses = addresses;
25
+ this.services = services;
26
+ this.reputation = reputation;
27
+ this.swapBounds = {};
28
+ for (let _swapType in this.services) {
29
+ const swapType = parseInt(_swapType);
30
+ const serviceInfo = this.services[swapType];
31
+ const btcBounds = { min: BigInt(serviceInfo.min), max: BigInt(serviceInfo.max) };
32
+ const isSend = swapType === SwapType_1.SwapType.TO_BTC || swapType === SwapType_1.SwapType.TO_BTCLN;
33
+ this.swapBounds[swapType] = {};
34
+ for (let chainIdentifier in serviceInfo.chainTokens) {
35
+ this.swapBounds[swapType][chainIdentifier] = {};
36
+ for (let tokenAddress of serviceInfo.chainTokens[chainIdentifier]) {
37
+ this.swapBounds[swapType][chainIdentifier][tokenAddress] = {
38
+ input: isSend ? {} : btcBounds,
39
+ output: !isSend ? {} : btcBounds,
40
+ };
41
+ }
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Returns the input/output swap limit for given swap type, chain and token
47
+ *
48
+ * @param swapType Swap protocol service to check
49
+ * @param chainId Chain identifier of the smart chain to check
50
+ * @param tokenAddress Address of the token to check
51
+ */
52
+ getSwapLimits(swapType, chainId, tokenAddress) {
53
+ return this.swapBounds[swapType]?.[chainId]?.[tokenAddress];
54
+ }
55
+ /**
56
+ * Returns tokens supported by the intermediary, optionally constrained to the specific swap types
57
+ *
58
+ * @param chainIdentifier Chain identifier of the smart chain to check
59
+ * @param swapTypesArr An array of swap type services to check
60
+ * @private
61
+ */
62
+ getSupportedTokens(chainIdentifier, swapTypesArr = [
63
+ SwapType_1.SwapType.TO_BTC,
64
+ SwapType_1.SwapType.TO_BTCLN,
65
+ SwapType_1.SwapType.FROM_BTC,
66
+ SwapType_1.SwapType.FROM_BTCLN,
67
+ SwapType_1.SwapType.SPV_VAULT_FROM_BTC,
68
+ SwapType_1.SwapType.FROM_BTCLN_AUTO
69
+ ]) {
70
+ const swapTypes = new Set(swapTypesArr);
71
+ let tokens = new Set();
72
+ swapTypes.forEach((swapType) => {
73
+ const supportedTokens = this.services[swapType]?.chainTokens?.[chainIdentifier];
74
+ if (supportedTokens != null)
75
+ supportedTokens.forEach(token => tokens.add(token));
76
+ });
77
+ return tokens;
78
+ }
79
+ /**
80
+ * Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token
81
+ *
82
+ * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
83
+ * @param swapContract Swap contract for the requested smart chain
84
+ * @param tokens An optional array of tokens to fetch the data for (by default it uses all tokens supported
85
+ * by the intermediary)
86
+ * @param abortSignal
87
+ */
88
+ async getReputation(chainIdentifier, swapContract, tokens, abortSignal) {
89
+ const checkReputationTokens = tokens == null ?
90
+ this.getSupportedTokens(chainIdentifier, [SwapType_1.SwapType.TO_BTC, SwapType_1.SwapType.TO_BTCLN]) :
91
+ new Set(tokens);
92
+ const promises = [];
93
+ const reputation = {};
94
+ for (let token of checkReputationTokens) {
95
+ promises.push((0, RetryUtils_1.tryWithRetries)(() => swapContract.getIntermediaryReputation(this.getAddress(chainIdentifier), token), undefined, undefined, abortSignal).then(result => {
96
+ if (result != null)
97
+ reputation[token] = result;
98
+ }));
99
+ }
100
+ await Promise.all(promises);
101
+ this.reputation ??= {};
102
+ this.reputation[chainIdentifier] ??= {};
103
+ for (let key in reputation) {
104
+ this.reputation[chainIdentifier][key] = reputation[key];
105
+ }
106
+ return reputation;
107
+ }
108
+ /**
109
+ * Fetches, returns and saves the liquidity of the intermediary for a specific token
110
+ *
111
+ * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
112
+ * @param swapContract Swap contract for the requested smart chain
113
+ * @param token Token address of the token to fetch the liquidity for
114
+ * @param abortSignal
115
+ */
116
+ async getLiquidity(chainIdentifier, swapContract, token, abortSignal) {
117
+ const result = await (0, RetryUtils_1.tryWithRetries)(() => swapContract.getBalance(this.getAddress(chainIdentifier), token, true), undefined, undefined, abortSignal);
118
+ this.liquidity ??= {};
119
+ this.liquidity[chainIdentifier] ??= {};
120
+ this.liquidity[chainIdentifier][token] = result;
121
+ return result;
122
+ }
123
+ /**
124
+ * Checks whether the intermediary supports swaps of any tokens on the smart chain
125
+ *
126
+ * @param chainIdentifier Chain identifier of the smart chain
127
+ */
128
+ supportsChain(chainIdentifier) {
129
+ if (this.addresses[chainIdentifier] == null)
130
+ return false;
131
+ return this.getSupportedTokens(chainIdentifier).size !== 0;
132
+ }
133
+ /**
134
+ * Returns intermediary's address on a given smart chain
135
+ *
136
+ * @param chainIdentifier Chain identifier of the smart chain
137
+ */
138
+ getAddress(chainIdentifier) {
139
+ return this.addresses[chainIdentifier];
140
+ }
141
+ }
142
+ exports.Intermediary = Intermediary;