@atomiqlabs/sdk 8.6.5 → 8.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/dist/SmartChainAssets.d.ts +181 -181
  2. package/dist/SmartChainAssets.js +181 -181
  3. package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -6
  4. package/dist/bitcoin/coinselect2/accumulative.js +51 -52
  5. package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -6
  6. package/dist/bitcoin/coinselect2/blackjack.js +37 -38
  7. package/dist/bitcoin/coinselect2/index.d.ts +17 -19
  8. package/dist/bitcoin/coinselect2/index.js +69 -69
  9. package/dist/bitcoin/coinselect2/utils.d.ts +75 -77
  10. package/dist/bitcoin/coinselect2/utils.js +123 -123
  11. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +128 -130
  12. package/dist/bitcoin/wallet/BitcoinWallet.js +322 -322
  13. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +78 -78
  14. package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -21
  15. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +99 -101
  16. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +176 -176
  17. package/dist/enums/FeeType.d.ts +15 -15
  18. package/dist/enums/FeeType.js +19 -19
  19. package/dist/enums/SwapAmountType.d.ts +15 -15
  20. package/dist/enums/SwapAmountType.js +19 -19
  21. package/dist/enums/SwapDirection.d.ts +15 -15
  22. package/dist/enums/SwapDirection.js +19 -19
  23. package/dist/enums/SwapSide.d.ts +15 -15
  24. package/dist/enums/SwapSide.js +19 -19
  25. package/dist/enums/SwapType.d.ts +75 -75
  26. package/dist/enums/SwapType.js +79 -79
  27. package/dist/errors/IntermediaryError.d.ts +13 -13
  28. package/dist/errors/IntermediaryError.js +27 -27
  29. package/dist/errors/RequestError.d.ts +32 -32
  30. package/dist/errors/RequestError.js +54 -54
  31. package/dist/errors/UserError.d.ts +8 -8
  32. package/dist/errors/UserError.js +16 -16
  33. package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
  34. package/dist/events/UnifiedSwapEventListener.js +130 -130
  35. package/dist/http/HttpUtils.d.ts +27 -27
  36. package/dist/http/HttpUtils.js +90 -91
  37. package/dist/http/paramcoders/IParamReader.d.ts +8 -8
  38. package/dist/http/paramcoders/IParamReader.js +2 -2
  39. package/dist/http/paramcoders/ParamDecoder.d.ts +42 -44
  40. package/dist/http/paramcoders/ParamDecoder.js +137 -137
  41. package/dist/http/paramcoders/ParamEncoder.d.ts +18 -20
  42. package/dist/http/paramcoders/ParamEncoder.js +36 -36
  43. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
  44. package/dist/http/paramcoders/SchemaVerifier.js +145 -145
  45. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
  46. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
  47. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +11 -13
  48. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
  49. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
  50. package/dist/http/paramcoders/client/StreamingFetchPromise.js +173 -174
  51. package/dist/index.d.ts +85 -85
  52. package/dist/index.js +158 -158
  53. package/dist/intermediaries/Intermediary.d.ts +157 -157
  54. package/dist/intermediaries/Intermediary.js +142 -142
  55. package/dist/intermediaries/IntermediaryDiscovery.d.ts +198 -199
  56. package/dist/intermediaries/IntermediaryDiscovery.js +406 -406
  57. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +437 -438
  58. package/dist/intermediaries/apis/IntermediaryAPI.js +603 -602
  59. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
  60. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
  61. package/dist/lnurl/LNURL.d.ts +102 -102
  62. package/dist/lnurl/LNURL.js +321 -321
  63. package/dist/prices/RedundantSwapPrice.d.ts +110 -110
  64. package/dist/prices/RedundantSwapPrice.js +222 -222
  65. package/dist/prices/SingleSwapPrice.d.ts +34 -34
  66. package/dist/prices/SingleSwapPrice.js +44 -44
  67. package/dist/prices/SwapPriceWithChain.d.ts +107 -107
  68. package/dist/prices/SwapPriceWithChain.js +128 -128
  69. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
  70. package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
  71. package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
  72. package/dist/prices/abstract/IPriceProvider.js +74 -74
  73. package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
  74. package/dist/prices/abstract/ISwapPrice.js +279 -279
  75. package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
  76. package/dist/prices/providers/BinancePriceProvider.js +30 -30
  77. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
  78. package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
  79. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
  80. package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
  81. package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
  82. package/dist/prices/providers/CustomPriceProvider.js +35 -35
  83. package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
  84. package/dist/prices/providers/KrakenPriceProvider.js +45 -45
  85. package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
  86. package/dist/prices/providers/OKXPriceProvider.js +29 -29
  87. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
  88. package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
  89. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
  90. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
  91. package/dist/storage/IUnifiedStorage.d.ts +85 -85
  92. package/dist/storage/IUnifiedStorage.js +2 -2
  93. package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
  94. package/dist/storage/UnifiedSwapStorage.js +116 -116
  95. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
  96. package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
  97. package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
  98. package/dist/storage-browser/LocalStorageManager.js +93 -93
  99. package/dist/swapper/Swapper.d.ts +686 -687
  100. package/dist/swapper/Swapper.js +1603 -1603
  101. package/dist/swapper/SwapperFactory.d.ts +135 -135
  102. package/dist/swapper/SwapperFactory.js +162 -162
  103. package/dist/swapper/SwapperUtils.d.ts +200 -200
  104. package/dist/swapper/SwapperUtils.js +467 -467
  105. package/dist/swapper/SwapperWithChain.d.ts +404 -404
  106. package/dist/swapper/SwapperWithChain.js +469 -469
  107. package/dist/swapper/SwapperWithSigner.d.ts +322 -322
  108. package/dist/swapper/SwapperWithSigner.js +318 -318
  109. package/dist/swaps/IAddressSwap.d.ts +22 -22
  110. package/dist/swaps/IAddressSwap.js +13 -14
  111. package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
  112. package/dist/swaps/IBTCWalletSwap.js +17 -18
  113. package/dist/swaps/IClaimableSwap.d.ts +49 -49
  114. package/dist/swaps/IClaimableSwap.js +14 -15
  115. package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
  116. package/dist/swaps/IClaimableSwapWrapper.js +2 -2
  117. package/dist/swaps/IRefundableSwap.d.ts +43 -43
  118. package/dist/swaps/IRefundableSwap.js +13 -14
  119. package/dist/swaps/ISwap.d.ts +386 -387
  120. package/dist/swaps/ISwap.js +346 -346
  121. package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
  122. package/dist/swaps/ISwapWithGasDrop.js +11 -12
  123. package/dist/swaps/ISwapWrapper.d.ts +283 -285
  124. package/dist/swaps/ISwapWrapper.js +353 -353
  125. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
  126. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
  127. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +133 -135
  128. package/dist/swaps/escrow_swaps/IEscrowSwap.js +169 -169
  129. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +114 -115
  130. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +134 -134
  131. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +98 -101
  132. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
  133. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
  134. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
  135. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +58 -58
  136. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +78 -78
  137. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +529 -531
  138. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
  139. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +181 -184
  140. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +418 -418
  141. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +581 -583
  142. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
  143. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +225 -228
  144. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +506 -506
  145. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
  146. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
  147. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +190 -191
  148. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +378 -378
  149. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
  150. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
  151. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +62 -62
  152. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +112 -112
  153. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +125 -127
  154. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
  155. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +241 -242
  156. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -520
  157. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
  158. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
  159. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +127 -128
  160. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +278 -278
  161. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +630 -630
  162. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1443 -1443
  163. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +213 -207
  164. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +756 -755
  165. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
  166. package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
  167. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
  168. package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
  169. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
  170. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
  171. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +68 -69
  172. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +92 -92
  173. package/dist/types/AmountData.d.ts +10 -10
  174. package/dist/types/AmountData.js +2 -2
  175. package/dist/types/CustomPriceFunction.d.ts +11 -11
  176. package/dist/types/CustomPriceFunction.js +2 -2
  177. package/dist/types/PriceInfoType.d.ts +28 -28
  178. package/dist/types/PriceInfoType.js +56 -57
  179. package/dist/types/SwapExecutionAction.d.ts +88 -88
  180. package/dist/types/SwapExecutionAction.js +2 -2
  181. package/dist/types/SwapStateInfo.d.ts +5 -5
  182. package/dist/types/SwapStateInfo.js +2 -2
  183. package/dist/types/SwapWithSigner.d.ts +17 -17
  184. package/dist/types/SwapWithSigner.js +42 -43
  185. package/dist/types/Token.d.ts +99 -99
  186. package/dist/types/Token.js +76 -76
  187. package/dist/types/TokenAmount.d.ts +69 -69
  188. package/dist/types/TokenAmount.js +59 -60
  189. package/dist/types/fees/Fee.d.ts +50 -50
  190. package/dist/types/fees/Fee.js +2 -2
  191. package/dist/types/fees/FeeBreakdown.d.ts +11 -11
  192. package/dist/types/fees/FeeBreakdown.js +2 -2
  193. package/dist/types/fees/PercentagePPM.d.ts +17 -17
  194. package/dist/types/fees/PercentagePPM.js +17 -18
  195. package/dist/types/lnurl/LNURLPay.d.ts +61 -61
  196. package/dist/types/lnurl/LNURLPay.js +30 -31
  197. package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
  198. package/dist/types/lnurl/LNURLWithdraw.js +26 -27
  199. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
  200. package/dist/types/wallets/LightningInvoiceCreateService.js +14 -15
  201. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
  202. package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
  203. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
  204. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
  205. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
  206. package/dist/utils/AutomaticClockDriftCorrection.js +69 -70
  207. package/dist/utils/BitcoinUtils.d.ts +12 -14
  208. package/dist/utils/BitcoinUtils.js +101 -102
  209. package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
  210. package/dist/utils/BitcoinWalletUtils.js +13 -14
  211. package/dist/utils/Logger.d.ts +7 -7
  212. package/dist/utils/Logger.js +11 -12
  213. package/dist/utils/RetryUtils.d.ts +22 -22
  214. package/dist/utils/RetryUtils.js +66 -67
  215. package/dist/utils/SwapUtils.d.ts +88 -88
  216. package/dist/utils/SwapUtils.js +72 -72
  217. package/dist/utils/TimeoutUtils.d.ts +17 -17
  218. package/dist/utils/TimeoutUtils.js +54 -55
  219. package/dist/utils/TokenUtils.d.ts +19 -19
  220. package/dist/utils/TokenUtils.js +36 -37
  221. package/dist/utils/TypeUtils.d.ts +7 -7
  222. package/dist/utils/TypeUtils.js +2 -2
  223. package/dist/utils/Utils.d.ts +56 -58
  224. package/dist/utils/Utils.js +193 -194
  225. package/package.json +1 -1
  226. package/src/intermediaries/apis/IntermediaryAPI.ts +4 -2
  227. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +8 -0
