@metamask-previews/bridge-controller 75.1.1-preview-eca6f2051 → 75.1.1-preview-2c09cc947
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -2
- package/dist/constants/tokens.cjs +5 -6
- package/dist/constants/tokens.cjs.map +1 -1
- package/dist/constants/tokens.d.cts +4 -4
- package/dist/constants/tokens.d.cts.map +1 -1
- package/dist/constants/tokens.d.mts +4 -4
- package/dist/constants/tokens.d.mts.map +1 -1
- package/dist/constants/tokens.mjs +5 -6
- package/dist/constants/tokens.mjs.map +1 -1
- package/dist/selectors.cjs +12 -10
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts.map +1 -1
- package/dist/selectors.d.mts.map +1 -1
- package/dist/selectors.mjs +12 -10
- package/dist/selectors.mjs.map +1 -1
- package/dist/utils/balance.cjs +2 -1
- package/dist/utils/balance.cjs.map +1 -1
- package/dist/utils/balance.d.cts.map +1 -1
- package/dist/utils/balance.d.mts.map +1 -1
- package/dist/utils/balance.mjs +2 -1
- package/dist/utils/balance.mjs.map +1 -1
- package/dist/utils/bridge.cjs +13 -7
- package/dist/utils/bridge.cjs.map +1 -1
- package/dist/utils/bridge.d.cts.map +1 -1
- package/dist/utils/bridge.d.mts.map +1 -1
- package/dist/utils/bridge.mjs +14 -8
- package/dist/utils/bridge.mjs.map +1 -1
- package/dist/utils/caip-formatters.cjs +3 -3
- package/dist/utils/caip-formatters.cjs.map +1 -1
- package/dist/utils/caip-formatters.mjs +3 -3
- package/dist/utils/caip-formatters.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -10,15 +10,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
12
|
- Add optional `environment_type` property to the `ButtonClicked` unified swap/bridge event context ([#9121](https://github.com/MetaMask/core/pull/9121))
|
|
13
|
+
- Add support for ERC20 as native token, starting with Arc USDC ([#9196](https://github.com/MetaMask/core/pull/9196))
|
|
13
14
|
|
|
14
15
|
### Changed
|
|
15
16
|
|
|
16
|
-
- Bump `@metamask/assets-controllers` from `^109.0.0` to `^109.
|
|
17
|
+
- Bump `@metamask/assets-controllers` from `^109.0.0` to `^109.1.0` ([#9110](https://github.com/MetaMask/core/pull/9110))
|
|
17
18
|
- Refactor selector unit tests to prepare for V2 QuoteResponse migration ([#9098](https://github.com/MetaMask/core/pull/9098))
|
|
18
19
|
- Bump `@metamask/utils` from `^11.9.0` to `^11.11.0` ([#9074](https://github.com/MetaMask/core/pull/9074))
|
|
19
20
|
- Bump `@metamask/assets-controller` from `^9.0.0` to `^9.0.1` ([#9083](https://github.com/MetaMask/core/pull/9083))
|
|
20
21
|
- Bump `@metamask/controller-utils` from `^12.1.1` to `^12.2.0` ([#9083](https://github.com/MetaMask/core/pull/9083))
|
|
21
|
-
- Bump `@metamask/transaction-controller` from `^67.1.0` to `^68.1
|
|
22
|
+
- Bump `@metamask/transaction-controller` from `^67.1.0` to `^68.0.1` ([#9089](https://github.com/MetaMask/core/pull/9089), [#9177](https://github.com/MetaMask/core/pull/9177))
|
|
22
23
|
- Bump `@metamask/profile-sync-controller` from `^28.1.1` to `^28.2.0` ([#9119](https://github.com/MetaMask/core/pull/9119))
|
|
23
24
|
|
|
24
25
|
## [75.1.1]
|
|
@@ -147,10 +147,10 @@ const MEGAETH_SWAPS_TOKEN_OBJECT = {
|
|
|
147
147
|
};
|
|
148
148
|
// Leaving for code consistency but we won't display it in the asset picker
|
|
149
149
|
const ARC_SWAPS_TOKEN_OBJECT = {
|
|
150
|
-
symbol: 'USDC
|
|
151
|
-
name: 'USDC
|
|
152
|
-
address: '
|
|
153
|
-
decimals:
|
|
150
|
+
symbol: 'USDC',
|
|
151
|
+
name: 'USDC',
|
|
152
|
+
address: '0x3600000000000000000000000000000000000000',
|
|
153
|
+
decimals: 6,
|
|
154
154
|
iconUrl: '',
|
|
155
155
|
};
|
|
156
156
|
exports.SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {
|
|
@@ -192,7 +192,6 @@ exports.SYMBOL_TO_SLIP44_MAP = {
|
|
|
192
192
|
TRX: 'slip44:195',
|
|
193
193
|
MON: 'slip44:268435779',
|
|
194
194
|
HYPE: 'slip44:2457',
|
|
195
|
-
|
|
196
|
-
'USDC-native': 'erc20:0x0000000000000000000000000000000000000000',
|
|
195
|
+
USDC: 'erc20:0x3600000000000000000000000000000000000000',
|
|
197
196
|
};
|
|
198
197
|
//# sourceMappingURL=tokens.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.cjs","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":";;;AAAA,uDAAqE;AAGrE,yCAAqC;AAyBxB,QAAA,qBAAqB,GAChC,4CAA4C,CAAC;AAE/C,MAAM,gBAAgB,GAAG;IACvB,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,MAAM;IACjB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,MAAM;IACjB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,KAAK;IACd,GAAG,EAAE,MAAM;CACH,CAAC;AAEX,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,wBAAwB,GAAG;IAC/B,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,uBAAuB,GAAG;IAC9B,MAAM,EAAE,gBAAgB,CAAC,SAAS;IAClC,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,2BAA2B,GAAG;IAClC,MAAM,EAAE,gBAAgB,CAAC,QAAQ;IACjC,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,yBAAyB,GAAG;IAChC,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,0BAA0B,GAAG;IACjC,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,2BAA2B,GAAG;IAClC,GAAG,sBAAsB;CACjB,CAAC;AAEX,MAAM,2BAA2B,GAAG;IAClC,GAAG,sBAAsB;CACjB,CAAC;AAEX,MAAM,6BAA6B,GAAG;IACpC,GAAG,sBAAsB;CACjB,CAAC;AAEX,MAAM,wBAAwB,GAAG;IAC/B,GAAG,sBAAsB;CACjB,CAAC;AAEX,MAAM,uBAAuB,GAAG;IAC9B,GAAG,sBAAsB;CACjB,CAAC;AAEX,MAAM,yBAAyB,GAAG;IAChC,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,wBAAwB,GAAG;IAC/B,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAC5B,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,2BAA2B,GAAG;IAClC,MAAM,EAAE,gBAAgB,CAAC,IAAI;IAC7B,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,6BAAqB;IAC9B,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEX,MAAM,0BAA0B,GAAG;IACjC,GAAG,sBAAsB;CACjB,CAAC;AAEX,2EAA2E;AAC3E,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,aAAa;IACrB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;CACH,CAAC;AAEE,QAAA,+BAA+B,GAAG;IAC7C,CAAC,kBAAS,CAAC,OAAO,CAAC,EAAE,sBAAsB;IAC3C,CAAC,kBAAS,CAAC,SAAS,CAAC,EAAE,2BAA2B;IAClD,CAAC,kBAAS,CAAC,GAAG,CAAC,EAAE,sBAAsB;IACvC,CAAC,kBAAS,CAAC,OAAO,CAAC,EAAE,wBAAwB;IAC7C,CAAC,kBAAS,CAAC,MAAM,CAAC,EAAE,yBAAyB;IAC7C,CAAC,kBAAS,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAC/C,CAAC,kBAAS,CAAC,SAAS,CAAC,EAAE,uBAAuB;IAC9C,CAAC,kBAAS,CAAC,QAAQ,CAAC,EAAE,2BAA2B;IACjD,CAAC,kBAAS,CAAC,QAAQ,CAAC,EAAE,2BAA2B;IACjD,CAAC,kBAAS,CAAC,UAAU,CAAC,EAAE,6BAA6B;IACrD,CAAC,kBAAS,CAAC,aAAa,CAAC,EAAE,wBAAwB;IACnD,CAAC,kBAAS,CAAC,IAAI,CAAC,EAAE,uBAAuB;IACzC,CAAC,kBAAS,CAAC,GAAG,CAAC,EAAE,sBAAsB;IACvC,CAAC,kBAAS,CAAC,KAAK,CAAC,EAAE,wBAAwB;IAC3C,CAAC,kBAAS,CAAC,QAAQ,CAAC,EAAE,2BAA2B;IACjD,CAAC,kBAAS,CAAC,OAAO,CAAC,EAAE,0BAA0B;IAC/C,CAAC,kBAAS,CAAC,GAAG,CAAC,EAAE,sBAAsB;IACvC,CAAC,sBAAQ,CAAC,OAAO,CAAC,EAAE,yBAAyB;IAC7C,CAAC,sBAAQ,CAAC,MAAM,CAAC,EAAE,yBAAyB;IAC5C,CAAC,sBAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB;IAC1C,CAAC,sBAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB;CAClC,CAAC;AAOX;;;GAGG;AACU,QAAA,oBAAoB,GAG7B;IACF,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,WAAW;IACpB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,kBAAkB;IACvB,IAAI,EAAE,aAAa;IACnB,mDAAmD;IACnD,aAAa,EAAE,kDAAkD;CAClE,CAAC","sourcesContent":["import { BtcScope, SolScope, TrxScope } from '@metamask/keyring-api';\n\nimport type { AllowedBridgeChainIds } from './bridge';\nimport { CHAIN_IDS } from './chains';\n\nexport type SwapsTokenObject = {\n /**\n * The symbol of token object\n */\n symbol: string;\n /**\n * The name for the network\n */\n name: string;\n /**\n * An address that the metaswap-api recognizes as the default token\n */\n address: string;\n /**\n * Number of digits after decimal point\n */\n decimals: number;\n /**\n * URL for token icon\n */\n iconUrl: string;\n};\n\nexport const DEFAULT_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000';\n\nconst CURRENCY_SYMBOLS = {\n ARBITRUM: 'ETH',\n AVALANCHE: 'AVAX',\n BNB: 'BNB',\n BUSD: 'BUSD',\n CELO: 'CELO',\n DAI: 'DAI',\n GNOSIS: 'XDAI',\n ETH: 'ETH',\n FANTOM: 'FTM',\n HARMONY: 'ONE',\n PALM: 'PALM',\n MATIC: 'MATIC',\n POL: 'POL',\n TEST_ETH: 'TESTETH',\n USDC: 'USDC',\n USDT: 'USDT',\n WETH: 'WETH',\n OPTIMISM: 'ETH',\n CRONOS: 'CRO',\n GLIMMER: 'GLMR',\n MOONRIVER: 'MOVR',\n ONE: 'ONE',\n SOL: 'SOL',\n SEI: 'SEI',\n BTC: 'BTC',\n TRX: 'TRX',\n MON: 'MON',\n HYPE: 'HYPE',\n MEGAETH: 'ETH',\n ARC: 'USDC',\n} as const;\n\nconst ETH_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n};\n\nconst BNB_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.BNB,\n name: 'Binance Coin',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst MATIC_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.POL,\n name: 'Polygon',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst AVAX_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.AVALANCHE,\n name: 'Avalanche',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst TEST_ETH_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.TEST_ETH,\n name: 'Test Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst GOERLI_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst SEPOLIA_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst ARBITRUM_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst OPTIMISM_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst ZKSYNC_ERA_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst LINEA_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst BASE_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst SOLANA_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.SOL,\n name: 'Solana',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 9,\n iconUrl: '',\n} as const;\n\nconst BTC_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.BTC,\n name: 'Bitcoin',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 8,\n iconUrl: '',\n} as const;\n\nconst SEI_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.SEI,\n name: 'Sei',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst TRX_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.TRX,\n name: 'Tron',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 6,\n iconUrl: '',\n} as const;\n\nconst MONAD_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.MON,\n name: 'Mon',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst HYPEREVM_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.HYPE,\n name: 'Hyperliquid',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst MEGAETH_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\n// Leaving for code consistency but we won't display it in the asset picker\nconst ARC_SWAPS_TOKEN_OBJECT = {\n symbol: 'USDC-native',\n name: 'USDC-native',\n address: '0x0000000000000000000000000000000000000000',\n decimals: 18,\n iconUrl: '',\n} as const;\n\nexport const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {\n [CHAIN_IDS.MAINNET]: ETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.LOCALHOST]: TEST_ETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.BSC]: BNB_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.POLYGON]: MATIC_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.GOERLI]: GOERLI_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.SEPOLIA]: SEPOLIA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.AVALANCHE]: AVAX_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.OPTIMISM]: OPTIMISM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ARBITRUM]: ARBITRUM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ZKSYNC_ERA]: ZKSYNC_ERA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.LINEA_MAINNET]: LINEA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.BASE]: BASE_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.SEI]: SEI_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.MONAD]: MONAD_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.HYPEREVM]: HYPEREVM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.MEGAETH]: MEGAETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ARC]: ARC_SWAPS_TOKEN_OBJECT,\n [SolScope.Mainnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [SolScope.Devnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [BtcScope.Mainnet]: BTC_SWAPS_TOKEN_OBJECT,\n [TrxScope.Mainnet]: TRX_SWAPS_TOKEN_OBJECT,\n} as const;\n\nexport type SupportedSwapsNativeCurrencySymbols =\n (typeof SWAPS_CHAINID_DEFAULT_TOKEN_MAP)[\n | AllowedBridgeChainIds\n | typeof CHAIN_IDS.LOCALHOST]['symbol'];\n\n/**\n * A map of native currency symbols to their SLIP-44 representation\n * From {@link https://github.com/satoshilabs/slips/blob/master/slip-0044.md}\n */\nexport const SYMBOL_TO_SLIP44_MAP: Record<\n SupportedSwapsNativeCurrencySymbols,\n `${string}:${string}`\n> = {\n SOL: 'slip44:501',\n BTC: 'slip44:0',\n ETH: 'slip44:60',\n POL: 'slip44:966',\n BNB: 'slip44:714',\n AVAX: 'slip44:9005',\n TESTETH: 'slip44:60',\n SEI: 'slip44:19000118',\n TRX: 'slip44:195',\n MON: 'slip44:268435779',\n HYPE: 'slip44:2457',\n // It won't be displayed - hidden on UI client side\n 'USDC-native': 'erc20:0x0000000000000000000000000000000000000000',\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tokens.cjs","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"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","sourcesContent":["import { BtcScope, SolScope, TrxScope } from '@metamask/keyring-api';\n\nimport type { AllowedBridgeChainIds } from './bridge';\nimport { CHAIN_IDS } from './chains';\n\nexport type SwapsTokenObject = {\n /**\n * The symbol of token object\n */\n symbol: string;\n /**\n * The name for the network\n */\n name: string;\n /**\n * An address that the metaswap-api recognizes as the default token\n */\n address: string;\n /**\n * Number of digits after decimal point\n */\n decimals: number;\n /**\n * URL for token icon\n */\n iconUrl: string;\n};\n\nexport const DEFAULT_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000';\n\nconst CURRENCY_SYMBOLS = {\n ARBITRUM: 'ETH',\n AVALANCHE: 'AVAX',\n BNB: 'BNB',\n BUSD: 'BUSD',\n CELO: 'CELO',\n DAI: 'DAI',\n GNOSIS: 'XDAI',\n ETH: 'ETH',\n FANTOM: 'FTM',\n HARMONY: 'ONE',\n PALM: 'PALM',\n MATIC: 'MATIC',\n POL: 'POL',\n TEST_ETH: 'TESTETH',\n USDC: 'USDC',\n USDT: 'USDT',\n WETH: 'WETH',\n OPTIMISM: 'ETH',\n CRONOS: 'CRO',\n GLIMMER: 'GLMR',\n MOONRIVER: 'MOVR',\n ONE: 'ONE',\n SOL: 'SOL',\n SEI: 'SEI',\n BTC: 'BTC',\n TRX: 'TRX',\n MON: 'MON',\n HYPE: 'HYPE',\n MEGAETH: 'ETH',\n ARC: 'USDC',\n} as const;\n\nconst ETH_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n};\n\nconst BNB_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.BNB,\n name: 'Binance Coin',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst MATIC_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.POL,\n name: 'Polygon',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst AVAX_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.AVALANCHE,\n name: 'Avalanche',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst TEST_ETH_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.TEST_ETH,\n name: 'Test Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst GOERLI_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst SEPOLIA_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst ARBITRUM_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst OPTIMISM_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst ZKSYNC_ERA_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst LINEA_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst BASE_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst SOLANA_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.SOL,\n name: 'Solana',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 9,\n iconUrl: '',\n} as const;\n\nconst BTC_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.BTC,\n name: 'Bitcoin',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 8,\n iconUrl: '',\n} as const;\n\nconst SEI_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.SEI,\n name: 'Sei',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst TRX_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.TRX,\n name: 'Tron',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 6,\n iconUrl: '',\n} as const;\n\nconst MONAD_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.MON,\n name: 'Mon',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst HYPEREVM_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.HYPE,\n name: 'Hyperliquid',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst MEGAETH_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\n// Leaving for code consistency but we won't display it in the asset picker\nconst ARC_SWAPS_TOKEN_OBJECT = {\n symbol: 'USDC',\n name: 'USDC',\n address: '0x3600000000000000000000000000000000000000',\n decimals: 6,\n iconUrl: '',\n} as const;\n\nexport const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {\n [CHAIN_IDS.MAINNET]: ETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.LOCALHOST]: TEST_ETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.BSC]: BNB_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.POLYGON]: MATIC_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.GOERLI]: GOERLI_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.SEPOLIA]: SEPOLIA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.AVALANCHE]: AVAX_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.OPTIMISM]: OPTIMISM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ARBITRUM]: ARBITRUM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ZKSYNC_ERA]: ZKSYNC_ERA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.LINEA_MAINNET]: LINEA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.BASE]: BASE_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.SEI]: SEI_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.MONAD]: MONAD_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.HYPEREVM]: HYPEREVM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.MEGAETH]: MEGAETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ARC]: ARC_SWAPS_TOKEN_OBJECT,\n [SolScope.Mainnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [SolScope.Devnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [BtcScope.Mainnet]: BTC_SWAPS_TOKEN_OBJECT,\n [TrxScope.Mainnet]: TRX_SWAPS_TOKEN_OBJECT,\n} as const;\n\nexport type SupportedSwapsNativeCurrencySymbols =\n (typeof SWAPS_CHAINID_DEFAULT_TOKEN_MAP)[\n | AllowedBridgeChainIds\n | typeof CHAIN_IDS.LOCALHOST]['symbol'];\n\n/**\n * A map of native currency symbols to their SLIP-44 representation\n * From {@link https://github.com/satoshilabs/slips/blob/master/slip-0044.md}\n */\nexport const SYMBOL_TO_SLIP44_MAP: Record<\n SupportedSwapsNativeCurrencySymbols,\n `${string}:${string}`\n> = {\n SOL: 'slip44:501',\n BTC: 'slip44:0',\n ETH: 'slip44:60',\n POL: 'slip44:966',\n BNB: 'slip44:714',\n AVAX: 'slip44:9005',\n TESTETH: 'slip44:60',\n SEI: 'slip44:19000118',\n TRX: 'slip44:195',\n MON: 'slip44:268435779',\n HYPE: 'slip44:2457',\n USDC: 'erc20:0x3600000000000000000000000000000000000000',\n};\n"]}
|
|
@@ -137,10 +137,10 @@ export declare const SWAPS_CHAINID_DEFAULT_TOKEN_MAP: {
|
|
|
137
137
|
readonly iconUrl: string;
|
|
138
138
|
};
|
|
139
139
|
readonly "0x13b2": {
|
|
140
|
-
readonly symbol: "USDC
|
|
141
|
-
readonly name: "USDC
|
|
142
|
-
readonly address: "
|
|
143
|
-
readonly decimals:
|
|
140
|
+
readonly symbol: "USDC";
|
|
141
|
+
readonly name: "USDC";
|
|
142
|
+
readonly address: "0x3600000000000000000000000000000000000000";
|
|
143
|
+
readonly decimals: 6;
|
|
144
144
|
readonly iconUrl: "";
|
|
145
145
|
};
|
|
146
146
|
readonly "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.cts","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AACtD,OAAO,EAAE,SAAS,EAAE,qBAAiB;AAErC,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,qBAAqB,+CACY,CAAC;AA4K/C,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBlC,CAAC;AAEX,MAAM,MAAM,mCAAmC,GAC7C,CAAC,OAAO,+BAA+B,CAAC,CACpC,qBAAqB,GACrB,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,mCAAmC,EACnC,GAAG,MAAM,IAAI,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"tokens.d.cts","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AACtD,OAAO,EAAE,SAAS,EAAE,qBAAiB;AAErC,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,qBAAqB,+CACY,CAAC;AA4K/C,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBlC,CAAC;AAEX,MAAM,MAAM,mCAAmC,GAC7C,CAAC,OAAO,+BAA+B,CAAC,CACpC,qBAAqB,GACrB,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,mCAAmC,EACnC,GAAG,MAAM,IAAI,MAAM,EAAE,CActB,CAAC"}
|
|
@@ -137,10 +137,10 @@ export declare const SWAPS_CHAINID_DEFAULT_TOKEN_MAP: {
|
|
|
137
137
|
readonly iconUrl: string;
|
|
138
138
|
};
|
|
139
139
|
readonly "0x13b2": {
|
|
140
|
-
readonly symbol: "USDC
|
|
141
|
-
readonly name: "USDC
|
|
142
|
-
readonly address: "
|
|
143
|
-
readonly decimals:
|
|
140
|
+
readonly symbol: "USDC";
|
|
141
|
+
readonly name: "USDC";
|
|
142
|
+
readonly address: "0x3600000000000000000000000000000000000000";
|
|
143
|
+
readonly decimals: 6;
|
|
144
144
|
readonly iconUrl: "";
|
|
145
145
|
};
|
|
146
146
|
readonly "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.mts","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AACtD,OAAO,EAAE,SAAS,EAAE,qBAAiB;AAErC,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,qBAAqB,+CACY,CAAC;AA4K/C,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBlC,CAAC;AAEX,MAAM,MAAM,mCAAmC,GAC7C,CAAC,OAAO,+BAA+B,CAAC,CACpC,qBAAqB,GACrB,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,mCAAmC,EACnC,GAAG,MAAM,IAAI,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"tokens.d.mts","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AACtD,OAAO,EAAE,SAAS,EAAE,qBAAiB;AAErC,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,qBAAqB,+CACY,CAAC;AA4K/C,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBlC,CAAC;AAEX,MAAM,MAAM,mCAAmC,GAC7C,CAAC,OAAO,+BAA+B,CAAC,CACpC,qBAAqB,GACrB,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,mCAAmC,EACnC,GAAG,MAAM,IAAI,MAAM,EAAE,CActB,CAAC"}
|
|
@@ -144,10 +144,10 @@ const MEGAETH_SWAPS_TOKEN_OBJECT = {
|
|
|
144
144
|
};
|
|
145
145
|
// Leaving for code consistency but we won't display it in the asset picker
|
|
146
146
|
const ARC_SWAPS_TOKEN_OBJECT = {
|
|
147
|
-
symbol: 'USDC
|
|
148
|
-
name: 'USDC
|
|
149
|
-
address: '
|
|
150
|
-
decimals:
|
|
147
|
+
symbol: 'USDC',
|
|
148
|
+
name: 'USDC',
|
|
149
|
+
address: '0x3600000000000000000000000000000000000000',
|
|
150
|
+
decimals: 6,
|
|
151
151
|
iconUrl: '',
|
|
152
152
|
};
|
|
153
153
|
export const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {
|
|
@@ -189,7 +189,6 @@ export const SYMBOL_TO_SLIP44_MAP = {
|
|
|
189
189
|
TRX: 'slip44:195',
|
|
190
190
|
MON: 'slip44:268435779',
|
|
191
191
|
HYPE: 'slip44:2457',
|
|
192
|
-
|
|
193
|
-
'USDC-native': 'erc20:0x0000000000000000000000000000000000000000',
|
|
192
|
+
USDC: 'erc20:0x3600000000000000000000000000000000000000',
|
|
194
193
|
};
|
|
195
194
|
//# sourceMappingURL=tokens.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.mjs","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"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","sourcesContent":["import { BtcScope, SolScope, TrxScope } from '@metamask/keyring-api';\n\nimport type { AllowedBridgeChainIds } from './bridge';\nimport { CHAIN_IDS } from './chains';\n\nexport type SwapsTokenObject = {\n /**\n * The symbol of token object\n */\n symbol: string;\n /**\n * The name for the network\n */\n name: string;\n /**\n * An address that the metaswap-api recognizes as the default token\n */\n address: string;\n /**\n * Number of digits after decimal point\n */\n decimals: number;\n /**\n * URL for token icon\n */\n iconUrl: string;\n};\n\nexport const DEFAULT_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000';\n\nconst CURRENCY_SYMBOLS = {\n ARBITRUM: 'ETH',\n AVALANCHE: 'AVAX',\n BNB: 'BNB',\n BUSD: 'BUSD',\n CELO: 'CELO',\n DAI: 'DAI',\n GNOSIS: 'XDAI',\n ETH: 'ETH',\n FANTOM: 'FTM',\n HARMONY: 'ONE',\n PALM: 'PALM',\n MATIC: 'MATIC',\n POL: 'POL',\n TEST_ETH: 'TESTETH',\n USDC: 'USDC',\n USDT: 'USDT',\n WETH: 'WETH',\n OPTIMISM: 'ETH',\n CRONOS: 'CRO',\n GLIMMER: 'GLMR',\n MOONRIVER: 'MOVR',\n ONE: 'ONE',\n SOL: 'SOL',\n SEI: 'SEI',\n BTC: 'BTC',\n TRX: 'TRX',\n MON: 'MON',\n HYPE: 'HYPE',\n MEGAETH: 'ETH',\n ARC: 'USDC',\n} as const;\n\nconst ETH_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n};\n\nconst BNB_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.BNB,\n name: 'Binance Coin',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst MATIC_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.POL,\n name: 'Polygon',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst AVAX_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.AVALANCHE,\n name: 'Avalanche',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst TEST_ETH_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.TEST_ETH,\n name: 'Test Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst GOERLI_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst SEPOLIA_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst ARBITRUM_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst OPTIMISM_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst ZKSYNC_ERA_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst LINEA_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst BASE_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst SOLANA_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.SOL,\n name: 'Solana',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 9,\n iconUrl: '',\n} as const;\n\nconst BTC_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.BTC,\n name: 'Bitcoin',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 8,\n iconUrl: '',\n} as const;\n\nconst SEI_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.SEI,\n name: 'Sei',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst TRX_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.TRX,\n name: 'Tron',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 6,\n iconUrl: '',\n} as const;\n\nconst MONAD_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.MON,\n name: 'Mon',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst HYPEREVM_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.HYPE,\n name: 'Hyperliquid',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst MEGAETH_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\n// Leaving for code consistency but we won't display it in the asset picker\nconst ARC_SWAPS_TOKEN_OBJECT = {\n symbol: 'USDC-native',\n name: 'USDC-native',\n address: '0x0000000000000000000000000000000000000000',\n decimals: 18,\n iconUrl: '',\n} as const;\n\nexport const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {\n [CHAIN_IDS.MAINNET]: ETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.LOCALHOST]: TEST_ETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.BSC]: BNB_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.POLYGON]: MATIC_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.GOERLI]: GOERLI_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.SEPOLIA]: SEPOLIA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.AVALANCHE]: AVAX_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.OPTIMISM]: OPTIMISM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ARBITRUM]: ARBITRUM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ZKSYNC_ERA]: ZKSYNC_ERA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.LINEA_MAINNET]: LINEA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.BASE]: BASE_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.SEI]: SEI_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.MONAD]: MONAD_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.HYPEREVM]: HYPEREVM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.MEGAETH]: MEGAETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ARC]: ARC_SWAPS_TOKEN_OBJECT,\n [SolScope.Mainnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [SolScope.Devnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [BtcScope.Mainnet]: BTC_SWAPS_TOKEN_OBJECT,\n [TrxScope.Mainnet]: TRX_SWAPS_TOKEN_OBJECT,\n} as const;\n\nexport type SupportedSwapsNativeCurrencySymbols =\n (typeof SWAPS_CHAINID_DEFAULT_TOKEN_MAP)[\n | AllowedBridgeChainIds\n | typeof CHAIN_IDS.LOCALHOST]['symbol'];\n\n/**\n * A map of native currency symbols to their SLIP-44 representation\n * From {@link https://github.com/satoshilabs/slips/blob/master/slip-0044.md}\n */\nexport const SYMBOL_TO_SLIP44_MAP: Record<\n SupportedSwapsNativeCurrencySymbols,\n `${string}:${string}`\n> = {\n SOL: 'slip44:501',\n BTC: 'slip44:0',\n ETH: 'slip44:60',\n POL: 'slip44:966',\n BNB: 'slip44:714',\n AVAX: 'slip44:9005',\n TESTETH: 'slip44:60',\n SEI: 'slip44:19000118',\n TRX: 'slip44:195',\n MON: 'slip44:268435779',\n HYPE: 'slip44:2457',\n // It won't be displayed - hidden on UI client side\n 'USDC-native': 'erc20:0x0000000000000000000000000000000000000000',\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tokens.mjs","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"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","sourcesContent":["import { BtcScope, SolScope, TrxScope } from '@metamask/keyring-api';\n\nimport type { AllowedBridgeChainIds } from './bridge';\nimport { CHAIN_IDS } from './chains';\n\nexport type SwapsTokenObject = {\n /**\n * The symbol of token object\n */\n symbol: string;\n /**\n * The name for the network\n */\n name: string;\n /**\n * An address that the metaswap-api recognizes as the default token\n */\n address: string;\n /**\n * Number of digits after decimal point\n */\n decimals: number;\n /**\n * URL for token icon\n */\n iconUrl: string;\n};\n\nexport const DEFAULT_TOKEN_ADDRESS =\n '0x0000000000000000000000000000000000000000';\n\nconst CURRENCY_SYMBOLS = {\n ARBITRUM: 'ETH',\n AVALANCHE: 'AVAX',\n BNB: 'BNB',\n BUSD: 'BUSD',\n CELO: 'CELO',\n DAI: 'DAI',\n GNOSIS: 'XDAI',\n ETH: 'ETH',\n FANTOM: 'FTM',\n HARMONY: 'ONE',\n PALM: 'PALM',\n MATIC: 'MATIC',\n POL: 'POL',\n TEST_ETH: 'TESTETH',\n USDC: 'USDC',\n USDT: 'USDT',\n WETH: 'WETH',\n OPTIMISM: 'ETH',\n CRONOS: 'CRO',\n GLIMMER: 'GLMR',\n MOONRIVER: 'MOVR',\n ONE: 'ONE',\n SOL: 'SOL',\n SEI: 'SEI',\n BTC: 'BTC',\n TRX: 'TRX',\n MON: 'MON',\n HYPE: 'HYPE',\n MEGAETH: 'ETH',\n ARC: 'USDC',\n} as const;\n\nconst ETH_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n};\n\nconst BNB_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.BNB,\n name: 'Binance Coin',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst MATIC_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.POL,\n name: 'Polygon',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst AVAX_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.AVALANCHE,\n name: 'Avalanche',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst TEST_ETH_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.TEST_ETH,\n name: 'Test Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst GOERLI_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst SEPOLIA_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.ETH,\n name: 'Ether',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst ARBITRUM_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst OPTIMISM_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst ZKSYNC_ERA_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst LINEA_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst BASE_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\nconst SOLANA_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.SOL,\n name: 'Solana',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 9,\n iconUrl: '',\n} as const;\n\nconst BTC_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.BTC,\n name: 'Bitcoin',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 8,\n iconUrl: '',\n} as const;\n\nconst SEI_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.SEI,\n name: 'Sei',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst TRX_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.TRX,\n name: 'Tron',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 6,\n iconUrl: '',\n} as const;\n\nconst MONAD_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.MON,\n name: 'Mon',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst HYPEREVM_SWAPS_TOKEN_OBJECT = {\n symbol: CURRENCY_SYMBOLS.HYPE,\n name: 'Hyperliquid',\n address: DEFAULT_TOKEN_ADDRESS,\n decimals: 18,\n iconUrl: '',\n} as const;\n\nconst MEGAETH_SWAPS_TOKEN_OBJECT = {\n ...ETH_SWAPS_TOKEN_OBJECT,\n} as const;\n\n// Leaving for code consistency but we won't display it in the asset picker\nconst ARC_SWAPS_TOKEN_OBJECT = {\n symbol: 'USDC',\n name: 'USDC',\n address: '0x3600000000000000000000000000000000000000',\n decimals: 6,\n iconUrl: '',\n} as const;\n\nexport const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {\n [CHAIN_IDS.MAINNET]: ETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.LOCALHOST]: TEST_ETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.BSC]: BNB_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.POLYGON]: MATIC_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.GOERLI]: GOERLI_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.SEPOLIA]: SEPOLIA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.AVALANCHE]: AVAX_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.OPTIMISM]: OPTIMISM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ARBITRUM]: ARBITRUM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ZKSYNC_ERA]: ZKSYNC_ERA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.LINEA_MAINNET]: LINEA_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.BASE]: BASE_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.SEI]: SEI_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.MONAD]: MONAD_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.HYPEREVM]: HYPEREVM_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.MEGAETH]: MEGAETH_SWAPS_TOKEN_OBJECT,\n [CHAIN_IDS.ARC]: ARC_SWAPS_TOKEN_OBJECT,\n [SolScope.Mainnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [SolScope.Devnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [BtcScope.Mainnet]: BTC_SWAPS_TOKEN_OBJECT,\n [TrxScope.Mainnet]: TRX_SWAPS_TOKEN_OBJECT,\n} as const;\n\nexport type SupportedSwapsNativeCurrencySymbols =\n (typeof SWAPS_CHAINID_DEFAULT_TOKEN_MAP)[\n | AllowedBridgeChainIds\n | typeof CHAIN_IDS.LOCALHOST]['symbol'];\n\n/**\n * A map of native currency symbols to their SLIP-44 representation\n * From {@link https://github.com/satoshilabs/slips/blob/master/slip-0044.md}\n */\nexport const SYMBOL_TO_SLIP44_MAP: Record<\n SupportedSwapsNativeCurrencySymbols,\n `${string}:${string}`\n> = {\n SOL: 'slip44:501',\n BTC: 'slip44:0',\n ETH: 'slip44:60',\n POL: 'slip44:966',\n BNB: 'slip44:714',\n AVAX: 'slip44:9005',\n TESTETH: 'slip44:60',\n SEI: 'slip44:19000118',\n TRX: 'slip44:195',\n MON: 'slip44:268435779',\n HYPE: 'slip44:2457',\n USDC: 'erc20:0x3600000000000000000000000000000000000000',\n};\n"]}
|
package/dist/selectors.cjs
CHANGED
|
@@ -46,15 +46,10 @@ const createFeatureFlagsSelector = reselect_1.createSelector.withTypes();
|
|
|
46
46
|
*/
|
|
47
47
|
exports.selectBridgeFeatureFlags = createFeatureFlagsSelector([(state) => state.remoteFeatureFlags.bridgeConfig], (bridgeConfig) => (0, feature_flags_1.processFeatureFlags)(bridgeConfig));
|
|
48
48
|
const getEvmTokenExchangeRateForAddress = (evmTokenExchangeRates, address) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
: null;
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
49
|
+
return (0, utils_1.isStrictHexString)(address)
|
|
50
|
+
? (evmTokenExchangeRates?.[(0, address_1.getAddress)(address)] ??
|
|
51
|
+
evmTokenExchangeRates?.[address.toLowerCase()])
|
|
52
|
+
: null;
|
|
58
53
|
};
|
|
59
54
|
/**
|
|
60
55
|
* Selects the asset exchange rate for a given chain and address
|
|
@@ -105,7 +100,14 @@ const selectExchangeRateByAssetId = (exchangeRateSources, assetId) => {
|
|
|
105
100
|
}
|
|
106
101
|
return {};
|
|
107
102
|
}
|
|
108
|
-
|
|
103
|
+
let address;
|
|
104
|
+
try {
|
|
105
|
+
address = (0, caip_formatters_1.formatAddressToCaipReference)(assetId);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.log(`selectExchangeRateByAssetId: formatAddressToCaipReference thrown with assetId ${assetId}. Returning empty object.`, error);
|
|
109
|
+
return {};
|
|
110
|
+
}
|
|
109
111
|
// If the chain is an EVM chain, use the conversion rate from the currency rates controller
|
|
110
112
|
if ((0, bridge_2.isNativeAddress)(address)) {
|
|
111
113
|
const { symbol } = (0, bridge_2.getNativeAssetForChainId)(chainId);
|
package/dist/selectors.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.cjs","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":";;;AAAA,qEAAqE;AACrE,oDAAoD;AAWpD,2CAAwE;AACxE,+CAAyC;AACzC,mCAAiC;AACjC,uCAGkB;AAElB,mDAAmE;AAQnE,uCAAmD;AACnD,+CAKwB;AACxB,iEAKiC;AACjC,6DAA4D;AAC5D,6CAauB;AACvB,mDAAgE;AAyChE;;GAEG;AACH,MAAM,8BAA8B,GAClC,mCAAyB,CAAC,SAAS,EAAkB,CAAC;AACxD;;GAEG;AACH,MAAM,oBAAoB,GAAG,yBAAe,CAAC,SAAS,EAAkB,CAAC;AAYzE,MAAM,0BAA0B,GAC9B,yBAAe,CAAC,SAAS,EAAoC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;GAoBG;AACU,QAAA,wBAAwB,GAAG,0BAA0B,CAChE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAClD,CAAC,YAAqB,EAAE,EAAE,CAAC,IAAA,mCAAmB,EAAC,YAAY,CAAC,CAC7D,CAAC;AAEF,MAAM,iCAAiC,GAAG,CACxC,qBAAwD,EACxD,OAAe,EAC0B,EAAE;IAC3C,IAAI,CAAC;QACH,OAAO,IAAA,yBAAiB,EAAC,OAAO,CAAC;YAC/B,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC;gBAC3C,qBAAqB,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACI,MAAM,2BAA2B,GAAG,CACzC,mBAAiD,EACjD,OAAuB,EACT,EAAE;IAChB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,GACtE,mBAAmB,CAAC;IAEtB,2EAA2E;IAC3E,mFAAmF;IACnF,MAAM,oBAAoB,GACxB,kBAAkB,EAAE,CAAC,OAAO,CAAC,WAAW,EAAmB,CAAC;QAC5D,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC;IAChC,IACE,oBAAoB,EAAE,YAAY;QAClC,oBAAoB,EAAE,eAAe,EACrC,CAAC;QACD,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,CAAC;IAEhD,iGAAiG;IACjG,IAAI,IAAA,wBAAe,EAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,oBAAoB,GAAG,eAEhB,CAAC;QACd,MAAM,2BAA2B,GAAG,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,2BAA2B,EAAE,IAAI,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,sEAAsE;YACtE,0GAA0G;YAC1G,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CAChE,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,EAAE,cAAc,KAAK,SAAS;gBACvC,SAAS,EAAE,cAAc,KAAK,IAAI;gBAClC,SAAS,EAAE,iBAAiB,KAAK,SAAS;gBAC1C,SAAS,EAAE,iBAAiB,KAAK,IAAI,CACxC,CAAC;YACF,MAAM,sBAAsB,GAC1B,kBAAkB,EAAE,cAAc,KAAK,SAAS;gBAChD,kBAAkB,EAAE,cAAc,KAAK,IAAI;gBAC3C,kBAAkB,EAAE,iBAAiB,KAAK,SAAS;gBACnD,kBAAkB,EAAE,iBAAiB,KAAK,IAAI;gBAC5C,CAAC,CAAC,IAAI,wBAAS,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,GAAG,CACrD,kBAAkB,CAAC,cAAc,CAClC;gBACH,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,eAAe,GAAG,sBAAsB;gBAC5C,CAAC,CAAC,IAAI,wBAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE;gBAC9D,CAAC,CAAC,SAAS,CAAC;YACd,OAAO;gBACL,YAAY,EAAE,IAAI;gBAClB,eAAe;aAChB,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,8CAA4B,EAAC,OAAO,CAAC,CAAC;IAEtD,2FAA2F;IAC3F,IAAI,IAAA,wBAAe,EAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,iCAAwB,EAAC,OAAO,CAAC,CAAC;QACrD,MAAM,qBAAqB,GAAG,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,qBAAqB,EAAE,CAAC;YAC1B,OAAO;gBACL,YAAY,EAAE,qBAAqB,CAAC,cAAc,EAAE,QAAQ,EAAE;gBAC9D,eAAe,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,QAAQ,EAAE;aACrE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,8HAA8H;IAC9H,IAAI,CAAC,IAAA,wBAAe,EAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,iBAAiB,GACpB,UAAgE,IAAI,EAAE,CAAC;QAC1E,MAAM,qBAAqB,GACzB,iBAAiB,CAAC,IAAA,oCAAkB,EAAC,OAAO,CAAC,CAAC,CAAC;QACjD,MAAM,8BAA8B,GAAG,iCAAiC,CACtE,qBAAqB,EACrB,OAAO,CACR,CAAC;QACF,MAAM,WAAW,GAAG,8BAA8B,EAAE,QAAQ,CAAC;QAC7D,MAAM,kBAAkB,GACtB,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI;YAC/C,CAAC,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC;YAC9B,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,KAAK,GAAG,8BAA8B,EAAE,KAAK,IAAI,CAAC,CAAC;QACzD,IAAI,8BAA8B,IAAI,kBAAkB,EAAE,CAAC;YACzD,OAAO;gBACL,YAAY,EAAE,IAAI,wBAAS,CAAC,KAAK,CAAC;qBAC/B,YAAY,CAAC,kBAAkB,CAAC,cAAc,IAAI,CAAC,CAAC;qBACpD,QAAQ,EAAE;gBACb,eAAe,EAAE,IAAI,wBAAS,CAAC,KAAK,CAAC;qBAClC,YAAY,CAAC,kBAAkB,CAAC,iBAAiB,IAAI,CAAC,CAAC;qBACvD,QAAQ,EAAE;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAzGW,QAAA,2BAA2B,+BAyGtC;AAEF;;;;;;GAMG;AACI,MAAM,gCAAgC,GAAG,CAC9C,KAAmC,EACnC,OAAuB,EACvB,EAAE,CACF,OAAO,CAAC,IAAA,mCAA2B,EAAC,KAAK,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC;IAClE,OAAO,CAAC,IAAA,mCAA2B,EAAC,KAAK,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;AAL3D,QAAA,gCAAgC,oCAK2B;AAExE;;;;;;;;GAQG;AACH,MAAM,sBAAsB,GAAG,oBAAoB,CACjD;IACE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,wBAAwB;IACzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU;CAC/C,EACD,CAAC,wBAAwB,EAAE,UAAU,EAAE,EAAE;IACvC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAA,wBAAe,EAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,uEAAuE;IACvE,MAAM,eAAe,GACnB,wBAAwB,EAAE,CACxB,IAAA,oCAAkB,EAAC,UAAU,CAA0C,CACxE,EAAE,eAAe,CAAC;IACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,yBAAyB,EAAE,eAAe,CAAC,gBAAgB;QAC3D,kBAAkB,EAChB,eAAe,CAAC,sCAA6B,CAAC,EAAE,qBAAqB;QACvE,qBAAqB,EAAE,eAAe,CAAC,IAAI,EAAE,qBAAqB;KACnE,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,2DAA2D;AAC3D,MAAM,8BAA8B,GAAG,oBAAoB,CACzD;IACE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM;IACtB,sBAAsB;IACtB,oBAAoB,CAClB;QACE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QAChB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CACtD,eAAe;YACb,CAAC,CAAC,IAAA,wCAAsB,EAAC,eAAe,EAAE,UAAU,CAAC;YACrD,CAAC,CAAC,SAAS;KAChB,EACD,mCAA2B,CAC5B;IACD,oBAAoB,CAClB;QACE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QAChB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CACxD,gBAAgB;YACd,CAAC,CAAC,IAAA,wCAAsB,EAAC,gBAAgB,EAAE,WAAW,CAAC;YACvD,CAAC,CAAC,SAAS;KAChB,EACD,mCAA2B,CAC5B;IACD,oBAAoB,CAClB;QACE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QAChB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CACrC,UAAU;YACR,CAAC,CAAC,IAAA,iCAAwB,EAAC,UAAU,CAAC,EAAE,OAAO;YAC/C,CAAC,CAAC,SAAS;KAChB,EACD,mCAA2B,CAC5B;CACF,EACD,CACE,MAAM,EACN,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,MAAM,UAAU,GAAG,IAAA,sBAAc,EAAC,KAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,IAAA,oBAAY,EAChC,KAAK,CAAC,KAAK,CAAC,eAAe,EAC3B,KAAK,CAAC,KAAK,CAAC,SAAS,EACrB,qBAAqB,CACtB,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAA,oBAAY,EACnC,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAC9B,KAAK,CAAC,KAAK,CAAC,SAAS,EACrB,qBAAqB,CACtB,CAAC;QAEF,MAAM,cAAc,GAAG,IAAA,0BAAkB,EACvC,KAAK,CAAC,KAAK,EACX,oBAAoB,EACpB,qBAAqB,CACtB,CAAC;QAEF,IAAI,wBAAwB,EAC1B,kBAAkB,EAClB,UAAU,EACV,MAA+B,CAAC;QAElC,IAAI,IAAA,2BAAkB,EAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,UAAU,GAAG,IAAA,sBAAc,EAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YACvD,MAAM,GAAG,IAAA,sCAA8B,EAAC;gBACtC,WAAW,EAAE,KAAK;gBAClB,GAAG,gBAAgB;gBACnB,GAAG,kBAAkB;aACtB,CAAC,CAAC;YACH,oEAAoE;YACpE,wBAAwB,GAAG,IAAA,oCAA4B,EACrD,MAAM,EACN,UAAU,CACX,CAAC;YACF,kBAAkB,GAAG,IAAA,8BAAsB,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,wBAAwB,GAAG,IAAA,iCAAyB,EAClD,KAAK,EACL,kBAAkB,CACnB,CAAC;YACF,MAAM,GAAG;gBACP,SAAS,EAAE,wBAAwB;gBACnC,KAAK,EAAE,wBAAwB;gBAC/B,GAAG,EAAE,wBAAwB;aAC9B,CAAC;YACF,kBAAkB,GAAG,wBAAwB,CAAC;QAChD,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,0BAAkB,EACvC,aAAa,EACb,wBAAwB,EACxB,KAAK,CAAC,KAAK,CACZ,CAAC;QACF,MAAM,IAAI,GAAG,IAAA,gBAAQ,EAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAElD,OAAO;YACL,GAAG,KAAK;YACR,uBAAuB;YACvB,UAAU;YACV,aAAa;YACb,gBAAgB;YAChB,QAAQ,EAAE,IAAA,oBAAY,EAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;YAC/D;;;;eAIG;YACH,eAAe,EAAE,wBAAwB;YACzC,kBAAkB;YAClB;;;;eAIG;YACH,MAAM;YACN,cAAc;YACd,IAAI;YACJ,cAAc;SACf,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC,CACF,CAAC;AAEF,MAAM,wBAAwB,GAAG,oBAAoB,CACnD;IACE,8BAA8B;IAC9B,CAAC,CAAC,EAAE,EAAE,SAAS,EAA4B,EAAE,EAAE,CAAC,SAAS;CAC1D,EACD,CAAC,kBAAkB,EAAE,SAAS,EAAuC,EAAE;IACrE,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,iBAAS,CAAC,OAAO;YACpB,OAAO,IAAA,gBAAO,EACZ,kBAAkB,EAClB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,gCAAgC,EACjD,KAAK,CACN,CAAC;QACJ;YACE,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpE,OAAO,IAAA,gBAAO,EACZ,kBAAkB,EAClB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAC1C,KAAK,CACN,CAAC;YACJ,CAAC;YACD,IACE,kBAAkB,CAAC,KAAK,CACtB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAC9C,EACD,CAAC;gBACD,OAAO,IAAA,gBAAO,EACZ,kBAAkB,EAClB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,EACnD,KAAK,CACN,CAAC;YACJ,CAAC;YACD,OAAO,IAAA,gBAAO,EACZ,kBAAkB,EAClB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAC5C,MAAM,CACP,CAAC;IACN,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,sBAAsB,GAAG,oBAAoB,CACjD,CAAC,wBAAwB,CAAC,EAC1B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CACnD,CAAC;AAEF,MAAM,iBAAiB,GAAG,oBAAoB,CAC5C;IACE,sBAAsB;IACtB,wBAAwB;IACxB,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa;CACxC,EACD,CAAC,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,CAChD,YAAY,CAAC,IAAI,CACf,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,aAAa,EAAE,KAAK,CAAC,SAAS,CACpE,IAAI,gBAAgB,CACxB,CAAC;AAEF,MAAM,2BAA2B,GAAG,oBAAoB,CACtD;IACE,gCAAwB;IACxB,4GAA4G;IAC5G,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,EAAE,CACxC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CACtC;IACH,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB;CACpC,EACD,CAAC,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,EAAE,CACpD,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,GAAG,kBAAkB,CAC9E,CAAC;AAEF,MAAM,sBAAsB,GAAG,oBAAoB,CACjD,CAAC,gCAAwB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EACxE,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE,CAC3B,CAAC,UAAU;IACT,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAA,qCAAmB,EAAC,UAAU,CAAC,CAAC,EAAE,WAAW;IACnE,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,WAAW,CAC5D,CAAC;AAEW,QAAA,oBAAoB,GAAG,oBAAoB,CACtD;IACE,2BAA2B;IAC3B,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC,iBAAiB;IAC5C,sBAAsB;IACtB,CAAC,CAAC,EAAE,aAAa,EAAE,eAAuB,EAAE,EAAE,CAAC,eAAe;CAC/D,EACD,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,CACzE,OAAO,CACL,CAAC,qBAAqB;IACtB,iBAAiB;IACjB,eAAe,GAAG,iBAAiB,GAAG,WAAW,CAClD,CACJ,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,kBAAkB,GAAG,8BAA8B,CAAC;IAC/D,YAAY,EAAE,wBAAwB;IACtC,gBAAgB,EAAE,sBAAsB;IACxC,WAAW,EAAE,iBAAiB;IAC9B,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB;IACvD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,mBAAmB,KAAK,qBAAa,CAAC,OAAO;IACzE,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe;IACjD,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB;IACvD,uBAAuB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,qBAAqB;IAC/D,qBAAqB,EAAE,2BAA2B;CACnD,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,oBAAoB,CAClD;IACE,wBAAwB;IACxB,CAAC,CAAC,EAAE,EAAE,YAAY,EAA4B,EAAE,EAAE,CAAC,YAAY;CAChE,EACD,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CACvB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;IAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;IAClD,GAAG,CAAC,YAAY,MAAhB,GAAG,CAAC,YAAY,IAAM,KAAK,EAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,KAAK,CAA2C,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC/E,CAAC;AAEF,MAAM,iBAAiB,GAAG,oBAAoB,CAC5C;IACE,uBAAuB;IACvB,CACE,CAAC,EACD,EACE,GAAG,GAC+D,EACpE,EAAE,CAAC,GAAG;CACT,EACD,CAAC,iBAAiB,EAAE,GAAG,EAAE,EAAE,CACzB,iBAAiB,CAAC,MAAM,CACtB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;IACb,GAAG,CAAC,GAAG,GAAG,IAAI,wBAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;SAClC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;SAC5B,QAAQ,EAAE,CAAC;IACd,GAAG,CAAC,eAAe,GAAG,IAAI,wBAAS,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC;SAC1D,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,eAAe,IAAI,CAAC,CAAC;SACxC,QAAQ,EAAE,CAAC;IACd,GAAG,CAAC,MAAM,GAAG,IAAI,wBAAS,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;SACxC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;SAC/B,QAAQ,EAAE,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAClD,CACJ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACU,QAAA,qBAAqB,GAAG,8BAA8B,CAAC;IAClE,iBAAiB,EAAE,uBAAuB;IAC1C,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAC7B,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC;IAC7D,eAAe,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAC/B,iBAAiB,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC;IAChE,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB;IACvD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,mBAAmB,KAAK,qBAAa,CAAC,OAAO;IACzE,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe;IACjD,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB;IACvD,uBAAuB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,qBAAqB;IAC/D,qBAAqB,EAAE,2BAA2B;CACnD,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,oBAAoB,CAC9C;IACE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM;IAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,KAAK;IAC5C,CAAC,KAAK,EAAE,EAAE,CACR,IAAA,mCAA2B,EACzB,KAAK,EACL,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAC3C;CACJ,EACD,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;IACpC,OAAO,SAAS,IAAI,QAAQ,IAAI,YAAY;QAC1C,CAAC,CAAC,IAAA,qBAAa,EAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC;QAClD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACU,QAAA,qBAAqB,GAAG,oBAAoB,CACvD;IACE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,4BAA4B,KAAK,qBAAa,CAAC,OAAO;IACvE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe;IAChC,mBAAmB;IACnB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,4BAA4B,KAAK,qBAAa,CAAC,OAAO;CACxE,EACD,CAAC,yBAAyB,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;IACnE,OAAO;QACL,eAAe,EAAE,SAAS;QAC1B;;WAEG;QACH,yBAAyB,EACvB,yBAAyB;YACzB,OAAO,CAAC,eAAe,EAAE,YAAY,EAAE,MAAM,CAAC;QAChD,SAAS;KACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEK,MAAM,yCAAyC,GAAG,CACvD,KAAqB,EACrB,EAAE,CACF,IAAI,wBAAS,CAAC,KAAK,CAAC,wCAAwC,IAAI,CAAC,CAAC;KAC/D,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;KACZ,QAAQ,EAAE,CAAC;AALH,QAAA,yCAAyC,6CAKtC;AAET,MAAM,mBAAmB,GAAG,CAAC,KAAqB,EAAE,EAAE,CAC3D,KAAK,CAAC,aAAa,CAAC;AADT,QAAA,mBAAmB,uBACV;AAET,QAAA,+BAA+B,GAAG,oBAAoB,CACjE;IACE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gCAAwB,EAAC,KAAK,CAAC,CAAC,MAAM;IACjD,CAAC,CAAC,EAAE,cAAkE,EAAE,EAAE,CACxE,cAAc,CAAC,eAAe;IAChC,CAAC,CAAC,EAAE,cAAkE,EAAE,EAAE,CACxE,cAAc,CAAC,gBAAgB;IACjC,CAAC,CAAC,EAAE,cAAkE,EAAE,EAAE,CACxE,cAAc,CAAC,UAAU;QACvB,CAAC,CAAC,IAAA,qCAAmB,EAAC,cAAc,CAAC,UAAU,CAAC;QAChD,CAAC,CAAC,SAAS;IACf,CAAC,CAAC,EAAE,cAAkE,EAAE,EAAE,CACxE,cAAc,CAAC,WAAW;QACxB,CAAC,CAAC,IAAA,qCAAmB,EAAC,cAAc,CAAC,WAAW,CAAC;QACjD,CAAC,CAAC,SAAS;CAChB,EACD,CACE,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,EAAE;IACF,OAAO,IAAA,uCAA4B,EACjC;QACE,eAAe;QACf,gBAAgB;QAChB,UAAU;QACV,WAAW;KACZ,EACD,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,EACrE,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CACxE,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { getAddress } from '@ethersproject/address';\nimport type {\n CurrencyRateState,\n MultichainAssetsRatesControllerState,\n TokenRatesControllerState,\n} from '@metamask/assets-controllers';\nimport type {\n GasFeeEstimates,\n GasFeeEstimatesByChainId,\n} from '@metamask/gas-fee-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { isStrictHexString, parseCaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\nimport { orderBy } from 'lodash';\nimport {\n createSelector as createSelector_,\n createStructuredSelector as createStructuredSelector_,\n} from 'reselect';\n\nimport { BRIDGE_PREFERRED_GAS_ESTIMATE } from './constants/bridge';\nimport type {\n BridgeControllerState,\n ExchangeRate,\n QuoteMetadata,\n QuoteResponseV1,\n TokenAmountValues,\n} from './types';\nimport { RequestStatus, SortOrder } from './types';\nimport {\n getNativeAssetForChainId,\n isEvmQuoteResponse,\n isNativeAddress,\n isNonEvmChainId,\n} from './utils/bridge';\nimport {\n formatAddressToAssetId,\n formatAddressToCaipReference,\n formatChainIdToCaip,\n formatChainIdToHex,\n} from './utils/caip-formatters';\nimport { processFeatureFlags } from './utils/feature-flags';\nimport {\n calcAdjustedReturn,\n calcCost,\n calcEstimatedAndMaxTotalGasFee,\n calcIncludedTxFees,\n calcRelayerFee,\n calcSentAmount,\n calcNonEvmTotalNetworkFee,\n calcSwapRate,\n calcToAmount,\n calcTotalEstimatedNetworkFee,\n calcTotalMaxNetworkFee,\n calcBatchFees,\n} from './utils/quote';\nimport { getDefaultSlippagePercentage } from './utils/slippage';\n\n/**\n * The controller states that provide exchange rates\n */\ntype ExchangeRateControllerState = MultichainAssetsRatesControllerState &\n TokenRatesControllerState &\n CurrencyRateState &\n Pick<BridgeControllerState, 'assetExchangeRates'>;\n/**\n * The state of the bridge controller and all its dependency controllers\n */\ntype RemoteFeatureFlagControllerState = {\n remoteFeatureFlags: {\n bridgeConfig: unknown;\n };\n};\n\n/**\n * Minimal shape required for exchange-rate lookups (used by getExchangeRateByChainIdAndAddress).\n * Uses types from assets-controllers; marketData and conversionRates also accept the bridge format.\n */\nexport type ExchangeRateSourcesForLookup = Pick<\n BridgeControllerState,\n 'assetExchangeRates'\n> &\n Partial<Pick<CurrencyRateState, 'currencyRates'>> &\n Partial<Pick<MultichainAssetsRatesControllerState, 'historicalPrices'>> & {\n marketData?:\n | TokenRatesControllerState['marketData']\n | Record<string, Record<string, { price?: number; currency?: string }>>;\n conversionRates?:\n | MultichainAssetsRatesControllerState['conversionRates']\n | Record<string, { rate: string }>;\n };\n\nexport type BridgeAppState = BridgeControllerState & {\n gasFeeEstimatesByChainId: GasFeeEstimatesByChainId;\n} & ExchangeRateControllerState & {\n participateInMetaMetrics: boolean;\n } & RemoteFeatureFlagControllerState;\n/**\n * Creates a structured selector for the bridge controller\n */\nconst createStructuredBridgeSelector =\n createStructuredSelector_.withTypes<BridgeAppState>();\n/**\n * Creates a typed selector for the bridge controller\n */\nconst createBridgeSelector = createSelector_.withTypes<BridgeAppState>();\n/**\n * Required parameters that clients must provide for the bridge quotes selector\n */\ntype BridgeQuotesClientParams = {\n sortOrder: SortOrder;\n selectedQuote: (QuoteResponseV1 & QuoteMetadata) | null;\n};\n\ntype EvmTokenExchangeRate = { price?: number; currency?: string };\ntype EvmTokenExchangeRates = Record<string, EvmTokenExchangeRate>;\n\nconst createFeatureFlagsSelector =\n createSelector_.withTypes<RemoteFeatureFlagControllerState>();\n\n/**\n * Selects the bridge feature flags\n *\n * @param state - The state of the bridge controller\n * @returns The bridge feature flags\n *\n * @example\n * ```ts\n * const featureFlags = useSelector(state => selectBridgeFeatureFlags(state));\n *\n * Or\n *\n * export const selectBridgeFeatureFlags = createSelector(\n * selectRemoteFeatureFlags,\n * (remoteFeatureFlags) =>\n * selectBridgeFeatureFlagsBase({\n * bridgeConfig: remoteFeatureFlags.bridgeConfig,\n * }),\n * );\n * ```\n */\nexport const selectBridgeFeatureFlags = createFeatureFlagsSelector(\n [(state) => state.remoteFeatureFlags.bridgeConfig],\n (bridgeConfig: unknown) => processFeatureFlags(bridgeConfig),\n);\n\nconst getEvmTokenExchangeRateForAddress = (\n evmTokenExchangeRates: EvmTokenExchangeRates | undefined,\n address: string,\n): EvmTokenExchangeRate | null | undefined => {\n try {\n return isStrictHexString(address)\n ? (evmTokenExchangeRates?.[getAddress(address)] ??\n evmTokenExchangeRates?.[address.toLowerCase()])\n : null;\n } catch {\n return null;\n }\n};\n\n/**\n * Selects the asset exchange rate for a given chain and address\n *\n * @param exchangeRateSources - the controller states containing the exchange rates\n * @param assetId - the assetId to get the exchange rate for\n * @returns The asset exchange rate for the given assetId\n */\nexport const selectExchangeRateByAssetId = (\n exchangeRateSources: ExchangeRateSourcesForLookup,\n assetId?: CaipAssetType,\n): ExchangeRate => {\n if (!assetId) {\n return {};\n }\n\n const { assetExchangeRates, currencyRates, marketData, conversionRates } =\n exchangeRateSources;\n\n // If the asset exchange rate is available in the bridge controller, use it\n // This is defined if the token's rate is not available from the assets controllers\n const bridgeControllerRate =\n assetExchangeRates?.[assetId.toLowerCase() as CaipAssetType] ??\n assetExchangeRates?.[assetId];\n if (\n bridgeControllerRate?.exchangeRate &&\n bridgeControllerRate?.usdExchangeRate\n ) {\n return bridgeControllerRate;\n }\n\n const { chainId } = parseCaipAssetType(assetId);\n\n // If the chain is a non-EVM chain, use the conversion rate from the multichain assets controller\n if (isNonEvmChainId(chainId)) {\n const conversionRatesByKey = conversionRates as\n | Record<string, { rate?: string }>\n | undefined;\n const multichainAssetExchangeRate = conversionRatesByKey?.[assetId];\n const rate = multichainAssetExchangeRate?.rate;\n if (rate) {\n // The multichain rate is denominated in the user's selected currency.\n // To get a USD rate, find the user's-currency-to-USD conversion factor from any EVM native currency rate.\n const nativeCurrencyRate = Object.values(currencyRates ?? {}).find(\n (rateEntry) =>\n rateEntry?.conversionRate !== undefined &&\n rateEntry?.conversionRate !== null &&\n rateEntry?.usdConversionRate !== undefined &&\n rateEntry?.usdConversionRate !== null,\n );\n const usersCurrencyToUsdRate =\n nativeCurrencyRate?.conversionRate !== undefined &&\n nativeCurrencyRate?.conversionRate !== null &&\n nativeCurrencyRate?.usdConversionRate !== undefined &&\n nativeCurrencyRate?.usdConversionRate !== null\n ? new BigNumber(nativeCurrencyRate.usdConversionRate).div(\n nativeCurrencyRate.conversionRate,\n )\n : undefined;\n const usdExchangeRate = usersCurrencyToUsdRate\n ? new BigNumber(rate).times(usersCurrencyToUsdRate).toString()\n : undefined;\n return {\n exchangeRate: rate,\n usdExchangeRate,\n };\n }\n return {};\n }\n\n const address = formatAddressToCaipReference(assetId);\n\n // If the chain is an EVM chain, use the conversion rate from the currency rates controller\n if (isNativeAddress(address)) {\n const { symbol } = getNativeAssetForChainId(chainId);\n const evmNativeExchangeRate = currencyRates?.[symbol];\n if (evmNativeExchangeRate) {\n return {\n exchangeRate: evmNativeExchangeRate.conversionRate?.toString(),\n usdExchangeRate: evmNativeExchangeRate.usdConversionRate?.toString(),\n };\n }\n return {};\n }\n // If the chain is an EVM chain and the asset is not the native asset, use the conversion rate from the token rates controller\n if (!isNonEvmChainId(chainId)) {\n const marketDataByChain =\n (marketData as Record<string, EvmTokenExchangeRates> | undefined) ?? {};\n const evmTokenExchangeRates =\n marketDataByChain[formatChainIdToHex(chainId)];\n const evmTokenExchangeRateForAddress = getEvmTokenExchangeRateForAddress(\n evmTokenExchangeRates,\n address,\n );\n const currencyKey = evmTokenExchangeRateForAddress?.currency;\n const nativeCurrencyRate =\n currencyKey !== undefined && currencyKey !== null\n ? currencyRates?.[currencyKey]\n : undefined;\n const price = evmTokenExchangeRateForAddress?.price ?? 0;\n if (evmTokenExchangeRateForAddress && nativeCurrencyRate) {\n return {\n exchangeRate: new BigNumber(price)\n .multipliedBy(nativeCurrencyRate.conversionRate ?? 0)\n .toString(),\n usdExchangeRate: new BigNumber(price)\n .multipliedBy(nativeCurrencyRate.usdConversionRate ?? 0)\n .toString(),\n };\n }\n }\n\n return {};\n};\n\n/**\n * Checks whether an exchange rate is available for a given assetId\n *\n * @param state The state of the bridge controller and its dependency controllers\n * @param assetId The assetId to check\n * @returns Whether an exchange rate is available for the given chain and address\n */\nexport const selectIsAssetExchangeRateInState = (\n state: ExchangeRateSourcesForLookup,\n assetId?: CaipAssetType,\n) =>\n Boolean(selectExchangeRateByAssetId(state, assetId)?.exchangeRate) &&\n Boolean(selectExchangeRateByAssetId(state, assetId)?.usdExchangeRate);\n\n/**\n * Selects the gas fee estimates from the gas fee controller. All potential networks\n * support EIP1559 gas fees so assume that gasFeeEstimates is of type GasFeeEstimates\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @param state.gasFeeEstimatesByChainId - gasEstimates by Hex ChainId\n * @param state.quotes - Fetched bridge/swap quotes\n * @returns The gas fee estimates in decGWEI\n */\nconst selectBridgeFeesPerGas = createBridgeSelector(\n [\n (state) => state.gasFeeEstimatesByChainId,\n (state) => state.quotes?.[0]?.quote.srcChainId,\n ],\n (gasFeeEstimatesByChainId, srcChainId) => {\n if (!srcChainId) {\n return null;\n }\n if (isNonEvmChainId(srcChainId)) {\n return null;\n }\n // @ts-expect-error - all supported networks use this type of estimates\n const gasFeeEstimates: GasFeeEstimates | undefined =\n gasFeeEstimatesByChainId?.[\n formatChainIdToHex(srcChainId) as keyof typeof gasFeeEstimatesByChainId\n ]?.gasFeeEstimates;\n if (!gasFeeEstimates) {\n return null;\n }\n return {\n estimatedBaseFeeInDecGwei: gasFeeEstimates.estimatedBaseFee,\n feePerGasInDecGwei:\n gasFeeEstimates[BRIDGE_PREFERRED_GAS_ESTIMATE]?.suggestedMaxFeePerGas,\n maxFeePerGasInDecGwei: gasFeeEstimates.high?.suggestedMaxFeePerGas,\n };\n },\n);\n\n// Selects cross-chain swap quotes including their metadata\nconst selectBridgeQuotesWithMetadata = createBridgeSelector(\n [\n ({ quotes }) => quotes,\n selectBridgeFeesPerGas,\n createBridgeSelector(\n [\n (state) => state,\n ({ quoteRequest: [{ srcChainId, srcTokenAddress }] }) =>\n srcTokenAddress\n ? formatAddressToAssetId(srcTokenAddress, srcChainId)\n : undefined,\n ],\n selectExchangeRateByAssetId,\n ),\n createBridgeSelector(\n [\n (state) => state,\n ({ quoteRequest: [{ destChainId, destTokenAddress }] }) =>\n destTokenAddress\n ? formatAddressToAssetId(destTokenAddress, destChainId)\n : undefined,\n ],\n selectExchangeRateByAssetId,\n ),\n createBridgeSelector(\n [\n (state) => state,\n ({ quoteRequest: [{ srcChainId }] }) =>\n srcChainId\n ? getNativeAssetForChainId(srcChainId)?.assetId\n : undefined,\n ],\n selectExchangeRateByAssetId,\n ),\n ],\n (\n quotes,\n bridgeFeesPerGas,\n srcTokenExchangeRate,\n destTokenExchangeRate,\n nativeExchangeRate,\n ) => {\n const newQuotes = quotes.map((quote) => {\n const sentAmount = calcSentAmount(quote.quote, srcTokenExchangeRate);\n const toTokenAmount = calcToAmount(\n quote.quote.destTokenAmount,\n quote.quote.destAsset,\n destTokenExchangeRate,\n );\n const minToTokenAmount = calcToAmount(\n quote.quote.minDestTokenAmount,\n quote.quote.destAsset,\n destTokenExchangeRate,\n );\n\n const includedTxFees = calcIncludedTxFees(\n quote.quote,\n srcTokenExchangeRate,\n destTokenExchangeRate,\n );\n\n let totalEstimatedNetworkFee,\n totalMaxNetworkFee,\n relayerFee,\n gasFee: QuoteMetadata['gasFee'];\n\n if (isEvmQuoteResponse(quote)) {\n relayerFee = calcRelayerFee(quote, nativeExchangeRate);\n gasFee = calcEstimatedAndMaxTotalGasFee({\n bridgeQuote: quote,\n ...bridgeFeesPerGas,\n ...nativeExchangeRate,\n });\n // Uses effectiveGasFee to calculate the total estimated network fee\n totalEstimatedNetworkFee = calcTotalEstimatedNetworkFee(\n gasFee,\n relayerFee,\n );\n totalMaxNetworkFee = calcTotalMaxNetworkFee(gasFee, relayerFee);\n } else {\n // Use the new generic function for all non-EVM chains\n totalEstimatedNetworkFee = calcNonEvmTotalNetworkFee(\n quote,\n nativeExchangeRate,\n );\n gasFee = {\n effective: totalEstimatedNetworkFee,\n total: totalEstimatedNetworkFee,\n max: totalEstimatedNetworkFee,\n };\n totalMaxNetworkFee = totalEstimatedNetworkFee;\n }\n\n const adjustedReturn = calcAdjustedReturn(\n toTokenAmount,\n totalEstimatedNetworkFee,\n quote.quote,\n );\n const cost = calcCost(adjustedReturn, sentAmount);\n\n return {\n ...quote,\n // QuoteMetadata fields\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate: calcSwapRate(sentAmount.amount, toTokenAmount.amount),\n /**\n This is the amount required to submit all the transactions.\n Includes the relayer fee or other native fees.\n Should be used for balance checks and tx submission.\n */\n totalNetworkFee: totalEstimatedNetworkFee,\n totalMaxNetworkFee,\n /**\n This contains gas fee estimates for the bridge transaction\n Does not include the relayer fee (if needed), just the gasLimit and effectiveGas returned by the bridge API.\n Should only be used for display purposes.\n */\n gasFee,\n adjustedReturn,\n cost,\n includedTxFees,\n };\n });\n\n return newQuotes;\n },\n);\n\nconst selectSortedBridgeQuotes = createBridgeSelector(\n [\n selectBridgeQuotesWithMetadata,\n (_, { sortOrder }: BridgeQuotesClientParams) => sortOrder,\n ],\n (quotesWithMetadata, sortOrder): (QuoteResponseV1 & QuoteMetadata)[] => {\n switch (sortOrder) {\n case SortOrder.ETA_ASC:\n return orderBy(\n quotesWithMetadata,\n (quote) => quote.estimatedProcessingTimeInSeconds,\n 'asc',\n );\n default:\n if (quotesWithMetadata.every((quote) => quote.cost.valueInCurrency)) {\n return orderBy(\n quotesWithMetadata,\n ({ cost }) => Number(cost.valueInCurrency),\n 'asc',\n );\n }\n if (\n quotesWithMetadata.every(\n (quote) => quote.quote.priceData?.priceImpact,\n )\n ) {\n return orderBy(\n quotesWithMetadata,\n ({ quote }) => Number(quote.priceData?.priceImpact),\n 'asc',\n );\n }\n return orderBy(\n quotesWithMetadata,\n ({ quote }) => Number(quote.destTokenAmount),\n 'desc',\n );\n }\n },\n);\n\nconst selectRecommendedQuote = createBridgeSelector(\n [selectSortedBridgeQuotes],\n (quotes) => (quotes.length > 0 ? quotes[0] : null),\n);\n\nconst selectActiveQuote = createBridgeSelector(\n [\n selectRecommendedQuote,\n selectSortedBridgeQuotes,\n (_, { selectedQuote }) => selectedQuote,\n ],\n (recommendedQuote, sortedQuotes, selectedQuote) =>\n sortedQuotes.find(\n (quote) => quote.quote.requestId === selectedQuote?.quote.requestId,\n ) ?? recommendedQuote,\n);\n\nconst selectIsQuoteGoingToRefresh = createBridgeSelector(\n [\n selectBridgeFeatureFlags,\n // If at least one quote request is sufficiently funded, continue polling until max refresh count is reached\n (state) =>\n state.quoteRequest.every((quoteRequest) =>\n Boolean(quoteRequest.insufficientBal),\n ),\n (state) => state.quotesRefreshCount,\n ],\n (featureFlags, insufficientBal, quotesRefreshCount) =>\n insufficientBal ? false : featureFlags.maxRefreshCount > quotesRefreshCount,\n);\n\nconst selectQuoteRefreshRate = createBridgeSelector(\n [selectBridgeFeatureFlags, (state) => state.quoteRequest[0]?.srcChainId],\n (featureFlags, srcChainId) =>\n (srcChainId\n ? featureFlags.chains[formatChainIdToCaip(srcChainId)]?.refreshRate\n : featureFlags.refreshRate) ?? featureFlags.refreshRate,\n);\n\nexport const selectIsQuoteExpired = createBridgeSelector(\n [\n selectIsQuoteGoingToRefresh,\n ({ quotesLastFetched }) => quotesLastFetched,\n selectQuoteRefreshRate,\n (_, _ignoredParam, currentTimeInMs: number) => currentTimeInMs,\n ],\n (isQuoteGoingToRefresh, quotesLastFetched, refreshRate, currentTimeInMs) =>\n Boolean(\n !isQuoteGoingToRefresh &&\n quotesLastFetched &&\n currentTimeInMs - quotesLastFetched > refreshRate,\n ),\n);\n\n/**\n * Selects sorted cross-chain swap quotes. By default, the quotes are sorted by cost in ascending order.\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @param sortOrder - The sort order of the quotes\n * @param selectedQuote - The quote that is currently selected by the user, should be cleared by clients when the req params change\n * @returns The activeQuote, recommendedQuote, sortedQuotes, and other quote fetching metadata\n *\n * @example\n * ```ts\n * const quotes = useSelector(state => selectBridgeQuotes(\n * { ...state.metamask, bridgeConfig: remoteFeatureFlags.bridgeConfig },\n * {\n * sortOrder: state.bridge.sortOrder,\n * selectedQuote: state.bridge.selectedQuote,\n * }\n * ));\n * ```\n */\nexport const selectBridgeQuotes = createStructuredBridgeSelector({\n sortedQuotes: selectSortedBridgeQuotes,\n recommendedQuote: selectRecommendedQuote,\n activeQuote: selectActiveQuote,\n quotesLastFetchedMs: (state) => state.quotesLastFetched,\n isLoading: (state) => state.quotesLoadingStatus === RequestStatus.LOADING,\n quoteFetchError: (state) => state.quoteFetchError,\n quotesRefreshCount: (state) => state.quotesRefreshCount,\n quotesInitialLoadTimeMs: (state) => state.quotesInitialLoadTime,\n isQuoteGoingToRefresh: selectIsQuoteGoingToRefresh,\n});\n\nconst selectRecommendedQuotes = createBridgeSelector(\n [\n selectSortedBridgeQuotes,\n (_, { requestCount }: { requestCount: number }) => requestCount,\n ],\n (quotes, requestCount) =>\n quotes.reduce((acc, quote) => {\n const requestIndex = quote.quoteRequestIndex ?? 0;\n acc[requestIndex] ??= quote;\n return acc;\n }, Array<(QuoteResponseV1 & QuoteMetadata) | null>(requestCount).fill(null)),\n);\n\nconst selectMetadataSum = createBridgeSelector(\n [\n selectRecommendedQuotes,\n (\n _,\n {\n key,\n }: { key: 'totalNetworkFee' | 'minToTokenAmount' | 'toTokenAmount' },\n ) => key,\n ],\n (recommendedQuotes, key) =>\n recommendedQuotes.reduce<TokenAmountValues>(\n (acc, quote) => {\n acc.usd = new BigNumber(acc.usd ?? 0)\n .plus(quote?.[key]?.usd ?? 0)\n .toString();\n acc.valueInCurrency = new BigNumber(acc.valueInCurrency ?? 0)\n .plus(quote?.[key]?.valueInCurrency ?? 0)\n .toString();\n acc.amount = new BigNumber(acc.amount ?? 0)\n .plus(quote?.[key]?.amount ?? 0)\n .toString();\n return acc;\n },\n { usd: null, valueInCurrency: null, amount: '0' },\n ),\n);\n\n/**\n * Selects the recommended swap quotes for a batch of quote requests.\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @param sortOrder - The sort order of the quotes\n * @param requestCount - The number of quote requests fetched in the batch\n * @returns The quotes for multiple quote requests, including their recommendedQuotes,\n * totalReceived, minimumReceived, totalNetworkFee, and other quote fetching metadata.\n *\n * @example\n * ```ts\n * const quotes = useSelector(state => selectBatchSellQuotes(\n * { ...state.metamask },\n * {\n * sortOrder: state.bridge.sortOrder,\n * requestCount: 4,\n * }\n * ));\n * ```\n */\nexport const selectBatchSellQuotes = createStructuredBridgeSelector({\n recommendedQuotes: selectRecommendedQuotes,\n totalReceived: (state, opts) =>\n selectMetadataSum(state, { ...opts, key: 'toTokenAmount' }),\n minimumReceived: (state, opts) =>\n selectMetadataSum(state, { ...opts, key: 'minToTokenAmount' }),\n quotesLastFetchedMs: (state) => state.quotesLastFetched,\n isLoading: (state) => state.quotesLoadingStatus === RequestStatus.LOADING,\n quoteFetchError: (state) => state.quoteFetchError,\n quotesRefreshCount: (state) => state.quotesRefreshCount,\n quotesInitialLoadTimeMs: (state) => state.quotesInitialLoadTime,\n isQuoteGoingToRefresh: selectIsQuoteGoingToRefresh,\n});\n\nconst selectBatchSellFees = createBridgeSelector(\n [\n (state) => state.batchSellTrades?.fee?.amount,\n (state) => state.batchSellTrades?.fee?.asset,\n (state) =>\n selectExchangeRateByAssetId(\n state,\n state.batchSellTrades?.fee?.asset?.assetId,\n ),\n ],\n (feeAmount, feeAsset, exchangeRate) => {\n return feeAmount && feeAsset && exchangeRate\n ? calcBatchFees(feeAmount, feeAsset, exchangeRate)\n : undefined;\n },\n);\n\n/**\n * Selects the batch transactions and fees for a batch of quotes\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @returns The total transaction fees and whether the batch sell trades are submittable.\n *\n * @example\n * ```ts\n * const { totalNetworkFee, isBatchSellTradeAvailable } = useSelector(state => selectBatchSellTrades(state.metamask));\n * ```\n */\nexport const selectBatchSellTrades = createBridgeSelector(\n [\n (state) => state.batchSellTradesLoadingStatus === RequestStatus.FETCHED,\n (state) => state.batchSellTrades,\n selectBatchSellFees,\n (state) => state.batchSellTradesLoadingStatus === RequestStatus.LOADING,\n ],\n (isBatchSellTradeAvailable, batchSellTrades, batchFees, isLoading) => {\n return {\n totalNetworkFee: batchFees,\n /**\n * Whether the batch sell trades have been fetched and transactions are ready to be submitted\n */\n isBatchSellTradeAvailable:\n isBatchSellTradeAvailable &&\n Boolean(batchSellTrades?.transactions?.length),\n isLoading,\n };\n },\n);\n\nexport const selectMinimumBalanceForRentExemptionInSOL = (\n state: BridgeAppState,\n) =>\n new BigNumber(state.minimumBalanceForRentExemptionInLamports ?? 0)\n .div(10 ** 9)\n .toString();\n\nexport const selectTokenWarnings = (state: BridgeAppState) =>\n state.tokenWarnings;\n\nexport const selectDefaultSlippagePercentage = createBridgeSelector(\n [\n (state) => selectBridgeFeatureFlags(state).chains,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.srcTokenAddress,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.destTokenAddress,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.srcChainId\n ? formatChainIdToCaip(slippageParams.srcChainId)\n : undefined,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.destChainId\n ? formatChainIdToCaip(slippageParams.destChainId)\n : undefined,\n ],\n (\n featureFlagsByChain,\n srcTokenAddress,\n destTokenAddress,\n srcChainId,\n destChainId,\n ) => {\n return getDefaultSlippagePercentage(\n {\n srcTokenAddress,\n destTokenAddress,\n srcChainId,\n destChainId,\n },\n srcChainId ? featureFlagsByChain[srcChainId]?.stablecoins : undefined,\n destChainId ? featureFlagsByChain[destChainId]?.stablecoins : undefined,\n );\n },\n);\n"]}
|
|
1
|
+
{"version":3,"file":"selectors.cjs","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { getAddress } from '@ethersproject/address';\nimport type {\n CurrencyRateState,\n MultichainAssetsRatesControllerState,\n TokenRatesControllerState,\n} from '@metamask/assets-controllers';\nimport type {\n GasFeeEstimates,\n GasFeeEstimatesByChainId,\n} from '@metamask/gas-fee-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { isStrictHexString, parseCaipAssetType } from '@metamask/utils';\nimport { BigNumber } from 'bignumber.js';\nimport { orderBy } from 'lodash';\nimport {\n createSelector as createSelector_,\n createStructuredSelector as createStructuredSelector_,\n} from 'reselect';\n\nimport { BRIDGE_PREFERRED_GAS_ESTIMATE } from './constants/bridge';\nimport type {\n BridgeControllerState,\n ExchangeRate,\n QuoteMetadata,\n QuoteResponseV1,\n TokenAmountValues,\n} from './types';\nimport { RequestStatus, SortOrder } from './types';\nimport {\n getNativeAssetForChainId,\n isEvmQuoteResponse,\n isNativeAddress,\n isNonEvmChainId,\n} from './utils/bridge';\nimport {\n formatAddressToAssetId,\n formatAddressToCaipReference,\n formatChainIdToCaip,\n formatChainIdToHex,\n} from './utils/caip-formatters';\nimport { processFeatureFlags } from './utils/feature-flags';\nimport {\n calcAdjustedReturn,\n calcCost,\n calcEstimatedAndMaxTotalGasFee,\n calcIncludedTxFees,\n calcRelayerFee,\n calcSentAmount,\n calcNonEvmTotalNetworkFee,\n calcSwapRate,\n calcToAmount,\n calcTotalEstimatedNetworkFee,\n calcTotalMaxNetworkFee,\n calcBatchFees,\n} from './utils/quote';\nimport { getDefaultSlippagePercentage } from './utils/slippage';\n\n/**\n * The controller states that provide exchange rates\n */\ntype ExchangeRateControllerState = MultichainAssetsRatesControllerState &\n TokenRatesControllerState &\n CurrencyRateState &\n Pick<BridgeControllerState, 'assetExchangeRates'>;\n/**\n * The state of the bridge controller and all its dependency controllers\n */\ntype RemoteFeatureFlagControllerState = {\n remoteFeatureFlags: {\n bridgeConfig: unknown;\n };\n};\n\n/**\n * Minimal shape required for exchange-rate lookups (used by getExchangeRateByChainIdAndAddress).\n * Uses types from assets-controllers; marketData and conversionRates also accept the bridge format.\n */\nexport type ExchangeRateSourcesForLookup = Pick<\n BridgeControllerState,\n 'assetExchangeRates'\n> &\n Partial<Pick<CurrencyRateState, 'currencyRates'>> &\n Partial<Pick<MultichainAssetsRatesControllerState, 'historicalPrices'>> & {\n marketData?:\n | TokenRatesControllerState['marketData']\n | Record<string, Record<string, { price?: number; currency?: string }>>;\n conversionRates?:\n | MultichainAssetsRatesControllerState['conversionRates']\n | Record<string, { rate: string }>;\n };\n\nexport type BridgeAppState = BridgeControllerState & {\n gasFeeEstimatesByChainId: GasFeeEstimatesByChainId;\n} & ExchangeRateControllerState & {\n participateInMetaMetrics: boolean;\n } & RemoteFeatureFlagControllerState;\n/**\n * Creates a structured selector for the bridge controller\n */\nconst createStructuredBridgeSelector =\n createStructuredSelector_.withTypes<BridgeAppState>();\n/**\n * Creates a typed selector for the bridge controller\n */\nconst createBridgeSelector = createSelector_.withTypes<BridgeAppState>();\n/**\n * Required parameters that clients must provide for the bridge quotes selector\n */\ntype BridgeQuotesClientParams = {\n sortOrder: SortOrder;\n selectedQuote: (QuoteResponseV1 & QuoteMetadata) | null;\n};\n\ntype EvmTokenExchangeRate = { price?: number; currency?: string };\ntype EvmTokenExchangeRates = Record<string, EvmTokenExchangeRate>;\n\nconst createFeatureFlagsSelector =\n createSelector_.withTypes<RemoteFeatureFlagControllerState>();\n\n/**\n * Selects the bridge feature flags\n *\n * @param state - The state of the bridge controller\n * @returns The bridge feature flags\n *\n * @example\n * ```ts\n * const featureFlags = useSelector(state => selectBridgeFeatureFlags(state));\n *\n * Or\n *\n * export const selectBridgeFeatureFlags = createSelector(\n * selectRemoteFeatureFlags,\n * (remoteFeatureFlags) =>\n * selectBridgeFeatureFlagsBase({\n * bridgeConfig: remoteFeatureFlags.bridgeConfig,\n * }),\n * );\n * ```\n */\nexport const selectBridgeFeatureFlags = createFeatureFlagsSelector(\n [(state) => state.remoteFeatureFlags.bridgeConfig],\n (bridgeConfig: unknown) => processFeatureFlags(bridgeConfig),\n);\n\nconst getEvmTokenExchangeRateForAddress = (\n evmTokenExchangeRates: EvmTokenExchangeRates | undefined,\n address: string,\n): EvmTokenExchangeRate | null | undefined => {\n return isStrictHexString(address)\n ? (evmTokenExchangeRates?.[getAddress(address)] ??\n evmTokenExchangeRates?.[address.toLowerCase()])\n : null;\n};\n\n/**\n * Selects the asset exchange rate for a given chain and address\n *\n * @param exchangeRateSources - the controller states containing the exchange rates\n * @param assetId - the assetId to get the exchange rate for\n * @returns The asset exchange rate for the given assetId\n */\nexport const selectExchangeRateByAssetId = (\n exchangeRateSources: ExchangeRateSourcesForLookup,\n assetId?: CaipAssetType,\n): ExchangeRate => {\n if (!assetId) {\n return {};\n }\n\n const { assetExchangeRates, currencyRates, marketData, conversionRates } =\n exchangeRateSources;\n\n // If the asset exchange rate is available in the bridge controller, use it\n // This is defined if the token's rate is not available from the assets controllers\n const bridgeControllerRate =\n assetExchangeRates?.[assetId.toLowerCase() as CaipAssetType] ??\n assetExchangeRates?.[assetId];\n if (\n bridgeControllerRate?.exchangeRate &&\n bridgeControllerRate?.usdExchangeRate\n ) {\n return bridgeControllerRate;\n }\n\n const { chainId } = parseCaipAssetType(assetId);\n\n // If the chain is a non-EVM chain, use the conversion rate from the multichain assets controller\n if (isNonEvmChainId(chainId)) {\n const conversionRatesByKey = conversionRates as\n | Record<string, { rate?: string }>\n | undefined;\n const multichainAssetExchangeRate = conversionRatesByKey?.[assetId];\n const rate = multichainAssetExchangeRate?.rate;\n if (rate) {\n // The multichain rate is denominated in the user's selected currency.\n // To get a USD rate, find the user's-currency-to-USD conversion factor from any EVM native currency rate.\n const nativeCurrencyRate = Object.values(currencyRates ?? {}).find(\n (rateEntry) =>\n rateEntry?.conversionRate !== undefined &&\n rateEntry?.conversionRate !== null &&\n rateEntry?.usdConversionRate !== undefined &&\n rateEntry?.usdConversionRate !== null,\n );\n const usersCurrencyToUsdRate =\n nativeCurrencyRate?.conversionRate !== undefined &&\n nativeCurrencyRate?.conversionRate !== null &&\n nativeCurrencyRate?.usdConversionRate !== undefined &&\n nativeCurrencyRate?.usdConversionRate !== null\n ? new BigNumber(nativeCurrencyRate.usdConversionRate).div(\n nativeCurrencyRate.conversionRate,\n )\n : undefined;\n const usdExchangeRate = usersCurrencyToUsdRate\n ? new BigNumber(rate).times(usersCurrencyToUsdRate).toString()\n : undefined;\n return {\n exchangeRate: rate,\n usdExchangeRate,\n };\n }\n return {};\n }\n\n let address;\n try {\n address = formatAddressToCaipReference(assetId);\n } catch (error) {\n console.log(\n `selectExchangeRateByAssetId: formatAddressToCaipReference thrown with assetId ${assetId}. Returning empty object.`,\n error,\n );\n return {};\n }\n\n // If the chain is an EVM chain, use the conversion rate from the currency rates controller\n if (isNativeAddress(address)) {\n const { symbol } = getNativeAssetForChainId(chainId);\n const evmNativeExchangeRate = currencyRates?.[symbol];\n if (evmNativeExchangeRate) {\n return {\n exchangeRate: evmNativeExchangeRate.conversionRate?.toString(),\n usdExchangeRate: evmNativeExchangeRate.usdConversionRate?.toString(),\n };\n }\n return {};\n }\n // If the chain is an EVM chain and the asset is not the native asset, use the conversion rate from the token rates controller\n if (!isNonEvmChainId(chainId)) {\n const marketDataByChain =\n (marketData as Record<string, EvmTokenExchangeRates> | undefined) ?? {};\n const evmTokenExchangeRates =\n marketDataByChain[formatChainIdToHex(chainId)];\n const evmTokenExchangeRateForAddress = getEvmTokenExchangeRateForAddress(\n evmTokenExchangeRates,\n address,\n );\n const currencyKey = evmTokenExchangeRateForAddress?.currency;\n const nativeCurrencyRate =\n currencyKey !== undefined && currencyKey !== null\n ? currencyRates?.[currencyKey]\n : undefined;\n const price = evmTokenExchangeRateForAddress?.price ?? 0;\n if (evmTokenExchangeRateForAddress && nativeCurrencyRate) {\n return {\n exchangeRate: new BigNumber(price)\n .multipliedBy(nativeCurrencyRate.conversionRate ?? 0)\n .toString(),\n usdExchangeRate: new BigNumber(price)\n .multipliedBy(nativeCurrencyRate.usdConversionRate ?? 0)\n .toString(),\n };\n }\n }\n\n return {};\n};\n\n/**\n * Checks whether an exchange rate is available for a given assetId\n *\n * @param state The state of the bridge controller and its dependency controllers\n * @param assetId The assetId to check\n * @returns Whether an exchange rate is available for the given chain and address\n */\nexport const selectIsAssetExchangeRateInState = (\n state: ExchangeRateSourcesForLookup,\n assetId?: CaipAssetType,\n) =>\n Boolean(selectExchangeRateByAssetId(state, assetId)?.exchangeRate) &&\n Boolean(selectExchangeRateByAssetId(state, assetId)?.usdExchangeRate);\n\n/**\n * Selects the gas fee estimates from the gas fee controller. All potential networks\n * support EIP1559 gas fees so assume that gasFeeEstimates is of type GasFeeEstimates\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @param state.gasFeeEstimatesByChainId - gasEstimates by Hex ChainId\n * @param state.quotes - Fetched bridge/swap quotes\n * @returns The gas fee estimates in decGWEI\n */\nconst selectBridgeFeesPerGas = createBridgeSelector(\n [\n (state) => state.gasFeeEstimatesByChainId,\n (state) => state.quotes?.[0]?.quote.srcChainId,\n ],\n (gasFeeEstimatesByChainId, srcChainId) => {\n if (!srcChainId) {\n return null;\n }\n if (isNonEvmChainId(srcChainId)) {\n return null;\n }\n // @ts-expect-error - all supported networks use this type of estimates\n const gasFeeEstimates: GasFeeEstimates | undefined =\n gasFeeEstimatesByChainId?.[\n formatChainIdToHex(srcChainId) as keyof typeof gasFeeEstimatesByChainId\n ]?.gasFeeEstimates;\n if (!gasFeeEstimates) {\n return null;\n }\n return {\n estimatedBaseFeeInDecGwei: gasFeeEstimates.estimatedBaseFee,\n feePerGasInDecGwei:\n gasFeeEstimates[BRIDGE_PREFERRED_GAS_ESTIMATE]?.suggestedMaxFeePerGas,\n maxFeePerGasInDecGwei: gasFeeEstimates.high?.suggestedMaxFeePerGas,\n };\n },\n);\n\n// Selects cross-chain swap quotes including their metadata\nconst selectBridgeQuotesWithMetadata = createBridgeSelector(\n [\n ({ quotes }) => quotes,\n selectBridgeFeesPerGas,\n createBridgeSelector(\n [\n (state) => state,\n ({ quoteRequest: [{ srcChainId, srcTokenAddress }] }) =>\n srcTokenAddress\n ? formatAddressToAssetId(srcTokenAddress, srcChainId)\n : undefined,\n ],\n selectExchangeRateByAssetId,\n ),\n createBridgeSelector(\n [\n (state) => state,\n ({ quoteRequest: [{ destChainId, destTokenAddress }] }) =>\n destTokenAddress\n ? formatAddressToAssetId(destTokenAddress, destChainId)\n : undefined,\n ],\n selectExchangeRateByAssetId,\n ),\n createBridgeSelector(\n [\n (state) => state,\n ({ quoteRequest: [{ srcChainId }] }) =>\n srcChainId\n ? getNativeAssetForChainId(srcChainId)?.assetId\n : undefined,\n ],\n selectExchangeRateByAssetId,\n ),\n ],\n (\n quotes,\n bridgeFeesPerGas,\n srcTokenExchangeRate,\n destTokenExchangeRate,\n nativeExchangeRate,\n ) => {\n const newQuotes = quotes.map((quote) => {\n const sentAmount = calcSentAmount(quote.quote, srcTokenExchangeRate);\n const toTokenAmount = calcToAmount(\n quote.quote.destTokenAmount,\n quote.quote.destAsset,\n destTokenExchangeRate,\n );\n const minToTokenAmount = calcToAmount(\n quote.quote.minDestTokenAmount,\n quote.quote.destAsset,\n destTokenExchangeRate,\n );\n\n const includedTxFees = calcIncludedTxFees(\n quote.quote,\n srcTokenExchangeRate,\n destTokenExchangeRate,\n );\n\n let totalEstimatedNetworkFee,\n totalMaxNetworkFee,\n relayerFee,\n gasFee: QuoteMetadata['gasFee'];\n\n if (isEvmQuoteResponse(quote)) {\n relayerFee = calcRelayerFee(quote, nativeExchangeRate);\n gasFee = calcEstimatedAndMaxTotalGasFee({\n bridgeQuote: quote,\n ...bridgeFeesPerGas,\n ...nativeExchangeRate,\n });\n // Uses effectiveGasFee to calculate the total estimated network fee\n totalEstimatedNetworkFee = calcTotalEstimatedNetworkFee(\n gasFee,\n relayerFee,\n );\n totalMaxNetworkFee = calcTotalMaxNetworkFee(gasFee, relayerFee);\n } else {\n // Use the new generic function for all non-EVM chains\n totalEstimatedNetworkFee = calcNonEvmTotalNetworkFee(\n quote,\n nativeExchangeRate,\n );\n gasFee = {\n effective: totalEstimatedNetworkFee,\n total: totalEstimatedNetworkFee,\n max: totalEstimatedNetworkFee,\n };\n totalMaxNetworkFee = totalEstimatedNetworkFee;\n }\n\n const adjustedReturn = calcAdjustedReturn(\n toTokenAmount,\n totalEstimatedNetworkFee,\n quote.quote,\n );\n const cost = calcCost(adjustedReturn, sentAmount);\n\n return {\n ...quote,\n // QuoteMetadata fields\n sentAmount,\n toTokenAmount,\n minToTokenAmount,\n swapRate: calcSwapRate(sentAmount.amount, toTokenAmount.amount),\n /**\n This is the amount required to submit all the transactions.\n Includes the relayer fee or other native fees.\n Should be used for balance checks and tx submission.\n */\n totalNetworkFee: totalEstimatedNetworkFee,\n totalMaxNetworkFee,\n /**\n This contains gas fee estimates for the bridge transaction\n Does not include the relayer fee (if needed), just the gasLimit and effectiveGas returned by the bridge API.\n Should only be used for display purposes.\n */\n gasFee,\n adjustedReturn,\n cost,\n includedTxFees,\n };\n });\n\n return newQuotes;\n },\n);\n\nconst selectSortedBridgeQuotes = createBridgeSelector(\n [\n selectBridgeQuotesWithMetadata,\n (_, { sortOrder }: BridgeQuotesClientParams) => sortOrder,\n ],\n (quotesWithMetadata, sortOrder): (QuoteResponseV1 & QuoteMetadata)[] => {\n switch (sortOrder) {\n case SortOrder.ETA_ASC:\n return orderBy(\n quotesWithMetadata,\n (quote) => quote.estimatedProcessingTimeInSeconds,\n 'asc',\n );\n default:\n if (quotesWithMetadata.every((quote) => quote.cost.valueInCurrency)) {\n return orderBy(\n quotesWithMetadata,\n ({ cost }) => Number(cost.valueInCurrency),\n 'asc',\n );\n }\n if (\n quotesWithMetadata.every(\n (quote) => quote.quote.priceData?.priceImpact,\n )\n ) {\n return orderBy(\n quotesWithMetadata,\n ({ quote }) => Number(quote.priceData?.priceImpact),\n 'asc',\n );\n }\n return orderBy(\n quotesWithMetadata,\n ({ quote }) => Number(quote.destTokenAmount),\n 'desc',\n );\n }\n },\n);\n\nconst selectRecommendedQuote = createBridgeSelector(\n [selectSortedBridgeQuotes],\n (quotes) => (quotes.length > 0 ? quotes[0] : null),\n);\n\nconst selectActiveQuote = createBridgeSelector(\n [\n selectRecommendedQuote,\n selectSortedBridgeQuotes,\n (_, { selectedQuote }) => selectedQuote,\n ],\n (recommendedQuote, sortedQuotes, selectedQuote) =>\n sortedQuotes.find(\n (quote) => quote.quote.requestId === selectedQuote?.quote.requestId,\n ) ?? recommendedQuote,\n);\n\nconst selectIsQuoteGoingToRefresh = createBridgeSelector(\n [\n selectBridgeFeatureFlags,\n // If at least one quote request is sufficiently funded, continue polling until max refresh count is reached\n (state) =>\n state.quoteRequest.every((quoteRequest) =>\n Boolean(quoteRequest.insufficientBal),\n ),\n (state) => state.quotesRefreshCount,\n ],\n (featureFlags, insufficientBal, quotesRefreshCount) =>\n insufficientBal ? false : featureFlags.maxRefreshCount > quotesRefreshCount,\n);\n\nconst selectQuoteRefreshRate = createBridgeSelector(\n [selectBridgeFeatureFlags, (state) => state.quoteRequest[0]?.srcChainId],\n (featureFlags, srcChainId) =>\n (srcChainId\n ? featureFlags.chains[formatChainIdToCaip(srcChainId)]?.refreshRate\n : featureFlags.refreshRate) ?? featureFlags.refreshRate,\n);\n\nexport const selectIsQuoteExpired = createBridgeSelector(\n [\n selectIsQuoteGoingToRefresh,\n ({ quotesLastFetched }) => quotesLastFetched,\n selectQuoteRefreshRate,\n (_, _ignoredParam, currentTimeInMs: number) => currentTimeInMs,\n ],\n (isQuoteGoingToRefresh, quotesLastFetched, refreshRate, currentTimeInMs) =>\n Boolean(\n !isQuoteGoingToRefresh &&\n quotesLastFetched &&\n currentTimeInMs - quotesLastFetched > refreshRate,\n ),\n);\n\n/**\n * Selects sorted cross-chain swap quotes. By default, the quotes are sorted by cost in ascending order.\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @param sortOrder - The sort order of the quotes\n * @param selectedQuote - The quote that is currently selected by the user, should be cleared by clients when the req params change\n * @returns The activeQuote, recommendedQuote, sortedQuotes, and other quote fetching metadata\n *\n * @example\n * ```ts\n * const quotes = useSelector(state => selectBridgeQuotes(\n * { ...state.metamask, bridgeConfig: remoteFeatureFlags.bridgeConfig },\n * {\n * sortOrder: state.bridge.sortOrder,\n * selectedQuote: state.bridge.selectedQuote,\n * }\n * ));\n * ```\n */\nexport const selectBridgeQuotes = createStructuredBridgeSelector({\n sortedQuotes: selectSortedBridgeQuotes,\n recommendedQuote: selectRecommendedQuote,\n activeQuote: selectActiveQuote,\n quotesLastFetchedMs: (state) => state.quotesLastFetched,\n isLoading: (state) => state.quotesLoadingStatus === RequestStatus.LOADING,\n quoteFetchError: (state) => state.quoteFetchError,\n quotesRefreshCount: (state) => state.quotesRefreshCount,\n quotesInitialLoadTimeMs: (state) => state.quotesInitialLoadTime,\n isQuoteGoingToRefresh: selectIsQuoteGoingToRefresh,\n});\n\nconst selectRecommendedQuotes = createBridgeSelector(\n [\n selectSortedBridgeQuotes,\n (_, { requestCount }: { requestCount: number }) => requestCount,\n ],\n (quotes, requestCount) =>\n quotes.reduce((acc, quote) => {\n const requestIndex = quote.quoteRequestIndex ?? 0;\n acc[requestIndex] ??= quote;\n return acc;\n }, Array<(QuoteResponseV1 & QuoteMetadata) | null>(requestCount).fill(null)),\n);\n\nconst selectMetadataSum = createBridgeSelector(\n [\n selectRecommendedQuotes,\n (\n _,\n {\n key,\n }: { key: 'totalNetworkFee' | 'minToTokenAmount' | 'toTokenAmount' },\n ) => key,\n ],\n (recommendedQuotes, key) =>\n recommendedQuotes.reduce<TokenAmountValues>(\n (acc, quote) => {\n acc.usd = new BigNumber(acc.usd ?? 0)\n .plus(quote?.[key]?.usd ?? 0)\n .toString();\n acc.valueInCurrency = new BigNumber(acc.valueInCurrency ?? 0)\n .plus(quote?.[key]?.valueInCurrency ?? 0)\n .toString();\n acc.amount = new BigNumber(acc.amount ?? 0)\n .plus(quote?.[key]?.amount ?? 0)\n .toString();\n return acc;\n },\n { usd: null, valueInCurrency: null, amount: '0' },\n ),\n);\n\n/**\n * Selects the recommended swap quotes for a batch of quote requests.\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @param sortOrder - The sort order of the quotes\n * @param requestCount - The number of quote requests fetched in the batch\n * @returns The quotes for multiple quote requests, including their recommendedQuotes,\n * totalReceived, minimumReceived, totalNetworkFee, and other quote fetching metadata.\n *\n * @example\n * ```ts\n * const quotes = useSelector(state => selectBatchSellQuotes(\n * { ...state.metamask },\n * {\n * sortOrder: state.bridge.sortOrder,\n * requestCount: 4,\n * }\n * ));\n * ```\n */\nexport const selectBatchSellQuotes = createStructuredBridgeSelector({\n recommendedQuotes: selectRecommendedQuotes,\n totalReceived: (state, opts) =>\n selectMetadataSum(state, { ...opts, key: 'toTokenAmount' }),\n minimumReceived: (state, opts) =>\n selectMetadataSum(state, { ...opts, key: 'minToTokenAmount' }),\n quotesLastFetchedMs: (state) => state.quotesLastFetched,\n isLoading: (state) => state.quotesLoadingStatus === RequestStatus.LOADING,\n quoteFetchError: (state) => state.quoteFetchError,\n quotesRefreshCount: (state) => state.quotesRefreshCount,\n quotesInitialLoadTimeMs: (state) => state.quotesInitialLoadTime,\n isQuoteGoingToRefresh: selectIsQuoteGoingToRefresh,\n});\n\nconst selectBatchSellFees = createBridgeSelector(\n [\n (state) => state.batchSellTrades?.fee?.amount,\n (state) => state.batchSellTrades?.fee?.asset,\n (state) =>\n selectExchangeRateByAssetId(\n state,\n state.batchSellTrades?.fee?.asset?.assetId,\n ),\n ],\n (feeAmount, feeAsset, exchangeRate) => {\n return feeAmount && feeAsset && exchangeRate\n ? calcBatchFees(feeAmount, feeAsset, exchangeRate)\n : undefined;\n },\n);\n\n/**\n * Selects the batch transactions and fees for a batch of quotes\n *\n * @param state - The state of the bridge controller and its dependency controllers\n * @returns The total transaction fees and whether the batch sell trades are submittable.\n *\n * @example\n * ```ts\n * const { totalNetworkFee, isBatchSellTradeAvailable } = useSelector(state => selectBatchSellTrades(state.metamask));\n * ```\n */\nexport const selectBatchSellTrades = createBridgeSelector(\n [\n (state) => state.batchSellTradesLoadingStatus === RequestStatus.FETCHED,\n (state) => state.batchSellTrades,\n selectBatchSellFees,\n (state) => state.batchSellTradesLoadingStatus === RequestStatus.LOADING,\n ],\n (isBatchSellTradeAvailable, batchSellTrades, batchFees, isLoading) => {\n return {\n totalNetworkFee: batchFees,\n /**\n * Whether the batch sell trades have been fetched and transactions are ready to be submitted\n */\n isBatchSellTradeAvailable:\n isBatchSellTradeAvailable &&\n Boolean(batchSellTrades?.transactions?.length),\n isLoading,\n };\n },\n);\n\nexport const selectMinimumBalanceForRentExemptionInSOL = (\n state: BridgeAppState,\n) =>\n new BigNumber(state.minimumBalanceForRentExemptionInLamports ?? 0)\n .div(10 ** 9)\n .toString();\n\nexport const selectTokenWarnings = (state: BridgeAppState) =>\n state.tokenWarnings;\n\nexport const selectDefaultSlippagePercentage = createBridgeSelector(\n [\n (state) => selectBridgeFeatureFlags(state).chains,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.srcTokenAddress,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.destTokenAddress,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.srcChainId\n ? formatChainIdToCaip(slippageParams.srcChainId)\n : undefined,\n (_, slippageParams: Parameters<typeof getDefaultSlippagePercentage>[0]) =>\n slippageParams.destChainId\n ? formatChainIdToCaip(slippageParams.destChainId)\n : undefined,\n ],\n (\n featureFlagsByChain,\n srcTokenAddress,\n destTokenAddress,\n srcChainId,\n destChainId,\n ) => {\n return getDefaultSlippagePercentage(\n {\n srcTokenAddress,\n destTokenAddress,\n srcChainId,\n destChainId,\n },\n srcChainId ? featureFlagsByChain[srcChainId]?.stablecoins : undefined,\n destChainId ? featureFlagsByChain[destChainId]?.stablecoins : undefined,\n );\n },\n);\n"]}
|