@atomiqlabs/sdk 8.1.8 → 8.3.5

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 (261) hide show
  1. package/dist/bitcoin/coinselect2/utils.d.ts +6 -0
  2. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
  3. package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
  4. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
  5. package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
  6. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
  7. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
  8. package/dist/enums/FeeType.d.ts +8 -1
  9. package/dist/enums/FeeType.js +8 -1
  10. package/dist/enums/SwapAmountType.d.ts +7 -0
  11. package/dist/enums/SwapAmountType.js +7 -0
  12. package/dist/enums/SwapDirection.d.ts +7 -0
  13. package/dist/enums/SwapDirection.js +7 -0
  14. package/dist/enums/SwapType.d.ts +62 -1
  15. package/dist/enums/SwapType.js +62 -1
  16. package/dist/errors/IntermediaryError.d.ts +4 -0
  17. package/dist/errors/IntermediaryError.js +1 -0
  18. package/dist/errors/RequestError.d.ts +15 -1
  19. package/dist/errors/RequestError.js +8 -0
  20. package/dist/errors/UserError.d.ts +1 -0
  21. package/dist/errors/UserError.js +1 -0
  22. package/dist/index.d.ts +5 -5
  23. package/dist/index.js +7 -6
  24. package/dist/intermediaries/Intermediary.d.ts +61 -14
  25. package/dist/intermediaries/Intermediary.js +38 -11
  26. package/dist/intermediaries/IntermediaryDiscovery.d.ts +62 -29
  27. package/dist/intermediaries/IntermediaryDiscovery.js +39 -24
  28. package/dist/prices/RedundantSwapPrice.d.ts +26 -5
  29. package/dist/prices/RedundantSwapPrice.js +22 -2
  30. package/dist/prices/SingleSwapPrice.d.ts +10 -7
  31. package/dist/prices/SingleSwapPrice.js +11 -8
  32. package/dist/prices/SwapPriceWithChain.d.ts +56 -19
  33. package/dist/prices/SwapPriceWithChain.js +62 -25
  34. package/dist/prices/abstract/IPriceProvider.d.ts +4 -4
  35. package/dist/prices/abstract/IPriceProvider.js +1 -1
  36. package/dist/prices/abstract/ISwapPrice.d.ts +95 -46
  37. package/dist/prices/abstract/ISwapPrice.js +104 -56
  38. package/dist/prices/providers/BinancePriceProvider.d.ts +8 -1
  39. package/dist/prices/providers/BinancePriceProvider.js +8 -1
  40. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +7 -1
  41. package/dist/prices/providers/CoinGeckoPriceProvider.js +7 -1
  42. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +7 -1
  43. package/dist/prices/providers/CoinPaprikaPriceProvider.js +7 -1
  44. package/dist/prices/providers/CustomPriceProvider.d.ts +12 -1
  45. package/dist/prices/providers/CustomPriceProvider.js +12 -1
  46. package/dist/prices/providers/KrakenPriceProvider.d.ts +10 -1
  47. package/dist/prices/providers/KrakenPriceProvider.js +10 -1
  48. package/dist/prices/providers/OKXPriceProvider.d.ts +7 -1
  49. package/dist/prices/providers/OKXPriceProvider.js +7 -1
  50. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
  51. package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
  52. package/dist/storage/IUnifiedStorage.d.ts +19 -7
  53. package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
  54. package/dist/storage/UnifiedSwapStorage.js +29 -1
  55. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
  56. package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
  57. package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
  58. package/dist/storage-browser/LocalStorageManager.js +25 -1
  59. package/dist/swapper/Swapper.d.ts +380 -226
  60. package/dist/swapper/Swapper.js +383 -349
  61. package/dist/swapper/SwapperFactory.d.ts +66 -18
  62. package/dist/swapper/SwapperFactory.js +24 -3
  63. package/dist/swapper/SwapperUtils.d.ts +75 -28
  64. package/dist/swapper/SwapperUtils.js +107 -60
  65. package/dist/swapper/SwapperWithChain.d.ts +286 -91
  66. package/dist/swapper/SwapperWithChain.js +218 -64
  67. package/dist/swapper/SwapperWithSigner.d.ts +229 -80
  68. package/dist/swapper/SwapperWithSigner.js +190 -44
  69. package/dist/swaps/IAddressSwap.d.ts +12 -3
  70. package/dist/swaps/IAddressSwap.js +3 -2
  71. package/dist/swaps/IBTCWalletSwap.d.ts +26 -8
  72. package/dist/swaps/IBTCWalletSwap.js +3 -2
  73. package/dist/swaps/IClaimableSwap.d.ts +38 -6
  74. package/dist/swaps/IClaimableSwap.js +3 -2
  75. package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
  76. package/dist/swaps/IRefundableSwap.d.ts +31 -5
  77. package/dist/swaps/IRefundableSwap.js +3 -2
  78. package/dist/swaps/ISwap.d.ts +162 -24
  79. package/dist/swaps/ISwap.js +92 -35
  80. package/dist/swaps/ISwapWithGasDrop.d.ts +8 -2
  81. package/dist/swaps/ISwapWithGasDrop.js +2 -1
  82. package/dist/swaps/ISwapWrapper.d.ts +161 -52
  83. package/dist/swaps/ISwapWrapper.js +131 -73
  84. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +51 -6
  85. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
  86. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
  87. package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
  88. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
  89. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
  90. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
  91. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
  92. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +97 -28
  93. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +91 -27
  94. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
  95. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
  96. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +278 -60
  97. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +519 -241
  98. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +77 -26
  99. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +132 -50
  100. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +313 -52
  101. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +544 -194
  102. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
  103. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
  104. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +222 -55
  105. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +462 -244
  106. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
  107. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
  108. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +195 -58
  109. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +324 -191
  110. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
  111. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
  112. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +61 -20
  113. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +75 -32
  114. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
  115. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
  116. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +37 -14
  117. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +66 -20
  118. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
  119. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
  120. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +350 -88
  121. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +482 -215
  122. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
  123. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +247 -124
  124. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +148 -20
  125. package/dist/swaps/trusted/ln/LnForGasSwap.js +175 -45
  126. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
  127. package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
  128. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +202 -49
  129. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +232 -80
  130. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
  131. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
  132. package/dist/types/AmountData.d.ts +2 -1
  133. package/dist/types/CustomPriceFunction.d.ts +8 -2
  134. package/dist/types/PriceInfoType.d.ts +4 -4
  135. package/dist/types/PriceInfoType.js +3 -3
  136. package/dist/types/SwapExecutionAction.d.ts +85 -4
  137. package/dist/types/SwapWithSigner.d.ts +5 -2
  138. package/dist/types/SwapWithSigner.js +5 -2
  139. package/dist/types/Token.d.ts +11 -5
  140. package/dist/types/Token.js +6 -3
  141. package/dist/types/TokenAmount.d.ts +3 -0
  142. package/dist/types/TokenAmount.js +2 -0
  143. package/dist/types/fees/Fee.d.ts +3 -2
  144. package/dist/types/fees/FeeBreakdown.d.ts +3 -2
  145. package/dist/types/fees/PercentagePPM.d.ts +4 -2
  146. package/dist/types/fees/PercentagePPM.js +2 -1
  147. package/dist/types/lnurl/LNURLPay.d.ts +20 -12
  148. package/dist/types/lnurl/LNURLPay.js +8 -4
  149. package/dist/types/lnurl/LNURLWithdraw.d.ts +17 -10
  150. package/dist/types/lnurl/LNURLWithdraw.js +8 -4
  151. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -0
  152. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
  153. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
  154. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +4 -2
  155. package/dist/utils/BitcoinUtils.d.ts +1 -0
  156. package/dist/utils/BitcoinUtils.js +5 -1
  157. package/dist/utils/SwapUtils.d.ts +58 -1
  158. package/dist/utils/SwapUtils.js +55 -1
  159. package/dist/utils/TokenUtils.d.ts +10 -2
  160. package/dist/utils/TokenUtils.js +12 -4
  161. package/package.json +3 -3
  162. package/src/bitcoin/coinselect2/utils.ts +6 -0
  163. package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
  164. package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
  165. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
  166. package/src/enums/FeeType.ts +8 -1
  167. package/src/enums/SwapAmountType.ts +7 -0
  168. package/src/enums/SwapDirection.ts +7 -0
  169. package/src/enums/SwapType.ts +62 -2
  170. package/src/errors/IntermediaryError.ts +4 -0
  171. package/src/errors/RequestError.ts +15 -1
  172. package/src/errors/UserError.ts +1 -0
  173. package/src/index.ts +12 -5
  174. package/src/intermediaries/Intermediary.ts +61 -14
  175. package/src/intermediaries/IntermediaryDiscovery.ts +69 -34
  176. package/src/prices/RedundantSwapPrice.ts +26 -6
  177. package/src/prices/SingleSwapPrice.ts +11 -8
  178. package/src/prices/SwapPriceWithChain.ts +63 -26
  179. package/src/prices/abstract/IPriceProvider.ts +4 -4
  180. package/src/prices/abstract/ISwapPrice.ts +115 -66
  181. package/src/prices/providers/BinancePriceProvider.ts +8 -1
  182. package/src/prices/providers/CoinGeckoPriceProvider.ts +7 -1
  183. package/src/prices/providers/CoinPaprikaPriceProvider.ts +7 -1
  184. package/src/prices/providers/CustomPriceProvider.ts +12 -1
  185. package/src/prices/providers/KrakenPriceProvider.ts +10 -1
  186. package/src/prices/providers/OKXPriceProvider.ts +7 -1
  187. package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
  188. package/src/storage/IUnifiedStorage.ts +19 -7
  189. package/src/storage/UnifiedSwapStorage.ts +33 -3
  190. package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
  191. package/src/storage-browser/LocalStorageManager.ts +25 -1
  192. package/src/swapper/Swapper.ts +599 -390
  193. package/src/swapper/SwapperFactory.ts +73 -24
  194. package/src/swapper/SwapperUtils.ts +107 -60
  195. package/src/swapper/SwapperWithChain.ts +320 -81
  196. package/src/swapper/SwapperWithSigner.ts +263 -56
  197. package/src/swaps/IAddressSwap.ts +13 -3
  198. package/src/swaps/IBTCWalletSwap.ts +26 -10
  199. package/src/swaps/IClaimableSwap.ts +41 -6
  200. package/src/swaps/IClaimableSwapWrapper.ts +11 -2
  201. package/src/swaps/IRefundableSwap.ts +34 -5
  202. package/src/swaps/ISwap.ts +224 -85
  203. package/src/swaps/ISwapWithGasDrop.ts +8 -2
  204. package/src/swaps/ISwapWrapper.ts +216 -98
  205. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +64 -18
  206. package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
  207. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
  208. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
  209. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +123 -50
  210. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
  211. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +562 -258
  212. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +156 -62
  213. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +592 -227
  214. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
  215. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +483 -245
  216. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
  217. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +350 -195
  218. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
  219. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +87 -40
  220. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
  221. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +89 -34
  222. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
  223. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +556 -259
  224. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +292 -148
  225. package/src/swaps/trusted/ln/LnForGasSwap.ts +186 -47
  226. package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
  227. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +262 -88
  228. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
  229. package/src/types/AmountData.ts +2 -1
  230. package/src/types/CustomPriceFunction.ts +8 -2
  231. package/src/types/PriceInfoType.ts +4 -4
  232. package/src/types/SwapExecutionAction.ts +97 -5
  233. package/src/types/SwapWithSigner.ts +8 -4
  234. package/src/types/Token.ts +12 -5
  235. package/src/types/TokenAmount.ts +3 -0
  236. package/src/types/fees/Fee.ts +3 -2
  237. package/src/types/fees/FeeBreakdown.ts +3 -2
  238. package/src/types/fees/PercentagePPM.ts +4 -2
  239. package/src/types/lnurl/LNURLPay.ts +20 -12
  240. package/src/types/lnurl/LNURLWithdraw.ts +17 -10
  241. package/src/types/wallets/LightningInvoiceCreateService.ts +30 -0
  242. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
  243. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +4 -2
  244. package/src/utils/BitcoinUtils.ts +5 -0
  245. package/src/utils/SwapUtils.ts +63 -1
  246. package/src/utils/TokenUtils.ts +12 -4
  247. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
  248. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
  249. package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
  250. package/dist/bitcoin/LightningNetworkApi.js +0 -2
  251. package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
  252. package/dist/bitcoin/mempool/MempoolApi.js +0 -311
  253. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
  254. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
  255. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
  256. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
  257. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
  258. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
  259. package/dist/errors/PaymentAuthError.d.ts +0 -11
  260. package/dist/errors/PaymentAuthError.js +0 -23
  261. package/src/errors/PaymentAuthError.ts +0 -26