@@ -1,602 +1,603 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IntermediaryAPI = exports.InvoiceStatusResponseCodes = exports.PaymentAuthorizationResponseCodes = exports.RefundAuthorizationResponseCodes = void 0;
4
- const RequestError_1 = require("../../errors/RequestError");
5
- const SchemaVerifier_1 = require("../../http/paramcoders/SchemaVerifier");
6
- const StreamingFetchPromise_1 = require("../../http/paramcoders/client/StreamingFetchPromise");
7
- const Utils_1 = require("../../utils/Utils");
8
- const HttpUtils_1 = require("../../http/HttpUtils");
9
- const RetryUtils_1 = require("../../utils/RetryUtils");
10
- var RefundAuthorizationResponseCodes;
11
- (function (RefundAuthorizationResponseCodes) {
12
- RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["EXPIRED"] = 20010] = "EXPIRED";
13
- RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["REFUND_DATA"] = 20000] = "REFUND_DATA";
14
- RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["NOT_FOUND"] = 20007] = "NOT_FOUND";
15
- RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["PENDING"] = 20008] = "PENDING";
16
- RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["PAID"] = 20006] = "PAID";
17
- })(RefundAuthorizationResponseCodes = exports.RefundAuthorizationResponseCodes || (exports.RefundAuthorizationResponseCodes = {}));
18
- var PaymentAuthorizationResponseCodes;
19
- (function (PaymentAuthorizationResponseCodes) {
20
- PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["AUTH_DATA"] = 10000] = "AUTH_DATA";
21
- PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["EXPIRED"] = 10001] = "EXPIRED";
22
- PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["PAID"] = 10002] = "PAID";
23
- PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["PENDING"] = 10003] = "PENDING";
24
- PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["ALREADY_COMMITTED"] = 10004] = "ALREADY_COMMITTED";
25
- })(PaymentAuthorizationResponseCodes = exports.PaymentAuthorizationResponseCodes || (exports.PaymentAuthorizationResponseCodes = {}));
26
- var InvoiceStatusResponseCodes;
27
- (function (InvoiceStatusResponseCodes) {
28
- InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["PAID"] = 10000] = "PAID";
29
- InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["EXPIRED"] = 10001] = "EXPIRED";
30
- InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["SETTLED"] = 10002] = "SETTLED";
31
- InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["PENDING"] = 10003] = "PENDING";
32
- })(InvoiceStatusResponseCodes = exports.InvoiceStatusResponseCodes || (exports.InvoiceStatusResponseCodes = {}));
33
- const SwapResponseSchema = {
34
- data: SchemaVerifier_1.FieldTypeEnum.Any,
35
- prefix: SchemaVerifier_1.FieldTypeEnum.String,
36
- timeout: SchemaVerifier_1.FieldTypeEnum.String,
37
- signature: SchemaVerifier_1.FieldTypeEnum.String
38
- };
39
- /////////////////////////
40
- ///// To BTC
41
- const ToBTCResponseSchema = {
42
- amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
43
- address: SchemaVerifier_1.FieldTypeEnum.String,
44
- satsPervByte: SchemaVerifier_1.FieldTypeEnum.BigInt,
45
- networkFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
46
- swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
47
- totalFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
48
- total: SchemaVerifier_1.FieldTypeEnum.BigInt,
49
- minRequiredExpiry: SchemaVerifier_1.FieldTypeEnum.BigInt,
50
- ...SwapResponseSchema
51
- };
52
- /////////////////////////
53
- ///// To BTCLN
54
- const ToBTCLNResponseSchema = {
55
- maxFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
56
- swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
57
- total: SchemaVerifier_1.FieldTypeEnum.BigInt,
58
- confidence: SchemaVerifier_1.FieldTypeEnum.Number,
59
- address: SchemaVerifier_1.FieldTypeEnum.String,
60
- routingFeeSats: SchemaVerifier_1.FieldTypeEnum.BigInt,
61
- ...SwapResponseSchema
62
- };
63
- const ToBTCLNPrepareExactInSchema = {
64
- amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
65
- reqId: SchemaVerifier_1.FieldTypeEnum.String
66
- };
67
- /////////////////////////
68
- ///// From BTC
69
- const FromBTCResponseSchema = {
70
- amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
71
- btcAddress: SchemaVerifier_1.FieldTypeEnum.String,
72
- address: SchemaVerifier_1.FieldTypeEnum.String,
73
- swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
74
- total: SchemaVerifier_1.FieldTypeEnum.BigInt,
75
- confirmations: SchemaVerifier_1.FieldTypeEnum.Number,
76
- ...SwapResponseSchema
77
- };
78
- /////////////////////////
79
- ///// From BTCLN
80
- const FromBTCLNResponseSchema = {
81
- pr: SchemaVerifier_1.FieldTypeEnum.String,
82
- swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
83
- total: SchemaVerifier_1.FieldTypeEnum.BigInt,
84
- intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,
85
- securityDeposit: SchemaVerifier_1.FieldTypeEnum.BigInt
86
- };
87
- /////////////////////////
88
- ///// From BTCLN Auto
89
- const FromBTCLNAutoResponseSchema = {
90
- intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,
91
- pr: SchemaVerifier_1.FieldTypeEnum.String,
92
- btcAmountSwap: SchemaVerifier_1.FieldTypeEnum.BigInt,
93
- btcAmountGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
94
- total: SchemaVerifier_1.FieldTypeEnum.BigInt,
95
- totalGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
96
- totalFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
97
- swapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
98
- swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
99
- gasSwapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
100
- gasSwapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
101
- claimerBounty: SchemaVerifier_1.FieldTypeEnum.BigInt
102
- };
103
- /////////////////////////
104
- ///// Spv vault from BTC
105
- const SpvFromBTCPrepareResponseSchema = {
106
- quoteId: SchemaVerifier_1.FieldTypeEnum.String,
107
- expiry: SchemaVerifier_1.FieldTypeEnum.Number,
108
- address: SchemaVerifier_1.FieldTypeEnum.String,
109
- vaultId: SchemaVerifier_1.FieldTypeEnum.BigInt,
110
- vaultBtcAddress: SchemaVerifier_1.FieldTypeEnum.String,
111
- btcAddress: SchemaVerifier_1.FieldTypeEnum.String,
112
- btcUtxo: SchemaVerifier_1.FieldTypeEnum.String,
113
- btcFeeRate: SchemaVerifier_1.FieldTypeEnum.Number,
114
- btcAmount: SchemaVerifier_1.FieldTypeEnum.BigInt,
115
- btcAmountSwap: SchemaVerifier_1.FieldTypeEnum.BigInt,
116
- btcAmountGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
117
- total: SchemaVerifier_1.FieldTypeEnum.BigInt,
118
- totalGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
119
- totalFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
120
- swapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
121
- swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
122
- gasSwapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
123
- gasSwapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
124
- callerFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt,
125
- frontingFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt,
126
- executionFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt
127
- };
128
- const SpvFromBTCInitResponseSchema = {
129
- txId: SchemaVerifier_1.FieldTypeEnum.String
130
- };
131
- class IntermediaryAPI {
132
- /**
133
- * Returns the information about a specific intermediary
134
- *
135
- * @param baseUrl Base URL of the intermediary
136
- * @param timeout Timeout in milliseconds for the HTTP request
137
- * @param abortSignal
138
- *
139
- * @throws {RequestError} If non-200 http response code is returned
140
- * @throws {Error} If the supplied nonce doesn't match the response
141
- */
142
- static async getIntermediaryInfo(baseUrl, timeout, abortSignal) {
143
- const nonce = (0, Utils_1.randomBytes)(32).toString("hex");
144
- const abortController = (0, Utils_1.extendAbortController)(abortSignal);
145
- //We don't know whether the node supports only POST or also has GET info support enabled
146
- // here we try both, and abort when the first one returns (which should be GET)
147
- const response = await Promise.any([
148
- (0, HttpUtils_1.httpGet)(baseUrl + "/info?nonce=" + nonce, timeout, abortController.signal),
149
- (0, HttpUtils_1.httpPost)(baseUrl + "/info", {
150
- nonce,
151
- }, timeout, abortController.signal)
152
- ]);
153
- abortController.abort();
154
- const info = JSON.parse(response.envelope);
155
- if (nonce !== info.nonce)
156
- throw new Error("Invalid response - nonce");
157
- return response;
158
- }
159
- /**
160
- * Returns the information about an outcome of the To BTC swap
161
- *
162
- * @param url URL of the intermediary
163
- * @param paymentHash Payment hash of the swap
164
- * @param sequence Swap's sequence number
165
- * @param timeout Timeout in milliseconds for the HTTP request
166
- * @param abortSignal
167
- *
168
- * @throws {RequestError} If non-200 http response code is returned
169
- */
170
- static async getRefundAuthorization(url, paymentHash, sequence, timeout, abortSignal) {
171
- return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getRefundAuthorization" +
172
- "?paymentHash=" + encodeURIComponent(paymentHash) +
173
- "&sequence=" + encodeURIComponent(sequence.toString(10)), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
174
- }
175
- /**
176
- * Returns the information about the payment of the From BTCLN swaps
177
- *
178
- * @param url URL of the intermediary
179
- * @param paymentHash Payment hash of the swap
180
- * @param timeout Timeout in milliseconds for the HTTP request
181
- * @param abortSignal
182
- *
183
- * @throws {RequestError} If non-200 http response code is returned
184
- */
185
- static async getPaymentAuthorization(url, paymentHash, timeout, abortSignal) {
186
- return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getInvoicePaymentAuth" +
187
- "?paymentHash=" + encodeURIComponent(paymentHash), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
188
- }
189
- /**
190
- * Returns the status of the payment of the From BTCLN swaps
191
- *
192
- * @param url URL of the intermediary
193
- * @param paymentHash Payment hash of the swap
194
- * @param timeout Timeout in milliseconds for the HTTP request
195
- * @param abortSignal
196
- *
197
- * @throws {RequestError} If non-200 http response code is returned
198
- */
199
- static async getInvoiceStatus(url, paymentHash, timeout, abortSignal) {
200
- return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getInvoiceStatus" +
201
- "?paymentHash=" + encodeURIComponent(paymentHash), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
202
- }
203
- /**
204
- * Initiate To BTC swap with an intermediary
205
- *
206
- * @param chainIdentifier
207
- * @param baseUrl Base URL of the intermediary
208
- * @param init Swap initialization parameters
209
- * @param timeout Timeout in milliseconds for the HTTP request
210
- * @param abortSignal
211
- * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
212
- *
213
- * @throws {RequestError} If non-200 http response code is returned
214
- */
215
- static initToBTC(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
216
- const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtc/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
217
- ...init.additionalParams,
218
- address: init.btcAddress,
219
- amount: init.amount.toString(10),
220
- exactIn: init.exactIn,
221
- confirmationTarget: init.confirmationTarget,
222
- confirmations: init.confirmations,
223
- nonce: init.nonce.toString(10),
224
- token: init.token,
225
- offerer: init.offerer,
226
- feeRate: init.feeRate
227
- }, {
228
- code: SchemaVerifier_1.FieldTypeEnum.Number,
229
- msg: SchemaVerifier_1.FieldTypeEnum.String,
230
- data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
231
- signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
232
- }, timeout, abortSignal, streamRequest);
233
- return {
234
- signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
235
- response: responseBodyPromise.then((responseBody) => Promise.all([
236
- responseBody.code,
237
- responseBody.msg,
238
- responseBody.data,
239
- ])).then(([code, msg, data]) => {
240
- if (code !== 20000) {
241
- throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
242
- }
243
- const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCResponseSchema);
244
- if (result == null)
245
- throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
246
- return result;
247
- })
248
- };
249
- }
250
- /**
251
- * Initiate From BTC swap with an intermediary
252
- *
253
- * @param chainIdentifier
254
- * @param baseUrl Base URL of the intermediary
255
- * @param depositToken
256
- * @param init Swap initialization parameters
257
- * @param timeout Timeout in milliseconds for the HTTP request
258
- * @param abortSignal
259
- * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
260
- *
261
- * @throws {RequestError} If non-200 http response code is returned
262
- */
263
- static initFromBTC(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {
264
- const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtc/getAddress?chain=" + encodeURIComponent(chainIdentifier) + "&depositToken=" + encodeURIComponent(depositToken), {
265
- ...init.additionalParams,
266
- address: init.claimer,
267
- amount: init.amount.toString(10),
268
- token: init.token,
269
- exactOut: init.exactOut,
270
- sequence: init.sequence.toString(10),
271
- claimerBounty: init.claimerBounty.then(claimerBounty => {
272
- return {
273
- feePerBlock: claimerBounty.feePerBlock.toString(10),
274
- safetyFactor: claimerBounty.safetyFactor.toString(10),
275
- startTimestamp: claimerBounty.startTimestamp.toString(10),
276
- addBlock: claimerBounty.addBlock.toString(10),
277
- addFee: claimerBounty.addFee.toString(10)
278
- };
279
- }),
280
- feeRate: init.feeRate
281
- }, {
282
- code: SchemaVerifier_1.FieldTypeEnum.Number,
283
- msg: SchemaVerifier_1.FieldTypeEnum.String,
284
- data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
285
- signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
286
- }, timeout, abortSignal, streamRequest);
287
- return {
288
- signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
289
- response: responseBodyPromise.then((responseBody) => Promise.all([
290
- responseBody.code,
291
- responseBody.msg,
292
- responseBody.data,
293
- ])).then(([code, msg, data]) => {
294
- if (code !== 20000) {
295
- throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
296
- }
297
- const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCResponseSchema);
298
- if (result == null)
299
- throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
300
- return result;
301
- })
302
- };
303
- }
304
- /**
305
- * Initiate From BTCLN swap with an intermediary
306
- *
307
- * @param chainIdentifier
308
- * @param baseUrl Base URL of the intermediary
309
- * @param depositToken
310
- * @param init Swap initialization parameters
311
- * @param timeout Timeout in milliseconds for the HTTP request
312
- * @param abortSignal
313
- * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
314
- *
315
- * @throws {RequestError} If non-200 http response code is returned
316
- */
317
- static initFromBTCLN(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {
318
- const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtcln/createInvoice?chain=" + encodeURIComponent(chainIdentifier) + "&depositToken=" + encodeURIComponent(depositToken), {
319
- ...init.additionalParams,
320
- paymentHash: init.paymentHash.toString("hex"),
321
- amount: init.amount.toString(),
322
- address: init.claimer,
323
- token: init.token,
324
- description: init.description ?? null,
325
- descriptionHash: init.descriptionHash == null ? null : init.descriptionHash.toString("hex"),
326
- exactOut: init.exactOut,
327
- feeRate: init.feeRate
328
- }, {
329
- code: SchemaVerifier_1.FieldTypeEnum.Number,
330
- msg: SchemaVerifier_1.FieldTypeEnum.String,
331
- data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
332
- lnPublicKey: SchemaVerifier_1.FieldTypeEnum.StringOptional
333
- }, timeout, abortSignal, streamRequest);
334
- return {
335
- lnPublicKey: responseBodyPromise.then(responseBody => responseBody.lnPublicKey),
336
- response: responseBodyPromise.then((responseBody) => Promise.all([
337
- responseBody.code,
338
- responseBody.msg,
339
- responseBody.data,
340
- ])).then(([code, msg, data]) => {
341
- if (code !== 20000) {
342
- throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
343
- }
344
- const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCLNResponseSchema);
345
- if (result == null)
346
- throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
347
- return result;
348
- })
349
- };
350
- }
351
- /**
352
- * Initiate From BTCLN swap with auto-initilization by an intermediary
353
- *
354
- * @param chainIdentifier
355
- * @param baseUrl Base URL of the intermediary
356
- * @param init Swap initialization parameters
357
- * @param timeout Timeout in milliseconds for the HTTP request
358
- * @param abortSignal
359
- * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
360
- *
361
- * @throws {RequestError} If non-200 http response code is returned
362
- */
363
- static initFromBTCLNAuto(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
364
- const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtcln_auto/createInvoice?chain=" + encodeURIComponent(chainIdentifier), {
365
- ...init.additionalParams,
366
- paymentHash: init.paymentHash.toString("hex"),
367
- amount: init.amount.toString(),
368
- address: init.claimer,
369
- token: init.token,
370
- description: init.description ?? null,
371
- descriptionHash: init.descriptionHash == null ? null : init.descriptionHash.toString("hex"),
372
- exactOut: init.exactOut,
373
- gasToken: init.gasToken,
374
- gasAmount: init.gasAmount?.toString(10) ?? "0",
375
- claimerBounty: init.claimerBounty?.then(val => val.toString(10)) ?? "0"
376
- }, {
377
- code: SchemaVerifier_1.FieldTypeEnum.Number,
378
- msg: SchemaVerifier_1.FieldTypeEnum.String,
379
- data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
380
- lnPublicKey: SchemaVerifier_1.FieldTypeEnum.StringOptional
381
- }, timeout, abortSignal, streamRequest);
382
- return {
383
- lnPublicKey: responseBodyPromise.then(responseBody => responseBody.lnPublicKey),
384
- response: responseBodyPromise.then((responseBody) => Promise.all([
385
- responseBody.code,
386
- responseBody.msg,
387
- responseBody.data,
388
- ])).then(([code, msg, data]) => {
389
- if (code !== 20000) {
390
- throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
391
- }
392
- const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCLNAutoResponseSchema);
393
- if (result == null)
394
- throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
395
- return result;
396
- })
397
- };
398
- }
399
- /**
400
- * Initiate To BTCLN swap with an intermediary
401
- *
402
- * @param chainIdentifier
403
- * @param baseUrl Base URL of the intermediary
404
- * @param init Swap initialization parameters
405
- * @param timeout Timeout in milliseconds for the HTTP request
406
- * @param abortSignal
407
- * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
408
- *
409
- * @throws {RequestError} If non-200 http response code is returned
410
- */
411
- static initToBTCLN(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
412
- const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
413
- exactIn: false,
414
- ...init.additionalParams,
415
- pr: init.pr,
416
- maxFee: init.maxFee.toString(10),
417
- expiryTimestamp: init.expiryTimestamp.toString(10),
418
- token: init.token,
419
- offerer: init.offerer,
420
- feeRate: init.feeRate,
421
- amount: null
422
- }, {
423
- code: SchemaVerifier_1.FieldTypeEnum.Number,
424
- msg: SchemaVerifier_1.FieldTypeEnum.String,
425
- data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
426
- signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
427
- }, timeout, abortSignal, streamRequest);
428
- return {
429
- signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
430
- response: responseBodyPromise.then((responseBody) => Promise.all([
431
- responseBody.code,
432
- responseBody.msg,
433
- responseBody.data,
434
- ])).then(([code, msg, data]) => {
435
- if (code !== 20000) {
436
- throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
437
- }
438
- const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);
439
- if (result == null)
440
- throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
441
- return result;
442
- })
443
- };
444
- }
445
- /**
446
- * Initiate To BTCLN exact in swap with an intermediary
447
- *
448
- * @param baseUrl Base URL of the intermediary
449
- * @param init Swap initialization parameters
450
- * @param timeout Timeout in milliseconds for the HTTP request
451
- * @param abortSignal
452
- * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
453
- *
454
- * @throws {RequestError} If non-200 http response code is returned
455
- */
456
- static async initToBTCLNExactIn(baseUrl, init, timeout, abortSignal, streamRequest) {
457
- const responseBody = await (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoiceExactIn", {
458
- ...init.additionalParams,
459
- pr: init.pr,
460
- reqId: init.reqId,
461
- feeRate: init.feeRate
462
- }, {
463
- code: SchemaVerifier_1.FieldTypeEnum.Number,
464
- msg: SchemaVerifier_1.FieldTypeEnum.String,
465
- data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
466
- }, timeout, abortSignal, streamRequest);
467
- const [code, msg, data] = await Promise.all([
468
- responseBody.code,
469
- responseBody.msg,
470
- responseBody.data,
471
- ]);
472
- if (code !== 20000)
473
- throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
474
- const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);
475
- if (result == null)
476
- throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
477
- return result;
478
- }
479
- /**
480
- * Prepare To BTCLN exact in swap with an intermediary
481
- *
482
- * @param chainIdentifier
483
- * @param baseUrl Base URL of the intermediary
484
- * @param init Swap initialization parameters
485
- * @param timeout Timeout in milliseconds for the HTTP request
486
- * @param abortSignal
487
- * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
488
- *
489
- * @throws {RequestError} If non-200 http response code is returned
490
- */
491
- static prepareToBTCLNExactIn(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
492
- const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
493
- exactIn: true,
494
- ...init.additionalParams,
495
- pr: init.pr,
496
- maxFee: init.maxFee.toString(10),
497
- expiryTimestamp: init.expiryTimestamp.toString(10),
498
- token: init.token,
499
- offerer: init.offerer,
500
- amount: init.amount.toString(10)
501
- }, {
502
- code: SchemaVerifier_1.FieldTypeEnum.Number,
503
- msg: SchemaVerifier_1.FieldTypeEnum.String,
504
- data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
505
- signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
506
- }, timeout, abortSignal, streamRequest);
507
- return {
508
- signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
509
- response: responseBodyPromise.then((responseBody) => Promise.all([
510
- responseBody.code,
511
- responseBody.msg,
512
- responseBody.data,
513
- ])).then(([code, msg, data]) => {
514
- if (code !== 20000) {
515
- throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
516
- }
517
- const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNPrepareExactInSchema);
518
- if (result == null)
519
- throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
520
- return result;
521
- })
522
- };
523
- }
524
- /**
525
- * Prepare From BTC swap via new spv vault swaps with an intermediary
526
- *
527
- * @param chainIdentifier
528
- * @param baseUrl Base URL of the intermediary
529
- * @param init Swap initialization parameters
530
- * @param timeout Timeout in milliseconds for the HTTP request
531
- * @param abortSignal
532
- * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
533
- *
534
- * @throws {RequestError} If non-200 http response code is returned
535
- */
536
- static prepareSpvFromBTC(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
537
- const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtc_spv/getQuote?chain=" + encodeURIComponent(chainIdentifier), {
538
- exactOut: init.exactOut,
539
- ...init.additionalParams,
540
- address: init.address,
541
- amount: init.amount.toString(10),
542
- token: init.token,
543
- gasAmount: init.gasAmount.toString(10),
544
- gasToken: init.gasToken,
545
- frontingFeeRate: init.frontingFeeRate.toString(10),
546
- callerFeeRate: init.callerFeeRate.then(val => val.toString(10))
547
- }, {
548
- code: SchemaVerifier_1.FieldTypeEnum.Number,
549
- msg: SchemaVerifier_1.FieldTypeEnum.String,
550
- data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
551
- }, timeout, abortSignal, streamRequest);
552
- return responseBodyPromise.then((responseBody) => Promise.all([
553
- responseBody.code,
554
- responseBody.msg,
555
- responseBody.data,
556
- ])).then(([code, msg, data]) => {
557
- if (code !== 20000) {
558
- throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
559
- }
560
- const result = (0, SchemaVerifier_1.verifySchema)(data, SpvFromBTCPrepareResponseSchema);
561
- if (result == null)
562
- throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
563
- return result;
564
- });
565
- }
566
- /**
567
- * Prepare From BTC swap via new spv vault swaps with an intermediary
568
- *
569
- * @param chainIdentifier
570
- * @param url
571
- * @param init Swap initialization parameters
572
- * @param timeout Timeout in milliseconds for the HTTP request
573
- * @param abortSignal
574
- * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
575
- *
576
- * @throws {RequestError} If non-200 http response code is returned
577
- */
578
- static initSpvFromBTC(chainIdentifier, url, init, timeout, abortSignal, streamRequest) {
579
- const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(url + "/postQuote?chain=" + encodeURIComponent(chainIdentifier), {
580
- quoteId: init.quoteId,
581
- psbtHex: init.psbtHex
582
- }, {
583
- code: SchemaVerifier_1.FieldTypeEnum.Number,
584
- msg: SchemaVerifier_1.FieldTypeEnum.String,
585
- data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
586
- }, timeout, abortSignal, streamRequest);
587
- return responseBodyPromise.then((responseBody) => Promise.all([
588
- responseBody.code,
589
- responseBody.msg,
590
- responseBody.data,
591
- ])).then(([code, msg, data]) => {
592
- if (code !== 20000) {
593
- throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
594
- }
595
- const result = (0, SchemaVerifier_1.verifySchema)(data, SpvFromBTCInitResponseSchema);
596
- if (result == null)
597
- throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
598
- return result;
599
- });
600
- }
601
- }
602
- exports.IntermediaryAPI = IntermediaryAPI;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntermediaryAPI = exports.InvoiceStatusResponseCodes = exports.PaymentAuthorizationResponseCodes = exports.RefundAuthorizationResponseCodes = void 0;
4
+ const RequestError_1 = require("../../errors/RequestError");
5
+ const SchemaVerifier_1 = require("../../http/paramcoders/SchemaVerifier");
6
+ const StreamingFetchPromise_1 = require("../../http/paramcoders/client/StreamingFetchPromise");
7
+ const Utils_1 = require("../../utils/Utils");
8
+ const HttpUtils_1 = require("../../http/HttpUtils");
9
+ const RetryUtils_1 = require("../../utils/RetryUtils");
10
+ var RefundAuthorizationResponseCodes;
11
+ (function (RefundAuthorizationResponseCodes) {
12
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["EXPIRED"] = 20010] = "EXPIRED";
13
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["REFUND_DATA"] = 20000] = "REFUND_DATA";
14
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["NOT_FOUND"] = 20007] = "NOT_FOUND";
15
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["PENDING"] = 20008] = "PENDING";
16
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["PAID"] = 20006] = "PAID";
17
+ })(RefundAuthorizationResponseCodes || (exports.RefundAuthorizationResponseCodes = RefundAuthorizationResponseCodes = {}));
18
+ var PaymentAuthorizationResponseCodes;
19
+ (function (PaymentAuthorizationResponseCodes) {
20
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["AUTH_DATA"] = 10000] = "AUTH_DATA";
21
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["EXPIRED"] = 10001] = "EXPIRED";
22
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["PAID"] = 10002] = "PAID";
23
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["PENDING"] = 10003] = "PENDING";
24
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["ALREADY_COMMITTED"] = 10004] = "ALREADY_COMMITTED";
25
+ })(PaymentAuthorizationResponseCodes || (exports.PaymentAuthorizationResponseCodes = PaymentAuthorizationResponseCodes = {}));
26
+ var InvoiceStatusResponseCodes;
27
+ (function (InvoiceStatusResponseCodes) {
28
+ InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["PAID"] = 10000] = "PAID";
29
+ InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["EXPIRED"] = 10001] = "EXPIRED";
30
+ InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["SETTLED"] = 10002] = "SETTLED";
31
+ InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["PENDING"] = 10003] = "PENDING";
32
+ })(InvoiceStatusResponseCodes || (exports.InvoiceStatusResponseCodes = InvoiceStatusResponseCodes = {}));
33
+ const SwapResponseSchema = {
34
+ data: SchemaVerifier_1.FieldTypeEnum.Any,
35
+ prefix: SchemaVerifier_1.FieldTypeEnum.String,
36
+ timeout: SchemaVerifier_1.FieldTypeEnum.String,
37
+ signature: SchemaVerifier_1.FieldTypeEnum.String
38
+ };
39
+ /////////////////////////
40
+ ///// To BTC
41
+ const ToBTCResponseSchema = {
42
+ amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
43
+ address: SchemaVerifier_1.FieldTypeEnum.String,
44
+ satsPervByte: SchemaVerifier_1.FieldTypeEnum.BigInt,
45
+ networkFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
46
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
47
+ totalFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
48
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
49
+ minRequiredExpiry: SchemaVerifier_1.FieldTypeEnum.BigInt,
50
+ ...SwapResponseSchema
51
+ };
52
+ /////////////////////////
53
+ ///// To BTCLN
54
+ const ToBTCLNResponseSchema = {
55
+ maxFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
56
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
57
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
58
+ confidence: SchemaVerifier_1.FieldTypeEnum.Number,
59
+ address: SchemaVerifier_1.FieldTypeEnum.String,
60
+ routingFeeSats: SchemaVerifier_1.FieldTypeEnum.BigInt,
61
+ ...SwapResponseSchema
62
+ };
63
+ const ToBTCLNPrepareExactInSchema = {
64
+ amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
65
+ reqId: SchemaVerifier_1.FieldTypeEnum.String
66
+ };
67
+ /////////////////////////
68
+ ///// From BTC
69
+ const FromBTCResponseSchema = {
70
+ amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
71
+ btcAddress: SchemaVerifier_1.FieldTypeEnum.String,
72
+ address: SchemaVerifier_1.FieldTypeEnum.String,
73
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
74
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
75
+ confirmations: SchemaVerifier_1.FieldTypeEnum.Number,
76
+ ...SwapResponseSchema
77
+ };
78
+ /////////////////////////
79
+ ///// From BTCLN
80
+ const FromBTCLNResponseSchema = {
81
+ pr: SchemaVerifier_1.FieldTypeEnum.String,
82
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
83
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
84
+ intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,
85
+ securityDeposit: SchemaVerifier_1.FieldTypeEnum.BigInt
86
+ };
87
+ /////////////////////////
88
+ ///// From BTCLN Auto
89
+ const FromBTCLNAutoResponseSchema = {
90
+ intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,
91
+ pr: SchemaVerifier_1.FieldTypeEnum.String,
92
+ btcAmountSwap: SchemaVerifier_1.FieldTypeEnum.BigInt,
93
+ btcAmountGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
94
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
95
+ totalGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
96
+ totalFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
97
+ swapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
98
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
99
+ gasSwapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
100
+ gasSwapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
101
+ claimerBounty: SchemaVerifier_1.FieldTypeEnum.BigInt
102
+ };
103
+ /////////////////////////
104
+ ///// Spv vault from BTC
105
+ const SpvFromBTCPrepareResponseSchema = {
106
+ quoteId: SchemaVerifier_1.FieldTypeEnum.String,
107
+ expiry: SchemaVerifier_1.FieldTypeEnum.Number,
108
+ address: SchemaVerifier_1.FieldTypeEnum.String,
109
+ vaultId: SchemaVerifier_1.FieldTypeEnum.BigInt,
110
+ vaultBtcAddress: SchemaVerifier_1.FieldTypeEnum.String,
111
+ btcAddress: SchemaVerifier_1.FieldTypeEnum.String,
112
+ btcUtxo: SchemaVerifier_1.FieldTypeEnum.String,
113
+ btcFeeRate: SchemaVerifier_1.FieldTypeEnum.Number,
114
+ btcAmount: SchemaVerifier_1.FieldTypeEnum.BigInt,
115
+ btcAmountSwap: SchemaVerifier_1.FieldTypeEnum.BigInt,
116
+ btcAmountGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
117
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
118
+ totalGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
119
+ totalFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
120
+ swapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
121
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
122
+ gasSwapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
123
+ gasSwapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
124
+ callerFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt,
125
+ frontingFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt,
126
+ executionFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt
127
+ };
128
+ const SpvFromBTCInitResponseSchema = {
129
+ txId: SchemaVerifier_1.FieldTypeEnum.String
130
+ };
131
+ class IntermediaryAPI {
132
+ /**
133
+ * Returns the information about a specific intermediary
134
+ *
135
+ * @param baseUrl Base URL of the intermediary
136
+ * @param timeout Timeout in milliseconds for the HTTP request
137
+ * @param abortSignal
138
+ *
139
+ * @throws {RequestError} If non-200 http response code is returned
140
+ * @throws {Error} If the supplied nonce doesn't match the response
141
+ */
142
+ static async getIntermediaryInfo(baseUrl, timeout, abortSignal) {
143
+ const nonce = (0, Utils_1.randomBytes)(32).toString("hex");
144
+ const abortController = (0, Utils_1.extendAbortController)(abortSignal);
145
+ //We don't know whether the node supports only POST or also has GET info support enabled
146
+ // here we try both, and abort when the first one returns (which should be GET)
147
+ const response = await Promise.any([
148
+ (0, HttpUtils_1.httpGet)(baseUrl + "/info?nonce=" + nonce, timeout, abortController.signal),
149
+ (0, HttpUtils_1.httpPost)(baseUrl + "/info", {
150
+ nonce,
151
+ }, timeout, abortController.signal)
152
+ ]);
153
+ abortController.abort();
154
+ const info = JSON.parse(response.envelope);
155
+ if (nonce !== info.nonce)
156
+ throw new Error("Invalid response - nonce");
157
+ return response;
158
+ }
159
+ /**
160
+ * Returns the information about an outcome of the To BTC swap
161
+ *
162
+ * @param url URL of the intermediary
163
+ * @param paymentHash Payment hash of the swap
164
+ * @param sequence Swap's sequence number
165
+ * @param timeout Timeout in milliseconds for the HTTP request
166
+ * @param abortSignal
167
+ *
168
+ * @throws {RequestError} If non-200 http response code is returned
169
+ */
170
+ static async getRefundAuthorization(url, paymentHash, sequence, timeout, abortSignal) {
171
+ return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getRefundAuthorization" +
172
+ "?paymentHash=" + encodeURIComponent(paymentHash) +
173
+ "&sequence=" + encodeURIComponent(sequence.toString(10)), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
174
+ }
175
+ /**
176
+ * Returns the information about the payment of the From BTCLN swaps
177
+ *
178
+ * @param url URL of the intermediary
179
+ * @param paymentHash Payment hash of the swap
180
+ * @param timeout Timeout in milliseconds for the HTTP request
181
+ * @param abortSignal
182
+ *
183
+ * @throws {RequestError} If non-200 http response code is returned
184
+ */
185
+ static async getPaymentAuthorization(url, paymentHash, timeout, abortSignal) {
186
+ return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getInvoicePaymentAuth" +
187
+ "?paymentHash=" + encodeURIComponent(paymentHash), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
188
+ }
189
+ /**
190
+ * Returns the status of the payment of the From BTCLN swaps
191
+ *
192
+ * @param url URL of the intermediary
193
+ * @param paymentHash Payment hash of the swap
194
+ * @param timeout Timeout in milliseconds for the HTTP request
195
+ * @param abortSignal
196
+ *
197
+ * @throws {RequestError} If non-200 http response code is returned
198
+ */
199
+ static async getInvoiceStatus(url, paymentHash, timeout, abortSignal) {
200
+ return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getInvoiceStatus" +
201
+ "?paymentHash=" + encodeURIComponent(paymentHash), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
202
+ }
203
+ /**
204
+ * Initiate To BTC swap with an intermediary
205
+ *
206
+ * @param chainIdentifier
207
+ * @param baseUrl Base URL of the intermediary
208
+ * @param init Swap initialization parameters
209
+ * @param timeout Timeout in milliseconds for the HTTP request
210
+ * @param abortSignal
211
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
212
+ *
213
+ * @throws {RequestError} If non-200 http response code is returned
214
+ */
215
+ static initToBTC(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
216
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtc/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
217
+ ...init.additionalParams,
218
+ address: init.btcAddress,
219
+ amount: init.amount.toString(10),
220
+ exactIn: init.exactIn,
221
+ confirmationTarget: init.confirmationTarget,
222
+ confirmations: init.confirmations,
223
+ nonce: init.nonce.toString(10),
224
+ token: init.token,
225
+ offerer: init.offerer,
226
+ feeRate: init.feeRate
227
+ }, {
228
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
229
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
230
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
231
+ signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
232
+ }, timeout, abortSignal, streamRequest);
233
+ return {
234
+ signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
235
+ response: responseBodyPromise.then((responseBody) => Promise.all([
236
+ responseBody.code,
237
+ responseBody.msg,
238
+ responseBody.data,
239
+ ])).then(([code, msg, data]) => {
240
+ if (code !== 20000) {
241
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
242
+ }
243
+ const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCResponseSchema);
244
+ if (result == null)
245
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
246
+ return result;
247
+ })
248
+ };
249
+ }
250
+ /**
251
+ * Initiate From BTC swap with an intermediary
252
+ *
253
+ * @param chainIdentifier
254
+ * @param baseUrl Base URL of the intermediary
255
+ * @param depositToken
256
+ * @param init Swap initialization parameters
257
+ * @param timeout Timeout in milliseconds for the HTTP request
258
+ * @param abortSignal
259
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
260
+ *
261
+ * @throws {RequestError} If non-200 http response code is returned
262
+ */
263
+ static initFromBTC(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {
264
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtc/getAddress?chain=" + encodeURIComponent(chainIdentifier) + "&depositToken=" + encodeURIComponent(depositToken), {
265
+ ...init.additionalParams,
266
+ address: init.claimer,
267
+ amount: init.amount.toString(10),
268
+ token: init.token,
269
+ exactOut: init.exactOut,
270
+ sequence: init.sequence.toString(10),
271
+ claimerBounty: init.claimerBounty.then(claimerBounty => {
272
+ return {
273
+ feePerBlock: claimerBounty.feePerBlock.toString(10),
274
+ safetyFactor: claimerBounty.safetyFactor.toString(10),
275
+ startTimestamp: claimerBounty.startTimestamp.toString(10),
276
+ addBlock: claimerBounty.addBlock.toString(10),
277
+ addFee: claimerBounty.addFee.toString(10)
278
+ };
279
+ }),
280
+ feeRate: init.feeRate
281
+ }, {
282
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
283
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
284
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
285
+ signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
286
+ }, timeout, abortSignal, streamRequest);
287
+ return {
288
+ signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
289
+ response: responseBodyPromise.then((responseBody) => Promise.all([
290
+ responseBody.code,
291
+ responseBody.msg,
292
+ responseBody.data,
293
+ ])).then(([code, msg, data]) => {
294
+ if (code !== 20000) {
295
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
296
+ }
297
+ const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCResponseSchema);
298
+ if (result == null)
299
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
300
+ return result;
301
+ })
302
+ };
303
+ }
304
+ /**
305
+ * Initiate From BTCLN swap with an intermediary
306
+ *
307
+ * @param chainIdentifier
308
+ * @param baseUrl Base URL of the intermediary
309
+ * @param depositToken
310
+ * @param init Swap initialization parameters
311
+ * @param timeout Timeout in milliseconds for the HTTP request
312
+ * @param abortSignal
313
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
314
+ *
315
+ * @throws {RequestError} If non-200 http response code is returned
316
+ */
317
+ static initFromBTCLN(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {
318
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtcln/createInvoice?chain=" + encodeURIComponent(chainIdentifier) + "&depositToken=" + encodeURIComponent(depositToken), {
319
+ ...init.additionalParams,
320
+ paymentHash: init.paymentHash.toString("hex"),
321
+ amount: init.amount.toString(),
322
+ address: init.claimer,
323
+ token: init.token,
324
+ description: init.description ?? null,
325
+ descriptionHash: init.descriptionHash == null ? null : init.descriptionHash.toString("hex"),
326
+ exactOut: init.exactOut,
327
+ feeRate: init.feeRate
328
+ }, {
329
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
330
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
331
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
332
+ lnPublicKey: SchemaVerifier_1.FieldTypeEnum.StringOptional
333
+ }, timeout, abortSignal, streamRequest);
334
+ return {
335
+ lnPublicKey: responseBodyPromise.then(responseBody => responseBody.lnPublicKey),
336
+ response: responseBodyPromise.then((responseBody) => Promise.all([
337
+ responseBody.code,
338
+ responseBody.msg,
339
+ responseBody.data,
340
+ ])).then(([code, msg, data]) => {
341
+ if (code !== 20000) {
342
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
343
+ }
344
+ const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCLNResponseSchema);
345
+ if (result == null)
346
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
347
+ return result;
348
+ })
349
+ };
350
+ }
351
+ /**
352
+ * Initiate From BTCLN swap with auto-initilization by an intermediary
353
+ *
354
+ * @param chainIdentifier
355
+ * @param baseUrl Base URL of the intermediary
356
+ * @param init Swap initialization parameters
357
+ * @param timeout Timeout in milliseconds for the HTTP request
358
+ * @param abortSignal
359
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
360
+ *
361
+ * @throws {RequestError} If non-200 http response code is returned
362
+ */
363
+ static initFromBTCLNAuto(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
364
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtcln_auto/createInvoice?chain=" + encodeURIComponent(chainIdentifier), {
365
+ ...init.additionalParams,
366
+ paymentHash: init.paymentHash.toString("hex"),
367
+ amount: init.amount.toString(),
368
+ address: init.claimer,
369
+ token: init.token,
370
+ description: init.description ?? null,
371
+ descriptionHash: init.descriptionHash == null ? null : init.descriptionHash.toString("hex"),
372
+ exactOut: init.exactOut,
373
+ gasToken: init.gasToken,
374
+ gasAmount: init.gasAmount?.toString(10) ?? "0",
375
+ claimerBounty: init.claimerBounty?.then(val => val.toString(10)) ?? "0"
376
+ }, {
377
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
378
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
379
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
380
+ lnPublicKey: SchemaVerifier_1.FieldTypeEnum.StringOptional
381
+ }, timeout, abortSignal, streamRequest);
382
+ return {
383
+ lnPublicKey: responseBodyPromise.then(responseBody => responseBody.lnPublicKey),
384
+ response: responseBodyPromise.then((responseBody) => Promise.all([
385
+ responseBody.code,
386
+ responseBody.msg,
387
+ responseBody.data,
388
+ ])).then(([code, msg, data]) => {
389
+ if (code !== 20000) {
390
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
391
+ }
392
+ const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCLNAutoResponseSchema);
393
+ if (result == null)
394
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
395
+ return result;
396
+ })
397
+ };
398
+ }
399
+ /**
400
+ * Initiate To BTCLN swap with an intermediary
401
+ *
402
+ * @param chainIdentifier
403
+ * @param baseUrl Base URL of the intermediary
404
+ * @param init Swap initialization parameters
405
+ * @param timeout Timeout in milliseconds for the HTTP request
406
+ * @param abortSignal
407
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
408
+ *
409
+ * @throws {RequestError} If non-200 http response code is returned
410
+ */
411
+ static initToBTCLN(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
412
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
413
+ exactIn: false,
414
+ ...init.additionalParams,
415
+ pr: init.pr,
416
+ maxFee: init.maxFee.toString(10),
417
+ expiryTimestamp: init.expiryTimestamp.toString(10),
418
+ token: init.token,
419
+ offerer: init.offerer,
420
+ feeRate: init.feeRate,
421
+ amount: null
422
+ }, {
423
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
424
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
425
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
426
+ signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
427
+ }, timeout, abortSignal, streamRequest);
428
+ return {
429
+ signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
430
+ response: responseBodyPromise.then((responseBody) => Promise.all([
431
+ responseBody.code,
432
+ responseBody.msg,
433
+ responseBody.data,
434
+ ])).then(([code, msg, data]) => {
435
+ if (code !== 20000) {
436
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
437
+ }
438
+ const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);
439
+ if (result == null)
440
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
441
+ return result;
442
+ })
443
+ };
444
+ }
445
+ /**
446
+ * Initiate To BTCLN exact in swap with an intermediary
447
+ *
448
+ * @param baseUrl Base URL of the intermediary
449
+ * @param init Swap initialization parameters
450
+ * @param timeout Timeout in milliseconds for the HTTP request
451
+ * @param abortSignal
452
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
453
+ *
454
+ * @throws {RequestError} If non-200 http response code is returned
455
+ */
456
+ static async initToBTCLNExactIn(baseUrl, init, timeout, abortSignal, streamRequest) {
457
+ const responseBody = await (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoiceExactIn", {
458
+ ...init.additionalParams,
459
+ pr: init.pr,
460
+ reqId: init.reqId,
461
+ feeRate: init.feeRate
462
+ }, {
463
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
464
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
465
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
466
+ }, timeout, abortSignal, streamRequest);
467
+ const [code, msg, data] = await Promise.all([
468
+ responseBody.code,
469
+ responseBody.msg,
470
+ responseBody.data,
471
+ ]);
472
+ if (code !== 20000)
473
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
474
+ const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);
475
+ if (result == null)
476
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
477
+ return result;
478
+ }
479
+ /**
480
+ * Prepare To BTCLN exact in swap with an intermediary
481
+ *
482
+ * @param chainIdentifier
483
+ * @param baseUrl Base URL of the intermediary
484
+ * @param init Swap initialization parameters
485
+ * @param timeout Timeout in milliseconds for the HTTP request
486
+ * @param abortSignal
487
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
488
+ *
489
+ * @throws {RequestError} If non-200 http response code is returned
490
+ */
491
+ static prepareToBTCLNExactIn(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
492
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
493
+ exactIn: true,
494
+ ...init.additionalParams,
495
+ pr: init.pr,
496
+ maxFee: init.maxFee.toString(10),
497
+ expiryTimestamp: init.expiryTimestamp.toString(10),
498
+ token: init.token,
499
+ offerer: init.offerer,
500
+ amount: init.amount.toString(10)
501
+ }, {
502
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
503
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
504
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
505
+ signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
506
+ }, timeout, abortSignal, streamRequest);
507
+ return {
508
+ signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
509
+ response: responseBodyPromise.then((responseBody) => Promise.all([
510
+ responseBody.code,
511
+ responseBody.msg,
512
+ responseBody.data,
513
+ ])).then(([code, msg, data]) => {
514
+ if (code !== 20000) {
515
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
516
+ }
517
+ const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNPrepareExactInSchema);
518
+ if (result == null)
519
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
520
+ return result;
521
+ })
522
+ };
523
+ }
524
+ /**
525
+ * Prepare From BTC swap via new spv vault swaps with an intermediary
526
+ *
527
+ * @param chainIdentifier
528
+ * @param baseUrl Base URL of the intermediary
529
+ * @param init Swap initialization parameters
530
+ * @param timeout Timeout in milliseconds for the HTTP request
531
+ * @param abortSignal
532
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
533
+ *
534
+ * @throws {RequestError} If non-200 http response code is returned
535
+ */
536
+ static prepareSpvFromBTC(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
537
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtc_spv/getQuote?chain=" + encodeURIComponent(chainIdentifier), {
538
+ exactOut: init.exactOut,
539
+ ...init.additionalParams,
540
+ address: init.address,
541
+ amount: init.amount.toString(10),
542
+ token: init.token,
543
+ gasAmount: init.gasAmount.toString(10),
544
+ gasToken: init.gasToken,
545
+ frontingFeeRate: init.frontingFeeRate.toString(10),
546
+ callerFeeRate: init.callerFeeRate.then(val => val.toString(10)),
547
+ stickyAddress: init.stickyAddress
548
+ }, {
549
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
550
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
551
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
552
+ }, timeout, abortSignal, streamRequest);
553
+ return responseBodyPromise.then((responseBody) => Promise.all([
554
+ responseBody.code,
555
+ responseBody.msg,
556
+ responseBody.data,
557
+ ])).then(([code, msg, data]) => {
558
+ if (code !== 20000) {
559
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
560
+ }
561
+ const result = (0, SchemaVerifier_1.verifySchema)(data, SpvFromBTCPrepareResponseSchema);
562
+ if (result == null)
563
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
564
+ return result;
565
+ });
566
+ }
567
+ /**
568
+ * Prepare From BTC swap via new spv vault swaps with an intermediary
569
+ *
570
+ * @param chainIdentifier
571
+ * @param url
572
+ * @param init Swap initialization parameters
573
+ * @param timeout Timeout in milliseconds for the HTTP request
574
+ * @param abortSignal
575
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
576
+ *
577
+ * @throws {RequestError} If non-200 http response code is returned
578
+ */
579
+ static initSpvFromBTC(chainIdentifier, url, init, timeout, abortSignal, streamRequest) {
580
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(url + "/postQuote?chain=" + encodeURIComponent(chainIdentifier), {
581
+ quoteId: init.quoteId,
582
+ psbtHex: init.psbtHex
583
+ }, {
584
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
585
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
586
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
587
+ }, timeout, abortSignal, streamRequest);
588
+ return responseBodyPromise.then((responseBody) => Promise.all([
589
+ responseBody.code,
590
+ responseBody.msg,
591
+ responseBody.data,
592
+ ])).then(([code, msg, data]) => {
593
+ if (code !== 20000) {
594
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
595
+ }
596
+ const result = (0, SchemaVerifier_1.verifySchema)(data, SpvFromBTCInitResponseSchema);
597
+ if (result == null)
598
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
599
+ return result;
600
+ });
601
+ }
602
+ }
603
+ exports.IntermediaryAPI = IntermediaryAPI;