@vultisig/core-chain 2.33.0 → 2.35.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 (30) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/chainRegistry.d.ts +86 -0
  3. package/dist/chainRegistry.d.ts.map +1 -0
  4. package/dist/chainRegistry.js +79 -0
  5. package/dist/chainRegistry.js.map +1 -0
  6. package/dist/chains/cosmos/thor/securedAssets.d.ts +59 -0
  7. package/dist/chains/cosmos/thor/securedAssets.d.ts.map +1 -0
  8. package/dist/chains/cosmos/thor/securedAssets.js +173 -0
  9. package/dist/chains/cosmos/thor/securedAssets.js.map +1 -0
  10. package/dist/chains/evm/chainInfo.d.ts +4 -4
  11. package/dist/chains/evm/chainInfo.d.ts.map +1 -1
  12. package/dist/chains/evm/chainInfo.js +3 -2
  13. package/dist/chains/evm/chainInfo.js.map +1 -1
  14. package/dist/swap/general/GeneralSwapQuote.d.ts +16 -0
  15. package/dist/swap/general/GeneralSwapQuote.d.ts.map +1 -1
  16. package/dist/swap/general/swapkit/SwapKitErrors.d.ts +10 -0
  17. package/dist/swap/general/swapkit/SwapKitErrors.d.ts.map +1 -1
  18. package/dist/swap/general/swapkit/SwapKitErrors.js +10 -0
  19. package/dist/swap/general/swapkit/SwapKitErrors.js.map +1 -1
  20. package/dist/swap/general/swapkit/api/getSwapKitQuote.d.ts.map +1 -1
  21. package/dist/swap/general/swapkit/api/getSwapKitQuote.js +72 -7
  22. package/dist/swap/general/swapkit/api/getSwapKitQuote.js.map +1 -1
  23. package/dist/swap/native/limitSwapMemo.d.ts.map +1 -1
  24. package/dist/swap/native/limitSwapMemo.js +69 -8
  25. package/dist/swap/native/limitSwapMemo.js.map +1 -1
  26. package/dist/utils/getBlockExplorerUrl/index.d.ts +2 -2
  27. package/dist/utils/getBlockExplorerUrl/index.d.ts.map +1 -1
  28. package/dist/utils/getBlockExplorerUrl/index.js +3 -130
  29. package/dist/utils/getBlockExplorerUrl/index.js.map +1 -1
  30. package/package.json +11 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # @vultisig/core-chain
2
2
 
