@atomiqlabs/sdk 8.6.4 → 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.
- package/dist/SmartChainAssets.d.ts +181 -181
- package/dist/SmartChainAssets.js +181 -181
- package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -6
- package/dist/bitcoin/coinselect2/accumulative.js +51 -52
- package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -6
- package/dist/bitcoin/coinselect2/blackjack.js +37 -38
- package/dist/bitcoin/coinselect2/index.d.ts +17 -19
- package/dist/bitcoin/coinselect2/index.js +69 -69
- package/dist/bitcoin/coinselect2/utils.d.ts +75 -77
- package/dist/bitcoin/coinselect2/utils.js +123 -123
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +128 -130
- package/dist/bitcoin/wallet/BitcoinWallet.js +322 -322
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +78 -78
- package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -21
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +99 -101
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +176 -176
- package/dist/enums/FeeType.d.ts +15 -15
- package/dist/enums/FeeType.js +19 -19
- package/dist/enums/SwapAmountType.d.ts +15 -15
- package/dist/enums/SwapAmountType.js +19 -19
- package/dist/enums/SwapDirection.d.ts +15 -15
- package/dist/enums/SwapDirection.js +19 -19
- package/dist/enums/SwapSide.d.ts +15 -15
- package/dist/enums/SwapSide.js +19 -19
- package/dist/enums/SwapType.d.ts +75 -75
- package/dist/enums/SwapType.js +79 -79
- package/dist/errors/IntermediaryError.d.ts +13 -13
- package/dist/errors/IntermediaryError.js +27 -27
- package/dist/errors/RequestError.d.ts +32 -32
- package/dist/errors/RequestError.js +54 -54
- package/dist/errors/UserError.d.ts +8 -8
- package/dist/errors/UserError.js +16 -16
- package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
- package/dist/events/UnifiedSwapEventListener.js +130 -130
- package/dist/http/HttpUtils.d.ts +27 -27
- package/dist/http/HttpUtils.js +90 -91
- package/dist/http/paramcoders/IParamReader.d.ts +8 -8
- package/dist/http/paramcoders/IParamReader.js +2 -2
- package/dist/http/paramcoders/ParamDecoder.d.ts +42 -44
- package/dist/http/paramcoders/ParamDecoder.js +137 -137
- package/dist/http/paramcoders/ParamEncoder.d.ts +18 -20
- package/dist/http/paramcoders/ParamEncoder.js +36 -36
- package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
- package/dist/http/paramcoders/SchemaVerifier.js +145 -145
- package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
- package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
- package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +11 -13
- package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
- package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +173 -174
- package/dist/index.d.ts +85 -85
- package/dist/index.js +158 -158
- package/dist/intermediaries/Intermediary.d.ts +157 -157
- package/dist/intermediaries/Intermediary.js +142 -142
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +198 -199
- package/dist/intermediaries/IntermediaryDiscovery.js +406 -406
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +437 -438
- package/dist/intermediaries/apis/IntermediaryAPI.js +603 -602
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
- package/dist/lnurl/LNURL.d.ts +102 -102
- package/dist/lnurl/LNURL.js +321 -321
- package/dist/prices/RedundantSwapPrice.d.ts +110 -110
- package/dist/prices/RedundantSwapPrice.js +222 -222
- package/dist/prices/SingleSwapPrice.d.ts +34 -34
- package/dist/prices/SingleSwapPrice.js +44 -44
- package/dist/prices/SwapPriceWithChain.d.ts +107 -107
- package/dist/prices/SwapPriceWithChain.js +128 -128
- package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
- package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
- package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
- package/dist/prices/abstract/IPriceProvider.js +74 -74
- package/dist/prices/abstract/ISwapPrice.d.ts +168 -166
- package/dist/prices/abstract/ISwapPrice.js +279 -267
- package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
- package/dist/prices/providers/BinancePriceProvider.js +30 -30
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
- package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
- package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
- package/dist/prices/providers/CustomPriceProvider.js +35 -35
- package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
- package/dist/prices/providers/KrakenPriceProvider.js +45 -45
- package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
- package/dist/prices/providers/OKXPriceProvider.js +29 -29
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
- package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
- package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
- package/dist/storage/IUnifiedStorage.d.ts +85 -85
- package/dist/storage/IUnifiedStorage.js +2 -2
- package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
- package/dist/storage/UnifiedSwapStorage.js +116 -116
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
- package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
- package/dist/storage-browser/LocalStorageManager.js +93 -93
- package/dist/swapper/Swapper.d.ts +686 -687
- package/dist/swapper/Swapper.js +1603 -1603
- package/dist/swapper/SwapperFactory.d.ts +135 -135
- package/dist/swapper/SwapperFactory.js +162 -162
- package/dist/swapper/SwapperUtils.d.ts +200 -200
- package/dist/swapper/SwapperUtils.js +467 -467
- package/dist/swapper/SwapperWithChain.d.ts +404 -404
- package/dist/swapper/SwapperWithChain.js +469 -469
- package/dist/swapper/SwapperWithSigner.d.ts +322 -322
- package/dist/swapper/SwapperWithSigner.js +318 -318
- package/dist/swaps/IAddressSwap.d.ts +22 -22
- package/dist/swaps/IAddressSwap.js +13 -14
- package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
- package/dist/swaps/IBTCWalletSwap.js +17 -18
- package/dist/swaps/IClaimableSwap.d.ts +49 -49
- package/dist/swaps/IClaimableSwap.js +14 -15
- package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
- package/dist/swaps/IClaimableSwapWrapper.js +2 -2
- package/dist/swaps/IRefundableSwap.d.ts +43 -43
- package/dist/swaps/IRefundableSwap.js +13 -14
- package/dist/swaps/ISwap.d.ts +386 -387
- package/dist/swaps/ISwap.js +346 -341
- package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
- package/dist/swaps/ISwapWithGasDrop.js +11 -12
- package/dist/swaps/ISwapWrapper.d.ts +283 -284
- package/dist/swaps/ISwapWrapper.js +353 -353
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +133 -135
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +169 -169
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +114 -115
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +134 -134
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +98 -101
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +58 -58
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +78 -78
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +529 -531
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +181 -184
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +418 -417
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +581 -583
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +225 -228
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +506 -506
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +190 -191
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +378 -377
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +62 -62
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +112 -112
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +125 -127
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +241 -242
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -520
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +127 -128
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +278 -278
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +630 -630
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1443 -1443
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +213 -207
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +756 -755
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
- package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +68 -69
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +92 -92
- package/dist/types/AmountData.d.ts +10 -10
- package/dist/types/AmountData.js +2 -2
- package/dist/types/CustomPriceFunction.d.ts +11 -11
- package/dist/types/CustomPriceFunction.js +2 -2
- package/dist/types/PriceInfoType.d.ts +28 -28
- package/dist/types/PriceInfoType.js +56 -57
- package/dist/types/SwapExecutionAction.d.ts +88 -88
- package/dist/types/SwapExecutionAction.js +2 -2
- package/dist/types/SwapStateInfo.d.ts +5 -5
- package/dist/types/SwapStateInfo.js +2 -2
- package/dist/types/SwapWithSigner.d.ts +17 -17
- package/dist/types/SwapWithSigner.js +42 -43
- package/dist/types/Token.d.ts +99 -99
- package/dist/types/Token.js +76 -76
- package/dist/types/TokenAmount.d.ts +69 -69
- package/dist/types/TokenAmount.js +59 -60
- package/dist/types/fees/Fee.d.ts +50 -50
- package/dist/types/fees/Fee.js +2 -2
- package/dist/types/fees/FeeBreakdown.d.ts +11 -11
- package/dist/types/fees/FeeBreakdown.js +2 -2
- package/dist/types/fees/PercentagePPM.d.ts +17 -17
- package/dist/types/fees/PercentagePPM.js +17 -18
- package/dist/types/lnurl/LNURLPay.d.ts +61 -61
- package/dist/types/lnurl/LNURLPay.js +30 -31
- package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
- package/dist/types/lnurl/LNURLWithdraw.js +26 -27
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
- package/dist/types/wallets/LightningInvoiceCreateService.js +14 -15
- package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
- package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
- package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
- package/dist/utils/AutomaticClockDriftCorrection.js +69 -70
- package/dist/utils/BitcoinUtils.d.ts +12 -14
- package/dist/utils/BitcoinUtils.js +101 -102
- package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
- package/dist/utils/BitcoinWalletUtils.js +13 -14
- package/dist/utils/Logger.d.ts +7 -7
- package/dist/utils/Logger.js +11 -12
- package/dist/utils/RetryUtils.d.ts +22 -22
- package/dist/utils/RetryUtils.js +66 -67
- package/dist/utils/SwapUtils.d.ts +88 -88
- package/dist/utils/SwapUtils.js +72 -72
- package/dist/utils/TimeoutUtils.d.ts +17 -17
- package/dist/utils/TimeoutUtils.js +54 -55
- package/dist/utils/TokenUtils.d.ts +19 -19
- package/dist/utils/TokenUtils.js +36 -37
- package/dist/utils/TypeUtils.d.ts +7 -7
- package/dist/utils/TypeUtils.js +2 -2
- package/dist/utils/Utils.d.ts +56 -58
- package/dist/utils/Utils.js +193 -194
- package/package.json +1 -1
- package/src/intermediaries/apis/IntermediaryAPI.ts +4 -2
- package/src/prices/abstract/ISwapPrice.ts +19 -6
- package/src/swaps/ISwap.ts +17 -6
- package/src/swaps/ISwapWrapper.ts +4 -3
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +4 -2
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +4 -1
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +2 -2
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +4 -2
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +6 -6
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +5 -5
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +4 -1
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +10 -2
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +1 -1
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +1 -1
|
@@ -259,7 +259,8 @@ export abstract class ISwapWrapper<
|
|
|
259
259
|
amountToken: bigint,
|
|
260
260
|
token: string,
|
|
261
261
|
feeData: {
|
|
262
|
-
networkFee?: bigint
|
|
262
|
+
networkFee?: bigint,
|
|
263
|
+
swapFeeBtc?: bigint
|
|
263
264
|
},
|
|
264
265
|
pricePrefetchPromise: Promise<bigint | undefined> = Promise.resolve(undefined),
|
|
265
266
|
usdPricePrefetchPromise: Promise<number | undefined> = Promise.resolve(undefined),
|
|
@@ -271,8 +272,8 @@ export abstract class ISwapWrapper<
|
|
|
271
272
|
|
|
272
273
|
const [isValidAmount, usdPrice] = await Promise.all([
|
|
273
274
|
send ?
|
|
274
|
-
this._prices.isValidAmountSend(this.chainIdentifier, amountSats, swapBaseFee, swapFeePPM, amountToken, token, abortSignal, await pricePrefetchPromise) :
|
|
275
|
-
this._prices.isValidAmountReceive(this.chainIdentifier, amountSats, swapBaseFee, swapFeePPM, amountToken, token, abortSignal, await pricePrefetchPromise),
|
|
275
|
+
this._prices.isValidAmountSend(this.chainIdentifier, amountSats, swapBaseFee, swapFeePPM, amountToken, token, abortSignal, await pricePrefetchPromise, feeData.swapFeeBtc) :
|
|
276
|
+
this._prices.isValidAmountReceive(this.chainIdentifier, amountSats, swapBaseFee, swapFeePPM, amountToken, token, abortSignal, await pricePrefetchPromise, feeData.swapFeeBtc),
|
|
276
277
|
usdPricePrefetchPromise.then(value => {
|
|
277
278
|
if(value!=null) return value;
|
|
278
279
|
return this._prices.preFetchUsdPrice(abortSignal);
|
|
@@ -334,12 +334,14 @@ export class FromBTCLNWrapper<
|
|
|
334
334
|
if(decodedPr.timeExpireDate==null) throw new IntermediaryError("Invalid returned swap invoice, no expiry date field");
|
|
335
335
|
const amountIn = (BigInt(decodedPr.millisatoshis) + 999n) / 1000n;
|
|
336
336
|
|
|
337
|
+
const swapFeeBtc = resp.swapFee * amountIn / (resp.total - resp.swapFee);
|
|
338
|
+
|
|
337
339
|
try {
|
|
338
340
|
this.verifyReturnedData(resp, amountData, lp, _options, decodedPr, paymentHash);
|
|
339
341
|
const [pricingInfo] = await Promise.all([
|
|
340
342
|
this.verifyReturnedPrice(
|
|
341
343
|
lp.services[SwapType.FROM_BTCLN], false, amountIn, resp.total,
|
|
342
|
-
amountData.token, {}, _preFetches.pricePrefetchPromise, _preFetches.usdPricePrefetchPromise, abortController.signal
|
|
344
|
+
amountData.token, {swapFeeBtc}, _preFetches.pricePrefetchPromise, _preFetches.usdPricePrefetchPromise, abortController.signal
|
|
343
345
|
),
|
|
344
346
|
this.verifyIntermediaryLiquidity(resp.total, throwIfUndefined(liquidityPromise)),
|
|
345
347
|
lnCapacityPromise!=null ? this.verifyLnNodeCapacity(lp, decodedPr, lnCapacityPromise, abortController.signal) : Promise.resolve()
|
|
@@ -350,7 +352,7 @@ export class FromBTCLNWrapper<
|
|
|
350
352
|
url: lp.url,
|
|
351
353
|
expiry: decodedPr.timeExpireDate*1000,
|
|
352
354
|
swapFee: resp.swapFee,
|
|
353
|
-
swapFeeBtc
|
|
355
|
+
swapFeeBtc,
|
|
354
356
|
feeRate: (await _preFetches.feeRatePromise)!,
|
|
355
357
|
initialSwapData: await this._contract.createSwapData(
|
|
356
358
|
ChainSwapType.HTLC, lp.getAddress(this.chainIdentifier), recipient, amountData.token,
|
|
@@ -309,7 +309,10 @@ export class FromBTCLNAutoSwap<T extends ChainType = ChainType>
|
|
|
309
309
|
this.pricingInfo.satsBaseFee,
|
|
310
310
|
this.pricingInfo.feePPM,
|
|
311
311
|
this.getOutputAmountWithoutFee(),
|
|
312
|
-
this.getSwapData().getToken()
|
|
312
|
+
this.getSwapData().getToken(),
|
|
313
|
+
undefined,
|
|
314
|
+
undefined,
|
|
315
|
+
this.swapFeeBtc
|
|
313
316
|
);
|
|
314
317
|
this.pricingInfo.realPriceUsdPerBitcoin = usdPricePerBtc;
|
|
315
318
|
}
|
|
@@ -457,13 +457,13 @@ export class FromBTCLNAutoWrapper<
|
|
|
457
457
|
lp.services[SwapType.FROM_BTCLN_AUTO],
|
|
458
458
|
false, resp.btcAmountSwap,
|
|
459
459
|
resp.total,
|
|
460
|
-
amountData.token, {}, _preFetches.pricePrefetchPromise, _preFetches.usdPricePrefetchPromise, abortController.signal
|
|
460
|
+
amountData.token, {swapFeeBtc: resp.swapFeeBtc}, _preFetches.pricePrefetchPromise, _preFetches.usdPricePrefetchPromise, abortController.signal
|
|
461
461
|
),
|
|
462
462
|
_options.gasAmount===0n ? Promise.resolve(undefined) : this.verifyReturnedPrice(
|
|
463
463
|
{...lp.services[SwapType.FROM_BTCLN_AUTO], swapBaseFee: 0}, //Base fee should be charged only on the amount, not on gas
|
|
464
464
|
false, resp.btcAmountGas,
|
|
465
465
|
resp.totalGas + resp.claimerBounty,
|
|
466
|
-
nativeTokenAddress, {}, _preFetches.gasTokenPricePrefetchPromise, _preFetches.usdPricePrefetchPromise, abortController.signal
|
|
466
|
+
nativeTokenAddress, {swapFeeBtc: resp.gasSwapFeeBtc}, _preFetches.gasTokenPricePrefetchPromise, _preFetches.usdPricePrefetchPromise, abortController.signal
|
|
467
467
|
),
|
|
468
468
|
this.verifyIntermediaryLiquidity(resp.total, throwIfUndefined(liquidityPromise)),
|
|
469
469
|
_options.unsafeSkipLnNodeCheck ? Promise.resolve() : this.verifyLnNodeCapacity(lp, decodedPr, lnCapacityPromise, abortController.signal)
|
|
@@ -487,12 +487,14 @@ export class FromBTCWrapper<
|
|
|
487
487
|
const data: T["Data"] = new this._swapDataDeserializer(resp.data);
|
|
488
488
|
data.setClaimer(recipient);
|
|
489
489
|
|
|
490
|
+
const swapFeeBtc = resp.swapFee * resp.amount / (data.getAmount() - resp.swapFee);
|
|
491
|
+
|
|
490
492
|
this.verifyReturnedData(recipient, resp, amountData, lp, _options, data, sequence, (await claimerBountyPrefetchPromise)!, nativeTokenAddress);
|
|
491
493
|
const [pricingInfo, signatureExpiry] = await Promise.all([
|
|
492
494
|
//Get intermediary's liquidity
|
|
493
495
|
this.verifyReturnedPrice(
|
|
494
496
|
lp.services[SwapType.FROM_BTC], false, resp.amount, resp.total,
|
|
495
|
-
amountData.token, {}, pricePrefetchPromise, usdPricePrefetchPromise, abortController.signal
|
|
497
|
+
amountData.token, {swapFeeBtc}, pricePrefetchPromise, usdPricePrefetchPromise, abortController.signal
|
|
496
498
|
),
|
|
497
499
|
this.verifyReturnedSignature(recipient, data, resp, feeRatePromise, signDataPromise, abortController.signal),
|
|
498
500
|
this.verifyIntermediaryLiquidity(data.getAmount(), throwIfUndefined(liquidityPromise)),
|
|
@@ -503,7 +505,7 @@ export class FromBTCWrapper<
|
|
|
503
505
|
url: lp.url,
|
|
504
506
|
expiry: signatureExpiry,
|
|
505
507
|
swapFee: resp.swapFee,
|
|
506
|
-
swapFeeBtc
|
|
508
|
+
swapFeeBtc,
|
|
507
509
|
feeRate: (await feeRatePromise)!,
|
|
508
510
|
signatureData: resp,
|
|
509
511
|
data,
|
|
@@ -309,10 +309,12 @@ export class ToBTCLNWrapper<T extends ChainType> extends IToBTCWrapper<T, ToBTCL
|
|
|
309
309
|
|
|
310
310
|
await this.verifyReturnedData(signer, resp, parsedPr, amountData.token, lp, calculatedOptions, data);
|
|
311
311
|
|
|
312
|
+
const swapFeeBtc = resp.swapFee * amountOut / (data.getAmount() - totalFee);
|
|
313
|
+
|
|
312
314
|
const [pricingInfo, signatureExpiry, reputation] = await Promise.all([
|
|
313
315
|
this.verifyReturnedPrice(
|
|
314
316
|
lp.services[SwapType.TO_BTCLN], true, amountOut, data.getAmount(),
|
|
315
|
-
amountData.token, {networkFee: resp.maxFee},
|
|
317
|
+
amountData.token, {networkFee: resp.maxFee, swapFeeBtc},
|
|
316
318
|
preFetches.pricePreFetchPromise, preFetches.usdPricePrefetchPromise, abortController.signal
|
|
317
319
|
),
|
|
318
320
|
this.verifyReturnedSignature(
|
|
@@ -324,8 +326,6 @@ export class ToBTCLNWrapper<T extends ChainType> extends IToBTCWrapper<T, ToBTCL
|
|
|
324
326
|
|
|
325
327
|
if(reputation!=null) lp.reputation[amountData.token.toString()] = reputation;
|
|
326
328
|
|
|
327
|
-
const swapFeeBtc = resp.swapFee * amountOut / (data.getAmount() - totalFee);
|
|
328
|
-
|
|
329
329
|
const quote = new ToBTCLNSwap<T>(this, {
|
|
330
330
|
pricingInfo,
|
|
331
331
|
url: lp.url,
|
|
@@ -512,10 +512,12 @@ export class ToBTCLNWrapper<T extends ChainType> extends IToBTCWrapper<T, ToBTCL
|
|
|
512
512
|
|
|
513
513
|
await this.verifyReturnedData(signer, resp, parsedInvoice, amountData.token, lp, calculatedOptions, data, amountData.amount);
|
|
514
514
|
|
|
515
|
+
const swapFeeBtc = resp.swapFee * amountOut / (data.getAmount() - totalFee);
|
|
516
|
+
|
|
515
517
|
const [pricingInfo, signatureExpiry, reputation] = await Promise.all([
|
|
516
518
|
this.verifyReturnedPrice(
|
|
517
519
|
lp.services[SwapType.TO_BTCLN], true, prepareResp.amount, data.getAmount(),
|
|
518
|
-
amountData.token, {networkFee: resp.maxFee},
|
|
520
|
+
amountData.token, {networkFee: resp.maxFee, swapFeeBtc},
|
|
519
521
|
preFetches.pricePreFetchPromise, preFetches.usdPricePrefetchPromise, abortSignal
|
|
520
522
|
),
|
|
521
523
|
this.verifyReturnedSignature(
|
|
@@ -527,8 +529,6 @@ export class ToBTCLNWrapper<T extends ChainType> extends IToBTCWrapper<T, ToBTCL
|
|
|
527
529
|
|
|
528
530
|
if(reputation!=null) lp.reputation[amountData.token.toString()] = reputation;
|
|
529
531
|
|
|
530
|
-
const swapFeeBtc = resp.swapFee * amountOut / (data.getAmount() - totalFee);
|
|
531
|
-
|
|
532
532
|
const quote = new ToBTCLNSwap<T>(this, {
|
|
533
533
|
pricingInfo,
|
|
534
534
|
url: lp.url,
|
|
@@ -289,11 +289,15 @@ export class ToBTCWrapper<T extends ChainType> extends IToBTCWrapper<T, ToBTCDef
|
|
|
289
289
|
const data: T["Data"] = new this._swapDataDeserializer(resp.data);
|
|
290
290
|
data.setOfferer(signer);
|
|
291
291
|
|
|
292
|
+
const inputWithoutFees = data.getAmount() - resp.swapFee - resp.networkFee;
|
|
293
|
+
const swapFeeBtc = resp.swapFee * resp.amount / inputWithoutFees;
|
|
294
|
+
const networkFeeBtc = resp.networkFee * resp.amount / inputWithoutFees;
|
|
295
|
+
|
|
292
296
|
this.verifyReturnedData(signer, resp, amountData, lp, _options, data, hash);
|
|
293
297
|
const [pricingInfo, signatureExpiry, reputation] = await Promise.all([
|
|
294
298
|
this.verifyReturnedPrice(
|
|
295
299
|
lp.services[SwapType.TO_BTC], true, resp.amount, data.getAmount(),
|
|
296
|
-
amountData.token, resp, pricePreFetchPromise, usdPricePrefetchPromise, abortController.signal
|
|
300
|
+
amountData.token, {networkFee: resp.networkFee, swapFeeBtc}, pricePreFetchPromise, usdPricePrefetchPromise, abortController.signal
|
|
297
301
|
),
|
|
298
302
|
this.verifyReturnedSignature(signer, data, resp, feeRatePromise, signDataPromise, abortController.signal),
|
|
299
303
|
reputationPromise
|
|
@@ -302,10 +306,6 @@ export class ToBTCWrapper<T extends ChainType> extends IToBTCWrapper<T, ToBTCDef
|
|
|
302
306
|
|
|
303
307
|
if(reputation!=null) lp.reputation[amountData.token.toString()] = reputation;
|
|
304
308
|
|
|
305
|
-
const inputWithoutFees = data.getAmount() - resp.swapFee - resp.networkFee;
|
|
306
|
-
const swapFeeBtc = resp.swapFee * resp.amount / inputWithoutFees;
|
|
307
|
-
const networkFeeBtc = resp.networkFee * resp.amount / inputWithoutFees
|
|
308
|
-
|
|
309
309
|
const quote = new ToBTCSwap<T>(this, {
|
|
310
310
|
pricingInfo,
|
|
311
311
|
url: lp.url,
|
|
@@ -398,7 +398,10 @@ export class SpvFromBTCSwap<T extends ChainType>
|
|
|
398
398
|
this.pricingInfo.satsBaseFee,
|
|
399
399
|
this.pricingInfo.feePPM,
|
|
400
400
|
this.getOutputWithoutFee().rawAmount,
|
|
401
|
-
this.outputSwapToken
|
|
401
|
+
this.outputSwapToken,
|
|
402
|
+
undefined,
|
|
403
|
+
undefined,
|
|
404
|
+
this.swapFeeBtc
|
|
402
405
|
);
|
|
403
406
|
this.pricingInfo.realPriceUsdPerBitcoin = usdPricePerBtc;
|
|
404
407
|
}
|
|
@@ -68,6 +68,13 @@ export type SpvFromBTCOptions = {
|
|
|
68
68
|
* the settlement gas fee cost)
|
|
69
69
|
*/
|
|
70
70
|
feeSafetyFactor?: number,
|
|
71
|
+
/**
|
|
72
|
+
* Instruct the LP to create a "sticky address" for your destination wallet address. After the first successful
|
|
73
|
+
* swap with that LP, the used bitcoin address will be permanently linked to your destination wallet address. So
|
|
74
|
+
* all subsequent swaps to the same address will yield the same LP deposit bitcoin address. Useful for corporate
|
|
75
|
+
* whitelist-only wallets
|
|
76
|
+
*/
|
|
77
|
+
stickyAddress?: boolean,
|
|
71
78
|
|
|
72
79
|
/**
|
|
73
80
|
* @deprecated Use `maxAllowedBitcoinFeeRate` instead!
|
|
@@ -633,6 +640,7 @@ export class SpvFromBTCWrapper<
|
|
|
633
640
|
gasAmount: _options.gasAmount,
|
|
634
641
|
callerFeeRate: throwIfUndefined(callerFeePrefetchPromise, "Caller fee prefetch failed!"),
|
|
635
642
|
frontingFeeRate: 0n,
|
|
643
|
+
stickyAddress: options?.stickyAddress,
|
|
636
644
|
additionalParams
|
|
637
645
|
},
|
|
638
646
|
this._options.postRequestTimeout, abortController.signal, retryCount>0 ? false : undefined
|
|
@@ -652,13 +660,13 @@ export class SpvFromBTCWrapper<
|
|
|
652
660
|
lp.services[SwapType.SPV_VAULT_FROM_BTC],
|
|
653
661
|
false, resp.btcAmountSwap,
|
|
654
662
|
resp.total * (100_000n + callerFeeShare) / 100_000n,
|
|
655
|
-
amountData.token, {}, pricePrefetchPromise, usdPricePrefetchPromise, abortController.signal
|
|
663
|
+
amountData.token, {swapFeeBtc: resp.swapFeeBtc}, pricePrefetchPromise, usdPricePrefetchPromise, abortController.signal
|
|
656
664
|
),
|
|
657
665
|
_options.gasAmount===0n ? Promise.resolve(undefined) : this.verifyReturnedPrice(
|
|
658
666
|
{...lp.services[SwapType.SPV_VAULT_FROM_BTC], swapBaseFee: 0}, //Base fee should be charged only on the amount, not on gas
|
|
659
667
|
false, resp.btcAmountGas,
|
|
660
668
|
resp.totalGas * (100_000n + callerFeeShare) / 100_000n,
|
|
661
|
-
nativeTokenAddress, {}, gasTokenPricePrefetchPromise, usdPricePrefetchPromise, abortController.signal
|
|
669
|
+
nativeTokenAddress, {swapFeeBtc: resp.gasSwapFeeBtc}, gasTokenPricePrefetchPromise, usdPricePrefetchPromise, abortController.signal
|
|
662
670
|
),
|
|
663
671
|
this.verifyReturnedData(resp, amountData, lp, _options, callerFeeShare, bitcoinFeeRatePromise, abortController.signal)
|
|
664
672
|
]);
|
|
@@ -68,7 +68,7 @@ export class LnForGasWrapper<T extends ChainType> extends ISwapWrapper<T, LnForG
|
|
|
68
68
|
{swapFeePPM: 10000, swapBaseFee: 10} :
|
|
69
69
|
lpOrUrl.services[SwapType.TRUSTED_FROM_BTCLN],
|
|
70
70
|
false, amountIn,
|
|
71
|
-
amount, token, {}
|
|
71
|
+
amount, token, {swapFeeBtc: resp.swapFeeSats}
|
|
72
72
|
);
|
|
73
73
|
|
|
74
74
|
const quoteInit: LnForGasSwapInit = {
|
|
@@ -105,7 +105,7 @@ export class OnchainForGasWrapper<T extends ChainType> extends ISwapWrapper<T, O
|
|
|
105
105
|
{swapFeePPM: 10000, swapBaseFee: 10} :
|
|
106
106
|
lpOrUrl.services[SwapType.TRUSTED_FROM_BTC],
|
|
107
107
|
false, resp.amountSats,
|
|
108
|
-
amount, this._chain.getNativeCurrencyAddress(), {}
|
|
108
|
+
amount, this._chain.getNativeCurrencyAddress(), {swapFeeBtc: resp.swapFeeSats}
|
|
109
109
|
);
|
|
110
110
|
|
|
111
111
|
const quote = new OnchainForGasSwap(this, {
|