@@ -6,15 +6,16 @@ import {identifyAddressType, BitcoinWallet} from "./BitcoinWallet";
6
6
  import {BitcoinRpcWithAddressIndex} from "@atomiqlabs/base";
7
7
 
8
8
  /**
9
- * Bitcoin wallet implementation for single-address scenarios
9
+ * Bitcoin wallet implementation deriving a single address from a WIF encoded private key
10
+ *
10
11
  * @category Bitcoin
11
12
  */
12
13
  export class SingleAddressBitcoinWallet extends BitcoinWallet {
13
14
 
14
- readonly privKey?: Uint8Array;
15
- readonly pubkey: Uint8Array;
16
- readonly address: string;
17
- readonly addressType: CoinselectAddressTypes;
15
+ protected readonly privKey?: Uint8Array;
16
+ protected readonly pubkey: Uint8Array;
17
+ protected readonly address: string;
18
+ protected readonly addressType: CoinselectAddressTypes;
18
19
 
19
20
  constructor(
20
21
  mempoolApi: BitcoinRpcWithAddressIndex<any>,
@@ -41,12 +42,20 @@ export class SingleAddressBitcoinWallet extends BitcoinWallet {
41
42
  this.addressType = identifyAddressType(this.address, network);
42
43
  }
43
44
 
44
- protected toBitcoinWalletAccounts(): {pubkey: string, address: string, addressType: CoinselectAddressTypes}[] {
45
+ /**
46
+ * Returns all the wallet addresses controlled by the wallet
47
+ *
48
+ * @protected
49
+ */
50
+ protected toBitcoinWalletAccounts(): [{pubkey: string, address: string, addressType: CoinselectAddressTypes}] {
45
51
  return [{
46
52
  pubkey: Buffer.from(this.pubkey).toString("hex"), address: this.address, addressType: this.addressType
47
53
  }];
48
54
  }
49
55
 
56
+ /**
57
+ * @inheritDoc
58
+ */
50
59
  async sendTransaction(address: string, amount: bigint, feeRate?: number): Promise<string> {
51
60
  if(!this.privKey) throw new Error("Not supported.");
52
61
  const {psbt, fee} = await super._getPsbt(this.toBitcoinWalletAccounts(), address, Number(amount), feeRate);
@@ -57,6 +66,9 @@ export class SingleAddressBitcoinWallet extends BitcoinWallet {
57
66
  return await super._sendTransaction(txHex);
58
67
  }
59
68
 
69
+ /**
70
+ * @inheritDoc
71
+ */
60
72
  async fundPsbt(inputPsbt: Transaction, feeRate?: number): Promise<Transaction> {
61
73
  const {psbt} = await super._fundPsbt(this.toBitcoinWalletAccounts(), inputPsbt, feeRate);
62
74
  if(psbt==null) {
@@ -65,6 +77,9 @@ export class SingleAddressBitcoinWallet extends BitcoinWallet {
65
77
  return psbt;
66
78
  }
67
79
 
80
+ /**
81
+ * @inheritDoc
82
+ */
68
83
  async signPsbt(psbt: Transaction, signInputs: number[]): Promise<Transaction> {
69
84
  if(!this.privKey) throw new Error("Not supported.");
70
85
  for(let signInput of signInputs) {
@@ -73,19 +88,32 @@ export class SingleAddressBitcoinWallet extends BitcoinWallet {
73
88
  return psbt;
74
89
  }
75
90
 
91
+ /**
92
+ * @inheritDoc
93
+ */
76
94
  async getTransactionFee(address: string, amount: bigint, feeRate?: number): Promise<number> {
77
95
  const {fee} = await super._getPsbt(this.toBitcoinWalletAccounts(), address, Number(amount), feeRate);
78
96
  return fee;
79
97
  }
80
98
 
99
+ /**
100
+ * @inheritDoc
101
+ */
81
102
  async getFundedPsbtFee(basePsbt: Transaction, feeRate?: number): Promise<number> {
82
103
  const {fee} = await super._fundPsbt(this.toBitcoinWalletAccounts(), basePsbt, feeRate);
83
104
  return fee;
84
105
  }
85
106
 
107
+ /**
108
+ * @inheritDoc
109
+ */
86
110
  getReceiveAddress(): string {
87
111
  return this.address;
88
112
  }
113
+
114
+ /**
115
+ * @inheritDoc
116
+ */
89
117
  getBalance(): Promise<{
90
118
  confirmedBalance: bigint,
91
119
  unconfirmedBalance: bigint
@@ -93,6 +121,9 @@ export class SingleAddressBitcoinWallet extends BitcoinWallet {
93
121
  return this._getBalance(this.address);
94
122
  }
95
123
 
124
+ /**
125
+ * @inheritDoc
126
+ */
96
127
  getSpendableBalance(psbt?: Transaction, feeRate?: number): Promise<{
97
128
  balance: bigint,
98
129
  feeRate: number,
@@ -101,6 +132,11 @@ export class SingleAddressBitcoinWallet extends BitcoinWallet {
101
132
  return this._getSpendableBalance([{address: this.address, addressType: this.addressType}], psbt, feeRate);
102
133
  }
103
134
 
135
+ /**
136
+ * Generates a new random private key WIF that can be used to instantiate the bitcoin wallet instance
137
+ *
138
+ * @returns A WIF encoded bitcoin private key
139
+ */
104
140
  static generateRandomPrivateKey(network?: BTC_NETWORK): string {
105
141
  return WIF(network).encode(randomPrivateKeyBytes());
106
142
  }
@@ -1,9 +1,16 @@
1
1
 
2
2
  /**
3
3
  * Enum representing types of fees in a swap
4
- * @category Pricing and LPs
4
+ *
5
+ * @category Pricing
5
6
  */
6
7
  export enum FeeType {
8
+ /**
9
+ * Swap fee taken by the LP
10
+ */
7
11
  SWAP = 0,
12
+ /**
13
+ * Network fee to cover the transactions on the destination (output) network
14
+ */
8
15
  NETWORK_OUTPUT = 1
9
16
  }
@@ -1,9 +1,16 @@
1
1
 
2
2
  /**
3
3
  * Enum representing whether the swap amount is exact input or exact output
4
+ *
4
5
  * @category Core
5
6
  */
6
7
  export enum SwapAmountType {
8
+ /**
9
+ * Swap amount specified in the input token
10
+ */
7
11
  EXACT_IN = 1,
12
+ /**
13
+ * Swap amount specified in the output token
14
+ */
8
15
  EXACT_OUT = 0
9
16
  }
@@ -1,9 +1,16 @@
1
1
 
2
2
  /**
3
3
  * Enum representing the direction of a swap (from or to Bitcoin)
4
+ *
4
5
  * @category Core
5
6
  */
6
7
  export enum SwapDirection {
8
+ /**
9
+ * Swaps from bitcoin to smart chains (Solana, Starknet, EVM, etc.)
10
+ */
7
11
  FROM_BTC=0,
12
+ /**
13
+ * Swaps from smart chains (Solana, Starknet, EVM, etc.) to bitcoin
14
+ */
8
15
  TO_BTC=1
9
16
  }
@@ -1,15 +1,75 @@
1
-
2
1
  /**
3
- * Enum representing different types of swaps
2
+ * Enum representing different types of swap protocols used by atomiq.
3
+ *
4
4
  * @category Core
5
5
  */
6
6
  export enum SwapType {
7
+ /**
8
+ * Legacy escrow (PrTLC) based swap for Bitcoin -> Smart chains, requires manual initiation of the swap
9
+ * on the destination chain.
10
+ *
11
+ * Handled by {@link FromBTCWrapper} & {@link FromBTCSwap}.
12
+ *
13
+ * Legacy swaps are only used on Solana!
14
+ */
7
15
  FROM_BTC=0,
16
+ /**
17
+ * Legacy escrow (HTLC) based swap for Bitcoin Lightning -> Smart chains, requires manual settlement of the swap on the
18
+ * destination network once the lightning network payment is received by the LP
19
+ *
20
+ * Handled by {@link FromBTCLNWrapper} & {@link FromBTCLNSwap}.
21
+ *
22
+ * Legacy swaps are only used on Solana!
23
+ */
8
24
  FROM_BTCLN=1,
25
+ /**
26
+ * Escrow based (PrTLC) swap for Smart chains -> Bitcoin
27
+ *
28
+ * Handled by {@link ToBTCWrapper} & {@link ToBTCSwap}.
29
+ */
9
30
  TO_BTC=2,
31
+ /**
32
+ * Escrow based (HTLC) swap for Smart chains -> Bitcoin Lightning
33
+ *
34
+ * Handled by {@link ToBTCLNWrapper} & {@link ToBTCLNSwap}.
35
+ */
10
36
  TO_BTCLN=3,
37
+ /**
38
+ * Trusted swap for Bitcoin -> Smart chains, to be used for minor amounts to get gas tokens on the destination
39
+ * chain, which is only needed for Solana, which still uses legacy swaps and doesn't support newer
40
+ * {@link SPV_VAULT_FROM_BTC} & {@link FROM_BTCLN_AUTO} swaps.
41
+ *
42
+ * Handled by {@link OnchainForGasWrapper} & {@link OnchainForGasSwap}.
43
+ */
11
44
  TRUSTED_FROM_BTC=4,
45
+ /**
46
+ * Trusted swap for Bitcoin Lightning -> Smart chains, to be used for minor amounts to get gas tokens on the
47
+ * destination chain, which is only needed for Solana, which still uses legacy swaps and doesn't support newer
48
+ * {@link SPV_VAULT_FROM_BTC} & {@link FROM_BTCLN_AUTO} swaps.
49
+ *
50
+ * Handled by {@link LnForGasWrapper} & {@link LnForGasSwap}.
51
+ */
12
52
  TRUSTED_FROM_BTCLN=5,
53
+ /**
54
+ * New spv vault (UTXO-controlled vault) based swaps for Bitcoin -> Smart chain swaps not requiring any
55
+ * initiation on the destination chain, and with the added possibility for the user to receive a
56
+ * native token on the destination chain as part of the swap (a "gas drop" feature).
57
+ *
58
+ * Handled by {@link SpvFromBTCWrapper} & {@link SpvFromBTCSwap}.
59
+ *
60
+ * Used on all the supported chains except Solana!
61
+ */
13
62
  SPV_VAULT_FROM_BTC=6,
63
+ /**
64
+ * New escrow based (HTLC) swaps for Bitcoin Lightning -> Smart chain swaps not requiring manual
65
+ * settlement on the destination by the user, and instead letting the LP initiate the escrow,
66
+ * with the permissionless watchtower network managing the claiming of HTLC, with the swap secret
67
+ * broadcasted over Nostr. Also adds a possibility for the user to receive a native token on the
68
+ * destination chain as part of the swap (a "gas drop" feature).
69
+ *
70
+ * Handled by {@link FromBTCLNAutoWrapper} & {@link FromBTCLNAutoSwap}.
71
+ *
72
+ * Used on all the supported chains except Solana!
73
+ */
14
74
  FROM_BTCLN_AUTO=7
15
75
  }
@@ -1,9 +1,13 @@
1
1
  /**
2
2
  * An error or inconsistency in the intermediary's returned data, this will blacklist the intermediary
3
+ *
3
4
  * @category Errors
4
5
  */
5
6
  export class IntermediaryError extends Error {
6
7
 
8
+ /**
9
+ * Whether the error is recoverable and intermediary (LP) shouldn't be blacklisted for it
10
+ */
7
11
  recoverable: boolean;
8
12
  originalStack?: string;
9
13
 
@@ -1,6 +1,7 @@
1
1
 
2
2
  /**
3
3
  * An error returned by the intermediary in a http response
4
+ *
4
5
  * @category Errors
5
6
  */
6
7
  export class RequestError extends Error {
@@ -18,7 +19,13 @@ export class RequestError extends Error {
18
19
  this.httpCode = httpCode;
19
20
  }
20
21
 
21
- static parse(msg: string, httpCode: number): RequestError {
22
+ /**
23
+ * Parses a message + a response code returned by the intermediary (LP) as an error
24
+ *
25
+ * @param msg Raw response
26
+ * @param httpCode HTTP response status code
27
+ */
28
+ static parse(msg: string, httpCode: number): RequestError | OutOfBoundsError {
22
29
  try {
23
30
  const parsed = JSON.parse(msg);
24
31
  msg = parsed.msg;
@@ -34,11 +41,18 @@ export class RequestError extends Error {
34
41
 
35
42
  /**
36
43
  * An error indicating out of bounds (amount too high or too low) on swap initialization
44
+ *
37
45
  * @category Errors
38
46
  */
39
47
  export class OutOfBoundsError extends RequestError {
40
48
 
49
+ /**
50
+ * Swap minimum in base units of the token in which the quote was requested
51
+ */
41
52
  min: bigint;
53
+ /**
54
+ * Swap maximum in base units of the token in which the quote was requested
55
+ */
42
56
  max: bigint;
43
57
 
44
58
  constructor(msg: string, httpCode: number, min: bigint, max: bigint) {
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * An error on the user side, such as invalid address provided
3
+ *
3
4
  * @category Errors
4
5
  */
5
6
  export class UserError extends Error {
package/src/index.ts CHANGED
@@ -3,6 +3,8 @@ export {
3
3
  BitcoinRpc,
4
4
  BitcoinRpcWithAddressIndex,
5
5
  BitcoinNetwork,
6
+ BtcHeader,
7
+ BtcStoredHeader,
6
8
  BtcRelay,
7
9
  ChainData,
8
10
  ChainInterface,
@@ -20,7 +22,8 @@ export {
20
22
  IStorageManager,
21
23
  StorageObject,
22
24
  SwapContract,
23
- SwapData
25
+ SwapData,
26
+ AbstractSigner
24
27
  } from "@atomiqlabs/base";
25
28
 
26
29
  export {
@@ -29,10 +32,12 @@ export {
29
32
  MempoolApiError
30
33
  } from "@atomiqlabs/btc-mempool";
31
34
 
35
+ export {
36
+ NostrMessenger
37
+ } from "@atomiqlabs/messenger-nostr";
38
+
32
39
  export * from "./bitcoin/wallet/BitcoinWallet";
33
40
  export * from "./bitcoin/wallet/IBitcoinWallet";
34
- export * from "./types/wallets/MinimalBitcoinWalletInterface";
35
- export * from "./types/wallets/MinimalLightningNetworkWalletInterface";
36
41
  export * from "./bitcoin/wallet/SingleAddressBitcoinWallet";
37
42
 
38
43
  export {CoinselectAddressTypes} from "./bitcoin/coinselect2";
@@ -43,7 +48,6 @@ export * from "./enums/SwapDirection";
43
48
  export * from "./enums/SwapType";
44
49
 
45
50
  export * from "./errors/IntermediaryError";
46
- export * from "./errors/PaymentAuthError";
47
51
  export * from "./errors/RequestError";
48
52
  export * from "./errors/UserError";
49
53
 
@@ -119,9 +123,12 @@ export * from "./types/fees/PercentagePPM";
119
123
  export * from "./types/lnurl/LNURLPay";
120
124
  export * from "./types/lnurl/LNURLWithdraw";
121
125
 
126
+ export * from "./types/wallets/MinimalBitcoinWalletInterface";
127
+ export * from "./types/wallets/MinimalLightningNetworkWalletInterface";
128
+ export * from "./types/wallets/LightningInvoiceCreateService";
129
+
122
130
  export * from "./types/AmountData";
123
131
  export * from "./types/CustomPriceFunction";
124
- export * from "./types/PriceInfoType";
125
132
  export * from "./types/SwapExecutionAction";
126
133
  export * from "./types/SwapWithSigner";
127
134
  export * from "./types/Token";
@@ -6,7 +6,8 @@ import {tryWithRetries} from "../utils/RetryUtils";
6
6
 
7
7
  /**
8
8
  * Services offered by an intermediary
9
- * @category Pricing and LPs
9
+ *
10
+ * @category LPs
10
11
  */
11
12
  export type ServicesType = {
12
13
  [key in SwapType]?: SwapHandlerInfoType
@@ -14,7 +15,8 @@ export type ServicesType = {
14
15
 
15
16
  /**
16
17
  * Reputation data for an intermediary on a single chain
17
- * @category Pricing and LPs
18
+ *
19
+ * @category LPs
18
20
  */
19
21
  export type SingleChainReputationType = {
20
22
  [token: string]: {
@@ -31,21 +33,35 @@ export type SingleChainReputationType = {
31
33
 
32
34
  /**
33
35
  * Smart chain liquidity data
34
- * @category Pricing and LPs
36
+ *
37
+ * @category LPs
35
38
  */
36
39
  export type SCLiquidity = {
37
40
  [token: string]: bigint
38
41
  };
39
42
 
40
43
  /**
41
- * Represents a liquidity provider/intermediary
42
- * @category Pricing and LPs
44
+ * Represents an intermediary (liquidity provider)
45
+ *
46
+ * @category LPs
43
47
  */
44
48
  export class Intermediary {
45
49
 
50
+ /**
51
+ * Base URL where the intermediary is listening for HTTP requests
52
+ */
46
53
  readonly url: string;
54
+ /**
55
+ * Addresses of the intermediary on smart chains, used for checking the provided signatures
56
+ */
47
57
  readonly addresses: {[chainIdentifier: string]: string};
58
+ /**
59
+ * Swap protocol services offered by the intermediary
60
+ */
48
61
  readonly services: ServicesType;
62
+ /**
63
+ * Input/output swap bounds for various swap protocols offered by the intermediary
64
+ */
49
65
  readonly swapBounds: {
50
66
  [swapType in SwapType]?: {
51
67
  [chainIdentifier: string]: {
@@ -62,8 +78,21 @@ export class Intermediary {
62
78
  }
63
79
  }
64
80
  }
81
+ /**
82
+ * Reputation of the intermediary on different smart chains, this is only fetched
83
+ * on-demand when creating a swap where reputation is checked
84
+ */
65
85
  reputation: { [chainIdentifier: string]: SingleChainReputationType } = {};
86
+ /**
87
+ * Liquidity of the intermediary across different smart chains, this is only fetched
88
+ * on-demand when creating a swap where intermediary's liquidity is checked
89
+ */
66
90
  liquidity: { [chainIdentifier: string]: SCLiquidity } = {};
91
+ /**
92
+ * Data about a lightning network node used by this intermediary, if it offers lightning
93
+ * network swaps, this is only fetched on-demand when creating a Bitcoin Lightning -> Smart chain
94
+ * swap through the intermediary (which necessitates checking intermediary's channel capacities)
95
+ */
67
96
  lnData?: LNNodeLiquidity;
68
97
 
69
98
  constructor(
@@ -96,6 +125,13 @@ export class Intermediary {
96
125
  }
97
126
  }
98
127
 
128
+ /**
129
+ * Returns the input/output swap limit for given swap type, chain and token
130
+ *
131
+ * @param swapType Swap protocol service to check
132
+ * @param chainId Chain identifier of the smart chain to check
133
+ * @param tokenAddress Address of the token to check
134
+ */
99
135
  getSwapLimits(swapType: SwapType, chainId: string, tokenAddress: string): {input: {min?: bigint, max?: bigint}, output: {min?: bigint, max?: bigint}} | undefined {
100
136
  return this.swapBounds[swapType]?.[chainId]?.[tokenAddress];
101
137
  }
@@ -103,8 +139,8 @@ export class Intermediary {
103
139
  /**
104
140
  * Returns tokens supported by the intermediary, optionally constrained to the specific swap types
105
141
  *
106
- * @param chainIdentifier
107
- * @param swapTypesArr
142
+ * @param chainIdentifier Chain identifier of the smart chain to check
143
+ * @param swapTypesArr An array of swap type services to check
108
144
  * @private
109
145
  */
110
146
  private getSupportedTokens(chainIdentifier: string, swapTypesArr: SwapType[] = [
@@ -127,9 +163,10 @@ export class Intermediary {
127
163
  /**
128
164
  * Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token
129
165
  *
130
- * @param chainIdentifier
131
- * @param swapContract
132
- * @param tokens
166
+ * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
167
+ * @param swapContract Swap contract for the requested smart chain
168
+ * @param tokens An optional array of tokens to fetch the data for (by default it uses all tokens supported
169
+ * by the intermediary)
133
170
  * @param abortSignal
134
171
  */
135
172
  async getReputation(
@@ -166,11 +203,11 @@ export class Intermediary {
166
203
  }
167
204
 
168
205
  /**
169
- * Fetches, returns and saves the liquidity of the intermediaryfor a specific token
206
+ * Fetches, returns and saves the liquidity of the intermediary for a specific token
170
207
  *
171
- * @param chainIdentifier
172
- * @param swapContract
173
- * @param token
208
+ * @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
209
+ * @param swapContract Swap contract for the requested smart chain
210
+ * @param token Token address of the token to fetch the liquidity for
174
211
  * @param abortSignal
175
212
  */
176
213
  async getLiquidity(
@@ -191,11 +228,21 @@ export class Intermediary {
191
228
  return result;
192
229
  }
193
230
 
231
+ /**
232
+ * Checks whether the intermediary supports swaps of any tokens on the smart chain
233
+ *
234
+ * @param chainIdentifier Chain identifier of the smart chain
235
+ */
194
236
  supportsChain(chainIdentifier: string): boolean {
195
237
  if(this.addresses[chainIdentifier]==null) return false;
196
238
  return this.getSupportedTokens(chainIdentifier).size!==0;
197
239
  }
198
240
 
241
+ /**
242
+ * Returns intermediary's address on a given smart chain
243
+ *
244
+ * @param chainIdentifier Chain identifier of the smart chain
245
+ */
199
246
  getAddress(chainIdentifier: string) {
200
247
  return this.addresses[chainIdentifier];
201
248
  }