@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
package/dist/utils/Utils.d.ts
CHANGED
|
@@ -1,58 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* @
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
[key in
|
|
29
|
-
},
|
|
30
|
-
[key in keyof InputObject]:
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
*
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
export declare function
|
|
47
|
-
export declare function
|
|
48
|
-
export declare function
|
|
49
|
-
export declare function
|
|
50
|
-
export declare function
|
|
51
|
-
export declare function
|
|
52
|
-
export declare function
|
|
53
|
-
export declare function
|
|
54
|
-
export declare function
|
|
55
|
-
export declare function
|
|
56
|
-
export declare function
|
|
57
|
-
export declare function toDecimal(amount: bigint, decimalCount: number, cut?: boolean, displayDecimals?: number): string;
|
|
58
|
-
export declare function parseHashValueExact32Bytes(value?: Buffer | string, variableName?: string): Buffer | undefined;
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
/**
|
|
3
|
+
* Returns a promise that rejects if the passed promise resolves to `undefined` or `null`
|
|
4
|
+
*
|
|
5
|
+
* @param promise Promise to check resolve value of
|
|
6
|
+
* @param msg Optional message to pass to the thrown `Error`
|
|
7
|
+
* @category Utilities
|
|
8
|
+
*/
|
|
9
|
+
export declare function throwIfUndefined<T>(promise: Promise<T | undefined>, msg?: string): Promise<T>;
|
|
10
|
+
/**
|
|
11
|
+
* Returns a promise that resolves when any of the passed promises resolves, and rejects if all the underlying
|
|
12
|
+
* promises fail with an array of errors returned by the respective promises
|
|
13
|
+
*
|
|
14
|
+
* @param promises A list of promises
|
|
15
|
+
* @category Utilities
|
|
16
|
+
*/
|
|
17
|
+
export declare function promiseAny<T>(promises: Promise<T>[]): Promise<T>;
|
|
18
|
+
/**
|
|
19
|
+
* Maps a JS object to another JS object based on the translation function, the translation function is called for every
|
|
20
|
+
* property (value/key) of the old object and returns the new value of for this property
|
|
21
|
+
*
|
|
22
|
+
* @param obj
|
|
23
|
+
* @param translator
|
|
24
|
+
*/
|
|
25
|
+
export declare function objectMap<InputObject extends {
|
|
26
|
+
[key in string]: any;
|
|
27
|
+
}, OutputObject extends {
|
|
28
|
+
[key in keyof InputObject]: any;
|
|
29
|
+
}>(obj: InputObject, translator: <InputKey extends Extract<keyof InputObject, string>>(value: InputObject[InputKey], key: InputKey) => OutputObject[InputKey]): {
|
|
30
|
+
[key in keyof InputObject]: OutputObject[key];
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Maps the entries from the map to the array using the translator function
|
|
34
|
+
*
|
|
35
|
+
* @param map
|
|
36
|
+
* @param translator
|
|
37
|
+
*/
|
|
38
|
+
export declare function mapToArray<K, V, Output>(map: Map<K, V>, translator: (key: K, value: V) => Output): Output[];
|
|
39
|
+
/**
|
|
40
|
+
* Creates a new abort controller that will abort if the passed abort signal aborts
|
|
41
|
+
*
|
|
42
|
+
* @param abortSignal
|
|
43
|
+
*/
|
|
44
|
+
export declare function extendAbortController(abortSignal?: AbortSignal): AbortController;
|
|
45
|
+
export declare function bigIntMin(a: bigint, b: bigint): bigint;
|
|
46
|
+
export declare function bigIntMin(a?: bigint, b?: bigint): bigint | undefined;
|
|
47
|
+
export declare function bigIntMax(a: bigint, b: bigint): bigint;
|
|
48
|
+
export declare function bigIntMax(a?: bigint, b?: bigint): bigint | undefined;
|
|
49
|
+
export declare function bigIntCompare(a: bigint, b: bigint): -1 | 0 | 1;
|
|
50
|
+
export declare function toBigInt(value: string): bigint;
|
|
51
|
+
export declare function toBigInt(value: undefined): undefined;
|
|
52
|
+
export declare function randomBytes(bytesLength: number): Buffer;
|
|
53
|
+
export declare function getTxoHash(outputScriptHex: string, value: number): Buffer<ArrayBuffer>;
|
|
54
|
+
export declare function fromDecimal(amount: string, decimalCount: number): bigint;
|
|
55
|
+
export declare function toDecimal(amount: bigint, decimalCount: number, cut?: boolean, displayDecimals?: number): string;
|
|
56
|
+
export declare function parseHashValueExact32Bytes(value?: Buffer | string, variableName?: string): Buffer | undefined;
|
package/dist/utils/Utils.js
CHANGED
|
@@ -1,194 +1,193 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
*
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
function
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
function
|
|
104
|
-
if (a == null)
|
|
105
|
-
return b;
|
|
106
|
-
if (b == null)
|
|
107
|
-
return a;
|
|
108
|
-
return
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
function
|
|
126
|
-
return buffer_1.Buffer.from((0,
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
function parseHashValueExact32Bytes(value, variableName) {
|
|
181
|
-
let hash;
|
|
182
|
-
if (typeof (value) === "string") {
|
|
183
|
-
if (value.length !== 64)
|
|
184
|
-
throw new UserError_1.UserError(`Invalid ${variableName} length, must be exactly 64 hexadecimal characters!`);
|
|
185
|
-
hash = buffer_1.Buffer.from(value, "hex");
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
hash = value;
|
|
189
|
-
}
|
|
190
|
-
if (hash != null && hash.length !== 32)
|
|
191
|
-
throw new UserError_1.UserError(`Invalid ${variableName} length, must be exactly 32 bytes!`);
|
|
192
|
-
return hash;
|
|
193
|
-
}
|
|
194
|
-
exports.parseHashValueExact32Bytes = parseHashValueExact32Bytes;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.throwIfUndefined = throwIfUndefined;
|
|
4
|
+
exports.promiseAny = promiseAny;
|
|
5
|
+
exports.objectMap = objectMap;
|
|
6
|
+
exports.mapToArray = mapToArray;
|
|
7
|
+
exports.extendAbortController = extendAbortController;
|
|
8
|
+
exports.bigIntMin = bigIntMin;
|
|
9
|
+
exports.bigIntMax = bigIntMax;
|
|
10
|
+
exports.bigIntCompare = bigIntCompare;
|
|
11
|
+
exports.toBigInt = toBigInt;
|
|
12
|
+
exports.randomBytes = randomBytes;
|
|
13
|
+
exports.getTxoHash = getTxoHash;
|
|
14
|
+
exports.fromDecimal = fromDecimal;
|
|
15
|
+
exports.toDecimal = toDecimal;
|
|
16
|
+
exports.parseHashValueExact32Bytes = parseHashValueExact32Bytes;
|
|
17
|
+
const buffer_1 = require("buffer");
|
|
18
|
+
const utils_1 = require("@noble/hashes/utils");
|
|
19
|
+
const sha2_1 = require("@noble/hashes/sha2");
|
|
20
|
+
const base_1 = require("@atomiqlabs/base");
|
|
21
|
+
const UserError_1 = require("../errors/UserError");
|
|
22
|
+
/**
|
|
23
|
+
* Returns a promise that rejects if the passed promise resolves to `undefined` or `null`
|
|
24
|
+
*
|
|
25
|
+
* @param promise Promise to check resolve value of
|
|
26
|
+
* @param msg Optional message to pass to the thrown `Error`
|
|
27
|
+
* @category Utilities
|
|
28
|
+
*/
|
|
29
|
+
function throwIfUndefined(promise, msg) {
|
|
30
|
+
return promise.then(val => {
|
|
31
|
+
if (val == undefined)
|
|
32
|
+
throw new Error(msg ?? "Promise value is undefined!");
|
|
33
|
+
return val;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns a promise that resolves when any of the passed promises resolves, and rejects if all the underlying
|
|
38
|
+
* promises fail with an array of errors returned by the respective promises
|
|
39
|
+
*
|
|
40
|
+
* @param promises A list of promises
|
|
41
|
+
* @category Utilities
|
|
42
|
+
*/
|
|
43
|
+
function promiseAny(promises) {
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
let numRejected = 0;
|
|
46
|
+
const rejectReasons = Array(promises.length);
|
|
47
|
+
promises.forEach((promise, index) => {
|
|
48
|
+
promise.then((val) => {
|
|
49
|
+
if (resolve != null)
|
|
50
|
+
resolve(val);
|
|
51
|
+
resolve = null;
|
|
52
|
+
}).catch(err => {
|
|
53
|
+
rejectReasons[index] = err;
|
|
54
|
+
numRejected++;
|
|
55
|
+
if (numRejected === promises.length) {
|
|
56
|
+
reject(rejectReasons);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Maps a JS object to another JS object based on the translation function, the translation function is called for every
|
|
64
|
+
* property (value/key) of the old object and returns the new value of for this property
|
|
65
|
+
*
|
|
66
|
+
* @param obj
|
|
67
|
+
* @param translator
|
|
68
|
+
*/
|
|
69
|
+
function objectMap(obj, translator) {
|
|
70
|
+
const resp = {};
|
|
71
|
+
for (let key in obj) {
|
|
72
|
+
resp[key] = translator(obj[key], key);
|
|
73
|
+
}
|
|
74
|
+
return resp;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Maps the entries from the map to the array using the translator function
|
|
78
|
+
*
|
|
79
|
+
* @param map
|
|
80
|
+
* @param translator
|
|
81
|
+
*/
|
|
82
|
+
function mapToArray(map, translator) {
|
|
83
|
+
const arr = Array(map.size);
|
|
84
|
+
let pointer = 0;
|
|
85
|
+
for (let entry of map.entries()) {
|
|
86
|
+
arr[pointer++] = translator(entry[0], entry[1]);
|
|
87
|
+
}
|
|
88
|
+
return arr;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Creates a new abort controller that will abort if the passed abort signal aborts
|
|
92
|
+
*
|
|
93
|
+
* @param abortSignal
|
|
94
|
+
*/
|
|
95
|
+
function extendAbortController(abortSignal) {
|
|
96
|
+
const _abortController = new AbortController();
|
|
97
|
+
if (abortSignal != null) {
|
|
98
|
+
abortSignal.throwIfAborted();
|
|
99
|
+
abortSignal.onabort = () => _abortController.abort(abortSignal.reason);
|
|
100
|
+
}
|
|
101
|
+
return _abortController;
|
|
102
|
+
}
|
|
103
|
+
function bigIntMin(a, b) {
|
|
104
|
+
if (a == null)
|
|
105
|
+
return b;
|
|
106
|
+
if (b == null)
|
|
107
|
+
return a;
|
|
108
|
+
return a > b ? b : a;
|
|
109
|
+
}
|
|
110
|
+
function bigIntMax(a, b) {
|
|
111
|
+
if (a == null)
|
|
112
|
+
return b;
|
|
113
|
+
if (b == null)
|
|
114
|
+
return a;
|
|
115
|
+
return b > a ? b : a;
|
|
116
|
+
}
|
|
117
|
+
function bigIntCompare(a, b) {
|
|
118
|
+
return a > b ? 1 : a === b ? 0 : -1;
|
|
119
|
+
}
|
|
120
|
+
function toBigInt(value) {
|
|
121
|
+
if (value == null)
|
|
122
|
+
return undefined;
|
|
123
|
+
return BigInt(value);
|
|
124
|
+
}
|
|
125
|
+
function randomBytes(bytesLength) {
|
|
126
|
+
return buffer_1.Buffer.from((0, utils_1.randomBytes)(bytesLength));
|
|
127
|
+
}
|
|
128
|
+
function getTxoHash(outputScriptHex, value) {
|
|
129
|
+
return buffer_1.Buffer.from((0, sha2_1.sha256)(buffer_1.Buffer.concat([
|
|
130
|
+
base_1.BigIntBufferUtils.toBuffer(BigInt(value), "le", 8),
|
|
131
|
+
buffer_1.Buffer.from(outputScriptHex, "hex")
|
|
132
|
+
])));
|
|
133
|
+
}
|
|
134
|
+
function fromDecimal(amount, decimalCount) {
|
|
135
|
+
if (amount.includes(".")) {
|
|
136
|
+
const [before, after] = amount.split(".");
|
|
137
|
+
if (decimalCount < 0) {
|
|
138
|
+
return BigInt(before.substring(0, before.length + decimalCount));
|
|
139
|
+
}
|
|
140
|
+
if (after.length > decimalCount) {
|
|
141
|
+
//Cut the last digits
|
|
142
|
+
return BigInt((before === "0" ? "" : before) + after.substring(0, decimalCount));
|
|
143
|
+
}
|
|
144
|
+
return BigInt((before === "0" ? "" : before) + after.padEnd(decimalCount, "0"));
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
if (decimalCount < 0) {
|
|
148
|
+
return BigInt(amount.substring(0, amount.length + decimalCount));
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
return BigInt(amount + "0".repeat(decimalCount));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function toDecimal(amount, decimalCount, cut, displayDecimals) {
|
|
156
|
+
if (decimalCount <= 0) {
|
|
157
|
+
return amount.toString(10) + "0".repeat(-decimalCount);
|
|
158
|
+
}
|
|
159
|
+
const amountStr = amount.toString(10).padStart(decimalCount + 1, "0");
|
|
160
|
+
const splitPoint = amountStr.length - decimalCount;
|
|
161
|
+
const decimalPart = amountStr.substring(splitPoint, amountStr.length);
|
|
162
|
+
let cutTo = decimalPart.length;
|
|
163
|
+
if (cut && cutTo > 0) {
|
|
164
|
+
for (let i = decimalPart.length - 1; i--; i >= 0) {
|
|
165
|
+
if (decimalPart.charAt(i) === "0") {
|
|
166
|
+
cutTo = i;
|
|
167
|
+
}
|
|
168
|
+
else
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
if (cutTo === 0)
|
|
172
|
+
cutTo = 1;
|
|
173
|
+
}
|
|
174
|
+
if (displayDecimals === 0)
|
|
175
|
+
return amountStr.substring(0, splitPoint);
|
|
176
|
+
if (displayDecimals != null && cutTo > displayDecimals)
|
|
177
|
+
cutTo = displayDecimals;
|
|
178
|
+
return amountStr.substring(0, splitPoint) + "." + decimalPart.substring(0, cutTo);
|
|
179
|
+
}
|
|
180
|
+
function parseHashValueExact32Bytes(value, variableName) {
|
|
181
|
+
let hash;
|
|
182
|
+
if (typeof (value) === "string") {
|
|
183
|
+
if (value.length !== 64)
|
|
184
|
+
throw new UserError_1.UserError(`Invalid ${variableName} length, must be exactly 64 hexadecimal characters!`);
|
|
185
|
+
hash = buffer_1.Buffer.from(value, "hex");
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
hash = value;
|
|
189
|
+
}
|
|
190
|
+
if (hash != null && hash.length !== 32)
|
|
191
|
+
throw new UserError_1.UserError(`Invalid ${variableName} length, must be exactly 32 bytes!`);
|
|
192
|
+
return hash;
|
|
193
|
+
}
|
package/package.json
CHANGED
|
@@ -309,7 +309,8 @@ export type SpvFromBTCPrepare = SwapInit & {
|
|
|
309
309
|
gasToken: string,
|
|
310
310
|
exactOut: boolean,
|
|
311
311
|
callerFeeRate: Promise<bigint>,
|
|
312
|
-
frontingFeeRate: bigint
|
|
312
|
+
frontingFeeRate: bigint,
|
|
313
|
+
stickyAddress?: boolean
|
|
313
314
|
}
|
|
314
315
|
|
|
315
316
|
const SpvFromBTCInitResponseSchema = {
|
|
@@ -877,7 +878,8 @@ export class IntermediaryAPI {
|
|
|
877
878
|
gasAmount: init.gasAmount.toString(10),
|
|
878
879
|
gasToken: init.gasToken,
|
|
879
880
|
frontingFeeRate: init.frontingFeeRate.toString(10),
|
|
880
|
-
callerFeeRate: init.callerFeeRate.then(val => val.toString(10))
|
|
881
|
+
callerFeeRate: init.callerFeeRate.then(val => val.toString(10)),
|
|
882
|
+
stickyAddress: init.stickyAddress
|
|
881
883
|
}, {
|
|
882
884
|
code: FieldTypeEnum.Number,
|
|
883
885
|
msg: FieldTypeEnum.String,
|
|
@@ -100,6 +100,7 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
|
|
|
100
100
|
* @param tokenAddress Token address to be paid
|
|
101
101
|
* @param abortSignal
|
|
102
102
|
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
103
|
+
* @param realSwapFeeSats
|
|
103
104
|
*/
|
|
104
105
|
public async isValidAmountSend<C extends ChainIds<T>>(
|
|
105
106
|
chainIdentifier: C,
|
|
@@ -109,11 +110,15 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
|
|
|
109
110
|
paidToken: bigint,
|
|
110
111
|
tokenAddress: string,
|
|
111
112
|
abortSignal?: AbortSignal,
|
|
112
|
-
preFetchedPrice?: bigint | null
|
|
113
|
+
preFetchedPrice?: bigint | null,
|
|
114
|
+
realSwapFeeSats?: bigint
|
|
113
115
|
): Promise<PriceInfoType> {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
+
if(realSwapFeeSats!=undefined && realSwapFeeSats<0) throw new Error("Invalid swap fee! Swap fee cannot be negative!");
|
|
117
|
+
const totalSats = realSwapFeeSats!=undefined
|
|
118
|
+
? amountSats + realSwapFeeSats
|
|
119
|
+
: (amountSats * (1000000n + feePPM) / 1000000n) + satsBaseFee;
|
|
116
120
|
const totalUSats = totalSats * 1000000n;
|
|
121
|
+
|
|
117
122
|
const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / paidToken;
|
|
118
123
|
|
|
119
124
|
if(this.shouldIgnore(chainIdentifier, tokenAddress)) return {
|
|
@@ -185,6 +190,7 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
|
|
|
185
190
|
* @param tokenAddress Token address to be received
|
|
186
191
|
* @param abortSignal
|
|
187
192
|
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
193
|
+
* @param realSwapFeeSats
|
|
188
194
|
*/
|
|
189
195
|
public async isValidAmountReceive<C extends ChainIds<T>>(
|
|
190
196
|
chainIdentifier: C,
|
|
@@ -194,11 +200,18 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
|
|
|
194
200
|
receiveToken: bigint,
|
|
195
201
|
tokenAddress: string,
|
|
196
202
|
abortSignal?: AbortSignal,
|
|
197
|
-
preFetchedPrice?: bigint | null
|
|
203
|
+
preFetchedPrice?: bigint | null,
|
|
204
|
+
realSwapFeeSats?: bigint
|
|
198
205
|
): Promise<PriceInfoType> {
|
|
199
|
-
|
|
200
|
-
|
|
206
|
+
if(realSwapFeeSats!=undefined) {
|
|
207
|
+
if(realSwapFeeSats>=amountSats) throw new Error("Invalid swap fee! Larger than or equal to total output amount!");
|
|
208
|
+
if(realSwapFeeSats<0) throw new Error("Invalid swap fee! Must be non-negative!");
|
|
209
|
+
}
|
|
210
|
+
const totalSats = realSwapFeeSats!=undefined
|
|
211
|
+
? amountSats - realSwapFeeSats
|
|
212
|
+
: (amountSats * (1000000n - feePPM) / 1000000n) - satsBaseFee;
|
|
201
213
|
const totalUSats = totalSats * 1000000n;
|
|
214
|
+
|
|
202
215
|
const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / receiveToken;
|
|
203
216
|
|
|
204
217
|
if(this.shouldIgnore(chainIdentifier, tokenAddress)) return {
|
package/src/swaps/ISwap.ts
CHANGED
|
@@ -315,28 +315,39 @@ export abstract class ISwap<
|
|
|
315
315
|
public async refreshPriceData(): Promise<void> {
|
|
316
316
|
if(this.pricingInfo==null) return;
|
|
317
317
|
const priceUsdPerBtc = this.pricingInfo.realPriceUsdPerBitcoin;
|
|
318
|
-
const input = this.getInput();
|
|
319
318
|
const output = this.getOutput();
|
|
320
|
-
if(
|
|
319
|
+
if(output.isUnknown) return;
|
|
320
|
+
|
|
321
|
+
if(isSCToken(this.getInputToken()) && this.getDirection()===SwapDirection.TO_BTC) {
|
|
322
|
+
const input = this.getInputWithoutFee();
|
|
323
|
+
if(input.isUnknown) return;
|
|
321
324
|
|
|
322
|
-
if(isSCToken(input.token) && this.getDirection()===SwapDirection.TO_BTC) {
|
|
323
325
|
this.pricingInfo = await this.wrapper._prices.isValidAmountSend(
|
|
324
326
|
this.chainIdentifier,
|
|
325
327
|
output.rawAmount!,
|
|
326
328
|
this.pricingInfo.satsBaseFee,
|
|
327
329
|
this.pricingInfo.feePPM,
|
|
328
|
-
input.rawAmount
|
|
329
|
-
input.token.address
|
|
330
|
+
input.rawAmount! + this.swapFee,
|
|
331
|
+
input.token.address,
|
|
332
|
+
undefined,
|
|
333
|
+
undefined,
|
|
334
|
+
this.swapFeeBtc
|
|
330
335
|
);
|
|
331
336
|
this.pricingInfo.realPriceUsdPerBitcoin = priceUsdPerBtc;
|
|
332
337
|
} else if(isSCToken(output.token) && this.getDirection()===SwapDirection.FROM_BTC) {
|
|
338
|
+
const input = this.getInput();
|
|
339
|
+
if(input.isUnknown) return;
|
|
340
|
+
|
|
333
341
|
this.pricingInfo = await this.wrapper._prices.isValidAmountReceive(
|
|
334
342
|
this.chainIdentifier,
|
|
335
343
|
input.rawAmount!,
|
|
336
344
|
this.pricingInfo.satsBaseFee,
|
|
337
345
|
this.pricingInfo.feePPM,
|
|
338
346
|
output.rawAmount!,
|
|
339
|
-
output.token.address
|
|
347
|
+
output.token.address,
|
|
348
|
+
undefined,
|
|
349
|
+
undefined,
|
|
350
|
+
this.swapFeeBtc
|
|
340
351
|
);
|
|
341
352
|
this.pricingInfo.realPriceUsdPerBitcoin = priceUsdPerBtc;
|
|
342
353
|
}
|