3
+ ## 2.35.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1812](https://github.com/vultisig/vultisig-sdk/pull/1812) [`2e1b8bb`](https://github.com/vultisig/vultisig-sdk/commit/2e1b8bb597d2d0fa052a121ab2757efa228314f5) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Export an exhaustive chain-descriptor registry with explorer metadata plus helpers for deriving consumer projections and attaching compile-safe consumer-local extensions.
8
+
9
+ - [#1817](https://github.com/vultisig/vultisig-sdk/pull/1817) [`67dd842`](https://github.com/vultisig/vultisig-sdk/commit/67dd8425a10f0c7b7833c02147fc0036e6ee7a64) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Surface the affiliate fee SwapKit itemizes on EVM routes, and expose a route's price impact on `GeneralSwapQuote`.
10
+
11
+ The SwapKit EVM branch never populated `affiliateFee`, although the Solana branch already did, so an aggregator swap reached consumers with no swap fee to show and a total that omitted it. It now carries the fee. It stays absent when no amount can be vouched for — no fee entries, an itemized zero, or a shape that cannot be resolved — so consumers report the fee as part of the quoted rate rather than asserting a zero. Unresolvable shapes raise the new `SwapKitFeeShapeError`, which this branch swallows because the fee is not part of the signed EVM transaction; Solana still lets it throw, since its tx type requires the fee.
12
+
13
+ `GeneralSwapQuote.priceImpactFraction` carries a route's signed price impact as a fraction, read from SwapKit's `meta.priceImpact` and falling back to `totalSlippageBps`. Both are narrowed to finite numbers, since nothing validates the proxy's JSON on the way in. The unit is named in the field because the neighbouring price-impact guard exposes both fraction and percent entry points, and mixing them is a silent 100x. The field is absent for providers that publish no impact, so consumers can hide the row instead of substituting a fee figure for it.
14
+
15
+ - [#1703](https://github.com/vultisig/vultisig-sdk/pull/1703) [`3ea8b2c`](https://github.com/vultisig/vultisig-sdk/commit/3ea8b2c5133a16878991ec33d569fd8498837316) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Expose a cached dynamic THORChain secured-asset catalog with an offline fallback for swap destination discovery.
16
+
17
+ ## 2.34.0
18
+
19
+ ### Minor Changes
20
+
21
+ - [#1806](https://github.com/vultisig/vultisig-sdk/pull/1806) [`c0ff9b5`](https://github.com/vultisig/vultisig-sdk/commit/c0ff9b5f8fe477df10850b25cc0def27ee31b6b4) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Secured assets can be used in limit swaps. Three independent defects stood between them and a placeable order, each hidden behind the one in front of it — which is why this looked like an unimplemented feature rather than a set of bugs.
22
+
23
+ **The memo builder rejected the notation.** `buildLimitSwapMemo` validated both legs through `assertValidPoolId`, the shared THORChain _pool-id_ grammar, which only understands dotted `CHAIN.ASSET`. Every secured denom was refused — while `getThorchainMemoAsset` was already emitting exactly that spelling, its own docstring conceding the memo builder would not accept the value it returned. A limit swap now asks its own, narrower question instead of borrowing the LP paths' validator, so widening it changes nothing for them. Synth (`BTC/BTC`) and trade (`ETH~ETH`) assets stay unsupported: a different custody model whose behaviour through the advanced swap queue has not been established, and they now say so rather than failing as malformed pool ids.
24
+
25
+ That validator's answer is not cosmetic — it decides the memo's byte budget and which chain the payout address is validated against. A secured asset is custodied on THORChain wherever it originates, so both answer THORChain. Reading its home chain instead sized a deposit against the wrong budget and rejected the only correct payout address.
26
+
27
+ **The placement builder recognised only RUNE as a deposit.** It branched on `areEqualCoins(fromCoin, chainFeeCoin[THORChain])`, so a secured source — on THORChain, but not RUNE — took the transfer branch and looked up a THORChain Asgard inbound. There is none, so it refused outright. Every THORChain-held source now deposits.
28
+
29
+ **The deposit referenced an asset no vault holds.** This is the one that reached the chain and cost a fee: a secured-BTC order broadcast successfully and was rejected on-chain with `insufficient funds`, depositing `THOR.BTC` against a `btc-btc` balance. The cosmos resolver already knew how to build a secured deposit asset, but derived it exclusively from `swapPayload.fromCoin` — and a limit order carries no swap payload on the THORChain branch, so it fell through to a chain-prefix + ticker construction. It now keys off the coin the deposit actually spends, reading the denom from whichever field the coin shape carries it in (`contractAddress` on a swap payload's coin, `id` on the payload's own), since that mismatch is what let the previous version typecheck while reading nothing.
30
+
31
+ This affected every secured denom, not just BTC. Market swaps were unaffected throughout, because they do carry a swap payload — which is why it stayed hidden. THORChain-native tokens (`tcy`, `x/…`) and RUNE are unchanged; they are not secured assets, and tests pin that they keep the `THOR.TICKER` form.
32
+
3
33
  ## 2.33.0
4
34
 
5
35
  ### Minor Changes
@@ -0,0 +1,86 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ import { type ChainKind, type DeriveChainKind } from '@vultisig/core-chain/ChainKind';
3
+ export type BlockExplorerEntity = 'address' | 'tx';
4
+ export type ChainExplorerDescriptor = {
5
+ readonly baseUrl: string;
6
+ readonly paths: Readonly<Record<BlockExplorerEntity, `/${string}`>>;
7
+ };
8
+ /**
9
+ * Public, consumer-facing metadata for one chain.
10
+ *
11
+ * Explorer metadata is the first migrated descriptor slice. Additional
12
+ * protocol facts can be added here as their existing exhaustive tables are
13
+ * migrated; product rollout policy remains consumer-owned.
14
+ */
15
+ export type ChainDescriptor<C extends Chain = Chain> = {
16
+ readonly chain: C;
17
+ readonly kind: DeriveChainKind<C>;
18
+ readonly explorer: ChainExplorerDescriptor;
19
+ };
20
+ export type ChainDescriptorRegistry = {
21
+ readonly [C in Chain]: ChainDescriptor<C>;
22
+ };
23
+ /**
24
+ * Exhaustive SDK-owned chain metadata.
25
+ *
26
+ * Adding a member to {@link Chain} fails compilation here until its descriptor
27
+ * is present. Consumers should derive projections from this registry instead
28
+ * of copying the chain union or maintaining parallel metadata tables.
29
+ */
30
+ export declare const chainRegistry: Readonly<{
31
+ readonly Bitcoin: ChainDescriptor<import("@vultisig/core-chain/Chain").UtxoChain.Bitcoin>;
32
+ readonly "Bitcoin-Cash": ChainDescriptor<import("@vultisig/core-chain/Chain").UtxoChain.BitcoinCash>;
33
+ readonly Litecoin: ChainDescriptor<import("@vultisig/core-chain/Chain").UtxoChain.Litecoin>;
34
+ readonly Dogecoin: ChainDescriptor<import("@vultisig/core-chain/Chain").UtxoChain.Dogecoin>;
35
+ readonly Dash: ChainDescriptor<import("@vultisig/core-chain/Chain").UtxoChain.Dash>;
36
+ readonly Solana: ChainDescriptor<import("@vultisig/core-chain/Chain").OtherChain.Solana>;
37
+ readonly Ethereum: ChainDescriptor<"Ethereum">;
38
+ readonly Cosmos: ChainDescriptor<"Cosmos">;
39
+ readonly Dydx: ChainDescriptor<"Dydx">;
40
+ readonly Kujira: ChainDescriptor<"Kujira">;
41
+ readonly Avalanche: ChainDescriptor<"Avalanche">;
42
+ readonly BSC: ChainDescriptor<"BSC">;
43
+ readonly Arbitrum: ChainDescriptor<"Arbitrum">;
44
+ readonly Base: ChainDescriptor<"Base">;
45
+ readonly Optimism: ChainDescriptor<"Optimism">;
46
+ readonly Polygon: ChainDescriptor<"Polygon">;
47
+ readonly Blast: ChainDescriptor<"Blast">;
48
+ readonly CronosChain: ChainDescriptor<"CronosChain">;
49
+ readonly Sui: ChainDescriptor<import("@vultisig/core-chain/Chain").OtherChain.Sui>;
50
+ readonly Polkadot: ChainDescriptor<import("@vultisig/core-chain/Chain").OtherChain.Polkadot>;
51
+ readonly Bittensor: ChainDescriptor<import("@vultisig/core-chain/Chain").OtherChain.Bittensor>;
52
+ readonly Zksync: ChainDescriptor<"Zksync">;
53
+ readonly Ton: ChainDescriptor<import("@vultisig/core-chain/Chain").OtherChain.Ton>;
54
+ readonly Osmosis: ChainDescriptor<"Osmosis">;
55
+ readonly Terra: ChainDescriptor<"Terra">;
56
+ readonly TerraClassic: ChainDescriptor<"TerraClassic">;
57
+ readonly Noble: ChainDescriptor<"Noble">;
58
+ readonly Ripple: ChainDescriptor<import("@vultisig/core-chain/Chain").OtherChain.Ripple>;
59
+ readonly THORChain: ChainDescriptor<"THORChain">;
60
+ readonly MayaChain: ChainDescriptor<"MayaChain">;
61
+ readonly Akash: ChainDescriptor<"Akash">;
62
+ readonly Tron: ChainDescriptor<import("@vultisig/core-chain/Chain").OtherChain.Tron>;
63
+ readonly Zcash: ChainDescriptor<import("@vultisig/core-chain/Chain").UtxoChain.Zcash>;
64
+ readonly Cardano: ChainDescriptor<import("@vultisig/core-chain/Chain").OtherChain.Cardano>;
65
+ readonly Mantle: ChainDescriptor<"Mantle">;
66
+ readonly Hyperliquid: ChainDescriptor<"Hyperliquid">;
67
+ readonly Sei: ChainDescriptor<"Sei">;
68
+ readonly Robinhood: ChainDescriptor<"Robinhood">;
69
+ readonly QBTC: ChainDescriptor<import("@vultisig/core-chain/Chain").OtherChain.QBTC>;
70
+ }>;
71
+ /** Build an exhaustive consumer projection without copying the chain set. */
72
+ export declare const deriveFromChainRegistry: <T>(derive: (descriptor: ChainDescriptor, chain: Chain) => T) => Record<Chain, T>;
73
+ export type ChainExtensionRecord = Readonly<Record<Chain, unknown>>;
74
+ export type ExtendedChainRegistry<Extensions extends ChainExtensionRecord> = {
75
+ readonly [C in Chain]: (typeof chainRegistry)[C] & {
76
+ readonly extension: Extensions[C];
77
+ };
78
+ };
79
+ /**
80
+ * Attach consumer-local policy or presentation fields without forking SDK
81
+ * metadata. The extension record is exhaustive, so a new SDK chain produces a
82
+ * compile error until the consumer marks it supported or explicitly unsupported.
83
+ */
84
+ export declare const extendChainRegistry: <const Extensions extends ChainExtensionRecord>(extensions: Extensions) => ExtendedChainRegistry<Extensions>;
85
+ export type { ChainKind };
86
+ //# sourceMappingURL=chainRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chainRegistry.d.ts","sourceRoot":"","sources":["../../../../packages/core/chain/chainRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAgB,MAAM,gCAAgC,CAAA;AAEnG,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,IAAI,CAAA;AAElD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,MAAM,EAAE,CAAC,CAAC,CAAA;CACpE,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI;IACrD,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,CAAC,IAAI,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC;CAC1C,CAAA;AAsBD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CmB,CAAA;AAE7C,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,GAAI,CAAC,EACvC,QAAQ,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,KACvD,MAAM,CAAC,KAAK,EAAE,CAAC,CAIf,CAAA;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AAEnE,MAAM,MAAM,qBAAqB,CAAC,UAAU,SAAS,oBAAoB,IAAI;IAC3E,QAAQ,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG;QACjD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;KAClC;CACF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,KAAK,CAAC,UAAU,SAAS,oBAAoB,EAC/E,YAAY,UAAU,KACrB,qBAAqB,CAAC,UAAU,CAUM,CAAA;AAEzC,YAAY,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,79 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ import { getChainKind } from '@vultisig/core-chain/ChainKind';
3
+ const descriptor = (chain, baseUrl, addressPath, txPath) => Object.freeze({
4
+ chain,
5
+ kind: getChainKind(chain),
6
+ explorer: Object.freeze({
7
+ baseUrl,
8
+ paths: Object.freeze({
9
+ address: addressPath,
10
+ tx: txPath,
11
+ }),
12
+ }),
13
+ });
14
+ const cosmosBlockExplorer = 'https://www.mintscan.io';
15
+ /**
16
+ * Exhaustive SDK-owned chain metadata.
17
+ *
18
+ * Adding a member to {@link Chain} fails compilation here until its descriptor
19
+ * is present. Consumers should derive projections from this registry instead
20
+ * of copying the chain union or maintaining parallel metadata tables.
21
+ */
22
+ export const chainRegistry = Object.freeze({
23
+ [Chain.Bitcoin]: descriptor(Chain.Bitcoin, 'https://mempool.space', '/address/', '/tx/'),
24
+ [Chain.BitcoinCash]: descriptor(Chain.BitcoinCash, 'https://blockchair.com/bitcoin-cash', '/address/', '/transaction/'),
25
+ [Chain.Litecoin]: descriptor(Chain.Litecoin, 'https://blockchair.com/litecoin', '/address/', '/transaction/'),
26
+ [Chain.Dogecoin]: descriptor(Chain.Dogecoin, 'https://blockchair.com/dogecoin', '/address/', '/transaction/'),
27
+ [Chain.Dash]: descriptor(Chain.Dash, 'https://blockchair.com/dash', '/address/', '/transaction/'),
28
+ [Chain.Solana]: descriptor(Chain.Solana, 'https://solscan.io', '/address/', '/tx/'),
29
+ [Chain.Ethereum]: descriptor(Chain.Ethereum, 'https://etherscan.io', '/address/', '/tx/'),
30
+ [Chain.Cosmos]: descriptor(Chain.Cosmos, `${cosmosBlockExplorer}/cosmos`, '/address/', '/tx/'),
31
+ [Chain.Dydx]: descriptor(Chain.Dydx, `${cosmosBlockExplorer}/dydx`, '/address/', '/tx/'),
32
+ [Chain.Kujira]: descriptor(Chain.Kujira, 'https://finder.kujira.network/kaiyo-1', '/address/', '/tx/'),
33
+ [Chain.Avalanche]: descriptor(Chain.Avalanche, 'https://snowtrace.io', '/address/', '/tx/'),
34
+ [Chain.BSC]: descriptor(Chain.BSC, 'https://bscscan.com', '/address/', '/tx/'),
35
+ [Chain.Arbitrum]: descriptor(Chain.Arbitrum, 'https://arbiscan.io', '/address/', '/tx/'),
36
+ [Chain.Base]: descriptor(Chain.Base, 'https://basescan.org', '/address/', '/tx/'),
37
+ [Chain.Optimism]: descriptor(Chain.Optimism, 'https://optimistic.etherscan.io', '/address/', '/tx/'),
38
+ [Chain.Polygon]: descriptor(Chain.Polygon, 'https://polygonscan.com', '/address/', '/tx/'),
39
+ [Chain.Blast]: descriptor(Chain.Blast, 'https://blastscan.io', '/address/', '/tx/'),
40
+ [Chain.CronosChain]: descriptor(Chain.CronosChain, 'https://cronoscan.com', '/address/', '/tx/'),
41
+ [Chain.Sui]: descriptor(Chain.Sui, 'https://suiscan.xyz/mainnet', '/address/', '/tx/'),
42
+ [Chain.Polkadot]: descriptor(Chain.Polkadot, 'https://assethub-polkadot.subscan.io', '/account/', '/extrinsic/'),
43
+ [Chain.Bittensor]: descriptor(Chain.Bittensor, 'https://taostats.io', '/account/', '/extrinsic/'),
44
+ [Chain.Zksync]: descriptor(Chain.Zksync, 'https://explorer.zksync.io', '/address/', '/tx/'),
45
+ [Chain.Ton]: descriptor(Chain.Ton, 'https://tonviewer.com', '/', '/transaction/'),
46
+ [Chain.Osmosis]: descriptor(Chain.Osmosis, `${cosmosBlockExplorer}/osmosis`, '/address/', '/tx/'),
47
+ [Chain.Terra]: descriptor(Chain.Terra, `${cosmosBlockExplorer}/terra`, '/address/', '/tx/'),
48
+ [Chain.TerraClassic]: descriptor(Chain.TerraClassic, 'https://finder.terra.money/classic', '/address/', '/tx/'),
49
+ [Chain.Noble]: descriptor(Chain.Noble, `${cosmosBlockExplorer}/noble`, '/address/', '/tx/'),
50
+ [Chain.Ripple]: descriptor(Chain.Ripple, 'https://xrpscan.com', '/account/', '/transaction/'),
51
+ [Chain.THORChain]: descriptor(Chain.THORChain, 'https://thorchain.net', '/address/', '/tx/'),
52
+ [Chain.MayaChain]: descriptor(Chain.MayaChain, 'https://www.explorer.mayachain.info', '/address/', '/tx/'),
53
+ [Chain.Akash]: descriptor(Chain.Akash, `${cosmosBlockExplorer}/akash`, '/address/', '/tx/'),
54
+ [Chain.Tron]: descriptor(Chain.Tron, 'https://tronscan.org/#', '/address/', '/transaction/'),
55
+ [Chain.Zcash]: descriptor(Chain.Zcash, 'https://blockexplorer.one/zcash/mainnet', '/address/', '/tx/'),
56
+ [Chain.Cardano]: descriptor(Chain.Cardano, 'https://cardanoscan.io', '/address/', '/transaction/'),
57
+ [Chain.Mantle]: descriptor(Chain.Mantle, 'https://explorer.mantle.xyz', '/address/', '/tx/'),
58
+ [Chain.Hyperliquid]: descriptor(Chain.Hyperliquid, 'https://hypurrscan.io/evm', '/address/', '/tx/'),
59
+ [Chain.Sei]: descriptor(Chain.Sei, 'https://seiscan.io', '/address/', '/tx/'),
60
+ [Chain.Robinhood]: descriptor(Chain.Robinhood, 'https://robinhoodchain.blockscout.com', '/address/', '/tx/'),
61
+ [Chain.QBTC]: descriptor(Chain.QBTC, 'https://explorer.qbtc.net/qbtc', '/account/', '/tx/'),
62
+ });
63
+ /** Build an exhaustive consumer projection without copying the chain set. */
64
+ export const deriveFromChainRegistry = (derive) => Object.fromEntries(Object.values(Chain).map(chain => [chain, derive(chainRegistry[chain], chain)]));
65
+ /**
66
+ * Attach consumer-local policy or presentation fields without forking SDK
67
+ * metadata. The extension record is exhaustive, so a new SDK chain produces a
68
+ * compile error until the consumer marks it supported or explicitly unsupported.
69
+ */
70
+ export const extendChainRegistry = (extensions) => deriveFromChainRegistry(descriptor => {
71
+ if (!Object.prototype.hasOwnProperty.call(extensions, descriptor.chain)) {
72
+ throw new Error(`Missing chain extension for ${descriptor.chain}`);
73
+ }
74
+ return {
75
+ ...descriptor,
76
+ extension: extensions[descriptor.chain],
77
+ };
78
+ });
79
+ //# sourceMappingURL=chainRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chainRegistry.js","sourceRoot":"","sources":["../../../../packages/core/chain/chainRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAwC,YAAY,EAAE,MAAM,gCAAgC,CAAA;AA0BnG,MAAM,UAAU,GAAG,CACjB,KAAQ,EACR,OAAe,EACf,WAAyB,EACzB,MAAoB,EACA,EAAE,CACtB,MAAM,CAAC,MAAM,CAAC;IACZ,KAAK;IACL,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QACtB,OAAO;QACP,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,WAAW;YACpB,EAAE,EAAE,MAAM;SACX,CAAC;KACH,CAAC;CACH,CAAC,CAAA;AAEJ,MAAM,mBAAmB,GAAG,yBAAyB,CAAA;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;IACxF,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,CAC7B,KAAK,CAAC,WAAW,EACjB,qCAAqC,EACrC,WAAW,EACX,eAAe,CAChB;IACD,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,iCAAiC,EAAE,WAAW,EAAE,eAAe,CAAC;IAC7G,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,iCAAiC,EAAE,WAAW,EAAE,eAAe,CAAC;IAC7G,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,6BAA6B,EAAE,WAAW,EAAE,eAAe,CAAC;IACjG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,CAAC;IACnF,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,CAAC;IACzF,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,mBAAmB,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;IAC9F,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,mBAAmB,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC;IACxF,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,uCAAuC,EAAE,WAAW,EAAE,MAAM,CAAC;IACtG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,CAAC;IAC3F,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;IAC9E,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;IACxF,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,CAAC;IACjF,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,iCAAiC,EAAE,WAAW,EAAE,MAAM,CAAC;IACpG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,CAAC;IAC1F,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,CAAC;IACnF,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;IAChG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,6BAA6B,EAAE,WAAW,EAAE,MAAM,CAAC;IACtF,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,sCAAsC,EAAE,WAAW,EAAE,aAAa,CAAC;IAChH,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,aAAa,CAAC;IACjG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,4BAA4B,EAAE,WAAW,EAAE,MAAM,CAAC;IAC3F,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,uBAAuB,EAAE,GAAG,EAAE,eAAe,CAAC;IACjF,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,mBAAmB,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC;IACjG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,mBAAmB,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC;IAC3F,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,oCAAoC,EAAE,WAAW,EAAE,MAAM,CAAC;IAC/G,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,mBAAmB,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC;IAC3F,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,qBAAqB,EAAE,WAAW,EAAE,eAAe,CAAC;IAC7F,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;IAC5F,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,qCAAqC,EAAE,WAAW,EAAE,MAAM,CAAC;IAC1G,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,mBAAmB,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC;IAC3F,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,eAAe,CAAC;IAC5F,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,yCAAyC,EAAE,WAAW,EAAE,MAAM,CAAC;IACtG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,eAAe,CAAC;IAClG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,6BAA6B,EAAE,WAAW,EAAE,MAAM,CAAC;IAC5F,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,CAAC;IACpG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,CAAC;IAC7E,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,uCAAuC,EAAE,WAAW,EAAE,MAAM,CAAC;IAC5G,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,gCAAgC,EAAE,WAAW,EAAE,MAAM,CAAC;CACjD,CAAC,CAAA;AAE7C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,MAAwD,EACtC,EAAE,CACpB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAGjG,CAAA;AAUH;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,UAAsB,EACa,EAAE,CACrC,uBAAuB,CAAC,UAAU,CAAC,EAAE;IACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;KACxC,CAAA;AACH,CAAC,CAAsC,CAAA"}
@@ -0,0 +1,59 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ import { KnownCoin } from '@vultisig/core-chain/coin/Coin';
3
+ export type ThorchainSecuredAsset = KnownCoin & {
4
+ /** Canonical THORChain bank denom, e.g. `eth-usdc-0xa0b8…`. */
5
+ id: string;
6
+ /** Canonical L1 pool asset, e.g. `ETH.USDC-0XA0B8…`. */
7
+ l1Asset: string;
8
+ isSecured: true;
9
+ /** Live x/bank share supply. Omitted on the static offline fallback. */
10
+ supply?: string;
11
+ /** Live underlying L1 depth. Omitted on the static offline fallback. */
12
+ depth?: string;
13
+ };
14
+ export type ThorchainSecuredAssetCatalog = {
15
+ assets: ThorchainSecuredAsset[];
16
+ source: 'thorchain' | 'fallback';
17
+ };
18
+ export type ThorchainSecuredAssetCatalogFetcher = (options?: {
19
+ forceRefresh?: boolean;
20
+ }) => Promise<ThorchainSecuredAssetCatalog>;
21
+ export type ThorchainSwapDestinationAsset = KnownCoin & {
22
+ isSecured?: true;
23
+ l1Asset?: string;
24
+ };
25
+ type CreateThorchainSecuredAssetCatalogOptions = {
26
+ baseUrl?: string;
27
+ cacheTtlMs?: number;
28
+ fetchJson?: (url: string) => Promise<unknown>;
29
+ fallbackAssets?: readonly ThorchainSecuredAsset[];
30
+ now?: () => number;
31
+ };
32
+ export declare const parseThorchainSecuredAssets: (raw: unknown) => ThorchainSecuredAsset[];
33
+ export declare const thorchainSecuredAssetFallback: readonly ThorchainSecuredAsset[];
34
+ /**
35
+ * Creates a cached, coalescing THORChain secured-asset catalog reader.
36
+ *
37
+ * The live `/thorchain/securedassets` endpoint is authoritative. The static
38
+ * SDK table is returned only when the live read is unavailable or malformed,
39
+ * keeping destination discovery useful offline without presenting the fallback
40
+ * as fresh chain state.
41
+ */
42
+ export declare const createThorchainSecuredAssetCatalog: ({ baseUrl, cacheTtlMs, fetchJson, fallbackAssets, now, }?: CreateThorchainSecuredAssetCatalogOptions) => ThorchainSecuredAssetCatalogFetcher;
43
+ export declare const getThorchainSecuredAssetCatalog: ThorchainSecuredAssetCatalogFetcher;
44
+ /**
45
+ * Returns the complete THORChain swap-destination universe for picker clients.
46
+ * Secured entries always come from the live catalog (or its explicit offline
47
+ * fallback); THORChain-native/Rujira entries remain sourced from the static
48
+ * token metadata because they are not part of `/thorchain/securedassets`.
49
+ */
50
+ export declare const getThorchainSwapDestinationAssets: (options?: {
51
+ forceRefresh?: boolean;
52
+ fetchCatalog?: ThorchainSecuredAssetCatalogFetcher;
53
+ }) => Promise<ThorchainSwapDestinationAsset[]>;
54
+ export declare const getThorchainSecuredAssetL1Asset: (coin: {
55
+ chain: Chain;
56
+ id?: string;
57
+ }) => string | null;
58
+ export {};
59
+ //# sourceMappingURL=securedAssets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securedAssets.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/cosmos/thor/securedAssets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAI1D,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG;IAC9C,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAA;IACV,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,qBAAqB,EAAE,CAAA;IAC/B,MAAM,EAAE,WAAW,GAAG,UAAU,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,CAAC,OAAO,CAAC,EAAE;IAC3D,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,KAAK,OAAO,CAAC,4BAA4B,CAAC,CAAA;AAE3C,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG;IACtD,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,KAAK,yCAAyC,GAAG;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7C,cAAc,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAA;IACjD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB,CAAA;AAwED,eAAO,MAAM,2BAA2B,GAAI,KAAK,OAAO,KAAG,qBAAqB,EA6B/E,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,SAAS,qBAAqB,EAIN,CAAA;AAOpE;;;;;;;GAOG;AACH,eAAO,MAAM,kCAAkC,GAAI,2DAMhD,yCAA8C,KAAG,mCA+CnD,CAAA;AAED,eAAO,MAAM,+BAA+B,qCAAuC,CAAA;AAWnF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,GAC5C,UAAS;IACP,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,YAAY,CAAC,EAAE,mCAAmC,CAAA;CAC9C,KACL,OAAO,CAAC,6BAA6B,EAAE,CAIzC,CAAA;AAED,eAAO,MAAM,+BAA+B,GAAI,MAAM;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,MAAM,GAAG,IAG9F,CAAA"}
@@ -0,0 +1,173 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ import { cosmosRpcUrl } from '@vultisig/core-chain/chains/cosmos/cosmosRpcUrl';
3
+ import { thorchainNativeTokensMetadata } from '@vultisig/core-chain/coin/knownTokens/thorchain';
4
+ import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
5
+ const DEFAULT_CACHE_TTL_MS = 5 * 60 * 1000;
6
+ const securedAssetsUrl = `${cosmosRpcUrl[Chain.THORChain]}/thorchain/securedassets`;
7
+ const parseSecuredDenom = (value) => {
8
+ const denom = value.trim().toLowerCase();
9
+ const separator = denom.indexOf('-');
10
+ if (separator <= 0 || separator === denom.length - 1 || denom.includes('/') || denom.includes('.')) {
11
+ return null;
12
+ }
13
+ const chainPrefix = denom.slice(0, separator);
14
+ const rest = denom.slice(separator + 1);
15
+ if (!/^[a-z0-9]+$/i.test(chainPrefix) ||
16
+ chainPrefix === 'thor' ||
17
+ chainPrefix === 'maya' ||
18
+ !/^[a-z0-9]+(?:-[a-z0-9]+)*$/i.test(rest)) {
19
+ return null;
20
+ }
21
+ const ticker = rest.split('-')[0].toUpperCase();
22
+ return {
23
+ denom,
24
+ l1Asset: `${chainPrefix.toUpperCase()}.${rest.toUpperCase()}`,
25
+ ticker,
26
+ };
27
+ };
28
+ const fallbackMetadataByTicker = new Map();
29
+ for (const metadata of Object.values(thorchainNativeTokensMetadata)) {
30
+ if (!fallbackMetadataByTicker.has(metadata.ticker.toUpperCase())) {
31
+ fallbackMetadataByTicker.set(metadata.ticker.toUpperCase(), metadata);
32
+ }
33
+ }
34
+ const toSecuredAsset = (value, status) => {
35
+ const parsed = parseSecuredDenom(value);
36
+ if (!parsed)
37
+ return null;
38
+ const exactFallback = thorchainNativeTokensMetadata[parsed.denom];
39
+ const tickerFallback = fallbackMetadataByTicker.get(parsed.ticker);
40
+ const metadata = exactFallback ?? tickerFallback;
41
+ return {
42
+ chain: Chain.THORChain,
43
+ id: parsed.denom,
44
+ ticker: parsed.ticker,
45
+ logo: metadata?.logo ?? parsed.ticker.toLowerCase(),
46
+ decimals: 8,
47
+ ...(metadata?.priceProviderId ? { priceProviderId: metadata.priceProviderId } : {}),
48
+ l1Asset: parsed.l1Asset,
49
+ isSecured: true,
50
+ ...status,
51
+ };
52
+ };
53
+ const parseNonNegativeInteger = (value, field) => {
54
+ if (typeof value !== 'string' || !/^\d+$/.test(value)) {
55
+ throw new Error(`THORChain secured-assets response contains an invalid ${field}`);
56
+ }
57
+ return value;
58
+ };
59
+ export const parseThorchainSecuredAssets = (raw) => {
60
+ if (!Array.isArray(raw)) {
61
+ throw new Error(`THORChain secured-assets response must be an array, received ${typeof raw}`);
62
+ }
63
+ const result = [];
64
+ const seen = new Set();
65
+ for (const entry of raw) {
66
+ if (typeof entry?.asset !== 'string') {
67
+ throw new Error('THORChain secured-assets response contains an entry without a string asset');
68
+ }
69
+ const asset = toSecuredAsset(entry.asset, {
70
+ supply: parseNonNegativeInteger(entry.supply, 'supply'),
71
+ depth: parseNonNegativeInteger(entry.depth, 'depth'),
72
+ });
73
+ if (!asset) {
74
+ throw new Error(`THORChain returned an invalid secured asset: ${JSON.stringify(entry.asset)}`);
75
+ }
76
+ if (!seen.has(asset.id)) {
77
+ seen.add(asset.id);
78
+ result.push(asset);
79
+ }
80
+ }
81
+ if (result.length === 0) {
82
+ throw new Error('THORChain secured-assets response is empty');
83
+ }
84
+ return result;
85
+ };
86
+ export const thorchainSecuredAssetFallback = Object.keys(thorchainNativeTokensMetadata)
87
+ .map(value => toSecuredAsset(value))
88
+ .filter((asset) => asset !== null);
89
+ const copyCatalog = (catalog) => ({
90
+ source: catalog.source,
91
+ assets: catalog.assets.map(asset => ({ ...asset })),
92
+ });
93
+ /**
94
+ * Creates a cached, coalescing THORChain secured-asset catalog reader.
95
+ *
96
+ * The live `/thorchain/securedassets` endpoint is authoritative. The static
97
+ * SDK table is returned only when the live read is unavailable or malformed,
98
+ * keeping destination discovery useful offline without presenting the fallback
99
+ * as fresh chain state.
100
+ */
101
+ export const createThorchainSecuredAssetCatalog = ({ baseUrl = securedAssetsUrl, cacheTtlMs = DEFAULT_CACHE_TTL_MS, fetchJson = url => queryUrl(url), fallbackAssets = thorchainSecuredAssetFallback, now = Date.now, } = {}) => {
102
+ let snapshot;
103
+ let inFlight;
104
+ let requestGeneration = 0;
105
+ return async ({ forceRefresh = false } = {}) => {
106
+ const currentTime = now();
107
+ if (!forceRefresh && snapshot && currentTime < snapshot.expiresAt) {
108
+ return copyCatalog(snapshot.catalog);
109
+ }
110
+ if (inFlight && !forceRefresh) {
111
+ return copyCatalog(await inFlight);
112
+ }
113
+ const generation = ++requestGeneration;
114
+ const request = (async () => {
115
+ let catalog;
116
+ try {
117
+ catalog = {
118
+ assets: parseThorchainSecuredAssets(await fetchJson(baseUrl)),
119
+ source: 'thorchain',
120
+ };
121
+ }
122
+ catch {
123
+ catalog = {
124
+ assets: fallbackAssets.map(asset => ({ ...asset })),
125
+ source: 'fallback',
126
+ };
127
+ }
128
+ return catalog;
129
+ })();
130
+ inFlight = request;
131
+ try {
132
+ const catalog = await request;
133
+ if (generation === requestGeneration) {
134
+ snapshot = {
135
+ catalog,
136
+ expiresAt: now() + cacheTtlMs,
137
+ };
138
+ }
139
+ return copyCatalog(catalog);
140
+ }
141
+ finally {
142
+ if (inFlight === request) {
143
+ inFlight = undefined;
144
+ }
145
+ }
146
+ };
147
+ };
148
+ export const getThorchainSecuredAssetCatalog = createThorchainSecuredAssetCatalog();
149
+ const thorchainNonSecuredSwapDestinations = Object.entries(thorchainNativeTokensMetadata)
150
+ .filter(([id]) => parseSecuredDenom(id) === null)
151
+ .map(([id, metadata]) => ({
152
+ ...metadata,
153
+ chain: Chain.THORChain,
154
+ id,
155
+ logo: metadata.logo ?? metadata.ticker.toLowerCase(),
156
+ }));
157
+ /**
158
+ * Returns the complete THORChain swap-destination universe for picker clients.
159
+ * Secured entries always come from the live catalog (or its explicit offline
160
+ * fallback); THORChain-native/Rujira entries remain sourced from the static
161
+ * token metadata because they are not part of `/thorchain/securedassets`.
162
+ */
163
+ export const getThorchainSwapDestinationAssets = async (options = {}) => {
164
+ const { fetchCatalog = getThorchainSecuredAssetCatalog, forceRefresh } = options;
165
+ const catalog = await fetchCatalog({ forceRefresh });
166
+ return [...thorchainNonSecuredSwapDestinations.map(asset => ({ ...asset })), ...catalog.assets];
167
+ };
168
+ export const getThorchainSecuredAssetL1Asset = (coin) => {
169
+ if (coin.chain !== Chain.THORChain || !coin.id)
170
+ return null;
171
+ return parseSecuredDenom(coin.id)?.l1Asset ?? null;
172
+ };
173
+ //# sourceMappingURL=securedAssets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securedAssets.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/cosmos/thor/securedAssets.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { EvmChain } from '@vultisig/core-chain/Chain';
2
- export declare const hyperliquidBlockExplorerUrl = "https://hypurrscan.io/evm";
2
+ export declare const hyperliquidBlockExplorerUrl: string;
3
3
  export declare const hyperliquid: {
4
4
  blockExplorers: {
5
5
  readonly default: {
6
6
  readonly name: "Hypurrscan";
7
- readonly url: "https://hypurrscan.io/evm";
7
+ readonly url: string;
8
8
  };
9
9
  };
10
10
  blockTime?: number | undefined | undefined;
@@ -54,12 +54,12 @@ export declare const hyperliquid: {
54
54
  verifyHash?: ((client: import("viem").Client, parameters: import("viem").VerifyHashActionParameters) => Promise<import("viem").VerifyHashActionReturnType>) | undefined;
55
55
  readonly network: "hyperliquid";
56
56
  };
57
- export declare const robinhoodBlockExplorerUrl = "https://robinhoodchain.blockscout.com";
57
+ export declare const robinhoodBlockExplorerUrl: string;
58
58
  export declare const robinhood: {
59
59
  blockExplorers: {
60
60
  readonly default: {
61
61
  readonly name: "Blockscout";
62
- readonly url: "https://robinhoodchain.blockscout.com";
62
+ readonly url: string;
63
63
  };
64
64
  };
65
65
  blockTime?: number | undefined | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"chainInfo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/evm/chainInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AA0BrD,eAAO,MAAM,2BAA2B,8BAA8B,CAAA;AAGtE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBtB,CAAA;AAGF,eAAO,MAAM,yBAAyB,0CAA0C,CAAA;AAGhF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBpB,CAAA;AAsCF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;mBAzDwC,CAAC;4BACxB,CAAC;kBAEf,CAAC;uBAG1B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6DF,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,QAAQ,KAAG,MAA+D,CAAA;AAE9G,eAAO,MAAM,aAAa,GAAI,OAAO,QAAQ,KAAG,MAE/C,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,MAAM,KAAG,QAAQ,GAAG,SAEjE,CAAA"}
1
+ {"version":3,"file":"chainInfo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/evm/chainInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AA2BrD,eAAO,MAAM,2BAA2B,QAAuD,CAAA;AAG/F,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBtB,CAAA;AAGF,eAAO,MAAM,yBAAyB,QAAqD,CAAA;AAG3F,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBpB,CAAA;AAsCF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;mBA1Dc,CAAC;4BACT,CAAC;kBAA+C,CAAC;uBACxC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkEvC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,QAAQ,KAAG,MAA+D,CAAA;AAE9G,eAAO,MAAM,aAAa,GAAI,OAAO,QAAQ,KAAG,MAE/C,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,MAAM,KAAG,QAAQ,GAAG,SAEjE,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { EvmChain } from '@vultisig/core-chain/Chain';
2
+ import { chainRegistry } from '@vultisig/core-chain/chainRegistry';
2
3
  import { getCustomRpcOverride } from '@vultisig/core-chain/chains/customRpc/customRpcOverrides';
3
4
  import { chainFeeCoin } from '@vultisig/core-chain/coin/chainFeeCoin';
4
5
  import { rootApiUrl } from '@vultisig/core-config';
@@ -10,7 +11,7 @@ import { arbitrum, avalanche, base, blast, bsc, cronos, mainnet, mantle, optimis
10
11
  const hyperliquidRpcUrl = `${rootApiUrl}/hyperevm/`;
11
12
  // HyperEVM transactions and addresses live under hypurrscan's `/evm/` section.
12
13
  // The bare `https://hypurrscan.io/tx/<hash>` path returns a server error.
13
- export const hyperliquidBlockExplorerUrl = 'https://hypurrscan.io/evm';
14
+ export const hyperliquidBlockExplorerUrl = chainRegistry[EvmChain.Hyperliquid].explorer.baseUrl;
14
15
  const hyperliquidNativeCoin = chainFeeCoin[EvmChain.Hyperliquid];
15
16
  export const hyperliquid = defineChain({
16
17
  id: 999,
@@ -30,7 +31,7 @@ export const hyperliquid = defineChain({
30
31
  },
31
32
  });
32
33
  const robinhoodRpcUrl = 'https://rpc.mainnet.chain.robinhood.com';
33
- export const robinhoodBlockExplorerUrl = 'https://robinhoodchain.blockscout.com';
34
+ export const robinhoodBlockExplorerUrl = chainRegistry[EvmChain.Robinhood].explorer.baseUrl;
34
35
  const robinhoodNativeCoin = chainFeeCoin[EvmChain.Robinhood];
35
36
  export const robinhood = defineChain({
36
37
  id: 4663,
@@ -1 +1 @@
1
- {"version":3,"file":"chainInfo.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/evm/chainInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAA;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAChE,OAAO,EAAsB,WAAW,EAAE,MAAM,MAAM,CAAA;AACtD,OAAO,EACL,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,KAAK,EACL,GAAG,EACH,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,EACP,GAAG,EACH,MAAM,GACP,MAAM,aAAa,CAAA;AAEpB,MAAM,iBAAiB,GAAG,GAAG,UAAU,YAAY,CAAA;AACnD,+EAA+E;AAC/E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAA2B,CAAA;AACtE,MAAM,qBAAqB,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;IACrC,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,aAAa;IACtB,cAAc,EAAE;QACd,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,qBAAqB,CAAC,MAAM;QACpC,QAAQ,EAAE,qBAAqB,CAAC,QAAQ;KACzC;IACD,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE;QACtC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE;KACtC;IACD,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,2BAA2B,EAAE;KAClE;CACF,CAAC,CAAA;AAEF,MAAM,eAAe,GAAG,yCAAyC,CAAA;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAG,uCAAuC,CAAA;AAChF,MAAM,mBAAmB,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AAE5D,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;IACnC,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,WAAW;IACpB,cAAc,EAAE;QACd,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,mBAAmB,CAAC,MAAM;QAClC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;KACvC;IACD,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE;QACpC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE;KACpC;IACD,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,yBAAyB,EAAE;KAChE;CACF,CAAC,CAAA;AAEF,MAAM,eAAe,GAA6B;IAChD,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,UAAU,OAAO;IACzC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,QAAQ;IACtC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,UAAU,OAAO;IACzC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,WAAW;IAC5C,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,UAAU,OAAO;IACzC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,uCAAuC;IAC/D,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,SAAS;IACxC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,OAAO;IACpC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,UAAU;IAC1C,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,UAAU,QAAQ;IAC3C,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,UAAU;IAC1C,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB;IACzC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,8BAA8B;IAC9C,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe;CACtC,CAAA;AAED,MAAM,mBAAmB,GAAgC;IACvD,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO;IAC5B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI;IACrB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAC7B,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO;IAC3B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ;IAC7B,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM;IAC9B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK;IACvB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG;IACnB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IACzB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS;IAC/B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IACzB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW;IACnC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG;IACnB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS;CAChC,CAAA;AAED,MAAM,UAAU,GAA6B,SAAS,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;AAE3G,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IAC7E,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;IAExC,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE;YACP,GAAG,KAAK,CAAC,OAAO;YAChB,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE;SAC5B;KACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAe,EAAU,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;AAE9G,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAe,EAAU,EAAE;IACvD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAwB,EAAE;IAC5E,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAA;AAC1C,CAAC,CAAA"}
1
+ {"version":3,"file":"chainInfo.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/evm/chainInfo.ts"],"names":[],"mappings":"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"}
@@ -80,6 +80,22 @@ export type GeneralSwapQuote = {
80
80
  dstAmount: string;
81
81
  provider: GeneralSwapProvider;
82
82
  routeProvider?: string;
83
+ /**
84
+ * Signed price impact of the route as a FRACTION, not a percent: `0.0133`
85
+ * means 1.33% of output lost, and a negative value is a favorable trade.
86
+ *
87
+ * Do NOT hand this to `evaluatePriceImpactPercent` — it takes a percent, so
88
+ * `0.45` would be read as 0.45% rather than 45% and pass a ceiling it should
89
+ * fail. Scale it first (`fraction * 100`), or use
90
+ * `evaluateImpactFromFractionString` when the raw string is still in hand.
91
+ *
92
+ * Absent whenever no usable figure was found, not as a property of the
93
+ * provider: today only SwapKit routes populate it, from `meta.priceImpact`
94
+ * with a `totalSlippageBps` fallback, and even those omit it when neither is
95
+ * a finite number. Consumers hide the row rather than substitute anything
96
+ * for it.
97
+ */
98
+ priceImpactFraction?: number;
83
99
  tx: GeneralSwapTx;
84
100
  };
85
101
  //# sourceMappingURL=GeneralSwapQuote.d.ts.map
@@ -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,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,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"}
@@ -3,6 +3,16 @@ import { Chain } from '@vultisig/core-chain/Chain';
3
3
  export declare class SwapKitNoEligibleRoutesError extends Error {
4
4
  constructor();
5
5
  }
6
+ /**
7
+ * A SwapKit fee entry could not be resolved to a coin this swap deals in —
8
+ * missing, unknown or mixed assets, or a negative amount.
9
+ *
10
+ * Distinct from a programming error so callers can fail open on the branches
11
+ * where the fee is not part of the signed transaction, without also swallowing
12
+ * bugs in the resolution itself.
13
+ */
14
+ export declare class SwapKitFeeShapeError extends Error {
15
+ }
6
16
  /**
7
17
  * The SwapKit pair is structurally supported (per the cached `/providers`
8
18
  * snapshot) but no route was returned — i.e. the amount is below the provider
@@ -1 +1 @@
1
- {"version":3,"file":"SwapKitErrors.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/swapkit/SwapKitErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,6EAA6E;AAC7E,qBAAa,4BAA6B,SAAQ,KAAK;;CAItD;AAED;;;;;GAKG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;IAErD,QAAQ,CAAC,SAAS,EAAE,KAAK;IACzB,QAAQ,CAAC,OAAO,EAAE,KAAK;gBADd,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,KAAK;CAI1B"}
1
+ {"version":3,"file":"SwapKitErrors.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/general/swapkit/SwapKitErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,6EAA6E;AAC7E,qBAAa,4BAA6B,SAAQ,KAAK;;CAItD;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;CAAG;AAElD;;;;;GAKG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;IAErD,QAAQ,CAAC,SAAS,EAAE,KAAK;IACzB,QAAQ,CAAC,OAAO,EAAE,KAAK;gBADd,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,KAAK;CAI1B"}