@metamask/bridge-controller 52.0.0 → 53.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -1
- package/dist/bridge-controller.cjs +5 -4
- package/dist/bridge-controller.cjs.map +1 -1
- package/dist/bridge-controller.d.cts +1 -1
- package/dist/bridge-controller.d.cts.map +1 -1
- package/dist/bridge-controller.d.mts +1 -1
- package/dist/bridge-controller.d.mts.map +1 -1
- package/dist/bridge-controller.mjs +6 -5
- package/dist/bridge-controller.mjs.map +1 -1
- package/dist/constants/bridge.cjs +1 -0
- package/dist/constants/bridge.cjs.map +1 -1
- package/dist/constants/bridge.d.cts +1 -1
- package/dist/constants/bridge.d.cts.map +1 -1
- package/dist/constants/bridge.d.mts +1 -1
- package/dist/constants/bridge.d.mts.map +1 -1
- package/dist/constants/bridge.mjs +1 -0
- package/dist/constants/bridge.mjs.map +1 -1
- package/dist/constants/chains.cjs +4 -1
- package/dist/constants/chains.cjs.map +1 -1
- package/dist/constants/chains.d.cts +3 -0
- package/dist/constants/chains.d.cts.map +1 -1
- package/dist/constants/chains.d.mts +3 -0
- package/dist/constants/chains.d.mts.map +1 -1
- package/dist/constants/chains.mjs +3 -0
- package/dist/constants/chains.mjs.map +1 -1
- package/dist/constants/tokens.cjs +10 -0
- package/dist/constants/tokens.cjs.map +1 -1
- package/dist/constants/tokens.d.cts +7 -0
- package/dist/constants/tokens.d.cts.map +1 -1
- package/dist/constants/tokens.d.mts +7 -0
- package/dist/constants/tokens.d.mts.map +1 -1
- package/dist/constants/tokens.mjs +10 -0
- package/dist/constants/tokens.mjs.map +1 -1
- package/dist/selectors.cjs +1 -1
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts +346 -244
- package/dist/selectors.d.cts.map +1 -1
- package/dist/selectors.d.mts +346 -244
- package/dist/selectors.d.mts.map +1 -1
- package/dist/selectors.mjs +2 -2
- package/dist/selectors.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +3 -2
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +3 -2
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/bridge.cjs +5 -1
- package/dist/utils/bridge.cjs.map +1 -1
- package/dist/utils/bridge.d.cts +10 -1
- package/dist/utils/bridge.d.cts.map +1 -1
- package/dist/utils/bridge.d.mts +10 -1
- package/dist/utils/bridge.d.mts.map +1 -1
- package/dist/utils/bridge.mjs +3 -0
- package/dist/utils/bridge.mjs.map +1 -1
- package/dist/utils/feature-flags.cjs +24 -1
- package/dist/utils/feature-flags.cjs.map +1 -1
- package/dist/utils/feature-flags.d.cts +12 -1
- package/dist/utils/feature-flags.d.cts.map +1 -1
- package/dist/utils/feature-flags.d.mts +12 -1
- package/dist/utils/feature-flags.d.mts.map +1 -1
- package/dist/utils/feature-flags.mjs +22 -0
- package/dist/utils/feature-flags.mjs.map +1 -1
- package/dist/utils/fetch-server-events.cjs +61 -0
- package/dist/utils/fetch-server-events.cjs.map +1 -0
- package/dist/utils/fetch-server-events.d.cts +17 -0
- package/dist/utils/fetch-server-events.d.cts.map +1 -0
- package/dist/utils/fetch-server-events.d.mts +17 -0
- package/dist/utils/fetch-server-events.d.mts.map +1 -0
- package/dist/utils/fetch-server-events.mjs +57 -0
- package/dist/utils/fetch-server-events.mjs.map +1 -0
- package/dist/utils/fetch.cjs +14 -24
- package/dist/utils/fetch.cjs.map +1 -1
- package/dist/utils/fetch.d.cts.map +1 -1
- package/dist/utils/fetch.d.mts.map +1 -1
- package/dist/utils/fetch.mjs +15 -25
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/quote-fees.cjs.map +1 -1
- package/dist/utils/quote-fees.mjs.map +1 -1
- package/dist/utils/quote.cjs +2 -1
- package/dist/utils/quote.cjs.map +1 -1
- package/dist/utils/quote.d.cts +3 -3
- package/dist/utils/quote.d.cts.map +1 -1
- package/dist/utils/quote.d.mts +3 -3
- package/dist/utils/quote.d.mts.map +1 -1
- package/dist/utils/quote.mjs +2 -1
- package/dist/utils/quote.mjs.map +1 -1
- package/dist/utils/validators.cjs +11 -13
- package/dist/utils/validators.cjs.map +1 -1
- package/dist/utils/validators.d.cts +20 -977
- package/dist/utils/validators.d.cts.map +1 -1
- package/dist/utils/validators.d.mts +20 -977
- package/dist/utils/validators.d.mts.map +1 -1
- package/dist/utils/validators.mjs +10 -11
- package/dist/utils/validators.mjs.map +1 -1
- package/package.json +5 -6
|
@@ -30,6 +30,7 @@ const CURRENCY_SYMBOLS = {
|
|
|
30
30
|
SOL: 'SOL',
|
|
31
31
|
SEI: 'SEI',
|
|
32
32
|
BTC: 'BTC',
|
|
33
|
+
MON: 'MON',
|
|
33
34
|
};
|
|
34
35
|
const ETH_SWAPS_TOKEN_OBJECT = {
|
|
35
36
|
symbol: CURRENCY_SYMBOLS.ETH,
|
|
@@ -116,6 +117,13 @@ const SEI_SWAPS_TOKEN_OBJECT = {
|
|
|
116
117
|
decimals: 18,
|
|
117
118
|
iconUrl: '',
|
|
118
119
|
};
|
|
120
|
+
const MONAD_SWAPS_TOKEN_OBJECT = {
|
|
121
|
+
symbol: CURRENCY_SYMBOLS.MON,
|
|
122
|
+
name: 'Mon',
|
|
123
|
+
address: DEFAULT_TOKEN_ADDRESS,
|
|
124
|
+
decimals: 18,
|
|
125
|
+
iconUrl: '',
|
|
126
|
+
};
|
|
119
127
|
const SWAPS_TESTNET_CHAIN_ID = '0x539';
|
|
120
128
|
exports.SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {
|
|
121
129
|
[chains_1.CHAIN_IDS.MAINNET]: ETH_SWAPS_TOKEN_OBJECT,
|
|
@@ -131,6 +139,7 @@ exports.SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {
|
|
|
131
139
|
[chains_1.CHAIN_IDS.LINEA_MAINNET]: LINEA_SWAPS_TOKEN_OBJECT,
|
|
132
140
|
[chains_1.CHAIN_IDS.BASE]: BASE_SWAPS_TOKEN_OBJECT,
|
|
133
141
|
[chains_1.CHAIN_IDS.SEI]: SEI_SWAPS_TOKEN_OBJECT,
|
|
142
|
+
[chains_1.CHAIN_IDS.MONAD]: MONAD_SWAPS_TOKEN_OBJECT,
|
|
134
143
|
[keyring_api_1.SolScope.Mainnet]: SOLANA_SWAPS_TOKEN_OBJECT,
|
|
135
144
|
[keyring_api_1.SolScope.Devnet]: SOLANA_SWAPS_TOKEN_OBJECT,
|
|
136
145
|
[keyring_api_1.BtcScope.Mainnet]: BTC_SWAPS_TOKEN_OBJECT,
|
|
@@ -148,5 +157,6 @@ exports.SYMBOL_TO_SLIP44_MAP = {
|
|
|
148
157
|
AVAX: 'slip44:9000',
|
|
149
158
|
TESTETH: 'slip44:60',
|
|
150
159
|
SEI: 'slip44:19000118',
|
|
160
|
+
MON: 'slip44:268435779',
|
|
151
161
|
};
|
|
152
162
|
//# sourceMappingURL=tokens.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.cjs","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tokens.cjs","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"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","sourcesContent":["import { BtcScope, SolScope } 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\nconst DEFAULT_TOKEN_ADDRESS = '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 MON: 'MON',\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 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 SWAPS_TESTNET_CHAIN_ID = '0x539';\n\nexport const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {\n [CHAIN_IDS.MAINNET]: ETH_SWAPS_TOKEN_OBJECT,\n [SWAPS_TESTNET_CHAIN_ID]: 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 [SolScope.Mainnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [SolScope.Devnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [BtcScope.Mainnet]: BTC_SWAPS_TOKEN_OBJECT,\n} as const;\n\nexport type SupportedSwapsNativeCurrencySymbols =\n (typeof SWAPS_CHAINID_DEFAULT_TOKEN_MAP)[\n | AllowedBridgeChainIds\n | typeof SWAPS_TESTNET_CHAIN_ID]['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:9000',\n TESTETH: 'slip44:60',\n SEI: 'slip44:19000118',\n MON: 'slip44:268435779',\n};\n"]}
|
|
@@ -114,6 +114,13 @@ export declare const SWAPS_CHAINID_DEFAULT_TOKEN_MAP: {
|
|
|
114
114
|
readonly decimals: 18;
|
|
115
115
|
readonly iconUrl: "";
|
|
116
116
|
};
|
|
117
|
+
readonly "0x8f": {
|
|
118
|
+
readonly symbol: "MON";
|
|
119
|
+
readonly name: "Mon";
|
|
120
|
+
readonly address: "0x0000000000000000000000000000000000000000";
|
|
121
|
+
readonly decimals: 18;
|
|
122
|
+
readonly iconUrl: "";
|
|
123
|
+
};
|
|
117
124
|
readonly "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": {
|
|
118
125
|
readonly symbol: "SOL";
|
|
119
126
|
readonly name: "Solana";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.cts","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AAGtD,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;
|
|
1
|
+
{"version":3,"file":"tokens.d.cts","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AAGtD,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;AA6IF,QAAA,MAAM,sBAAsB,UAAU,CAAC;AAEvC,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBlC,CAAC;AAEX,MAAM,MAAM,mCAAmC,GAC7C,CAAC,OAAO,+BAA+B,CAAC,CACpC,qBAAqB,GACrB,OAAO,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,mCAAmC,EACnC,GAAG,MAAM,IAAI,MAAM,EAAE,CAWtB,CAAC"}
|
|
@@ -114,6 +114,13 @@ export declare const SWAPS_CHAINID_DEFAULT_TOKEN_MAP: {
|
|
|
114
114
|
readonly decimals: 18;
|
|
115
115
|
readonly iconUrl: "";
|
|
116
116
|
};
|
|
117
|
+
readonly "0x8f": {
|
|
118
|
+
readonly symbol: "MON";
|
|
119
|
+
readonly name: "Mon";
|
|
120
|
+
readonly address: "0x0000000000000000000000000000000000000000";
|
|
121
|
+
readonly decimals: 18;
|
|
122
|
+
readonly iconUrl: "";
|
|
123
|
+
};
|
|
117
124
|
readonly "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": {
|
|
118
125
|
readonly symbol: "SOL";
|
|
119
126
|
readonly name: "Solana";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.mts","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AAGtD,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;
|
|
1
|
+
{"version":3,"file":"tokens.d.mts","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AAGtD,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;AA6IF,QAAA,MAAM,sBAAsB,UAAU,CAAC;AAEvC,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBlC,CAAC;AAEX,MAAM,MAAM,mCAAmC,GAC7C,CAAC,OAAO,+BAA+B,CAAC,CACpC,qBAAqB,GACrB,OAAO,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,mCAAmC,EACnC,GAAG,MAAM,IAAI,MAAM,EAAE,CAWtB,CAAC"}
|
|
@@ -27,6 +27,7 @@ const CURRENCY_SYMBOLS = {
|
|
|
27
27
|
SOL: 'SOL',
|
|
28
28
|
SEI: 'SEI',
|
|
29
29
|
BTC: 'BTC',
|
|
30
|
+
MON: 'MON',
|
|
30
31
|
};
|
|
31
32
|
const ETH_SWAPS_TOKEN_OBJECT = {
|
|
32
33
|
symbol: CURRENCY_SYMBOLS.ETH,
|
|
@@ -113,6 +114,13 @@ const SEI_SWAPS_TOKEN_OBJECT = {
|
|
|
113
114
|
decimals: 18,
|
|
114
115
|
iconUrl: '',
|
|
115
116
|
};
|
|
117
|
+
const MONAD_SWAPS_TOKEN_OBJECT = {
|
|
118
|
+
symbol: CURRENCY_SYMBOLS.MON,
|
|
119
|
+
name: 'Mon',
|
|
120
|
+
address: DEFAULT_TOKEN_ADDRESS,
|
|
121
|
+
decimals: 18,
|
|
122
|
+
iconUrl: '',
|
|
123
|
+
};
|
|
116
124
|
const SWAPS_TESTNET_CHAIN_ID = '0x539';
|
|
117
125
|
export const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {
|
|
118
126
|
[CHAIN_IDS.MAINNET]: ETH_SWAPS_TOKEN_OBJECT,
|
|
@@ -128,6 +136,7 @@ export const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {
|
|
|
128
136
|
[CHAIN_IDS.LINEA_MAINNET]: LINEA_SWAPS_TOKEN_OBJECT,
|
|
129
137
|
[CHAIN_IDS.BASE]: BASE_SWAPS_TOKEN_OBJECT,
|
|
130
138
|
[CHAIN_IDS.SEI]: SEI_SWAPS_TOKEN_OBJECT,
|
|
139
|
+
[CHAIN_IDS.MONAD]: MONAD_SWAPS_TOKEN_OBJECT,
|
|
131
140
|
[SolScope.Mainnet]: SOLANA_SWAPS_TOKEN_OBJECT,
|
|
132
141
|
[SolScope.Devnet]: SOLANA_SWAPS_TOKEN_OBJECT,
|
|
133
142
|
[BtcScope.Mainnet]: BTC_SWAPS_TOKEN_OBJECT,
|
|
@@ -145,5 +154,6 @@ export const SYMBOL_TO_SLIP44_MAP = {
|
|
|
145
154
|
AVAX: 'slip44:9000',
|
|
146
155
|
TESTETH: 'slip44:60',
|
|
147
156
|
SEI: 'slip44:19000118',
|
|
157
|
+
MON: 'slip44:268435779',
|
|
148
158
|
};
|
|
149
159
|
//# sourceMappingURL=tokens.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.mjs","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tokens.mjs","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"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","sourcesContent":["import { BtcScope, SolScope } 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\nconst DEFAULT_TOKEN_ADDRESS = '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 MON: 'MON',\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 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 SWAPS_TESTNET_CHAIN_ID = '0x539';\n\nexport const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = {\n [CHAIN_IDS.MAINNET]: ETH_SWAPS_TOKEN_OBJECT,\n [SWAPS_TESTNET_CHAIN_ID]: 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 [SolScope.Mainnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [SolScope.Devnet]: SOLANA_SWAPS_TOKEN_OBJECT,\n [BtcScope.Mainnet]: BTC_SWAPS_TOKEN_OBJECT,\n} as const;\n\nexport type SupportedSwapsNativeCurrencySymbols =\n (typeof SWAPS_CHAINID_DEFAULT_TOKEN_MAP)[\n | AllowedBridgeChainIds\n | typeof SWAPS_TESTNET_CHAIN_ID]['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:9000',\n TESTETH: 'slip44:60',\n SEI: 'slip44:19000118',\n MON: 'slip44:268435779',\n};\n"]}
|
package/dist/selectors.cjs
CHANGED
|
@@ -161,7 +161,7 @@ const selectBridgeQuotesWithMetadata = createBridgeSelector([
|
|
|
161
161
|
const minToTokenAmount = (0, quote_1.calcToAmount)(quote.quote.minDestTokenAmount, quote.quote.destAsset, destTokenExchangeRate);
|
|
162
162
|
const includedTxFees = (0, quote_1.calcIncludedTxFees)(quote.quote, srcTokenExchangeRate, destTokenExchangeRate);
|
|
163
163
|
let totalEstimatedNetworkFee, totalMaxNetworkFee, relayerFee, gasFee;
|
|
164
|
-
if ((0, bridge_2.
|
|
164
|
+
if (!(0, bridge_2.isEvmQuoteResponse)(quote)) {
|
|
165
165
|
// Use the new generic function for all non-EVM chains
|
|
166
166
|
totalEstimatedNetworkFee = (0, quote_1.calcNonEvmTotalNetworkFee)(quote, nativeExchangeRate);
|
|
167
167
|
gasFee = {
|
package/dist/selectors.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.cjs","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"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","sourcesContent":["import { AddressZero } from '@ethersproject/constants';\nimport type {\n CurrencyRateState,\n MultichainAssetsRatesControllerState,\n TokenRatesControllerState,\n} from '@metamask/assets-controllers';\nimport type { GasFeeEstimates } from '@metamask/gas-fee-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { isStrictHexString } 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 GenericQuoteRequest,\n QuoteMetadata,\n QuoteResponse,\n} from './types';\nimport { RequestStatus, SortOrder } from './types';\nimport {\n getNativeAssetForChainId,\n isNativeAddress,\n isNonEvmChainId,\n} from './utils/bridge';\nimport {\n formatAddressToAssetId,\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} 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};\nexport type BridgeAppState = BridgeControllerState & {\n gasFeeEstimates: GasFeeEstimates;\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: (QuoteResponse & QuoteMetadata) | null;\n};\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 getExchangeRateByChainIdAndAddress = (\n exchangeRateSources: ExchangeRateControllerState,\n chainId?: GenericQuoteRequest['srcChainId'],\n address?: GenericQuoteRequest['srcTokenAddress'],\n): ExchangeRate => {\n if (!chainId || !address) {\n return {};\n }\n // TODO return usd exchange rate if user has opted into metrics\n const assetId = formatAddressToAssetId(address, chainId);\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] ??\n assetExchangeRates?.[assetId.toLowerCase() as CaipAssetType];\n if (bridgeControllerRate?.exchangeRate) {\n return bridgeControllerRate;\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 multichainAssetExchangeRate = conversionRates?.[assetId];\n if (multichainAssetExchangeRate) {\n return {\n exchangeRate: multichainAssetExchangeRate.rate,\n usdExchangeRate: undefined,\n };\n }\n return {};\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 evmTokenExchangeRates = marketData?.[formatChainIdToHex(chainId)];\n const evmTokenExchangeRateForAddress = isStrictHexString(address)\n ? evmTokenExchangeRates?.[address]\n : null;\n const nativeCurrencyRate = evmTokenExchangeRateForAddress\n ? currencyRates[evmTokenExchangeRateForAddress?.currency]\n : undefined;\n if (evmTokenExchangeRateForAddress && nativeCurrencyRate) {\n return {\n exchangeRate: new BigNumber(evmTokenExchangeRateForAddress.price)\n .multipliedBy(nativeCurrencyRate.conversionRate ?? 0)\n .toString(),\n usdExchangeRate: new BigNumber(evmTokenExchangeRateForAddress.price)\n .multipliedBy(nativeCurrencyRate.usdConversionRate ?? 0)\n .toString(),\n };\n }\n }\n\n return {};\n};\n\n/**\n * Selects the asset exchange rate for a given chain and address\n *\n * @param state The state of the bridge controller and its dependency controllers\n * @param chainId The chain ID of the asset\n * @param address The address of the asset\n * @returns The asset exchange rate for the given chain and address\n */\nexport const selectExchangeRateByChainIdAndAddress = (\n state: BridgeAppState,\n chainId?: GenericQuoteRequest['srcChainId'],\n address?: GenericQuoteRequest['srcTokenAddress'],\n) => {\n return getExchangeRateByChainIdAndAddress(state, chainId, address);\n};\n\n/**\n * Checks whether an exchange rate is available for a given chain and address\n *\n * @param params The parameters to pass to {@link getExchangeRateByChainIdAndAddress}\n * @returns Whether an exchange rate is available for the given chain and address\n */\nexport const selectIsAssetExchangeRateInState = (\n ...params: Parameters<typeof getExchangeRateByChainIdAndAddress>\n) =>\n Boolean(getExchangeRateByChainIdAndAddress(...params)?.exchangeRate) &&\n Boolean(getExchangeRateByChainIdAndAddress(...params)?.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 * @returns The gas fee estimates in decGWEI\n */\nconst selectBridgeFeesPerGas = createStructuredBridgeSelector({\n estimatedBaseFeeInDecGwei: ({ gasFeeEstimates }) =>\n gasFeeEstimates?.estimatedBaseFee,\n maxPriorityFeePerGasInDecGwei: ({ gasFeeEstimates }) =>\n gasFeeEstimates?.[BRIDGE_PREFERRED_GAS_ESTIMATE]\n ?.suggestedMaxPriorityFeePerGas,\n maxFeePerGasInDecGwei: ({ gasFeeEstimates }) =>\n gasFeeEstimates?.high?.suggestedMaxFeePerGas,\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 } }) => srcChainId,\n ({ quoteRequest: { srcTokenAddress } }) => srcTokenAddress,\n ],\n selectExchangeRateByChainIdAndAddress,\n ),\n createBridgeSelector(\n [\n (state) => state,\n ({ quoteRequest: { destChainId } }) => destChainId,\n ({ quoteRequest: { destTokenAddress } }) => destTokenAddress,\n ],\n selectExchangeRateByChainIdAndAddress,\n ),\n createBridgeSelector(\n [(state) => state, ({ quoteRequest: { srcChainId } }) => srcChainId],\n (state, chainId) =>\n selectExchangeRateByChainIdAndAddress(state, chainId, AddressZero),\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 (isNonEvmChainId(quote.quote.srcChainId)) {\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 } else {\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 }\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 totalNetworkFee: totalEstimatedNetworkFee,\n totalMaxNetworkFee,\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): (QuoteResponse & QuoteMetadata)[] => {\n switch (sortOrder) {\n case SortOrder.ETA_ASC:\n return orderBy(\n quotesWithMetadata,\n (quote) => quote.estimatedProcessingTimeInSeconds,\n 'asc',\n );\n default:\n return orderBy(\n quotesWithMetadata,\n ({ cost }) =>\n cost.valueInCurrency ? Number(cost.valueInCurrency) : 0,\n 'asc',\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 (_, { selectedQuote }: BridgeQuotesClientParams) => selectedQuote,\n ],\n (recommendedQuote, selectedQuote) => selectedQuote ?? recommendedQuote,\n);\n\nconst selectIsQuoteGoingToRefresh = createBridgeSelector(\n [\n selectBridgeFeatureFlags,\n (state) => state.quoteRequest.insufficientBal,\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.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 (_, __, 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\nexport const selectMinimumBalanceForRentExemptionInSOL = (\n state: BridgeAppState,\n) =>\n new BigNumber(state.minimumBalanceForRentExemptionInLamports ?? 0)\n .div(10 ** 9)\n .toString();\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":["import { AddressZero } from '@ethersproject/constants';\nimport type {\n CurrencyRateState,\n MultichainAssetsRatesControllerState,\n TokenRatesControllerState,\n} from '@metamask/assets-controllers';\nimport type { GasFeeEstimates } from '@metamask/gas-fee-controller';\nimport type { CaipAssetType } from '@metamask/utils';\nimport { isStrictHexString } 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 GenericQuoteRequest,\n QuoteMetadata,\n QuoteResponse,\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 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} 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};\nexport type BridgeAppState = BridgeControllerState & {\n gasFeeEstimates: GasFeeEstimates;\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: (QuoteResponse & QuoteMetadata) | null;\n};\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 getExchangeRateByChainIdAndAddress = (\n exchangeRateSources: ExchangeRateControllerState,\n chainId?: GenericQuoteRequest['srcChainId'],\n address?: GenericQuoteRequest['srcTokenAddress'],\n): ExchangeRate => {\n if (!chainId || !address) {\n return {};\n }\n // TODO return usd exchange rate if user has opted into metrics\n const assetId = formatAddressToAssetId(address, chainId);\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] ??\n assetExchangeRates?.[assetId.toLowerCase() as CaipAssetType];\n if (bridgeControllerRate?.exchangeRate) {\n return bridgeControllerRate;\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 multichainAssetExchangeRate = conversionRates?.[assetId];\n if (multichainAssetExchangeRate) {\n return {\n exchangeRate: multichainAssetExchangeRate.rate,\n usdExchangeRate: undefined,\n };\n }\n return {};\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 evmTokenExchangeRates = marketData?.[formatChainIdToHex(chainId)];\n const evmTokenExchangeRateForAddress = isStrictHexString(address)\n ? evmTokenExchangeRates?.[address]\n : null;\n const nativeCurrencyRate = evmTokenExchangeRateForAddress\n ? currencyRates[evmTokenExchangeRateForAddress?.currency]\n : undefined;\n if (evmTokenExchangeRateForAddress && nativeCurrencyRate) {\n return {\n exchangeRate: new BigNumber(evmTokenExchangeRateForAddress.price)\n .multipliedBy(nativeCurrencyRate.conversionRate ?? 0)\n .toString(),\n usdExchangeRate: new BigNumber(evmTokenExchangeRateForAddress.price)\n .multipliedBy(nativeCurrencyRate.usdConversionRate ?? 0)\n .toString(),\n };\n }\n }\n\n return {};\n};\n\n/**\n * Selects the asset exchange rate for a given chain and address\n *\n * @param state The state of the bridge controller and its dependency controllers\n * @param chainId The chain ID of the asset\n * @param address The address of the asset\n * @returns The asset exchange rate for the given chain and address\n */\nexport const selectExchangeRateByChainIdAndAddress = (\n state: BridgeAppState,\n chainId?: GenericQuoteRequest['srcChainId'],\n address?: GenericQuoteRequest['srcTokenAddress'],\n) => {\n return getExchangeRateByChainIdAndAddress(state, chainId, address);\n};\n\n/**\n * Checks whether an exchange rate is available for a given chain and address\n *\n * @param params The parameters to pass to {@link getExchangeRateByChainIdAndAddress}\n * @returns Whether an exchange rate is available for the given chain and address\n */\nexport const selectIsAssetExchangeRateInState = (\n ...params: Parameters<typeof getExchangeRateByChainIdAndAddress>\n) =>\n Boolean(getExchangeRateByChainIdAndAddress(...params)?.exchangeRate) &&\n Boolean(getExchangeRateByChainIdAndAddress(...params)?.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 * @returns The gas fee estimates in decGWEI\n */\nconst selectBridgeFeesPerGas = createStructuredBridgeSelector({\n estimatedBaseFeeInDecGwei: ({ gasFeeEstimates }) =>\n gasFeeEstimates?.estimatedBaseFee,\n maxPriorityFeePerGasInDecGwei: ({ gasFeeEstimates }) =>\n gasFeeEstimates?.[BRIDGE_PREFERRED_GAS_ESTIMATE]\n ?.suggestedMaxPriorityFeePerGas,\n maxFeePerGasInDecGwei: ({ gasFeeEstimates }) =>\n gasFeeEstimates?.high?.suggestedMaxFeePerGas,\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 } }) => srcChainId,\n ({ quoteRequest: { srcTokenAddress } }) => srcTokenAddress,\n ],\n selectExchangeRateByChainIdAndAddress,\n ),\n createBridgeSelector(\n [\n (state) => state,\n ({ quoteRequest: { destChainId } }) => destChainId,\n ({ quoteRequest: { destTokenAddress } }) => destTokenAddress,\n ],\n selectExchangeRateByChainIdAndAddress,\n ),\n createBridgeSelector(\n [(state) => state, ({ quoteRequest: { srcChainId } }) => srcChainId],\n (state, chainId) =>\n selectExchangeRateByChainIdAndAddress(state, chainId, AddressZero),\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 // 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 } else {\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 }\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 totalNetworkFee: totalEstimatedNetworkFee,\n totalMaxNetworkFee,\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): (QuoteResponse & QuoteMetadata)[] => {\n switch (sortOrder) {\n case SortOrder.ETA_ASC:\n return orderBy(\n quotesWithMetadata,\n (quote) => quote.estimatedProcessingTimeInSeconds,\n 'asc',\n );\n default:\n return orderBy(\n quotesWithMetadata,\n ({ cost }) =>\n cost.valueInCurrency ? Number(cost.valueInCurrency) : 0,\n 'asc',\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 (_, { selectedQuote }: BridgeQuotesClientParams) => selectedQuote,\n ],\n (recommendedQuote, selectedQuote) => selectedQuote ?? recommendedQuote,\n);\n\nconst selectIsQuoteGoingToRefresh = createBridgeSelector(\n [\n selectBridgeFeatureFlags,\n (state) => state.quoteRequest.insufficientBal,\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.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 (_, __, 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\nexport const selectMinimumBalanceForRentExemptionInSOL = (\n state: BridgeAppState,\n) =>\n new BigNumber(state.minimumBalanceForRentExemptionInLamports ?? 0)\n .div(10 ** 9)\n .toString();\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"]}
|