@vultisig/core-chain 4.0.1 → 4.1.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.
Files changed (36) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/swap/general/GeneralSwapProvider.d.ts +1 -1
  3. package/dist/swap/general/GeneralSwapProvider.d.ts.map +1 -1
  4. package/dist/swap/general/GeneralSwapProvider.js +2 -1
  5. package/dist/swap/general/GeneralSwapProvider.js.map +1 -1
  6. package/dist/swap/general/GeneralSwapQuote.d.ts +13 -1
  7. package/dist/swap/general/GeneralSwapQuote.d.ts.map +1 -1
  8. package/dist/swap/general/ruji/api/getRujiTradeSwapQuote.d.ts +12 -0
  9. package/dist/swap/general/ruji/api/getRujiTradeSwapQuote.d.ts.map +1 -0
  10. package/dist/swap/general/ruji/api/getRujiTradeSwapQuote.js +136 -0
  11. package/dist/swap/general/ruji/api/getRujiTradeSwapQuote.js.map +1 -0
  12. package/dist/swap/general/ruji/config.d.ts +16 -0
  13. package/dist/swap/general/ruji/config.d.ts.map +1 -0
  14. package/dist/swap/general/ruji/config.js +19 -0
  15. package/dist/swap/general/ruji/config.js.map +1 -0
  16. package/dist/swap/keysign/getSwapDestinationAddress.d.ts.map +1 -1
  17. package/dist/swap/keysign/getSwapDestinationAddress.js +1 -0
  18. package/dist/swap/keysign/getSwapDestinationAddress.js.map +1 -1
  19. package/dist/swap/quote/SwapQuote.d.ts +2 -0
  20. package/dist/swap/quote/SwapQuote.d.ts.map +1 -1
  21. package/dist/swap/quote/findSwapQuote.d.ts +4 -4
  22. package/dist/swap/quote/findSwapQuote.d.ts.map +1 -1
  23. package/dist/swap/quote/findSwapQuote.js +153 -19
  24. package/dist/swap/quote/findSwapQuote.js.map +1 -1
  25. package/dist/swap/quote/getSwapQuoteSafetyFingerprint.d.ts +2 -1
  26. package/dist/swap/quote/getSwapQuoteSafetyFingerprint.d.ts.map +1 -1
  27. package/dist/swap/quote/getSwapQuoteSafetyFingerprint.js +2 -1
  28. package/dist/swap/quote/getSwapQuoteSafetyFingerprint.js.map +1 -1
  29. package/dist/swap/swapEnabledChains.d.ts.map +1 -1
  30. package/dist/swap/swapEnabledChains.js +2 -0
  31. package/dist/swap/swapEnabledChains.js.map +1 -1
  32. package/dist/swap/utils/getSwapExplorerUrl/index.d.ts +2 -2
  33. package/dist/swap/utils/getSwapExplorerUrl/index.d.ts.map +1 -1
  34. package/dist/swap/utils/getSwapExplorerUrl/index.js +2 -1
  35. package/dist/swap/utils/getSwapExplorerUrl/index.js.map +1 -1
  36. package/package.json +11 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @vultisig/core-chain
2
2
 
