@vultisig/core-chain 1.4.3 → 1.5.0
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/CHANGELOG.md +13 -0
- package/dist/swap/native/NativeSwapChain.d.ts +6 -0
- package/dist/swap/native/NativeSwapChain.d.ts.map +1 -1
- package/dist/swap/native/NativeSwapChain.js +7 -1
- package/dist/swap/native/NativeSwapChain.js.map +1 -1
- package/dist/swap/native/NativeSwapQuote.d.ts +1 -0
- package/dist/swap/native/NativeSwapQuote.d.ts.map +1 -1
- package/dist/swap/native/api/getNativeSwapQuote.d.ts.map +1 -1
- package/dist/swap/native/api/getNativeSwapQuote.js +87 -11
- package/dist/swap/native/api/getNativeSwapQuote.js.map +1 -1
- package/dist/swap/native/utils/parseThorchainSwapMemoStreaming.d.ts +9 -0
- package/dist/swap/native/utils/parseThorchainSwapMemoStreaming.d.ts.map +1 -0
- package/dist/swap/native/utils/parseThorchainSwapMemoStreaming.js +18 -0
- package/dist/swap/native/utils/parseThorchainSwapMemoStreaming.js.map +1 -0
- package/package.json +7 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @vultisig/core-chain
|
|
2
2
|
|
|
3
|
+
## 1.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#320](https://github.com/vultisig/vultisig-sdk/pull/320) [`c33d1f0`](https://github.com/vultisig/vultisig-sdk/commit/c33d1f02b6740ef1c7db16cdc1f7290ec7b2f1f5) Thanks [@rcoderdev](https://github.com/rcoderdev)! - feat(chain): THORChain rapid quote with streaming fallback above 3% fee bps
|
|
8
|
+
|
|
9
|
+
THORChain swap quotes now request rapid (`streaming_interval=0`) first. When `fees.total_bps` exceeds 300, a second streaming quote is fetched (`interval=1`, optional `streaming_quantity` from `max_streaming_quantity`); the better `expected_amount_out` wins, with silent fallback to rapid on errors. `THORCHAIN_STREAMING_SLIPPAGE_THRESHOLD_BPS` disables the extra fetch when set to `Number.MAX_SAFE_INTEGER`. Keysign payload reads THOR streaming fields from the quote memo so they match the selected route.
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`a52980c`](https://github.com/vultisig/vultisig-sdk/commit/a52980c490633da7d7ae36128bc491f8ca3ff565)]:
|
|
14
|
+
- @vultisig/lib-utils@0.10.1
|
|
15
|
+
|
|
3
16
|
## 1.4.3
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
export declare const nativeSwapChains: readonly ["THORChain", "MayaChain"];
|
|
2
2
|
export type NativeSwapChain = (typeof nativeSwapChains)[number];
|
|
3
|
+
/** THORChain rapid swap (`streaming_interval=0`). Streaming retry uses interval `1`. */
|
|
3
4
|
export declare const nativeSwapStreamingInterval: Record<NativeSwapChain, number>;
|
|
5
|
+
/**
|
|
6
|
+
* THORChain-only: when a rapid quote's `fees.total_bps` exceeds this, fetch a streaming quote and pick the better outcome.
|
|
7
|
+
* Set to `Number.MAX_SAFE_INTEGER` to disable streaming fallback without removing code.
|
|
8
|
+
*/
|
|
9
|
+
export declare const THORCHAIN_STREAMING_SLIPPAGE_THRESHOLD_BPS = 300;
|
|
4
10
|
export declare const nativeSwapApiBaseUrl: Record<NativeSwapChain, string>;
|
|
5
11
|
export declare const nativeSwapEnabledChainsRecord: {
|
|
6
12
|
readonly THORChain: readonly ["Avalanche", import("@vultisig/core-chain/Chain").UtxoChain.BitcoinCash, "BSC", import("@vultisig/core-chain/Chain").UtxoChain.Bitcoin, import("@vultisig/core-chain/Chain").UtxoChain.Dogecoin, "Ethereum", "Cosmos", import("@vultisig/core-chain/Chain").UtxoChain.Litecoin, "THORChain", import("@vultisig/core-chain/Chain").OtherChain.Ripple, "Base", import("@vultisig/core-chain/Chain").OtherChain.Solana, import("@vultisig/core-chain/Chain").OtherChain.Tron, "Noble"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeSwapChain.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/NativeSwapChain.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,qCAA8C,CAAA;AAC3E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAGvE,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAGhE,CAAA;AAmBD,eAAO,MAAM,6BAA6B;;;CAYhC,CAAA;AAEV,KAAK,sBAAsB,GACzB,CAAC,OAAO,6BAA6B,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAEjE,eAAO,MAAM,uBAAuB,EAE/B,sBAAsB,EAAE,CAAA;AAE7B,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAoBrE,CAAA;AAED,KAAK,qBAAqB,GACtB,sBAAsB,GACtB,sBAAsB,CAAA;AAE1B,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,eAAe,EACf,qBAAqB,CAItB,CAAA"}
|
|
1
|
+
{"version":3,"file":"NativeSwapChain.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/NativeSwapChain.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,qCAA8C,CAAA;AAC3E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,wFAAwF;AACxF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAGvE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0CAA0C,MAAM,CAAA;AAE7D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAGhE,CAAA;AAmBD,eAAO,MAAM,6BAA6B;;;CAYhC,CAAA;AAEV,KAAK,sBAAsB,GACzB,CAAC,OAAO,6BAA6B,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAEjE,eAAO,MAAM,uBAAuB,EAE/B,sBAAsB,EAAE,CAAA;AAE7B,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAoBrE,CAAA;AAED,KAAK,qBAAqB,GACtB,sBAAsB,GACtB,sBAAsB,CAAA;AAE1B,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,eAAe,EACf,qBAAqB,CAItB,CAAA"}
|
|
@@ -2,10 +2,16 @@ import { Chain } from '@vultisig/core-chain/Chain';
|
|
|
2
2
|
import { cosmosRpcUrl } from '@vultisig/core-chain/chains/cosmos/cosmosRpcUrl';
|
|
3
3
|
import { withoutDuplicates } from '@vultisig/lib-utils/array/withoutDuplicates';
|
|
4
4
|
export const nativeSwapChains = [Chain.THORChain, Chain.MayaChain];
|
|
5
|
+
/** THORChain rapid swap (`streaming_interval=0`). Streaming retry uses interval `1`. */
|
|
5
6
|
export const nativeSwapStreamingInterval = {
|
|
6
|
-
[Chain.THORChain]:
|
|
7
|
+
[Chain.THORChain]: 0,
|
|
7
8
|
[Chain.MayaChain]: 3,
|
|
8
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* THORChain-only: when a rapid quote's `fees.total_bps` exceeds this, fetch a streaming quote and pick the better outcome.
|
|
12
|
+
* Set to `Number.MAX_SAFE_INTEGER` to disable streaming fallback without removing code.
|
|
13
|
+
*/
|
|
14
|
+
export const THORCHAIN_STREAMING_SLIPPAGE_THRESHOLD_BPS = 300;
|
|
9
15
|
export const nativeSwapApiBaseUrl = {
|
|
10
16
|
[Chain.THORChain]: `${cosmosRpcUrl[Chain.THORChain]}/thorchain`,
|
|
11
17
|
[Chain.MayaChain]: `${cosmosRpcUrl[Chain.MayaChain]}/mayachain`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeSwapChain.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/NativeSwapChain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NativeSwapChain.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/NativeSwapChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAE/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAU,CAAA;AAG3E,wFAAwF;AACxF,MAAM,CAAC,MAAM,2BAA2B,GAAoC;IAC1E,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;IACpB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;CACrB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,GAAG,CAAA;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY;IAC/D,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY;CAChE,CAAA;AAED,MAAM,0BAA0B,GAAG;IACjC,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,WAAW;IACjB,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,KAAK;CACH,CAAA;AAEV,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,0BAA0B;IAC7C,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACjB,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK;KACZ;CACO,CAAA;AAKV,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CACtD,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CACzC,CAAA;AAE7B,MAAM,CAAC,MAAM,kBAAkB,GAA2C;IACxE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM;IACzB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK;IAC1B,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAClB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;IACtB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM;IACxB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK;IACvB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM;IACtB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK;IACvB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM;IACzB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM;IACzB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM;IACtB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK;IACvB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK;IACpB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;IACrB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;IACrB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;CACvB,CAAA;AAMD,MAAM,CAAC,MAAM,qBAAqB,GAG9B;IACF,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,sBAAsB;IACzC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,sBAAsB;CAC1C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/NativeSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,eAAe,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,cAAc,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,qBAAqB,EAAE,MAAM,CAAA;IAC7B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,yBAAyB,EAAE,MAAM,CAAA;IACjC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA"}
|
|
1
|
+
{"version":3,"file":"NativeSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/NativeSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,eAAe,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,cAAc,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,4BAA4B,CAAC,EAAE,MAAM,CAAA;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,qBAAqB,EAAE,MAAM,CAAA;IAC7B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,yBAAyB,EAAE,MAAM,CAAA;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNativeSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getNativeSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAKzE,OAAO,EAEL,eAAe,EAGhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAIpD,KAAK,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACtE,SAAS,EAAE,eAAe,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AA0ED,eAAO,MAAM,kBAAkB,GAAU,uEAQtC,uBAAuB,KAAG,OAAO,CAAC,eAAe,CA6FnD,CAAA"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { toChainAmount } from '@vultisig/core-chain/amount/toChainAmount';
|
|
2
|
+
import { Chain } from '@vultisig/core-chain/Chain';
|
|
2
3
|
import { isInError } from '@vultisig/lib-utils/error/isInError';
|
|
3
4
|
import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
4
5
|
import { t } from 'i18next';
|
|
5
6
|
import { chainFeeCoin } from '../../../coin/chainFeeCoin.js';
|
|
6
7
|
import { toNativeSwapAsset } from '../asset/toNativeSwapAsset.js';
|
|
7
|
-
import { nativeSwapApiBaseUrl, nativeSwapStreamingInterval, } from '../NativeSwapChain.js';
|
|
8
|
+
import { nativeSwapApiBaseUrl, nativeSwapStreamingInterval, THORCHAIN_STREAMING_SLIPPAGE_THRESHOLD_BPS, } from '../NativeSwapChain.js';
|
|
8
9
|
import { getNativeSwapDecimals } from '../utils/getNativeSwapDecimals.js';
|
|
9
10
|
import { buildAffiliateParams } from './affiliate.js';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const fromDecimals = getNativeSwapDecimals(from);
|
|
13
|
-
const chainAmount = toChainAmount(amount, fromDecimals);
|
|
14
|
-
const swapBaseUrl = `${nativeSwapApiBaseUrl[swapChain]}/quote/swap`;
|
|
11
|
+
const THORCHAIN_STREAMING_SWAP_INTERVAL = 1;
|
|
12
|
+
const requestNativeSwapQuote = async ({ swapChain, swapBaseUrl, fromAsset, toAsset, chainAmount, destination, streamingInterval, streamingQuantity, affiliateBps, referral, from, }) => {
|
|
15
13
|
const params = new URLSearchParams({
|
|
16
14
|
from_asset: fromAsset,
|
|
17
15
|
to_asset: toAsset,
|
|
18
16
|
amount: chainAmount.toString(),
|
|
19
17
|
destination,
|
|
20
|
-
streaming_interval: String(
|
|
18
|
+
streaming_interval: String(streamingInterval),
|
|
19
|
+
...(streamingQuantity !== undefined
|
|
20
|
+
? { streaming_quantity: String(streamingQuantity) }
|
|
21
|
+
: {}),
|
|
21
22
|
...(affiliateBps !== undefined
|
|
22
23
|
? buildAffiliateParams({
|
|
23
24
|
swapChain,
|
|
@@ -27,7 +28,9 @@ export const getNativeSwapQuote = async ({ swapChain, destination, from, to, amo
|
|
|
27
28
|
: {}),
|
|
28
29
|
});
|
|
29
30
|
const url = `${swapBaseUrl}?${params.toString()}`;
|
|
30
|
-
|
|
31
|
+
return queryUrl(url);
|
|
32
|
+
};
|
|
33
|
+
const assertOkQuote = (result, from) => {
|
|
31
34
|
if ('error' in result) {
|
|
32
35
|
if (isInError(result.error, 'not enough asset to pay for fees')) {
|
|
33
36
|
const { ticker } = chainFeeCoin[from.chain];
|
|
@@ -35,9 +38,82 @@ export const getNativeSwapQuote = async ({ swapChain, destination, from, to, amo
|
|
|
35
38
|
}
|
|
36
39
|
throw new Error(result.error);
|
|
37
40
|
}
|
|
38
|
-
return
|
|
39
|
-
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
export const getNativeSwapQuote = async ({ swapChain, destination, from, to, amount, affiliateBps, referral, }) => {
|
|
44
|
+
const [fromAsset, toAsset] = [from, to].map(asset => toNativeSwapAsset(asset));
|
|
45
|
+
const fromDecimals = getNativeSwapDecimals(from);
|
|
46
|
+
const chainAmount = toChainAmount(amount, fromDecimals);
|
|
47
|
+
const swapBaseUrl = `${nativeSwapApiBaseUrl[swapChain]}/quote/swap`;
|
|
48
|
+
if (swapChain !== Chain.THORChain) {
|
|
49
|
+
const result = await requestNativeSwapQuote({
|
|
50
|
+
swapChain,
|
|
51
|
+
swapBaseUrl,
|
|
52
|
+
fromAsset,
|
|
53
|
+
toAsset,
|
|
54
|
+
chainAmount,
|
|
55
|
+
destination,
|
|
56
|
+
streamingInterval: nativeSwapStreamingInterval[swapChain],
|
|
57
|
+
affiliateBps,
|
|
58
|
+
referral,
|
|
59
|
+
from,
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
...assertOkQuote(result, from),
|
|
63
|
+
swapChain,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const rapidResult = await requestNativeSwapQuote({
|
|
40
67
|
swapChain,
|
|
41
|
-
|
|
68
|
+
swapBaseUrl,
|
|
69
|
+
fromAsset,
|
|
70
|
+
toAsset,
|
|
71
|
+
chainAmount,
|
|
72
|
+
destination,
|
|
73
|
+
streamingInterval: nativeSwapStreamingInterval[swapChain],
|
|
74
|
+
affiliateBps,
|
|
75
|
+
referral,
|
|
76
|
+
from,
|
|
77
|
+
});
|
|
78
|
+
const rapid = assertOkQuote(rapidResult, from);
|
|
79
|
+
const totalBps = rapid.fees.total_bps;
|
|
80
|
+
if (totalBps === undefined ||
|
|
81
|
+
totalBps <= THORCHAIN_STREAMING_SLIPPAGE_THRESHOLD_BPS) {
|
|
82
|
+
return { ...rapid, swapChain };
|
|
83
|
+
}
|
|
84
|
+
const streamingQuantity = rapid.max_streaming_quantity !== undefined &&
|
|
85
|
+
rapid.max_streaming_quantity > 0
|
|
86
|
+
? rapid.max_streaming_quantity
|
|
87
|
+
: undefined;
|
|
88
|
+
let streaming;
|
|
89
|
+
try {
|
|
90
|
+
const streamingRes = await requestNativeSwapQuote({
|
|
91
|
+
swapChain,
|
|
92
|
+
swapBaseUrl,
|
|
93
|
+
fromAsset,
|
|
94
|
+
toAsset,
|
|
95
|
+
chainAmount,
|
|
96
|
+
destination,
|
|
97
|
+
streamingInterval: THORCHAIN_STREAMING_SWAP_INTERVAL,
|
|
98
|
+
streamingQuantity,
|
|
99
|
+
affiliateBps,
|
|
100
|
+
referral,
|
|
101
|
+
from,
|
|
102
|
+
});
|
|
103
|
+
streaming = assertOkQuote(streamingRes, from);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.warn('[thorchain] streaming quote failed after elevated rapid slippage; using rapid quote', error);
|
|
107
|
+
return { ...rapid, swapChain };
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
if (BigInt(streaming.expected_amount_out) > BigInt(rapid.expected_amount_out)) {
|
|
111
|
+
return { ...streaming, swapChain };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return { ...rapid, swapChain };
|
|
116
|
+
}
|
|
117
|
+
return { ...rapid, swapChain };
|
|
42
118
|
};
|
|
43
119
|
//# sourceMappingURL=getNativeSwapQuote.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNativeSwapQuote.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAA;
|
|
1
|
+
{"version":3,"file":"getNativeSwapQuote.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/api/getNativeSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAA;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,SAAS,CAAA;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EACL,oBAAoB,EAEpB,2BAA2B,EAC3B,0CAA0C,GAC3C,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAgBlD,MAAM,iCAAiC,GAAG,CAAC,CAAA;AAE3C,MAAM,sBAAsB,GAAG,KAAK,EAAE,EACpC,SAAS,EACT,WAAW,EACX,SAAS,EACT,OAAO,EACP,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,IAAI,GAaL,EAAmE,EAAE;IACpE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE;QAC9B,WAAW;QACX,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,CAAC;QAC7C,GAAG,CAAC,iBAAiB,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE;YACnD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,YAAY,KAAK,SAAS;YAC5B,CAAC,CAAC,oBAAoB,CAAC;gBACnB,SAAS;gBACT,QAAQ;gBACR,YAAY;aACb,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IAEjD,OAAO,QAAQ,CAAyD,GAAG,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CACpB,MAA8D,EAC9D,IAAiB,EACQ,EAAE;IAC3B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,kCAAkC,CAAC,EAAE,CAAC;YAChE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC3C,MAAM,IAAI,KAAK,CACb,CAAC,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAC3D,CAAA;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACvC,SAAS,EACT,WAAW,EACX,IAAI,EACJ,EAAE,EACF,MAAM,EACN,YAAY,EACZ,QAAQ,GACgB,EAA4B,EAAE;IACtD,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAA;IAE9E,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAEhD,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAEvD,MAAM,WAAW,GAAG,GAAG,oBAAoB,CAAC,SAAS,CAAC,aAAa,CAAA;IAEnE,IAAI,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;YAC1C,SAAS;YACT,WAAW;YACX,SAAS;YACT,OAAO;YACP,WAAW;YACX,WAAW;YACX,iBAAiB,EAAE,2BAA2B,CAAC,SAAS,CAAC;YACzD,YAAY;YACZ,QAAQ;YACR,IAAI;SACL,CAAC,CAAA;QAEF,OAAO;YACL,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;YAC9B,SAAS;SACV,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC;QAC/C,SAAS;QACT,WAAW;QACX,SAAS;QACT,OAAO;QACP,WAAW;QACX,WAAW;QACX,iBAAiB,EAAE,2BAA2B,CAAC,SAAS,CAAC;QACzD,YAAY;QACZ,QAAQ;QACR,IAAI;KACL,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAE9C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAA;IACrC,IACE,QAAQ,KAAK,SAAS;QACtB,QAAQ,IAAI,0CAA0C,EACtD,CAAC;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAA;IAChC,CAAC;IAED,MAAM,iBAAiB,GACrB,KAAK,CAAC,sBAAsB,KAAK,SAAS;QAC1C,KAAK,CAAC,sBAAsB,GAAG,CAAC;QAC9B,CAAC,CAAC,KAAK,CAAC,sBAAsB;QAC9B,CAAC,CAAC,SAAS,CAAA;IAEf,IAAI,SAAkC,CAAA;IACtC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC;YAChD,SAAS;YACT,WAAW;YACX,SAAS;YACT,OAAO;YACP,WAAW;YACX,WAAW;YACX,iBAAiB,EAAE,iCAAiC;YACpD,iBAAiB;YACjB,YAAY;YACZ,QAAQ;YACR,IAAI;SACL,CAAC,CAAA;QACF,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,qFAAqF,EACrF,KAAK,CACN,CAAA;QACD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAA;IAChC,CAAC;IAED,IAAI,CAAC;QACH,IACE,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EACzE,CAAC;YACD,OAAO,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,CAAA;QACpC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAA;IAChC,CAAC;IAED,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAA;AAChC,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THORChain swap memos append `:<liquidity_tolerance>/<streaming_interval>/<streaming_quantity>`
|
|
3
|
+
* for streaming swaps. Rapid swaps omit this suffix.
|
|
4
|
+
*/
|
|
5
|
+
export declare const parseThorchainSwapMemoStreaming: (memo: string) => {
|
|
6
|
+
streamingInterval: string;
|
|
7
|
+
streamingQuantity: string;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=parseThorchainSwapMemoStreaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseThorchainSwapMemoStreaming.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/utils/parseThorchainSwapMemoStreaming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,+BAA+B,GAC1C,MAAM,MAAM,KACX;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAYxD,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THORChain swap memos append `:<liquidity_tolerance>/<streaming_interval>/<streaming_quantity>`
|
|
3
|
+
* for streaming swaps. Rapid swaps omit this suffix.
|
|
4
|
+
*/
|
|
5
|
+
export const parseThorchainSwapMemoStreaming = (memo) => {
|
|
6
|
+
const segments = memo.split(':');
|
|
7
|
+
for (let i = segments.length - 1; i >= 0; i -= 1) {
|
|
8
|
+
const triple = /^(\d+)\/(\d+)\/(\d+)$/.exec(segments[i]);
|
|
9
|
+
if (triple) {
|
|
10
|
+
return {
|
|
11
|
+
streamingInterval: triple[2],
|
|
12
|
+
streamingQuantity: triple[3],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return { streamingInterval: '0', streamingQuantity: '0' };
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=parseThorchainSwapMemoStreaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseThorchainSwapMemoStreaming.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/utils/parseThorchainSwapMemoStreaming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,IAAY,EAC8C,EAAE;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC5B,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;aAC7B,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAA;AAC3D,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/core-chain",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Blockchain chain logic shared across Vultisig clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -1350,6 +1350,11 @@
|
|
|
1350
1350
|
"import": "./dist/swap/native/utils/getNativeSwapDecimals.js",
|
|
1351
1351
|
"default": "./dist/swap/native/utils/getNativeSwapDecimals.js"
|
|
1352
1352
|
},
|
|
1353
|
+
"./swap/native/utils/parseThorchainSwapMemoStreaming": {
|
|
1354
|
+
"types": "./dist/swap/native/utils/parseThorchainSwapMemoStreaming.d.ts",
|
|
1355
|
+
"import": "./dist/swap/native/utils/parseThorchainSwapMemoStreaming.js",
|
|
1356
|
+
"default": "./dist/swap/native/utils/parseThorchainSwapMemoStreaming.js"
|
|
1357
|
+
},
|
|
1353
1358
|
"./swap/NoSwapRoutesError": {
|
|
1354
1359
|
"types": "./dist/swap/NoSwapRoutesError.d.ts",
|
|
1355
1360
|
"import": "./dist/swap/NoSwapRoutesError.js",
|
|
@@ -1682,7 +1687,7 @@
|
|
|
1682
1687
|
"@ton/crypto": "^3.3.0",
|
|
1683
1688
|
"@trustwallet/wallet-core": "^4.6.0",
|
|
1684
1689
|
"@vultisig/core-config": "0.9.1",
|
|
1685
|
-
"@vultisig/lib-utils": "0.10.
|
|
1690
|
+
"@vultisig/lib-utils": "0.10.1",
|
|
1686
1691
|
"bip32": "^5.0.1",
|
|
1687
1692
|
"bitcoinjs-lib": "^7.0.1",
|
|
1688
1693
|
"bs58": "^6.0.0",
|