3
+ ## 4.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2234](https://github.com/vultisig/vultisig-sdk/pull/2234) [`0697060`](https://github.com/vultisig/vultisig-sdk/commit/0697060107c7fe1c8ec818d3e0eae01557d9d96f) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Add RUJI Trade quoting and CosmWasm execution for native RUNE and bRUNE swaps through the SDK's normal swap flow.
8
+
9
+ ### Patch Changes
10
+
11
+ - [#2235](https://github.com/vultisig/vultisig-sdk/pull/2235) [`3fff7cf`](https://github.com/vultisig/vultisig-sdk/commit/3fff7cfdfe23d2d5622f7caa87a6f1525329f07e) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - fix(swap): stop reporting a native trading halt when an aggregator could still fill
12
+
13
+ `findSwapQuotes` collapsed a THORChain/MayaChain halt plus a transient aggregator failure into `TradingHalted` for the whole pair, so an ETH→SOL quote surfaced "trading halted" whenever LiFi/SwapKit happened to time out. A halt is scoped to the native protocol that raised it: those aggregators now get one automatic re-attempt, and when they are still unreachable the error reports the transient failure instead of a halt the user cannot retry out of. Halt-only pairs still throw `TradingHalted`.
14
+
3
15
  ## 4.0.1
4
16
 
5
17
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- export declare const generalSwapProviders: readonly ["1inch", "li.fi", "kyber", "swapkit", "cowswap", "jupiter"];
1
+ export declare const generalSwapProviders: readonly ["1inch", "li.fi", "kyber", "swapkit", "cowswap", "jupiter", "ruji"];
2
2
  export type GeneralSwapProvider = (typeof generalSwapProviders)[number];
3
3
  export declare const generalSwapProviderName: Record<GeneralSwapProvider, string>;
4
4
  //# sourceMappingURL=GeneralSwapProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeneralSwapProvider.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/general/GeneralSwapProvider.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,uEAAwE,CAAA;AAEzG,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAOvE,CAAA"}
1
+ {"version":3,"file":"GeneralSwapProvider.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/general/GeneralSwapProvider.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,+EAAgF,CAAA;AAEjH,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAQvE,CAAA"}
@@ -1,4 +1,4 @@
1
- export const generalSwapProviders = ['1inch', 'li.fi', 'kyber', 'swapkit', 'cowswap', 'jupiter'];
1
+ export const generalSwapProviders = ['1inch', 'li.fi', 'kyber', 'swapkit', 'cowswap', 'jupiter', 'ruji'];
2
2
  export const generalSwapProviderName = {
3
3
  '1inch': '1Inch',
4
4
  'li.fi': 'LI.FI',
@@ -6,5 +6,6 @@ export const generalSwapProviderName = {
6
6
  swapkit: 'SwapKit',
7
7
  cowswap: 'CowSwap',
8
8
  jupiter: 'Jupiter',
9
+ ruji: 'RUJI Trade',
9
10
  };
10
11
  //# sourceMappingURL=GeneralSwapProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeneralSwapProvider.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/general/GeneralSwapProvider.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAU,CAAA;AAIzG,MAAM,CAAC,MAAM,uBAAuB,GAAwC;IAC1E,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACnB,CAAA"}
1
+ {"version":3,"file":"GeneralSwapProvider.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/general/GeneralSwapProvider.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAU,CAAA;AAIjH,MAAM,CAAC,MAAM,uBAAuB,GAAwC;IAC1E,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,YAAY;CACnB,CAAA"}
@@ -65,9 +65,19 @@ export type GeneralSwapTx = {
65
65
  * the order signature, avoiding a separate ERC-20 approve transaction. */
66
66
  permitRequired?: true;
67
67
  };
68
+ } | {
69
+ cosmosWasm: {
70
+ sender: string;
71
+ contract: string;
72
+ executeMsg: string;
73
+ funds: Array<{
74
+ denom: string;
75
+ amount: string;
76
+ }>;
77
+ };
68
78
  };
69
79
  /**
70
- * Quote returned by an EVM/Solana general-purpose swap aggregator.
80
+ * Quote returned by a general-purpose swap provider.
71
81
  *
72
82
  * Consumers building a "View on Explorer" link should call
73
83
  * `getSwapExplorerUrl({ provider, txHash, fromChain })` from
@@ -80,6 +90,8 @@ export type GeneralSwapQuote = {
80
90
  dstAmount: string;
81
91
  provider: GeneralSwapProvider;
82
92
  routeProvider?: string;
93
+ /** Absolute provider quote expiry in milliseconds, when supplied. */
94
+ expiresAt?: number;
83
95
  /**
84
96
  * Signed price impact of the route as a FRACTION, not a percent: `0.0133`
85
97
  * means 1.33% of output lost, and a negative value is a favorable trade.
@@ -1 +1 @@
1
- {"version":3,"file":"GeneralSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/general/GeneralSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,MAAM,MAAM,aAAa,GACrB;IACE,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB;;;;;;;;;;;;;;WAcG;QACH,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;CACF,GACD;IACE,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,OAAO,CAAA;KACjB,CAAA;CACF,GACD;IACE,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,SAAS,CAAC,EAAE,UAAU,CAAA;QACtB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,GACD;IACE,aAAa,EAAE;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,IAAI,EAAE,gBAAgB,CAAA;QACtB,iBAAiB,EAAE,OAAO,CAAA;QAC1B,gBAAgB,EAAE,mBAAmB,CAAA;QACrC,eAAe,EAAE,mBAAmB,CAAA;QACpC,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf;;kFAE0E;QAC1E,cAAc,CAAC,EAAE,IAAI,CAAA;KACtB,CAAA;CACF,CAAA;AAEL;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,EAAE,EAAE,aAAa,CAAA;CAClB,CAAA"}
1
+ {"version":3,"file":"GeneralSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/general/GeneralSwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,MAAM,MAAM,aAAa,GACrB;IACE,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB;;;;;;;;;;;;;;WAcG;QACH,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;CACF,GACD;IACE,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,OAAO,CAAA;KACjB,CAAA;CACF,GACD;IACE,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,SAAS,CAAC,EAAE,UAAU,CAAA;QACtB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,GACD;IACE,aAAa,EAAE;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,IAAI,EAAE,gBAAgB,CAAA;QACtB,iBAAiB,EAAE,OAAO,CAAA;QAC1B,gBAAgB,EAAE,mBAAmB,CAAA;QACrC,eAAe,EAAE,mBAAmB,CAAA;QACpC,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf;;kFAE0E;QAC1E,cAAc,CAAC,EAAE,IAAI,CAAA;KACtB,CAAA;CACF,GACD;IACE,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAChD,CAAA;CACF,CAAA;AAEL;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,EAAE,EAAE,aAAa,CAAA;CAClB,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { AccountCoin } from '@vultisig/core-chain/coin/AccountCoin';
2
+ import { GeneralSwapQuote } from '@vultisig/core-chain/swap/general/GeneralSwapQuote';
3
+ export declare const isRujiTradeSwapPair: (from: AccountCoin, to: AccountCoin) => boolean;
4
+ export type GetRujiTradeSwapQuoteInput = {
5
+ from: AccountCoin;
6
+ to: AccountCoin;
7
+ amount: bigint;
8
+ destination: string;
9
+ slippageBps?: number;
10
+ };
11
+ export declare const getRujiTradeSwapQuote: ({ from, to, amount, destination, slippageBps, }: GetRujiTradeSwapQuoteInput) => Promise<GeneralSwapQuote>;
12
+ //# sourceMappingURL=getRujiTradeSwapQuote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRujiTradeSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/ruji/api/getRujiTradeSwapQuote.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAA;AAyDrF,eAAO,MAAM,mBAAmB,GAAI,MAAM,WAAW,EAAE,IAAI,WAAW,KAAG,OAKxE,CAAA;AAiED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,WAAW,CAAA;IACjB,EAAE,EAAE,WAAW,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAU,iDAMzC,0BAA0B,KAAG,OAAO,CAAC,gBAAgB,CAmEvD,CAAA"}
@@ -0,0 +1,136 @@
1
+ import { fromBech32 } from '@cosmjs/encoding';
2
+ import { Chain } from '@vultisig/core-chain/Chain';
3
+ import { getCosmosWasmSmartQueryUrl } from '@vultisig/core-chain/chains/cosmos/cosmosRpcUrl';
4
+ import { rujiraGraphQlEndpoint } from '@vultisig/core-chain/chains/cosmos/thor/rujira/config';
5
+ import { rujiTradeAsset, rujiTradeDefaultSlippageBps, rujiTradeQuoteTtlMs, rujiTradeRuneBruneMarketContract, } from '@vultisig/core-chain/swap/general/ruji/config';
6
+ import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
7
+ const finMarketsQuery = `
8
+ query FinMarkets {
9
+ fin {
10
+ address
11
+ assetBase { asset }
12
+ assetQuote { asset }
13
+ }
14
+ }
15
+ `;
16
+ const getRujiTradeAsset = (coin) => {
17
+ if (coin.chain !== Chain.THORChain)
18
+ return null;
19
+ if (coin.id?.toLowerCase() === rujiTradeAsset.brune.finDenom) {
20
+ return rujiTradeAsset.brune;
21
+ }
22
+ if (coin.id === undefined && coin.ticker.toUpperCase() === 'RUNE') {
23
+ return rujiTradeAsset.rune;
24
+ }
25
+ return null;
26
+ };
27
+ export const isRujiTradeSwapPair = (from, to) => {
28
+ const fromAsset = getRujiTradeAsset(from);
29
+ const toAsset = getRujiTradeAsset(to);
30
+ return !!fromAsset && !!toAsset && fromAsset !== toAsset;
31
+ };
32
+ const assertThorAddress = (address, label) => {
33
+ const normalized = address.trim();
34
+ try {
35
+ const decoded = fromBech32(normalized);
36
+ if (decoded.prefix !== 'thor' || (decoded.data.length !== 20 && decoded.data.length !== 32)) {
37
+ throw new Error('wrong prefix');
38
+ }
39
+ }
40
+ catch {
41
+ throw new Error(`RUJI Trade ${label} must be a valid THORChain address.`);
42
+ }
43
+ return normalized;
44
+ };
45
+ const assertUnsignedInteger = (value, label) => {
46
+ if (!value || !/^\d+$/.test(value)) {
47
+ throw new Error(`RUJI Trade returned an invalid ${label}.`);
48
+ }
49
+ return value;
50
+ };
51
+ const findFinMarket = async (fromAsset, toAsset) => {
52
+ const response = await queryUrl(rujiraGraphQlEndpoint, {
53
+ body: { query: finMarketsQuery },
54
+ });
55
+ if (response.errors?.length) {
56
+ throw new Error(`RUJI Trade market discovery failed: ${response.errors.map(error => error.message ?? 'unknown error').join('; ')}`);
57
+ }
58
+ const expected = new Set([fromAsset.quoteAsset.toLowerCase(), toAsset.quoteAsset.toLowerCase()]);
59
+ const matchingMarkets = response.data?.fin?.filter(candidate => {
60
+ const actual = new Set([candidate.assetBase.asset.toLowerCase(), candidate.assetQuote.asset.toLowerCase()]);
61
+ return actual.size === expected.size && [...actual].every(asset => expected.has(asset));
62
+ });
63
+ const market = matchingMarkets?.find(candidate => candidate.address.trim().toLowerCase() === rujiTradeRuneBruneMarketContract);
64
+ if (!market) {
65
+ if (matchingMarkets?.length) {
66
+ throw new Error('RUJI Trade market discovery returned an untrusted RUNE ↔ bRUNE FIN contract.');
67
+ }
68
+ throw new Error(`No RUJI Trade FIN market found for ${fromAsset.quoteAsset} ↔ ${toAsset.quoteAsset}.`);
69
+ }
70
+ const address = assertThorAddress(market.address, 'market contract');
71
+ return { ...market, address };
72
+ };
73
+ const calculateMinimumOutput = (expectedOutput, slippageBps) => {
74
+ const minimumOutput = (BigInt(expectedOutput) * BigInt(10_000 - slippageBps)) / 10000n;
75
+ if (minimumOutput <= 0n) {
76
+ throw new Error('RUJI Trade quote is too small to retain a non-zero slippage guard.');
77
+ }
78
+ return minimumOutput.toString();
79
+ };
80
+ export const getRujiTradeSwapQuote = async ({ from, to, amount, destination, slippageBps = rujiTradeDefaultSlippageBps, }) => {
81
+ const fromAsset = getRujiTradeAsset(from);
82
+ const toAsset = getRujiTradeAsset(to);
83
+ if (!fromAsset || !toAsset || fromAsset === toAsset) {
84
+ throw new Error('RUJI Trade only supports THORChain RUNE ↔ bRUNE swaps.');
85
+ }
86
+ if (amount <= 0n) {
87
+ throw new Error('RUJI Trade swap amount must be greater than zero.');
88
+ }
89
+ if (!Number.isInteger(slippageBps) || slippageBps < 0 || slippageBps > 5_000) {
90
+ throw new Error('RUJI Trade slippage must be an integer between 0 and 5000 basis points.');
91
+ }
92
+ const sender = assertThorAddress(from.address, 'sender');
93
+ const normalizedDestination = assertThorAddress(destination, 'destination');
94
+ const market = await findFinMarket(fromAsset, toAsset);
95
+ const configUrl = getCosmosWasmSmartQueryUrl({ chain: Chain.THORChain, id: market.address }, { config: {} });
96
+ const simulationUrl = getCosmosWasmSmartQueryUrl({ chain: Chain.THORChain, id: market.address }, { simulate: { denom: fromAsset.finDenom, amount: amount.toString() } });
97
+ const [configResponse, simulationResponse] = await Promise.all([
98
+ queryUrl(configUrl),
99
+ queryUrl(simulationUrl),
100
+ ]);
101
+ const denoms = configResponse.data?.denoms?.map(denom => denom.toLowerCase());
102
+ const expectedDenoms = new Set([rujiTradeAsset.rune.finDenom, rujiTradeAsset.brune.finDenom]);
103
+ const actualDenoms = denoms ? new Set(denoms) : undefined;
104
+ if (!actualDenoms ||
105
+ actualDenoms.size !== expectedDenoms.size ||
106
+ ![...actualDenoms].every(denom => expectedDenoms.has(denom))) {
107
+ throw new Error('RUJI Trade FIN contract config does not match the RUNE ↔ bRUNE market.');
108
+ }
109
+ const expectedOutput = assertUnsignedInteger(simulationResponse.data?.returned, 'simulated output');
110
+ assertUnsignedInteger(simulationResponse.data?.fee, 'protocol fee');
111
+ if (BigInt(expectedOutput) <= 0n) {
112
+ throw new Error('RUJI Trade returned a zero-output quote.');
113
+ }
114
+ const executeMsg = JSON.stringify({
115
+ swap: {
116
+ min: {
117
+ min_return: calculateMinimumOutput(expectedOutput, slippageBps),
118
+ to: normalizedDestination,
119
+ },
120
+ },
121
+ });
122
+ return {
123
+ dstAmount: expectedOutput,
124
+ provider: 'ruji',
125
+ expiresAt: Date.now() + rujiTradeQuoteTtlMs,
126
+ tx: {
127
+ cosmosWasm: {
128
+ sender,
129
+ contract: market.address,
130
+ executeMsg,
131
+ funds: [{ denom: fromAsset.finDenom, amount: amount.toString() }],
132
+ },
133
+ },
134
+ };
135
+ };
136
+ //# sourceMappingURL=getRujiTradeSwapQuote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRujiTradeSwapQuote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/ruji/api/getRujiTradeSwapQuote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare const rujiTradeSwapEnabledChains: readonly ["THORChain"];
2
+ /** Supported FIN market for the only supported RUJI Trade pair: THOR.RUNE ↔ x/brune. */
3
+ export declare const rujiTradeRuneBruneMarketContract = "thor1vk6trmz42cjrh4zcxczeaacnsv3snv4f22x8ccu203dqde7vtaxsyevlec";
4
+ export declare const rujiTradeAsset: {
5
+ readonly rune: {
6
+ readonly quoteAsset: "THOR.RUNE";
7
+ readonly finDenom: "rune";
8
+ };
9
+ readonly brune: {
10
+ readonly quoteAsset: "x/brune";
11
+ readonly finDenom: "x/brune";
12
+ };
13
+ };
14
+ export declare const rujiTradeDefaultSlippageBps = 100;
15
+ export declare const rujiTradeQuoteTtlMs = 60000;
16
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/ruji/config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,wBAA6B,CAAA;AAEpE,wFAAwF;AACxF,eAAO,MAAM,gCAAgC,oEAAoE,CAAA;AAEjH,eAAO,MAAM,cAAc;;;;;;;;;CASjB,CAAA;AAEV,eAAO,MAAM,2BAA2B,MAAM,CAAA;AAG9C,eAAO,MAAM,mBAAmB,QAAS,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ export const rujiTradeSwapEnabledChains = [Chain.THORChain];
3
+ /** Supported FIN market for the only supported RUJI Trade pair: THOR.RUNE ↔ x/brune. */
4
+ export const rujiTradeRuneBruneMarketContract = 'thor1vk6trmz42cjrh4zcxczeaacnsv3snv4f22x8ccu203dqde7vtaxsyevlec';
5
+ export const rujiTradeAsset = {
6
+ rune: {
7
+ quoteAsset: 'THOR.RUNE',
8
+ finDenom: 'rune',
9
+ },
10
+ brune: {
11
+ quoteAsset: 'x/brune',
12
+ finDenom: 'x/brune',
13
+ },
14
+ };
15
+ export const rujiTradeDefaultSlippageBps = 100;
16
+ // RUJI's native swap module treats a two-minute quote as non-executable during its final minute.
17
+ // Expose that same effective signing window so callers refresh before the safety buffer begins.
18
+ export const rujiTradeQuoteTtlMs = 60_000;
19
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/ruji/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAAK,CAAC,SAAS,CAAU,CAAA;AAEpE,wFAAwF;AACxF,MAAM,CAAC,MAAM,gCAAgC,GAAG,iEAAiE,CAAA;AAEjH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE;QACJ,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,MAAM;KACjB;IACD,KAAK,EAAE;QACL,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,SAAS;KACpB;CACO,CAAA;AAEV,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAA;AAC9C,iGAAiG;AACjG,gGAAgG;AAChG,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSwapDestinationAddress.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/keysign/getSwapDestinationAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAInE,OAAO,EAAE,SAAS,EAAmB,MAAM,2CAA2C,CAAA;AAMtF,KAAK,8BAA8B,GAAG;IACpC,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,WAAW,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,qBAAqB,8BAA8B,KAAG,MAoB5F,CAAA"}
1
+ {"version":3,"file":"getSwapDestinationAddress.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/keysign/getSwapDestinationAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAInE,OAAO,EAAE,SAAS,EAAmB,MAAM,2CAA2C,CAAA;AAMtF,KAAK,8BAA8B,GAAG;IACpC,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,WAAW,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,qBAAqB,8BAA8B,KAAG,MAqB5F,CAAA"}
@@ -8,6 +8,7 @@ export const getSwapDestinationAddress = ({ quote, fromCoin }) => matchRecordUni
8
8
  evm: ({ to }) => to,
9
9
  solana: () => '',
10
10
  transfer: ({ to }) => to,
11
+ cosmosWasm: ({ contract }) => contract,
11
12
  // CowSwap orders are settled by the solver network. The destination
12
13
  // address used for ERC-20 allowance checks (build.ts spender) must be
13
14
  // the GPv2VaultRelayer contract — NOT the settlement contract or empty
@@ -1 +1 @@
1
- {"version":3,"file":"getSwapDestinationAddress.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/keysign/getSwapDestinationAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAA;AAG5F,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAOtC,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAkC,EAAU,EAAE,CACvG,gBAAgB,CAA0B,KAAK,CAAC,KAAK,EAAE;IACrD,OAAO,EAAE,KAAK,CAAC,EAAE,CACf,gBAAgB,CAAwB,KAAK,CAAC,EAAE,EAAE;QAChD,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;QACnB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;QAChB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;QACxB,oEAAoE;QACpE,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,mEAAmE;QACnE,wBAAwB;QACxB,aAAa,EAAE,GAAG,EAAE,CAAC,yBAAyB;KAC/C,CAAC;IACJ,MAAM,EAAE,KAAK,CAAC,EAAE;QACd,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAExF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAA;IAC7E,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"getSwapDestinationAddress.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/keysign/getSwapDestinationAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAA;AAG5F,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAOtC,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAkC,EAAU,EAAE,CACvG,gBAAgB,CAA0B,KAAK,CAAC,KAAK,EAAE;IACrD,OAAO,EAAE,KAAK,CAAC,EAAE,CACf,gBAAgB,CAAwB,KAAK,CAAC,EAAE,EAAE;QAChD,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;QACnB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;QAChB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ;QACtC,oEAAoE;QACpE,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,mEAAmE;QACnE,wBAAwB;QACxB,aAAa,EAAE,GAAG,EAAE,CAAC,yBAAyB;KAC/C,CAAC;IACJ,MAAM,EAAE,KAAK,CAAC,EAAE;QACd,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAExF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAA;IAC7E,CAAC;CACF,CAAC,CAAA"}
@@ -14,6 +14,8 @@ export type SwapQuoteResult = {
14
14
  export type SwapQuote = {
15
15
  quote: SwapQuoteResult;
16
16
  discounts: SwapDiscount[];
17
+ /** Effective output recipient bound by `findSwapQuote`. Absent on legacy/manually constructed quotes. */
18
+ recipient?: string;
17
19
  /** Source amount, in base units, bound by `findSwapQuote`. Absent on legacy/manually constructed quotes. */
18
20
  requestedAmount?: bigint;
19
21
  /** Absolute quote expiry in milliseconds, bound by `findSwapQuote`. Absent on legacy/manually constructed quotes. */
@@ -1 +1 @@
1
- {"version":3,"file":"SwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/SwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE3C,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;KAC3B,CAAC,IAAI,QAAQ,GAAG;SAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;KAAE;CAC/C,CAAC,QAAQ,CAAC,CAAA;AAEX,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,eAAe,CAAA;IACtB,SAAS,EAAE,YAAY,EAAE,CAAA;IACzB,4GAA4G;IAC5G,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qHAAqH;IACrH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GACpC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"SwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/SwapQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE3C,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;KAC3B,CAAC,IAAI,QAAQ,GAAG;SAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;KAAE;CAC/C,CAAC,QAAQ,CAAC,CAAA;AAEX,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,eAAe,CAAA;IACtB,SAAS,EAAE,YAAY,EAAE,CAAA;IACzB,yGAAyG;IACzG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4GAA4G;IAC5G,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qHAAqH;IACrH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GACpC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAA"}
@@ -29,8 +29,8 @@ export type FindSwapQuoteInput = Record<TransferDirection, AccountCoin> & {
29
29
  * Optional external recipient for the swapped output. When omitted the swap
30
30
  * pays out to the user's own derived address (existing behavior). When set,
31
31
  * only providers that route the output to an explicit address are used —
32
- * native THORChain/MayaChain (memo destination) and CowSwap (order
33
- * `receiver`); aggregators that would silently pay the initiator are skipped
32
+ * native THORChain/MayaChain (memo destination), CowSwap (order `receiver`),
33
+ * and RUJI Trade (FIN execute `to`); aggregators that would silently pay the initiator are skipped
34
34
  * so funds are never sent to the wrong address.
35
35
  */
36
36
  recipient?: string;
@@ -38,7 +38,7 @@ export type FindSwapQuoteInput = Record<TransferDirection, AccountCoin> & {
38
38
  * Optional slippage tolerance, expressed in PERCENT (e.g. `0.5` = 0.5%,
39
39
  * `3` = 3%). When omitted each provider keeps its own default. Applied to the
40
40
  * general aggregators that accept a slippage override (1inch, KyberSwap, LiFi,
41
- * SwapKit); CowSwap (RFQ limit order) and the native THORChain/MayaChain
41
+ * SwapKit, RUJI Trade); CowSwap (RFQ limit order) and the native THORChain/MayaChain
42
42
  * protocols use their own protection mechanisms and ignore this value.
43
43
  */
44
44
  slippageTolerance?: number;
@@ -55,7 +55,7 @@ export type FindSwapQuoteInput = Record<TransferDirection, AccountCoin> & {
55
55
  */
56
56
  excludeProviders?: SwapQuoteProviderExcludeName[];
57
57
  };
58
- export type SwapQuoteProviderName = 'CowSwap' | 'KyberSwap' | '1inch' | 'LiFi' | 'SwapKit' | 'Jupiter' | 'THORChain' | 'MayaChain';
58
+ export type SwapQuoteProviderName = 'CowSwap' | 'KyberSwap' | '1inch' | 'LiFi' | 'SwapKit' | 'Jupiter' | 'RUJI Trade' | 'THORChain' | 'MayaChain';
59
59
  export type SwapQuoteProviderExcludeName = SwapQuoteProviderName | GeneralSwapProvider;
60
60
  /**
61
61
  * A single fetched swap route: the fully bound quote (request amount, expiry,
@@ -1 +1 @@
1
- {"version":3,"file":"findSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAEnE,OAAO,EAAuB,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AAI3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAEhG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAA;AAI9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAA;AAE7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAEnF,OAAO,EAEL,sBAAsB,EACvB,MAAM,mEAAmE,CAAA;AAQ1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAA;AAqB1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAGzE,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAA;AAE5D;;;;8CAI8C;AAC9C,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,yBAAyB,CAAA;IAClC,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,KAAK,CAAC,EAAE,4BAA4B,CAAA;IACpC,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,OAAO,CAAC,EAAE,sBAAsB,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACxE,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC1C,eAAe,CAAC,EAAE,mBAAmB,CAAA;IACrC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,4BAA4B,EAAE,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,qBAAqB,GAC7B,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,WAAW,GACX,WAAW,CAAA;AAEf,MAAM,MAAM,4BAA4B,GAAG,qBAAqB,GAAG,mBAAmB,CAAA;AAStF;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,cAAc,CAAA;IACrB,YAAY,EAAE,qBAAqB,CAAA;IACnC,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAOD;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,QAAa,CAAA;AA8C1D;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,qBAAqB,EAiB1D,CAAA;AAEV,iDAAiD;AACjD,eAAO,MAAM,yBAAyB,kCAA0B,CAAA;AAobhE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,4EAA4E;IAC5E,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;OAKG;IACH,MAAM,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAU,OAAO,kBAAkB,KAAG,OAAO,CAAC,oBAAoB,CA0f5F,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,OAAO,kBAAkB,KAAG,OAAO,CAAC,cAAc,CAClD,CAAA"}
1
+ {"version":3,"file":"findSwapQuote.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAEnE,OAAO,EAAuB,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AAI3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAEhG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAA;AAI9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAA;AAE7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAEnF,OAAO,EAEL,sBAAsB,EACvB,MAAM,mEAAmE,CAAA;AAY1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAA;AAqB1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAGzE,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAA;AAE5D;;;;8CAI8C;AAC9C,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,yBAAyB,CAAA;IAClC,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,KAAK,CAAC,EAAE,4BAA4B,CAAA;IACpC,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,OAAO,CAAC,EAAE,sBAAsB,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACxE,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC1C,eAAe,CAAC,EAAE,mBAAmB,CAAA;IACrC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,4BAA4B,EAAE,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,qBAAqB,GAC7B,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,YAAY,GACZ,WAAW,GACX,WAAW,CAAA;AAEf,MAAM,MAAM,4BAA4B,GAAG,qBAAqB,GAAG,mBAAmB,CAAA;AAStF;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,cAAc,CAAA;IACrB,YAAY,EAAE,qBAAqB,CAAA;IACnC,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAeD;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,QAAa,CAAA;AAoD1D;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,qBAAqB,EAkB1D,CAAA;AAEV,iDAAiD;AACjD,eAAO,MAAM,yBAAyB,kCAA0B,CAAA;AAulBhE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,4EAA4E;IAC5E,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;OAKG;IACH,MAAM,EAAE,kBAAkB,EAAE,CAAA;CAC7B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAU,OAAO,kBAAkB,KAAG,OAAO,CAAC,oBAAoB,CAmhB5F,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,OAAO,kBAAkB,KAAG,OAAO,CAAC,cAAc,CAClD,CAAA"}
@@ -12,6 +12,7 @@ import { getLifiSwapQuote } from '@vultisig/core-chain/swap/general/lifi/api/get
12
12
  import { lifiSwapEnabledChains } from '@vultisig/core-chain/swap/general/lifi/LifiSwapEnabledChains';
13
13
  import { getOneInchSwapQuote, } from '@vultisig/core-chain/swap/general/oneInch/api/getOneInchSwapQuote';
14
14
  import { oneInchSwapEnabledChains } from '@vultisig/core-chain/swap/general/oneInch/OneInchSwapEnabledChains';
15
+ import { getRujiTradeSwapQuote, isRujiTradeSwapPair, } from '@vultisig/core-chain/swap/general/ruji/api/getRujiTradeSwapQuote';
15
16
  import { getSwapKitQuote } from '@vultisig/core-chain/swap/general/swapkit/api/getSwapKitQuote';
16
17
  import { swapKitEnabledChains, swapKitSourceChains, } from '@vultisig/core-chain/swap/general/swapkit/SwapKitEnabledChains';
17
18
  import { SwapKitAmountBelowMinimumError } from '@vultisig/core-chain/swap/general/swapkit/SwapKitErrors';
@@ -30,6 +31,14 @@ import { HttpResponseError } from '@vultisig/lib-utils/fetch/HttpResponseError';
30
31
  import { pick } from '@vultisig/lib-utils/record/pick';
31
32
  import { cloneSwapSafetyValue, getSwapQuoteSafetyFingerprint } from './getSwapQuoteSafetyFingerprint.js';
32
33
  const QUOTE_FETCH_TIMEOUT_MS = 30_000;
34
+ /**
35
+ * Budget for the single automatic re-attempt of an aggregator that failed
36
+ * transiently while a native protocol reported a halt (see
37
+ * `retryTransientFetchersAfterNativeHalt`). Deliberately shorter than the first
38
+ * attempt: the provider has already had the full budget and is warm, so a second
39
+ * full window would only double the wait before the all-fail classification.
40
+ */
41
+ const QUOTE_FETCH_RETRY_TIMEOUT_MS = 10_000;
33
42
  /**
34
43
  * General aggregators do not expose a uniform quote deadline. Keep the bound
35
44
  * transaction usable for a normal review-and-sign round trip while the SDK's
@@ -37,19 +46,23 @@ const QUOTE_FETCH_TIMEOUT_MS = 30_000;
37
46
  * Provider-supplied deadlines (currently CoW's `validTo`) still win when sooner.
38
47
  */
39
48
  export const GENERAL_QUOTE_PREPARATION_TTL_MS = 5 * 60_000;
40
- const bindQuoteSafetyMetadata = (quote, from, to, requestedAmount) => {
49
+ const bindQuoteSafetyMetadata = (quote, from, to, recipient, requestedAmount) => {
41
50
  const now = Date.now();
42
- const expiresAt = 'native' in quote.quote ? quote.quote.native.expiry * 1000 : now + GENERAL_QUOTE_PREPARATION_TTL_MS;
51
+ const expiresAt = 'native' in quote.quote
52
+ ? quote.quote.native.expiry * 1000
53
+ : (quote.quote.general.expiresAt ?? now + GENERAL_QUOTE_PREPARATION_TTL_MS);
43
54
  const effectiveExpiresAt = 'general' in quote.quote && 'cowswap_order' in quote.quote.general.tx
44
55
  ? Math.min(expiresAt, quote.quote.general.tx.cowswap_order.validTo * 1000)
45
56
  : expiresAt;
46
57
  return {
47
58
  ...quote,
59
+ recipient,
48
60
  requestedAmount,
49
61
  expiresAt: effectiveExpiresAt,
50
62
  safetyFingerprint: getSwapQuoteSafetyFingerprint({
51
63
  from,
52
64
  to,
65
+ recipient,
53
66
  requestedAmount,
54
67
  expiresAt: effectiveExpiresAt,
55
68
  quote: quote.quote,
@@ -85,6 +98,7 @@ export const providerPreferenceOrder = [
85
98
  // competes for same-chain ERC-20 EVM pairs (see fetcher registration below);
86
99
  // for every other pair it simply isn't in the candidate set.
87
100
  'CowSwap',
101
+ 'RUJI Trade',
88
102
  'THORChain',
89
103
  'MayaChain',
90
104
  // Jupiter is slotted ahead of the EVM/multi-chain aggregators: it only enters
@@ -108,6 +122,7 @@ const swapQuoteProviderExcludeAlias = {
108
122
  swapkit: 'SwapKit',
109
123
  cowswap: 'CowSwap',
110
124
  jupiter: 'Jupiter',
125
+ ruji: 'RUJI Trade',
111
126
  };
112
127
  const swapQuoteProviderExcludeNames = new Set([
113
128
  ...providerPreferenceOrder,
@@ -209,6 +224,102 @@ const isTransientProviderFailure = (reason) => {
209
224
  lower.includes('skip api network error') ||
210
225
  TRANSIENT_PROVIDER_CODE_RE.test(msg));
211
226
  };
227
+ /**
228
+ * The providers whose failure can legitimately mean "this pair is halted".
229
+ * `assertNativeTradingOpen` only ever runs inside a THORChain/MayaChain fetcher,
230
+ * so a halt is scoped to the native protocol that raised it — every other
231
+ * fetcher is an aggregator with its own, independent route.
232
+ */
233
+ const nativeSwapProviderNames = new Set(['THORChain', 'MayaChain']);
234
+ const isTradingHaltedRejection = (reason) => asTradingHaltedSwapError(reason) !== null ||
235
+ isTradingHaltedMsg(reason instanceof Error ? reason.message : String(reason));
236
+ /**
237
+ * Indexes of the rejected non-native fetchers that failed transiently — the
238
+ * retry set. Native fetchers are excluded: re-asking the protocol that raised
239
+ * the halt would only re-confirm it.
240
+ */
241
+ const getTransientAggregatorIndexes = (settled, fetchers) => settled.flatMap((result, index) => result.status === 'rejected' &&
242
+ !nativeSwapProviderNames.has(fetchers[index].providerName) &&
243
+ isTransientProviderFailure(result.reason)
244
+ ? [index]
245
+ : []);
246
+ /**
247
+ * Providers that failed transiently without reporting a halt themselves — routes
248
+ * that never declined this pair and could still fill it. A halt raised elsewhere
249
+ * cannot speak for them, so their presence rules out reporting the pair as
250
+ * halted. Unlike the retry set this includes a non-halted native protocol: when
251
+ * THORChain is halted and MayaChain merely timed out, MayaChain is unreachable,
252
+ * not halted.
253
+ */
254
+ const getUnreachableProviderNames = (settled, fetchers) => settled.flatMap((result, index) => result.status === 'rejected' &&
255
+ !isTradingHaltedRejection(result.reason) &&
256
+ isTransientProviderFailure(result.reason)
257
+ ? [fetchers[index].providerName]
258
+ : []);
259
+ /**
260
+ * One extra attempt at the aggregators that failed transiently while a native
261
+ * protocol reported a halt. Without it a THORChain halt plus a LiFi/SwapKit
262
+ * timeout collapses into "trading halted" for the whole pair, even though the
263
+ * aggregator — which the halt never applied to — usually answers on the very
264
+ * next tap. Returns the results unchanged when nothing qualifies, otherwise the
265
+ * original results with each retried outcome merged back in at its fetcher index.
266
+ */
267
+ const retryTransientFetchersAfterNativeHalt = async ({ settled, fetchers, runFetchers, }) => {
268
+ const nativeHalted = settled.some((result, index) => result.status === 'rejected' &&
269
+ nativeSwapProviderNames.has(fetchers[index].providerName) &&
270
+ isTradingHaltedRejection(result.reason));
271
+ if (!nativeHalted) {
272
+ return settled;
273
+ }
274
+ const retryIndexes = getTransientAggregatorIndexes(settled, fetchers);
275
+ if (isEmpty(retryIndexes)) {
276
+ return settled;
277
+ }
278
+ const retried = await runFetchers(retryIndexes.map(index => fetchers[index]), QUOTE_FETCH_RETRY_TIMEOUT_MS);
279
+ const merged = [...settled];
280
+ retryIndexes.forEach((fetcherIndex, retryIndex) => {
281
+ merged[fetcherIndex] = retried[retryIndex];
282
+ });
283
+ return merged;
284
+ };
285
+ /**
286
+ * How an all-fail round in which some provider reported a halt should be
287
+ * reported, or `null` when nothing halted and the caller should fall through to
288
+ * its size/no-route classification.
289
+ *
290
+ * Trading-halt takes precedence over the speculative computed minimum and the
291
+ * generic fallback: when a protocol reports a halt, NO amount can route through
292
+ * it,
293
+ * so telling the user to "increase the amount" would be actively misleading. A
294
+ * genuine provider-reported below-minimum (handled by the caller first) still
295
+ * wins, since that provider is responding and the amount is the actionable
296
+ * lever. (#604)
297
+ *
298
+ * The halt only speaks for the provider that raised it, though. Any other route
299
+ * that was merely unreachable — an aggregator still failing after its retry, or a
300
+ * second native protocol that timed out — never declined this pair, so reporting
301
+ * a halt would send the user off to wait out an outage that was never blocking
302
+ * their route, while the truthful answer is that the route which could have
303
+ * filled simply could not be reached. (#2167)
304
+ */
305
+ const getHaltAllFailError = ({ settled, fetchers, proactiveTradingHalt, haltedProviders, }) => {
306
+ if (!proactiveTradingHalt && haltedProviders.size === 0) {
307
+ return null;
308
+ }
309
+ const unreachableProviders = getUnreachableProviderNames(settled, fetchers);
310
+ if (isEmpty(unreachableProviders)) {
311
+ return (proactiveTradingHalt ??
312
+ new SwapError(SwapErrorCode.TradingHalted, formatTradingHaltedMessage(`trading is halted on ${[...haltedProviders].join(', ')}`)));
313
+ }
314
+ // Worded to stay classifiable downstream: it names the transient category
315
+ // (which `isTransientProviderFailure` and agent-backend-ts's
316
+ // `isTransientQuoteError` both key off) and deliberately avoids the halt
317
+ // wordings, so a consumer re-classifying this message does not read it back as
318
+ // a hard halt.
319
+ return new SwapError(SwapErrorCode.AllProvidersFailed, `Swap quote lookup failed: ${unreachableProviders.join(', ')} could not be reached due to a transient ` +
320
+ `network/timeout error, and the remaining route(s) (${[...haltedProviders].join(', ')}) are ` +
321
+ `temporarily unavailable. This is not a missing route — retry the same swap shortly.`);
322
+ };
212
323
  /**
213
324
  * Tuning point for issue #605's banded routing rule. 50 bps = 0.5%.
214
325
  * Adjust this when product wants a wider or narrower provider-preference band.
@@ -240,7 +351,8 @@ const getGeneralDestinationSideFeeAmount = ({ quote, to }) => {
240
351
  general.provider === 'kyber' ||
241
352
  general.provider === 'swapkit' ||
242
353
  general.provider === 'jupiter' ||
243
- general.provider === 'cowswap';
354
+ general.provider === 'cowswap' ||
355
+ general.provider === 'ruji';
244
356
  if (!providerAlreadyNet && explicitFee && isSameCoinKey(explicitFee, to)) {
245
357
  return rebaseDecimals(explicitFee.amount, explicitFee.decimals, to.decimals);
246
358
  }
@@ -424,6 +536,7 @@ const toProviderSlippage = (slippageTolerance) => {
424
536
  lifiFraction: slippageTolerance !== undefined ? slippageTolerance / 100 : undefined,
425
537
  kyberBps: bps,
426
538
  jupiterBps: bps,
539
+ rujiBps: bps,
427
540
  };
428
541
  };
429
542
  /**
@@ -449,8 +562,8 @@ export const findSwapQuotes = async (input) => {
449
562
  const vultDiscount = vultDiscountTier ? [{ vult: { tier: vultDiscountTier } }] : [];
450
563
  const referralDiscount = referral ? [{ referral: {} }] : [];
451
564
  // When the caller requests an external recipient, restrict routing to the
452
- // providers that send the swapped output to an explicit address (native +
453
- // CowSwap). Aggregators that pay the initiator would silently misroute funds,
565
+ // providers that send the swapped output to an explicit address (native,
566
+ // CowSwap, and RUJI Trade). Aggregators that pay the initiator would silently misroute funds,
454
567
  // so they are not offered for custom-recipient swaps until they thread the
455
568
  // receiver through (tracked in vultisig/vultisig-windows#4131).
456
569
  // Trim and treat empty/whitespace strings as no recipient, so route gating
@@ -467,7 +580,7 @@ export const findSwapQuotes = async (input) => {
467
580
  assertValidSlippageTolerance(slippageTolerance);
468
581
  // Convert the slippage tolerance to each aggregator's native unit (see
469
582
  // toProviderSlippage); `undefined` leaves each provider on its own default.
470
- const { oneInchPercent: oneInchSlippagePercent, swapKitPercent: swapKitSlippagePercent, lifiFraction: lifiSlippageFraction, kyberBps: kyberSlippageBps, jupiterBps: jupiterSlippageBps, nativeBps: nativeSlippageBps, } = toProviderSlippage(slippageTolerance);
583
+ const { oneInchPercent: oneInchSlippagePercent, swapKitPercent: swapKitSlippagePercent, lifiFraction: lifiSlippageFraction, kyberBps: kyberSlippageBps, jupiterBps: jupiterSlippageBps, rujiBps: rujiSlippageBps, nativeBps: nativeSlippageBps, } = toProviderSlippage(slippageTolerance);
471
584
  const involvedChains = [from.chain, to.chain];
472
585
  const matchingSwapChains = nativeSwapChains.filter(swapChain => involvedChains.every(chain => isOneOf(chain, nativeSwapEnabledChainsRecord[swapChain])));
473
586
  const getNativeFetchers = () => matchingSwapChains.map(swapChain => ({
@@ -498,6 +611,21 @@ export const findSwapQuotes = async (input) => {
498
611
  const fromChain = from.chain;
499
612
  const toChain = to.chain;
500
613
  const chainAmount = amount;
614
+ if (isRujiTradeSwapPair(from, to)) {
615
+ result.push({
616
+ providerName: 'RUJI Trade',
617
+ fetch: async () => {
618
+ const general = await getRujiTradeSwapQuote({
619
+ from,
620
+ to,
621
+ amount: chainAmount,
622
+ destination: normalizedRecipient ?? to.address,
623
+ slippageBps: rujiSlippageBps,
624
+ });
625
+ return { quote: { general }, discounts: [] };
626
+ },
627
+ });
628
+ }
501
629
  // CowSwap (Phase 2 — off-chain RFQ orders). Gated to same-chain ERC-20 →
502
630
  // ERC-20 pairs on a CowSwap-supported EVM chain. Both sides must be ERC-20
503
631
  // (`from.id` and `to.id` present): selling native ETH needs the GPv2
@@ -698,8 +826,8 @@ export const findSwapQuotes = async (input) => {
698
826
  throw belowNativeMinimumError(nativeMin, from);
699
827
  }
700
828
  }
701
- const settled = await Promise.allSettled(fetchers.map(async (fetcher) => {
702
- const quote = bindQuoteSafetyMetadata(await withTimeout(fetcher.fetch(), QUOTE_FETCH_TIMEOUT_MS), from, to, amount);
829
+ const runFetchers = (list, timeoutMs) => Promise.allSettled(list.map(async (fetcher) => {
830
+ const quote = bindQuoteSafetyMetadata(await withTimeout(fetcher.fetch(), timeoutMs), from, to, normalizedRecipient ?? to.address, amount);
703
831
  return {
704
832
  quote,
705
833
  outputAmount: getComparableOutputAmount(quote, to, fetcher.providerName),
@@ -707,10 +835,19 @@ export const findSwapQuotes = async (input) => {
707
835
  providerName: fetcher.providerName,
708
836
  };
709
837
  }));
838
+ let settled = await runFetchers(fetchers, QUOTE_FETCH_TIMEOUT_MS);
710
839
  const best = selectBestEligibleQuote(settled);
711
840
  if (best) {
712
841
  return { best, ranked: rankQuoteCandidates(settled) };
713
842
  }
843
+ // A native halt is not a verdict on the aggregators that ran alongside it, so
844
+ // give the ones that merely blipped (timeout / network / 5xx) a second chance
845
+ // before the all-fail classification below can report the pair as halted.
846
+ settled = await retryTransientFetchersAfterNativeHalt({ settled, fetchers, runFetchers });
847
+ const bestAfterRetry = selectBestEligibleQuote(settled);
848
+ if (bestAfterRetry) {
849
+ return { best: bestAfterRetry, ranked: rankQuoteCandidates(settled) };
850
+ }
714
851
  // Scan rejected results for actionable size-related signals. Prefer the most
715
852
  // specific message available: a provider's "below minimum" hint beats the
716
853
  // generic no-route fallback.
@@ -726,6 +863,7 @@ export const findSwapQuotes = async (input) => {
726
863
  // resolution order. (#535 r3 — NeO preferably-blocking response.)
727
864
  const belowMinimumProviderOrder = [
728
865
  'CowSwap',
866
+ 'RUJI Trade',
729
867
  'KyberSwap',
730
868
  '1inch',
731
869
  'Jupiter',
@@ -755,7 +893,10 @@ export const findSwapQuotes = async (input) => {
755
893
  if (isBelowMinimumMsg(msg) && !belowMinimumByProvider.has(fetchers[i].providerName)) {
756
894
  belowMinimumByProvider.set(fetchers[i].providerName, msg);
757
895
  }
758
- if (isTradingHaltedMsg(msg)) {
896
+ // Matches the typed `SwapError` from `assertNativeTradingOpen` as well as a
897
+ // provider's halt wording, so the halt reporting below always knows which
898
+ // protocol raised it.
899
+ if (isTradingHaltedRejection(result.reason)) {
759
900
  haltedProviders.add(fetchers[i].providerName);
760
901
  }
761
902
  }
@@ -767,16 +908,9 @@ export const findSwapQuotes = async (input) => {
767
908
  : [...belowMinimumByProvider.values()][0];
768
909
  throw new SwapError(SwapErrorCode.AmountBelowMinimum, `Amount below the minimum required by a swap provider. ${belowMinimumMessage}`);
769
910
  }
770
- if (proactiveTradingHalt) {
771
- throw proactiveTradingHalt;
772
- }
773
- // Trading-halt takes precedence over the speculative computed minimum and the
774
- // generic fallback: when a native protocol reports a halt, NO amount can route,
775
- // so telling the user to "increase the amount" would be actively misleading. A
776
- // genuine provider-reported below-minimum (handled above) still wins, since
777
- // that provider is responding and the amount is the actionable lever. (#604)
778
- if (haltedProviders.size > 0) {
779
- throw new SwapError(SwapErrorCode.TradingHalted, formatTradingHaltedMessage(`trading is halted on ${[...haltedProviders].join(', ')}`));
911
+ const haltError = getHaltAllFailError({ settled, fetchers, proactiveTradingHalt, haltedProviders });
912
+ if (haltError) {
913
+ throw haltError;
780
914
  }
781
915
  // No provider returned a parseable below-minimum hint. Before falling back to
782
916
  // the generic "no route" message, check the proactively-computed THORChain
@@ -1 +1 @@
1
- {"version":3,"file":"findSwapQuote.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findSwapQuote.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/findSwapQuote.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { SwapQuoteResult } from './SwapQuote.js';
3
3
  type Input = {
4
4
  from: AccountCoin;
5
5
  to: AccountCoin;
6
+ recipient?: string;
6
7
  requestedAmount: bigint;
7
8
  expiresAt: number;
8
9
  quote: SwapQuoteResult;
@@ -15,6 +16,6 @@ export declare const cloneSwapSafetyValue: <T>(value: T) => T;
15
16
  * Pure and platform-neutral so preparation can recompute the same value before
16
17
  * any wallet/key/payload work.
17
18
  */
18
- export declare const getSwapQuoteSafetyFingerprint: ({ from, to, requestedAmount, expiresAt, quote }: Input) => string;
19
+ export declare const getSwapQuoteSafetyFingerprint: ({ from, to, recipient, requestedAmount, expiresAt, quote, }: Input) => string;
19
20
  export {};
20
21
  //# sourceMappingURL=getSwapQuoteSafetyFingerprint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSwapQuoteSafetyFingerprint.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/getSwapQuoteSafetyFingerprint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,WAAW,CAAA;IACjB,EAAE,EAAE,WAAW,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CAWlD,CAAA;AA0CD;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,GAAI,iDAAiD,KAAK,KAAG,MAcpG,CAAA"}
1
+ {"version":3,"file":"getSwapQuoteSafetyFingerprint.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/getSwapQuoteSafetyFingerprint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,WAAW,CAAA;IACjB,EAAE,EAAE,WAAW,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CAWlD,CAAA;AA0CD;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,GAAI,6DAO3C,KAAK,KAAG,MAeR,CAAA"}
@@ -56,10 +56,11 @@ const coinIdentity = ({ chain, address, id, ticker, decimals }) => ({
56
56
  * Pure and platform-neutral so preparation can recompute the same value before
57
57
  * any wallet/key/payload work.
58
58
  */
59
- export const getSwapQuoteSafetyFingerprint = ({ from, to, requestedAmount, expiresAt, quote }) => bytesToHex(sha256(new TextEncoder().encode(canonicalize({
59
+ export const getSwapQuoteSafetyFingerprint = ({ from, to, recipient, requestedAmount, expiresAt, quote, }) => bytesToHex(sha256(new TextEncoder().encode(canonicalize({
60
60
  version: 1,
61
61
  from: coinIdentity(from),
62
62
  to: coinIdentity(to),
63
+ recipient,
63
64
  requestedAmount,
64
65
  expiresAt,
65
66
  quote,
@@ -1 +1 @@
1
- {"version":3,"file":"getSwapQuoteSafetyFingerprint.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/getSwapQuoteSafetyFingerprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getSwapQuoteSafetyFingerprint.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/quote/getSwapQuoteSafetyFingerprint.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"swapEnabledChains.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/swap/swapEnabledChains.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,iBAAiB,ghCAQpB,CAAA"}
1
+ {"version":3,"file":"swapEnabledChains.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/swap/swapEnabledChains.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,iBAAiB,ghCASpB,CAAA"}
@@ -3,6 +3,7 @@ import { jupiterSwapEnabledChains } from '@vultisig/core-chain/swap/general/jupi
3
3
  import { kyberSwapEnabledChains } from '@vultisig/core-chain/swap/general/kyber/chains';
4
4
  import { lifiSwapEnabledChains } from '@vultisig/core-chain/swap/general/lifi/LifiSwapEnabledChains';
5
5
  import { oneInchSwapEnabledChains } from '@vultisig/core-chain/swap/general/oneInch/OneInchSwapEnabledChains';
6
+ import { rujiTradeSwapEnabledChains } from '@vultisig/core-chain/swap/general/ruji/config';
6
7
  import { swapKitEnabledChains } from '@vultisig/core-chain/swap/general/swapkit/SwapKitEnabledChains';
7
8
  import { nativeSwapEnabledChains } from '@vultisig/core-chain/swap/native/NativeSwapChain';
8
9
  // EVERY provider's enabled-chain list must appear in this union (sdk#1151).
@@ -17,6 +18,7 @@ export const swapEnabledChains = [
17
18
  ...kyberSwapEnabledChains,
18
19
  ...oneInchSwapEnabledChains,
19
20
  ...jupiterSwapEnabledChains,
21
+ ...rujiTradeSwapEnabledChains,
20
22
  ...lifiSwapEnabledChains,
21
23
  ...swapKitEnabledChains,
22
24
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"swapEnabledChains.js","sourceRoot":"","sources":["../../../../../packages/core/chain/swap/swapEnabledChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAA;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oEAAoE,CAAA;AAC7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAA;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAA;AACpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,oEAAoE,CAAA;AAC7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,gEAAgE,CAAA;AACrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAA;AAE1F,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAC5E,mEAAmE;AACnE,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,uBAAuB;IAC1B,GAAG,sBAAsB;IACzB,GAAG,sBAAsB;IACzB,GAAG,wBAAwB;IAC3B,GAAG,wBAAwB;IAC3B,GAAG,qBAAqB;IACxB,GAAG,oBAAoB;CACf,CAAA"}
1
+ {"version":3,"file":"swapEnabledChains.js","sourceRoot":"","sources":["../../../../../packages/core/chain/swap/swapEnabledChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAA;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oEAAoE,CAAA;AAC7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAA;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAA;AACpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,oEAAoE,CAAA;AAC7G,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAA;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,gEAAgE,CAAA;AACrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAA;AAE1F,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAC5E,mEAAmE;AACnE,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,uBAAuB;IAC1B,GAAG,sBAAsB;IACzB,GAAG,sBAAsB;IACzB,GAAG,wBAAwB;IAC3B,GAAG,wBAAwB;IAC3B,GAAG,0BAA0B;IAC7B,GAAG,qBAAqB;IACxB,GAAG,oBAAoB;CACf,CAAA"}
@@ -5,13 +5,13 @@ import { Chain } from '@vultisig/core-chain/Chain';
5
5
  * - `li.fi` → scan.li.fi (or orb.helius.dev for Solana settlement)
6
6
  * - `swapkit` → track.swapkit.dev
7
7
  * - `cowswap` → explorer.cow.fi order page
8
- * - `thorchain` / `mayachain` → native chain scanner
8
+ * - `thorchain` / `ruji` / `mayachain` → native chain scanner
9
9
  * - `1inch`, `kyber`, `jupiter` → source-chain explorer fallback
10
10
  *
11
11
  * Keep this union in sync with iOS `ExplorerLinkBuilder.swift` and Android
12
12
  * `ExplorerLinkRepository.getSwapProgressLink`.
13
13
  */
14
- export declare const swapExplorerProviders: readonly ["1inch", "li.fi", "kyber", "swapkit", "cowswap", "jupiter", "mayachain", "thorchain"];
14
+ export declare const swapExplorerProviders: readonly ["1inch", "li.fi", "kyber", "swapkit", "cowswap", "jupiter", "ruji", "mayachain", "thorchain"];
15
15
  export type SwapExplorerProvider = (typeof swapExplorerProviders)[number];
16
16
  export type GetSwapExplorerUrlInput = {
17
17
  provider: SwapExplorerProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/utils/getSwapExplorerUrl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAMlD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,iGAA+D,CAAA;AAEjG,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzE,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,oBAAoB,CAAA;IAC9B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,SAAS,EAAE,KAAK,CAAA;CACjB,CAAA;AAKD;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAAI,iCAAiC,uBAAuB,KAAG,MAkC7F,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/utils/getSwapExplorerUrl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAMlD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,yGAA+D,CAAA;AAEjG,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzE,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,oBAAoB,CAAA;IAC9B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,SAAS,EAAE,KAAK,CAAA;CACjB,CAAA;AAKD;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAAI,iCAAiC,uBAAuB,KAAG,MAmC7F,CAAA"}
@@ -9,7 +9,7 @@ import { getBlockExplorerUrl } from '@vultisig/core-chain/utils/getBlockExplorer
9
9
  * - `li.fi` → scan.li.fi (or orb.helius.dev for Solana settlement)
10
10
  * - `swapkit` → track.swapkit.dev
11
11
  * - `cowswap` → explorer.cow.fi order page
12
- * - `thorchain` / `mayachain` → native chain scanner
12
+ * - `thorchain` / `ruji` / `mayachain` → native chain scanner
13
13
  * - `1inch`, `kyber`, `jupiter` → source-chain explorer fallback
14
14
  *
15
15
  * Keep this union in sync with iOS `ExplorerLinkBuilder.swift` and Android
@@ -39,6 +39,7 @@ export const getSwapExplorerUrl = ({ provider, txHash, fromChain }) => {
39
39
  }
40
40
  return `https://scan.li.fi/tx/${txHash}`;
41
41
  case 'thorchain':
42
+ case 'ruji':
42
43
  return `https://runescan.io/tx/${stripHexPrefix(txHash)}`;
43
44
  case 'mayachain':
44
45
  return `https://www.explorer.mayachain.info/tx/${stripHexPrefix(txHash)}`;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/utils/getSwapExplorerUrl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAA;AACjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uDAAuD,CAAA;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,gEAAgE,CAAA;AACrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAA;AAEpF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,oBAAoB,EAAE,WAAW,EAAE,WAAW,CAAU,CAAA;AAgBjG,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE,CAC/C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAA2B,EAAU,EAAE;IACrG,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,0BAA0B,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;QACtE,KAAK,OAAO;YACV,wEAAwE;YACxE,sCAAsC;YACtC,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/B,OAAO,6BAA6B,MAAM,EAAE,CAAA;YAC9C,CAAC;YACD,OAAO,yBAAyB,MAAM,EAAE,CAAA;QAC1C,KAAK,WAAW;YACd,OAAO,0BAA0B,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;QAC3D,KAAK,WAAW;YACd,OAAO,0CAA0C,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;QAC3E,KAAK,SAAS;YACZ,OAAO,CACL,oBAAoB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;gBAClD,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CACvE,CAAA;QACH,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,SAAS;YACZ,qEAAqE;YACrE,iEAAiE;YACjE,OAAO,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAC/E,OAAO,CAAC,CAAC,CAAC;YACR,0EAA0E;YAC1E,uEAAuE;YACvE,iEAAiE;YACjE,MAAM,WAAW,GAAU,QAAQ,CAAA;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/utils/getSwapExplorerUrl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sEAAsE,CAAA;AACjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uDAAuD,CAAA;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,gEAAgE,CAAA;AACrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAA;AAEpF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,oBAAoB,EAAE,WAAW,EAAE,WAAW,CAAU,CAAA;AAgBjG,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE,CAC/C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAA2B,EAAU,EAAE;IACrG,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,0BAA0B,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;QACtE,KAAK,OAAO;YACV,wEAAwE;YACxE,sCAAsC;YACtC,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/B,OAAO,6BAA6B,MAAM,EAAE,CAAA;YAC9C,CAAC;YACD,OAAO,yBAAyB,MAAM,EAAE,CAAA;QAC1C,KAAK,WAAW,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,0BAA0B,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;QAC3D,KAAK,WAAW;YACd,OAAO,0CAA0C,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;QAC3E,KAAK,SAAS;YACZ,OAAO,CACL,oBAAoB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;gBAClD,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CACvE,CAAA;QACH,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,SAAS;YACZ,qEAAqE;YACrE,iEAAiE;YACjE,OAAO,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAC/E,OAAO,CAAC,CAAC,CAAC;YACR,0EAA0E;YAC1E,uEAAuE;YACvE,iEAAiE;YACjE,MAAM,WAAW,GAAU,QAAQ,CAAA;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/core-chain",
3
- "version": "4.0.1",
3
+ "version": "4.1.0",
4
4
  "description": "Blockchain chain logic shared across Vultisig clients",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1853,6 +1853,16 @@
1853
1853
  "import": "./dist/swap/general/priceImpactGuard.js",
1854
1854
  "default": "./dist/swap/general/priceImpactGuard.js"
1855
1855
  },
1856
+ "./swap/general/ruji/api/getRujiTradeSwapQuote": {
1857
+ "types": "./dist/swap/general/ruji/api/getRujiTradeSwapQuote.d.ts",
1858
+ "import": "./dist/swap/general/ruji/api/getRujiTradeSwapQuote.js",
1859
+ "default": "./dist/swap/general/ruji/api/getRujiTradeSwapQuote.js"
1860
+ },
1861
+ "./swap/general/ruji/config": {
1862
+ "types": "./dist/swap/general/ruji/config.d.ts",
1863
+ "import": "./dist/swap/general/ruji/config.js",
1864
+ "default": "./dist/swap/general/ruji/config.js"
1865
+ },
1856
1866
  "./swap/general/swapkit/api/getSwapKitQuote": {
1857
1867
  "types": "./dist/swap/general/swapkit/api/getSwapKitQuote.d.ts",
1858
1868
  "import": "./dist/swap/general/swapkit/api/getSwapKitQuote.js",