@metamask/bridge-controller 9.0.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/dist/bridge-controller.cjs +96 -25
  3. package/dist/bridge-controller.cjs.map +1 -1
  4. package/dist/bridge-controller.d.cts +5 -5
  5. package/dist/bridge-controller.d.cts.map +1 -1
  6. package/dist/bridge-controller.d.mts +5 -5
  7. package/dist/bridge-controller.d.mts.map +1 -1
  8. package/dist/bridge-controller.mjs +97 -26
  9. package/dist/bridge-controller.mjs.map +1 -1
  10. package/dist/constants/bridge.cjs +2 -1
  11. package/dist/constants/bridge.cjs.map +1 -1
  12. package/dist/constants/bridge.d.cts +2 -1
  13. package/dist/constants/bridge.d.cts.map +1 -1
  14. package/dist/constants/bridge.d.mts +2 -1
  15. package/dist/constants/bridge.d.mts.map +1 -1
  16. package/dist/constants/bridge.mjs +2 -1
  17. package/dist/constants/bridge.mjs.map +1 -1
  18. package/dist/constants/chains.cjs +1 -12
  19. package/dist/constants/chains.cjs.map +1 -1
  20. package/dist/constants/chains.d.cts +0 -2
  21. package/dist/constants/chains.d.cts.map +1 -1
  22. package/dist/constants/chains.d.mts +0 -2
  23. package/dist/constants/chains.d.mts.map +1 -1
  24. package/dist/constants/chains.mjs +0 -11
  25. package/dist/constants/chains.mjs.map +1 -1
  26. package/dist/constants/tokens.cjs +61 -38
  27. package/dist/constants/tokens.cjs.map +1 -1
  28. package/dist/constants/tokens.d.cts +100 -48
  29. package/dist/constants/tokens.d.cts.map +1 -1
  30. package/dist/constants/tokens.d.mts +100 -48
  31. package/dist/constants/tokens.d.mts.map +1 -1
  32. package/dist/constants/tokens.mjs +37 -14
  33. package/dist/constants/tokens.mjs.map +1 -1
  34. package/dist/index.cjs +21 -1
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.cts +16 -4
  37. package/dist/index.d.cts.map +1 -1
  38. package/dist/index.d.mts +16 -4
  39. package/dist/index.d.mts.map +1 -1
  40. package/dist/index.mjs +11 -2
  41. package/dist/index.mjs.map +1 -1
  42. package/dist/types.cjs +4 -3
  43. package/dist/types.cjs.map +1 -1
  44. package/dist/types.d.cts +108 -54
  45. package/dist/types.d.cts.map +1 -1
  46. package/dist/types.d.mts +108 -54
  47. package/dist/types.d.mts.map +1 -1
  48. package/dist/types.mjs +4 -3
  49. package/dist/types.mjs.map +1 -1
  50. package/dist/utils/balance.cjs +2 -2
  51. package/dist/utils/balance.cjs.map +1 -1
  52. package/dist/utils/balance.d.cts.map +1 -1
  53. package/dist/utils/balance.d.mts.map +1 -1
  54. package/dist/utils/balance.mjs +2 -2
  55. package/dist/utils/balance.mjs.map +1 -1
  56. package/dist/utils/bridge.cjs +65 -5
  57. package/dist/utils/bridge.cjs.map +1 -1
  58. package/dist/utils/bridge.d.cts +27 -4
  59. package/dist/utils/bridge.d.cts.map +1 -1
  60. package/dist/utils/bridge.d.mts +27 -4
  61. package/dist/utils/bridge.d.mts.map +1 -1
  62. package/dist/utils/bridge.mjs +62 -5
  63. package/dist/utils/bridge.mjs.map +1 -1
  64. package/dist/utils/caip-formatters.cjs +102 -0
  65. package/dist/utils/caip-formatters.cjs.map +1 -0
  66. package/dist/utils/caip-formatters.d.cts +31 -0
  67. package/dist/utils/caip-formatters.d.cts.map +1 -0
  68. package/dist/utils/caip-formatters.d.mts +31 -0
  69. package/dist/utils/caip-formatters.d.mts.map +1 -0
  70. package/dist/utils/caip-formatters.mjs +95 -0
  71. package/dist/utils/caip-formatters.mjs.map +1 -0
  72. package/dist/utils/fetch.cjs +34 -26
  73. package/dist/utils/fetch.cjs.map +1 -1
  74. package/dist/utils/fetch.d.cts +6 -5
  75. package/dist/utils/fetch.d.cts.map +1 -1
  76. package/dist/utils/fetch.d.mts +6 -5
  77. package/dist/utils/fetch.d.mts.map +1 -1
  78. package/dist/utils/fetch.mjs +32 -24
  79. package/dist/utils/fetch.mjs.map +1 -1
  80. package/dist/utils/quote.cjs +12 -2
  81. package/dist/utils/quote.cjs.map +1 -1
  82. package/dist/utils/quote.d.cts +2 -2
  83. package/dist/utils/quote.d.cts.map +1 -1
  84. package/dist/utils/quote.d.mts +2 -2
  85. package/dist/utils/quote.d.mts.map +1 -1
  86. package/dist/utils/quote.mjs +12 -2
  87. package/dist/utils/quote.mjs.map +1 -1
  88. package/dist/utils/validators.cjs +15 -16
  89. package/dist/utils/validators.cjs.map +1 -1
  90. package/dist/utils/validators.d.cts +2 -3
  91. package/dist/utils/validators.d.cts.map +1 -1
  92. package/dist/utils/validators.d.mts +2 -3
  93. package/dist/utils/validators.d.mts.map +1 -1
  94. package/dist/utils/validators.mjs +16 -17
  95. package/dist/utils/validators.mjs.map +1 -1
  96. package/package.json +9 -4
@@ -9,17 +9,19 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _BridgeController_instances, _BridgeController_abortController, _BridgeController_quotesFirstFetched, _BridgeController_clientId, _BridgeController_getLayer1GasFee, _BridgeController_fetchFn, _BridgeController_config, _BridgeController_hasSufficientBalance, _BridgeController_fetchBridgeQuotes, _BridgeController_appendL1GasFees, _BridgeController_getSelectedAccount, _BridgeController_getSelectedNetworkClient, _BridgeController_getSelectedNetworkClientId;
12
+ var _BridgeController_instances, _BridgeController_abortController, _BridgeController_quotesFirstFetched, _BridgeController_clientId, _BridgeController_getLayer1GasFee, _BridgeController_fetchFn, _BridgeController_config, _BridgeController_hasSufficientBalance, _BridgeController_setIntervalLength, _BridgeController_fetchBridgeQuotes, _BridgeController_appendL1GasFees, _BridgeController_appendSolanaFees, _BridgeController_getMultichainSelectedAccount, _BridgeController_getSelectedNetworkClientId, _BridgeController_getSelectedNetworkClient;
13
13
  import { Contract } from "@ethersproject/contracts";
14
14
  import { Web3Provider } from "@ethersproject/providers";
15
15
  import { abiERC20 } from "@metamask/metamask-eth-abis";
16
16
  import { StaticIntervalPollingController } from "@metamask/polling-controller";
17
+ import { HandlerType } from "@metamask/snaps-utils";
17
18
  import { numberToHex } from "@metamask/utils";
18
19
  import { BRIDGE_CONTROLLER_NAME, BRIDGE_PROD_API_BASE_URL, DEFAULT_BRIDGE_CONTROLLER_STATE, METABRIDGE_CHAIN_TO_ADDRESS_MAP, REFRESH_INTERVAL_MS } from "./constants/bridge.mjs";
19
20
  import { CHAIN_IDS } from "./constants/chains.mjs";
20
21
  import { BridgeFeatureFlagsKey, RequestStatus } from "./types.mjs";
21
22
  import { hasSufficientBalance } from "./utils/balance.mjs";
22
- import { getDefaultBridgeControllerState, sumHexes } from "./utils/bridge.mjs";
23
+ import { getDefaultBridgeControllerState, isSolanaChainId, sumHexes } from "./utils/bridge.mjs";
24
+ import { formatAddressToCaipReference, formatChainIdToCaip, formatChainIdToHex } from "./utils/caip-formatters.mjs";
23
25
  import { fetchBridgeFeatureFlags, fetchBridgeQuotes } from "./utils/fetch.mjs";
24
26
  import { isValidQuoteRequest } from "./utils/quote.mjs";
25
27
  const metadata = {
@@ -100,27 +102,46 @@ export class BridgeController extends StaticIntervalPollingController() {
100
102
  });
101
103
  if (isValidQuoteRequest(updatedQuoteRequest)) {
102
104
  __classPrivateFieldSet(this, _BridgeController_quotesFirstFetched, Date.now(), "f");
103
- const walletAddress = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedAccount).call(this).address;
104
- const srcChainIdInHex = numberToHex(updatedQuoteRequest.srcChainId);
105
- const insufficientBal = paramsToUpdate.insufficientBal ||
106
- !(await __classPrivateFieldGet(this, _BridgeController_hasSufficientBalance, "f").call(this, updatedQuoteRequest));
107
- const networkClientId = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedNetworkClientId).call(this, srcChainIdInHex);
105
+ const providerConfig = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedNetworkClient).call(this)?.configuration;
106
+ let insufficientBal;
107
+ if (isSolanaChainId(updatedQuoteRequest.srcChainId)) {
108
+ // If the source chain is not an EVM network, use value from params
109
+ insufficientBal = paramsToUpdate.insufficientBal;
110
+ }
111
+ else if (providerConfig?.rpcUrl?.includes('tenderly')) {
112
+ // If the rpcUrl is a tenderly fork (e2e tests), set insufficientBal=true
113
+ // The bridge-api filters out quotes if the balance on mainnet is insufficient so this override allows quotes to always be returned
114
+ insufficientBal = true;
115
+ }
116
+ else {
117
+ // Otherwise query the src token balance from the RPC provider
118
+ insufficientBal =
119
+ paramsToUpdate.insufficientBal ??
120
+ !(await __classPrivateFieldGet(this, _BridgeController_hasSufficientBalance, "f").call(this, updatedQuoteRequest));
121
+ }
122
+ const networkClientId = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedNetworkClientId).call(this);
123
+ // Set refresh rate based on the source chain before starting polling
124
+ __classPrivateFieldGet(this, _BridgeController_setIntervalLength, "f").call(this);
108
125
  this.startPolling({
109
126
  networkClientId,
110
127
  updatedQuoteRequest: {
111
128
  ...updatedQuoteRequest,
112
- walletAddress,
113
129
  insufficientBal,
114
130
  },
115
131
  });
116
132
  }
117
133
  };
118
134
  _BridgeController_hasSufficientBalance.set(this, async (quoteRequest) => {
119
- const walletAddress = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedAccount).call(this).address;
120
- const srcChainIdInHex = numberToHex(quoteRequest.srcChainId);
135
+ const walletAddress = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getMultichainSelectedAccount).call(this)?.address;
136
+ const srcChainIdInHex = formatChainIdToHex(quoteRequest.srcChainId);
121
137
  const provider = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedNetworkClient).call(this)?.provider;
138
+ const normalizedSrcTokenAddress = formatAddressToCaipReference(quoteRequest.srcTokenAddress);
122
139
  return (provider &&
123
- (await hasSufficientBalance(provider, walletAddress, quoteRequest.srcTokenAddress, quoteRequest.srcTokenAmount, srcChainIdInHex)));
140
+ walletAddress &&
141
+ normalizedSrcTokenAddress &&
142
+ quoteRequest.srcTokenAmount &&
143
+ srcChainIdInHex &&
144
+ (await hasSufficientBalance(provider, walletAddress, normalizedSrcTokenAddress, quoteRequest.srcTokenAmount, srcChainIdInHex)));
124
145
  });
125
146
  this.resetState = () => {
126
147
  this.stopAllPolling();
@@ -148,15 +169,25 @@ export class BridgeController extends StaticIntervalPollingController() {
148
169
  this.update((state) => {
149
170
  state.bridgeFeatureFlags = bridgeFeatureFlags;
150
171
  });
151
- this.setIntervalLength(bridgeFeatureFlags[BridgeFeatureFlagsKey.EXTENSION_CONFIG].refreshRate);
172
+ __classPrivateFieldGet(this, _BridgeController_setIntervalLength, "f").call(this);
152
173
  };
174
+ /**
175
+ * Sets the interval length based on the source chain
176
+ */
177
+ _BridgeController_setIntervalLength.set(this, () => {
178
+ const { state } = this;
179
+ const { srcChainId } = state.quoteRequest;
180
+ const refreshRateOverride = srcChainId
181
+ ? state.bridgeFeatureFlags[BridgeFeatureFlagsKey.EXTENSION_CONFIG].chains[formatChainIdToCaip(srcChainId)]?.refreshRate
182
+ : undefined;
183
+ const defaultRefreshRate = state.bridgeFeatureFlags[BridgeFeatureFlagsKey.EXTENSION_CONFIG]
184
+ .refreshRate;
185
+ this.setIntervalLength(refreshRateOverride ?? defaultRefreshRate);
186
+ });
153
187
  _BridgeController_fetchBridgeQuotes.set(this, async ({ networkClientId: _networkClientId, updatedQuoteRequest, }) => {
154
188
  const { bridgeFeatureFlags, quotesInitialLoadTime, quotesRefreshCount } = this.state;
155
189
  __classPrivateFieldGet(this, _BridgeController_abortController, "f")?.abort('New quote request');
156
190
  __classPrivateFieldSet(this, _BridgeController_abortController, new AbortController(), "f");
157
- if (updatedQuoteRequest.srcChainId === updatedQuoteRequest.destChainId) {
158
- return;
159
- }
160
191
  this.update((state) => {
161
192
  state.quotesLoadingStatus = RequestStatus.LOADING;
162
193
  state.quoteRequest = updatedQuoteRequest;
@@ -170,8 +201,9 @@ export class BridgeController extends StaticIntervalPollingController() {
170
201
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
171
202
  __classPrivateFieldGet(this, _BridgeController_abortController, "f").signal, __classPrivateFieldGet(this, _BridgeController_clientId, "f"), __classPrivateFieldGet(this, _BridgeController_fetchFn, "f"), __classPrivateFieldGet(this, _BridgeController_config, "f").customBridgeApiBaseUrl ?? BRIDGE_PROD_API_BASE_URL);
172
203
  const quotesWithL1GasFees = await __classPrivateFieldGet(this, _BridgeController_appendL1GasFees, "f").call(this, quotes);
204
+ const quotesWithSolanaFees = await __classPrivateFieldGet(this, _BridgeController_appendSolanaFees, "f").call(this, quotes);
173
205
  this.update((state) => {
174
- state.quotes = quotesWithL1GasFees;
206
+ state.quotes = quotesWithL1GasFees ?? quotesWithSolanaFees ?? quotes;
175
207
  state.quotesLoadingStatus = RequestStatus.FETCHED;
176
208
  });
177
209
  }
@@ -185,6 +217,7 @@ export class BridgeController extends StaticIntervalPollingController() {
185
217
  state.quoteFetchError =
186
218
  error instanceof Error ? error.message : 'Unknown error';
187
219
  state.quotesLoadingStatus = RequestStatus.ERROR;
220
+ state.quotes = DEFAULT_BRIDGE_CONTROLLER_STATE.quotes;
188
221
  });
189
222
  console.log('Failed to fetch bridge quotes', error);
190
223
  }
@@ -210,10 +243,18 @@ export class BridgeController extends StaticIntervalPollingController() {
210
243
  }
211
244
  });
212
245
  _BridgeController_appendL1GasFees.set(this, async (quotes) => {
213
- return await Promise.all(quotes.map(async (quoteResponse) => {
214
- const { quote, trade, approval } = quoteResponse;
215
- const chainId = numberToHex(quote.srcChainId);
216
- if ([CHAIN_IDS.OPTIMISM.toString(), CHAIN_IDS.BASE.toString()].includes(chainId)) {
246
+ // Indicates whether some of the quotes are not for optimism or base
247
+ const hasInvalidQuotes = quotes.some(({ quote }) => {
248
+ const chainId = formatChainIdToCaip(quote.srcChainId);
249
+ return ![CHAIN_IDS.OPTIMISM, CHAIN_IDS.BASE]
250
+ .map(formatChainIdToCaip)
251
+ .includes(chainId);
252
+ });
253
+ // Only append L1 gas fees if all quotes are for either optimism or base
254
+ if (!hasInvalidQuotes) {
255
+ return await Promise.all(quotes.map(async (quoteResponse) => {
256
+ const { quote, trade, approval } = quoteResponse;
257
+ const chainId = numberToHex(quote.srcChainId);
217
258
  const getTxParams = (txData) => ({
218
259
  from: txData.from,
219
260
  to: txData.to,
@@ -235,6 +276,35 @@ export class BridgeController extends StaticIntervalPollingController() {
235
276
  ...quoteResponse,
236
277
  l1GasFeesInHexWei: sumHexes(approvalL1GasFees, tradeL1GasFees),
237
278
  };
279
+ }));
280
+ }
281
+ return undefined;
282
+ });
283
+ _BridgeController_appendSolanaFees.set(this, async (quotes) => {
284
+ // Return early if some of the quotes are not for solana
285
+ if (quotes.some(({ quote: { srcChainId } }) => !isSolanaChainId(srcChainId))) {
286
+ return undefined;
287
+ }
288
+ return await Promise.all(quotes.map(async (quoteResponse) => {
289
+ const { trade } = quoteResponse;
290
+ const selectedAccount = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getMultichainSelectedAccount).call(this);
291
+ if (selectedAccount?.metadata?.snap?.id && typeof trade === 'string') {
292
+ const { value: fees } = (await this.messagingSystem.call('SnapController:handleRequest', {
293
+ snapId: selectedAccount.metadata.snap.id,
294
+ origin: 'metamask',
295
+ handler: HandlerType.OnRpcRequest,
296
+ request: {
297
+ method: 'getFeeForTransaction',
298
+ params: {
299
+ transaction: trade,
300
+ scope: selectedAccount.options.scope,
301
+ },
302
+ },
303
+ }));
304
+ return {
305
+ ...quoteResponse,
306
+ solanaFeesInLamports: fees,
307
+ };
238
308
  }
239
309
  return quoteResponse;
240
310
  }));
@@ -252,7 +322,7 @@ export class BridgeController extends StaticIntervalPollingController() {
252
322
  }
253
323
  const ethersProvider = new Web3Provider(provider);
254
324
  const contract = new Contract(contractAddress, abiERC20, ethersProvider);
255
- const { address: walletAddress } = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedAccount).call(this);
325
+ const { address: walletAddress } = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getMultichainSelectedAccount).call(this) ?? {};
256
326
  const allowance = await contract.allowance(walletAddress, METABRIDGE_CHAIN_TO_ADDRESS_MAP[chainId]);
257
327
  return allowance.toString();
258
328
  };
@@ -269,13 +339,14 @@ export class BridgeController extends StaticIntervalPollingController() {
269
339
  this.messagingSystem.registerActionHandler(`${BRIDGE_CONTROLLER_NAME}:getBridgeERC20Allowance`, this.getBridgeERC20Allowance.bind(this));
270
340
  }
271
341
  }
272
- _BridgeController_abortController = new WeakMap(), _BridgeController_quotesFirstFetched = new WeakMap(), _BridgeController_clientId = new WeakMap(), _BridgeController_getLayer1GasFee = new WeakMap(), _BridgeController_fetchFn = new WeakMap(), _BridgeController_config = new WeakMap(), _BridgeController_hasSufficientBalance = new WeakMap(), _BridgeController_fetchBridgeQuotes = new WeakMap(), _BridgeController_appendL1GasFees = new WeakMap(), _BridgeController_instances = new WeakSet(), _BridgeController_getSelectedAccount = function _BridgeController_getSelectedAccount() {
273
- return this.messagingSystem.call('AccountsController:getSelectedAccount');
274
- }, _BridgeController_getSelectedNetworkClient = function _BridgeController_getSelectedNetworkClient() {
342
+ _BridgeController_abortController = new WeakMap(), _BridgeController_quotesFirstFetched = new WeakMap(), _BridgeController_clientId = new WeakMap(), _BridgeController_getLayer1GasFee = new WeakMap(), _BridgeController_fetchFn = new WeakMap(), _BridgeController_config = new WeakMap(), _BridgeController_hasSufficientBalance = new WeakMap(), _BridgeController_setIntervalLength = new WeakMap(), _BridgeController_fetchBridgeQuotes = new WeakMap(), _BridgeController_appendL1GasFees = new WeakMap(), _BridgeController_appendSolanaFees = new WeakMap(), _BridgeController_instances = new WeakSet(), _BridgeController_getMultichainSelectedAccount = function _BridgeController_getMultichainSelectedAccount() {
343
+ return this.messagingSystem.call('AccountsController:getSelectedMultichainAccount');
344
+ }, _BridgeController_getSelectedNetworkClientId = function _BridgeController_getSelectedNetworkClientId() {
275
345
  const { selectedNetworkClientId } = this.messagingSystem.call('NetworkController:getState');
346
+ return selectedNetworkClientId;
347
+ }, _BridgeController_getSelectedNetworkClient = function _BridgeController_getSelectedNetworkClient() {
348
+ const selectedNetworkClientId = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedNetworkClientId).call(this);
276
349
  const networkClient = this.messagingSystem.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
277
350
  return networkClient;
278
- }, _BridgeController_getSelectedNetworkClientId = function _BridgeController_getSelectedNetworkClientId(chainId) {
279
- return this.messagingSystem.call('NetworkController:findNetworkClientIdByChainId', chainId);
280
351
  };
281
352
  //# sourceMappingURL=bridge-controller.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-controller.mjs","sourceRoot":"","sources":["../src/bridge-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BigNumber } from '@ethersproject/bignumber';\nimport { Contract } from '@ethersproject/contracts';\nimport { Web3Provider } from '@ethersproject/providers';\nimport type { StateMetadata } from '@metamask/base-controller';\nimport type { ChainId } from '@metamask/controller-utils';\nimport { abiERC20 } from '@metamask/metamask-eth-abis';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport { StaticIntervalPollingController } from '@metamask/polling-controller';\nimport type { TransactionParams } from '@metamask/transaction-controller';\nimport { numberToHex } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\n\nimport type { BridgeClientId } from './constants/bridge';\nimport {\n BRIDGE_CONTROLLER_NAME,\n BRIDGE_PROD_API_BASE_URL,\n DEFAULT_BRIDGE_CONTROLLER_STATE,\n METABRIDGE_CHAIN_TO_ADDRESS_MAP,\n REFRESH_INTERVAL_MS,\n} from './constants/bridge';\nimport { CHAIN_IDS } from './constants/chains';\nimport {\n type L1GasFees,\n type QuoteRequest,\n type QuoteResponse,\n type TxData,\n type BridgeControllerState,\n type BridgeControllerMessenger,\n type FetchFunction,\n BridgeFeatureFlagsKey,\n RequestStatus,\n} from './types';\nimport { hasSufficientBalance } from './utils/balance';\nimport { getDefaultBridgeControllerState, sumHexes } from './utils/bridge';\nimport { fetchBridgeFeatureFlags, fetchBridgeQuotes } from './utils/fetch';\nimport { isValidQuoteRequest } from './utils/quote';\n\nconst metadata: StateMetadata<BridgeControllerState> = {\n bridgeFeatureFlags: {\n persist: false,\n anonymous: false,\n },\n quoteRequest: {\n persist: false,\n anonymous: false,\n },\n quotes: {\n persist: false,\n anonymous: false,\n },\n quotesInitialLoadTime: {\n persist: false,\n anonymous: false,\n },\n quotesLastFetched: {\n persist: false,\n anonymous: false,\n },\n quotesLoadingStatus: {\n persist: false,\n anonymous: false,\n },\n quoteFetchError: {\n persist: false,\n anonymous: false,\n },\n quotesRefreshCount: {\n persist: false,\n anonymous: false,\n },\n};\n\nconst RESET_STATE_ABORT_MESSAGE = 'Reset controller state';\n\n/** The input to start polling for the {@link BridgeController} */\ntype BridgePollingInput = {\n networkClientId: NetworkClientId;\n updatedQuoteRequest: QuoteRequest;\n};\n\nexport class BridgeController extends StaticIntervalPollingController<BridgePollingInput>()<\n typeof BRIDGE_CONTROLLER_NAME,\n BridgeControllerState,\n BridgeControllerMessenger\n> {\n #abortController: AbortController | undefined;\n\n #quotesFirstFetched: number | undefined;\n\n readonly #clientId: string;\n\n readonly #getLayer1GasFee: (params: {\n transactionParams: TransactionParams;\n chainId: ChainId;\n }) => Promise<string>;\n\n readonly #fetchFn: FetchFunction;\n\n readonly #config: {\n customBridgeApiBaseUrl?: string;\n };\n\n constructor({\n messenger,\n state,\n clientId,\n getLayer1GasFee,\n fetchFn,\n config,\n }: {\n messenger: BridgeControllerMessenger;\n state?: Partial<BridgeControllerState>;\n clientId: BridgeClientId;\n getLayer1GasFee: (params: {\n transactionParams: TransactionParams;\n chainId: ChainId;\n }) => Promise<string>;\n fetchFn: FetchFunction;\n config?: {\n customBridgeApiBaseUrl?: string;\n };\n }) {\n super({\n name: BRIDGE_CONTROLLER_NAME,\n metadata,\n messenger,\n state: {\n ...getDefaultBridgeControllerState(),\n ...state,\n },\n });\n\n this.setIntervalLength(REFRESH_INTERVAL_MS);\n\n this.#abortController = new AbortController();\n this.#getLayer1GasFee = getLayer1GasFee;\n this.#clientId = clientId;\n this.#fetchFn = fetchFn;\n this.#config = config ?? {};\n\n // Register action handlers\n this.messagingSystem.registerActionHandler(\n `${BRIDGE_CONTROLLER_NAME}:setBridgeFeatureFlags`,\n this.setBridgeFeatureFlags.bind(this),\n );\n this.messagingSystem.registerActionHandler(\n `${BRIDGE_CONTROLLER_NAME}:updateBridgeQuoteRequestParams`,\n this.updateBridgeQuoteRequestParams.bind(this),\n );\n this.messagingSystem.registerActionHandler(\n `${BRIDGE_CONTROLLER_NAME}:resetState`,\n this.resetState.bind(this),\n );\n this.messagingSystem.registerActionHandler(\n `${BRIDGE_CONTROLLER_NAME}:getBridgeERC20Allowance`,\n this.getBridgeERC20Allowance.bind(this),\n );\n }\n\n _executePoll = async (pollingInput: BridgePollingInput) => {\n await this.#fetchBridgeQuotes(pollingInput);\n };\n\n updateBridgeQuoteRequestParams = async (\n paramsToUpdate: Partial<QuoteRequest>,\n ) => {\n this.stopAllPolling();\n this.#abortController?.abort('Quote request updated');\n\n const updatedQuoteRequest = {\n ...DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest,\n ...paramsToUpdate,\n };\n\n this.update((state) => {\n state.quoteRequest = updatedQuoteRequest;\n state.quotes = DEFAULT_BRIDGE_CONTROLLER_STATE.quotes;\n state.quotesLastFetched =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesLastFetched;\n state.quotesLoadingStatus =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesLoadingStatus;\n state.quoteFetchError = DEFAULT_BRIDGE_CONTROLLER_STATE.quoteFetchError;\n state.quotesRefreshCount =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesRefreshCount;\n state.quotesInitialLoadTime =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesInitialLoadTime;\n });\n\n if (isValidQuoteRequest(updatedQuoteRequest)) {\n this.#quotesFirstFetched = Date.now();\n const walletAddress = this.#getSelectedAccount().address;\n const srcChainIdInHex = numberToHex(updatedQuoteRequest.srcChainId);\n\n const insufficientBal =\n paramsToUpdate.insufficientBal ||\n !(await this.#hasSufficientBalance(updatedQuoteRequest));\n\n const networkClientId = this.#getSelectedNetworkClientId(srcChainIdInHex);\n this.startPolling({\n networkClientId,\n updatedQuoteRequest: {\n ...updatedQuoteRequest,\n walletAddress,\n insufficientBal,\n },\n });\n }\n };\n\n readonly #hasSufficientBalance = async (quoteRequest: QuoteRequest) => {\n const walletAddress = this.#getSelectedAccount().address;\n const srcChainIdInHex = numberToHex(quoteRequest.srcChainId);\n const provider = this.#getSelectedNetworkClient()?.provider;\n\n return (\n provider &&\n (await hasSufficientBalance(\n provider,\n walletAddress,\n quoteRequest.srcTokenAddress,\n quoteRequest.srcTokenAmount,\n srcChainIdInHex,\n ))\n );\n };\n\n resetState = () => {\n this.stopAllPolling();\n this.#abortController?.abort(RESET_STATE_ABORT_MESSAGE);\n\n this.update((state) => {\n // Cannot do direct assignment to state, i.e. state = {... }, need to manually assign each field\n state.quoteRequest = DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest;\n state.quotesInitialLoadTime =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesInitialLoadTime;\n state.quotes = DEFAULT_BRIDGE_CONTROLLER_STATE.quotes;\n state.quotesLastFetched =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesLastFetched;\n state.quotesLoadingStatus =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesLoadingStatus;\n state.quoteFetchError = DEFAULT_BRIDGE_CONTROLLER_STATE.quoteFetchError;\n state.quotesRefreshCount =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesRefreshCount;\n\n // Keep feature flags\n const originalFeatureFlags = state.bridgeFeatureFlags;\n state.bridgeFeatureFlags = originalFeatureFlags;\n });\n };\n\n setBridgeFeatureFlags = async () => {\n const bridgeFeatureFlags = await fetchBridgeFeatureFlags(\n this.#clientId,\n this.#fetchFn,\n this.#config.customBridgeApiBaseUrl ?? BRIDGE_PROD_API_BASE_URL,\n );\n this.update((state) => {\n state.bridgeFeatureFlags = bridgeFeatureFlags;\n });\n this.setIntervalLength(\n bridgeFeatureFlags[BridgeFeatureFlagsKey.EXTENSION_CONFIG].refreshRate,\n );\n };\n\n readonly #fetchBridgeQuotes = async ({\n networkClientId: _networkClientId,\n updatedQuoteRequest,\n }: BridgePollingInput) => {\n const { bridgeFeatureFlags, quotesInitialLoadTime, quotesRefreshCount } =\n this.state;\n this.#abortController?.abort('New quote request');\n this.#abortController = new AbortController();\n if (updatedQuoteRequest.srcChainId === updatedQuoteRequest.destChainId) {\n return;\n }\n this.update((state) => {\n state.quotesLoadingStatus = RequestStatus.LOADING;\n state.quoteRequest = updatedQuoteRequest;\n state.quoteFetchError = DEFAULT_BRIDGE_CONTROLLER_STATE.quoteFetchError;\n });\n\n try {\n const quotes = await fetchBridgeQuotes(\n updatedQuoteRequest,\n // AbortController is always defined by this line, because we assign it a few lines above,\n // not sure why Jest thinks it's not\n // Linters accurately say that it's defined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.#abortController!.signal as AbortSignal,\n this.#clientId,\n this.#fetchFn,\n this.#config.customBridgeApiBaseUrl ?? BRIDGE_PROD_API_BASE_URL,\n );\n\n const quotesWithL1GasFees = await this.#appendL1GasFees(quotes);\n\n this.update((state) => {\n state.quotes = quotesWithL1GasFees;\n state.quotesLoadingStatus = RequestStatus.FETCHED;\n });\n } catch (error) {\n const isAbortError = (error as Error).name === 'AbortError';\n const isAbortedDueToReset = error === RESET_STATE_ABORT_MESSAGE;\n if (isAbortedDueToReset || isAbortError) {\n return;\n }\n\n this.update((state) => {\n state.quoteFetchError =\n error instanceof Error ? error.message : 'Unknown error';\n state.quotesLoadingStatus = RequestStatus.ERROR;\n });\n console.log('Failed to fetch bridge quotes', error);\n } finally {\n const { maxRefreshCount } =\n bridgeFeatureFlags[BridgeFeatureFlagsKey.EXTENSION_CONFIG];\n\n const updatedQuotesRefreshCount = quotesRefreshCount + 1;\n // Stop polling if the maximum number of refreshes has been reached\n if (\n updatedQuoteRequest.insufficientBal ||\n (!updatedQuoteRequest.insufficientBal &&\n updatedQuotesRefreshCount >= maxRefreshCount)\n ) {\n this.stopAllPolling();\n }\n\n // Update quote fetching stats\n const quotesLastFetched = Date.now();\n this.update((state) => {\n state.quotesInitialLoadTime =\n updatedQuotesRefreshCount === 1 && this.#quotesFirstFetched\n ? quotesLastFetched - this.#quotesFirstFetched\n : quotesInitialLoadTime;\n state.quotesLastFetched = quotesLastFetched;\n state.quotesRefreshCount = updatedQuotesRefreshCount;\n });\n }\n };\n\n readonly #appendL1GasFees = async (\n quotes: QuoteResponse[],\n ): Promise<(QuoteResponse & L1GasFees)[]> => {\n return await Promise.all(\n quotes.map(async (quoteResponse) => {\n const { quote, trade, approval } = quoteResponse;\n const chainId = numberToHex(quote.srcChainId) as ChainId;\n if (\n [CHAIN_IDS.OPTIMISM.toString(), CHAIN_IDS.BASE.toString()].includes(\n chainId,\n )\n ) {\n const getTxParams = (txData: TxData) => ({\n from: txData.from,\n to: txData.to,\n value: txData.value,\n data: txData.data,\n gasLimit: txData.gasLimit?.toString(),\n });\n const approvalL1GasFees = approval\n ? await this.#getLayer1GasFee({\n transactionParams: getTxParams(approval),\n chainId,\n })\n : '0';\n const tradeL1GasFees = await this.#getLayer1GasFee({\n transactionParams: getTxParams(trade),\n chainId,\n });\n return {\n ...quoteResponse,\n l1GasFeesInHexWei: sumHexes(approvalL1GasFees, tradeL1GasFees),\n };\n }\n return quoteResponse;\n }),\n );\n };\n\n #getSelectedAccount() {\n return this.messagingSystem.call('AccountsController:getSelectedAccount');\n }\n\n #getSelectedNetworkClient() {\n const { selectedNetworkClientId } = this.messagingSystem.call(\n 'NetworkController:getState',\n );\n const networkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n selectedNetworkClientId,\n );\n return networkClient;\n }\n\n #getSelectedNetworkClientId(chainId: Hex) {\n return this.messagingSystem.call(\n 'NetworkController:findNetworkClientIdByChainId',\n chainId,\n );\n }\n\n /**\n *\n * @param contractAddress - The address of the ERC20 token contract\n * @param chainId - The hex chain ID of the bridge network\n * @returns The atomic allowance of the ERC20 token contract\n */\n getBridgeERC20Allowance = async (\n contractAddress: string,\n chainId: Hex,\n ): Promise<string> => {\n const provider = this.#getSelectedNetworkClient()?.provider;\n if (!provider) {\n throw new Error('No provider found');\n }\n\n const ethersProvider = new Web3Provider(provider);\n const contract = new Contract(contractAddress, abiERC20, ethersProvider);\n const { address: walletAddress } = this.#getSelectedAccount();\n const allowance: BigNumber = await contract.allowance(\n walletAddress,\n METABRIDGE_CHAIN_TO_ADDRESS_MAP[chainId],\n );\n return allowance.toString();\n };\n}\n"]}
1
+ {"version":3,"file":"bridge-controller.mjs","sourceRoot":"","sources":["../src/bridge-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,QAAQ,EAAE,iCAAiC;AACpD,OAAO,EAAE,YAAY,EAAE,iCAAiC;AAGxD,OAAO,EAAE,QAAQ,EAAE,oCAAoC;AAEvD,OAAO,EAAE,+BAA+B,EAAE,qCAAqC;AAE/E,OAAO,EAAE,WAAW,EAAE,8BAA8B;AAEpD,OAAO,EAAE,WAAW,EAAE,wBAAwB;AAG9C,OAAO,EAEL,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,EAC/B,+BAA+B,EAC/B,mBAAmB,EACpB,+BAA2B;AAC5B,OAAO,EAAE,SAAS,EAAE,+BAA2B;AAE/C,OAAO,EAOL,qBAAqB,EACrB,aAAa,EACd,oBAAgB;AACjB,OAAO,EAAE,oBAAoB,EAAE,4BAAwB;AACvD,OAAO,EACL,+BAA+B,EAC/B,eAAe,EACf,QAAQ,EACT,2BAAuB;AACxB,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,kBAAkB,EACnB,oCAAgC;AACjC,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,0BAAsB;AAC3E,OAAO,EAAE,mBAAmB,EAAE,0BAAsB;AAEpD,MAAM,QAAQ,GAAyC;IACrD,kBAAkB,EAAE;QAClB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;KACjB;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;KACjB;IACD,MAAM,EAAE;QACN,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;KACjB;IACD,qBAAqB,EAAE;QACrB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;KACjB;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;KACjB;IACD,mBAAmB,EAAE;QACnB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;KACjB;IACD,eAAe,EAAE;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;KACjB;IACD,kBAAkB,EAAE;QAClB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;KACjB;CACF,CAAC;AAEF,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAQ3D,MAAM,OAAO,gBAAiB,SAAQ,+BAA+B,EAIpE;IAkBC,YAAY,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,eAAe,EACf,OAAO,EACP,MAAM,GAaP;QACC,KAAK,CAAC;YACJ,IAAI,EAAE,sBAAsB;YAC5B,QAAQ;YACR,SAAS;YACT,KAAK,EAAE;gBACL,GAAG,+BAA+B,EAAE;gBACpC,GAAG,KAAK;aACT;SACF,CAAC,CAAC;;QA7CL,oDAA8C;QAE9C,uDAAwC;QAE/B,6CAAkB;QAElB,oDAGa;QAEb,4CAAwB;QAExB,2CAEP;QA2DF,iBAAY,GAAG,KAAK,EAAE,YAAgC,EAAE,EAAE;YACxD,MAAM,uBAAA,IAAI,2CAAmB,MAAvB,IAAI,EAAoB,YAAY,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,mCAA8B,GAAG,KAAK,EACpC,cAA4C,EAC5C,EAAE;YACF,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,uBAAA,IAAI,yCAAiB,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAEtD,MAAM,mBAAmB,GAAG;gBAC1B,GAAG,+BAA+B,CAAC,YAAY;gBAC/C,GAAG,cAAc;aAClB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpB,KAAK,CAAC,YAAY,GAAG,mBAAmB,CAAC;gBACzC,KAAK,CAAC,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC;gBACtD,KAAK,CAAC,iBAAiB;oBACrB,+BAA+B,CAAC,iBAAiB,CAAC;gBACpD,KAAK,CAAC,mBAAmB;oBACvB,+BAA+B,CAAC,mBAAmB,CAAC;gBACtD,KAAK,CAAC,eAAe,GAAG,+BAA+B,CAAC,eAAe,CAAC;gBACxE,KAAK,CAAC,kBAAkB;oBACtB,+BAA+B,CAAC,kBAAkB,CAAC;gBACrD,KAAK,CAAC,qBAAqB;oBACzB,+BAA+B,CAAC,qBAAqB,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,EAAE;gBAC5C,uBAAA,IAAI,wCAAuB,IAAI,CAAC,GAAG,EAAE,MAAA,CAAC;gBACtC,MAAM,cAAc,GAAG,uBAAA,IAAI,+EAA0B,MAA9B,IAAI,CAA4B,EAAE,aAAa,CAAC;gBAEvE,IAAI,eAAoC,CAAC;gBACzC,IAAI,eAAe,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE;oBACnD,mEAAmE;oBACnE,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC;iBAClD;qBAAM,IAAI,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACvD,yEAAyE;oBACzE,mIAAmI;oBACnI,eAAe,GAAG,IAAI,CAAC;iBACxB;qBAAM;oBACL,8DAA8D;oBAC9D,eAAe;wBACb,cAAc,CAAC,eAAe;4BAC9B,CAAC,CAAC,MAAM,uBAAA,IAAI,8CAAsB,MAA1B,IAAI,EAAuB,mBAAmB,CAAC,CAAC,CAAC;iBAC5D;gBAED,MAAM,eAAe,GAAG,uBAAA,IAAI,iFAA4B,MAAhC,IAAI,CAA8B,CAAC;gBAC3D,qEAAqE;gBACrE,uBAAA,IAAI,2CAAmB,MAAvB,IAAI,CAAqB,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC;oBAChB,eAAe;oBACf,mBAAmB,EAAE;wBACnB,GAAG,mBAAmB;wBACtB,eAAe;qBAChB;iBACF,CAAC,CAAC;aACJ;QACH,CAAC,CAAC;QAEO,iDAAwB,KAAK,EACpC,YAAiC,EACjC,EAAE;YACF,MAAM,aAAa,GAAG,uBAAA,IAAI,mFAA8B,MAAlC,IAAI,CAAgC,EAAE,OAAO,CAAC;YACpE,MAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,uBAAA,IAAI,+EAA0B,MAA9B,IAAI,CAA4B,EAAE,QAAQ,CAAC;YAC5D,MAAM,yBAAyB,GAAG,4BAA4B,CAC5D,YAAY,CAAC,eAAe,CAC7B,CAAC;YAEF,OAAO,CACL,QAAQ;gBACR,aAAa;gBACb,yBAAyB;gBACzB,YAAY,CAAC,cAAc;gBAC3B,eAAe;gBACf,CAAC,MAAM,oBAAoB,CACzB,QAAQ,EACR,aAAa,EACb,yBAAyB,EACzB,YAAY,CAAC,cAAc,EAC3B,eAAe,CAChB,CAAC,CACH,CAAC;QACJ,CAAC,EAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,uBAAA,IAAI,yCAAiB,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAExD,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpB,gGAAgG;gBAChG,KAAK,CAAC,YAAY,GAAG,+BAA+B,CAAC,YAAY,CAAC;gBAClE,KAAK,CAAC,qBAAqB;oBACzB,+BAA+B,CAAC,qBAAqB,CAAC;gBACxD,KAAK,CAAC,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC;gBACtD,KAAK,CAAC,iBAAiB;oBACrB,+BAA+B,CAAC,iBAAiB,CAAC;gBACpD,KAAK,CAAC,mBAAmB;oBACvB,+BAA+B,CAAC,mBAAmB,CAAC;gBACtD,KAAK,CAAC,eAAe,GAAG,+BAA+B,CAAC,eAAe,CAAC;gBACxE,KAAK,CAAC,kBAAkB;oBACtB,+BAA+B,CAAC,kBAAkB,CAAC;gBAErD,qBAAqB;gBACrB,MAAM,oBAAoB,GAAG,KAAK,CAAC,kBAAkB,CAAC;gBACtD,KAAK,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,0BAAqB,GAAG,KAAK,IAAI,EAAE;YACjC,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CACtD,uBAAA,IAAI,kCAAU,EACd,uBAAA,IAAI,iCAAS,EACb,uBAAA,IAAI,gCAAQ,CAAC,sBAAsB,IAAI,wBAAwB,CAChE,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpB,KAAK,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;YAChD,CAAC,CAAC,CAAC;YACH,uBAAA,IAAI,2CAAmB,MAAvB,IAAI,CAAqB,CAAC;QAC5B,CAAC,CAAC;QAEF;;WAEG;QACM,8CAAqB,GAAG,EAAE;YACjC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YACvB,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;YAC1C,MAAM,mBAAmB,GAAG,UAAU;gBACpC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,MAAM,CACrE,mBAAmB,CAAC,UAAU,CAAC,CAChC,EAAE,WAAW;gBAChB,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,kBAAkB,GACtB,KAAK,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;iBAC7D,WAAW,CAAC;YACjB,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,IAAI,kBAAkB,CAAC,CAAC;QACpE,CAAC,EAAC;QAEO,8CAAqB,KAAK,EAAE,EACnC,eAAe,EAAE,gBAAgB,EACjC,mBAAmB,GACA,EAAE,EAAE;YACvB,MAAM,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,GACrE,IAAI,CAAC,KAAK,CAAC;YACb,uBAAA,IAAI,yCAAiB,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAClD,uBAAA,IAAI,qCAAoB,IAAI,eAAe,EAAE,MAAA,CAAC;YAE9C,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpB,KAAK,CAAC,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC;gBAClD,KAAK,CAAC,YAAY,GAAG,mBAAmB,CAAC;gBACzC,KAAK,CAAC,eAAe,GAAG,+BAA+B,CAAC,eAAe,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,mBAAmB;gBACnB,0FAA0F;gBAC1F,oCAAoC;gBACpC,2CAA2C;gBAC3C,oEAAoE;gBACpE,uBAAA,IAAI,yCAAkB,CAAC,MAAqB,EAC5C,uBAAA,IAAI,kCAAU,EACd,uBAAA,IAAI,iCAAS,EACb,uBAAA,IAAI,gCAAQ,CAAC,sBAAsB,IAAI,wBAAwB,CAChE,CAAC;gBAEF,MAAM,mBAAmB,GAAG,MAAM,uBAAA,IAAI,yCAAiB,MAArB,IAAI,EAAkB,MAAM,CAAC,CAAC;gBAChE,MAAM,oBAAoB,GAAG,MAAM,uBAAA,IAAI,0CAAkB,MAAtB,IAAI,EAAmB,MAAM,CAAC,CAAC;gBAElE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;oBACpB,KAAK,CAAC,MAAM,GAAG,mBAAmB,IAAI,oBAAoB,IAAI,MAAM,CAAC;oBACrE,KAAK,CAAC,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC;gBACpD,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,YAAY,GAAI,KAAe,CAAC,IAAI,KAAK,YAAY,CAAC;gBAC5D,MAAM,mBAAmB,GAAG,KAAK,KAAK,yBAAyB,CAAC;gBAChE,IAAI,mBAAmB,IAAI,YAAY,EAAE;oBACvC,OAAO;iBACR;gBAED,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;oBACpB,KAAK,CAAC,eAAe;wBACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBAC3D,KAAK,CAAC,mBAAmB,GAAG,aAAa,CAAC,KAAK,CAAC;oBAChD,KAAK,CAAC,MAAM,GAAG,+BAA+B,CAAC,MAAM,CAAC;gBACxD,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;aACrD;oBAAS;gBACR,MAAM,EAAE,eAAe,EAAE,GACvB,kBAAkB,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;gBAE7D,MAAM,yBAAyB,GAAG,kBAAkB,GAAG,CAAC,CAAC;gBACzD,mEAAmE;gBACnE,IACE,mBAAmB,CAAC,eAAe;oBACnC,CAAC,CAAC,mBAAmB,CAAC,eAAe;wBACnC,yBAAyB,IAAI,eAAe,CAAC,EAC/C;oBACA,IAAI,CAAC,cAAc,EAAE,CAAC;iBACvB;gBAED,8BAA8B;gBAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;oBACpB,KAAK,CAAC,qBAAqB;wBACzB,yBAAyB,KAAK,CAAC,IAAI,uBAAA,IAAI,4CAAoB;4BACzD,CAAC,CAAC,iBAAiB,GAAG,uBAAA,IAAI,4CAAoB;4BAC9C,CAAC,CAAC,qBAAqB,CAAC;oBAC5B,KAAK,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;oBAC5C,KAAK,CAAC,kBAAkB,GAAG,yBAAyB,CAAC;gBACvD,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,EAAC;QAEO,4CAAmB,KAAK,EAC/B,MAAuB,EAC6B,EAAE;YACtD,oEAAoE;YACpE,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACtD,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC;qBACzC,GAAG,CAAC,mBAAmB,CAAC;qBACxB,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,wEAAwE;YACxE,IAAI,CAAC,gBAAgB,EAAE;gBACrB,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;oBACjC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;oBACjD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAY,CAAC;oBAEzD,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;wBACvC,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE;qBACtC,CAAC,CAAC;oBACH,MAAM,iBAAiB,GAAG,QAAQ;wBAChC,CAAC,CAAC,MAAM,uBAAA,IAAI,yCAAiB,MAArB,IAAI,EAAkB;4BAC1B,iBAAiB,EAAE,WAAW,CAAC,QAAQ,CAAC;4BACxC,OAAO;yBACR,CAAC;wBACJ,CAAC,CAAC,GAAG,CAAC;oBACR,MAAM,cAAc,GAAG,MAAM,uBAAA,IAAI,yCAAiB,MAArB,IAAI,EAAkB;wBACjD,iBAAiB,EAAE,WAAW,CAAC,KAAK,CAAC;wBACrC,OAAO;qBACR,CAAC,CAAC;oBACH,OAAO;wBACL,GAAG,aAAa;wBAChB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,cAAc,CAAC;qBAC/D,CAAC;gBACJ,CAAC,CAAC,CACH,CAAC;aACH;YAED,OAAO,SAAS,CAAC;QACnB,CAAC,EAAC;QAEO,6CAAoB,KAAK,EAChC,MAAuB,EAC8B,EAAE;YACvD,wDAAwD;YACxD,IACE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EACxE;gBACA,OAAO,SAAS,CAAC;aAClB;YAED,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBACjC,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;gBAChC,MAAM,eAAe,GAAG,uBAAA,IAAI,mFAA8B,MAAlC,IAAI,CAAgC,CAAC;gBAE7D,IAAI,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBACpE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CACtD,8BAA8B,EAC9B;wBACE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAY;wBAClD,MAAM,EAAE,UAAU;wBAClB,OAAO,EAAE,WAAW,CAAC,YAAY;wBACjC,OAAO,EAAE;4BACP,MAAM,EAAE,sBAAsB;4BAC9B,MAAM,EAAE;gCACN,WAAW,EAAE,KAAK;gCAClB,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK;6BACrC;yBACF;qBACF,CACF,CAAsB,CAAC;oBAExB,OAAO;wBACL,GAAG,aAAa;wBAChB,oBAAoB,EAAE,IAAI;qBAC3B,CAAC;iBACH;gBACD,OAAO,aAAa,CAAC;YACvB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,EAAC;QAwBF;;;;;WAKG;QACH,4BAAuB,GAAG,KAAK,EAC7B,eAAuB,EACvB,OAAY,EACK,EAAE;YACnB,MAAM,QAAQ,GAAG,uBAAA,IAAI,+EAA0B,MAA9B,IAAI,CAA4B,EAAE,QAAQ,CAAC;YAC5D,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;aACtC;YAED,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,eAAe,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YACzE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAC9B,uBAAA,IAAI,mFAA8B,MAAlC,IAAI,CAAgC,IAAI,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAc,MAAM,QAAQ,CAAC,SAAS,CACnD,aAAa,EACb,+BAA+B,CAAC,OAAO,CAAC,CACzC,CAAC;YACF,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC,CAAC;QAzXA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QAE5C,uBAAA,IAAI,qCAAoB,IAAI,eAAe,EAAE,MAAA,CAAC;QAC9C,uBAAA,IAAI,qCAAoB,eAAe,MAAA,CAAC;QACxC,uBAAA,IAAI,8BAAa,QAAQ,MAAA,CAAC;QAC1B,uBAAA,IAAI,6BAAY,OAAO,MAAA,CAAC;QACxB,uBAAA,IAAI,4BAAW,MAAM,IAAI,EAAE,MAAA,CAAC;QAE5B,2BAA2B;QAC3B,IAAI,CAAC,eAAe,CAAC,qBAAqB,CACxC,GAAG,sBAAsB,wBAAwB,EACjD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CACtC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,qBAAqB,CACxC,GAAG,sBAAsB,iCAAiC,EAC1D,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/C,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,qBAAqB,CACxC,GAAG,sBAAsB,aAAa,EACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,qBAAqB,CACxC,GAAG,sBAAsB,0BAA0B,EACnD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CACxC,CAAC;IACJ,CAAC;CAiWF;;IA9CG,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9B,iDAAiD,CAClD,CAAC;AACJ,CAAC;IAGC,MAAM,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAC3D,4BAA4B,CAC7B,CAAC;IACF,OAAO,uBAAuB,CAAC;AACjC,CAAC;IAGC,MAAM,uBAAuB,GAAG,uBAAA,IAAI,iFAA4B,MAAhC,IAAI,CAA8B,CAAC;IACnE,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAC7C,wCAAwC,EACxC,uBAAuB,CACxB,CAAC;IACF,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import type { BigNumber } from '@ethersproject/bignumber';\nimport { Contract } from '@ethersproject/contracts';\nimport { Web3Provider } from '@ethersproject/providers';\nimport type { StateMetadata } from '@metamask/base-controller';\nimport type { ChainId } from '@metamask/controller-utils';\nimport { abiERC20 } from '@metamask/metamask-eth-abis';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport { StaticIntervalPollingController } from '@metamask/polling-controller';\nimport { type SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { TransactionParams } from '@metamask/transaction-controller';\nimport { numberToHex } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n type BridgeClientId,\n BRIDGE_CONTROLLER_NAME,\n BRIDGE_PROD_API_BASE_URL,\n DEFAULT_BRIDGE_CONTROLLER_STATE,\n METABRIDGE_CHAIN_TO_ADDRESS_MAP,\n REFRESH_INTERVAL_MS,\n} from './constants/bridge';\nimport { CHAIN_IDS } from './constants/chains';\nimport type { GenericQuoteRequest, SolanaFees } from './types';\nimport {\n type L1GasFees,\n type QuoteResponse,\n type TxData,\n type BridgeControllerState,\n type BridgeControllerMessenger,\n type FetchFunction,\n BridgeFeatureFlagsKey,\n RequestStatus,\n} from './types';\nimport { hasSufficientBalance } from './utils/balance';\nimport {\n getDefaultBridgeControllerState,\n isSolanaChainId,\n sumHexes,\n} from './utils/bridge';\nimport {\n formatAddressToCaipReference,\n formatChainIdToCaip,\n formatChainIdToHex,\n} from './utils/caip-formatters';\nimport { fetchBridgeFeatureFlags, fetchBridgeQuotes } from './utils/fetch';\nimport { isValidQuoteRequest } from './utils/quote';\n\nconst metadata: StateMetadata<BridgeControllerState> = {\n bridgeFeatureFlags: {\n persist: false,\n anonymous: false,\n },\n quoteRequest: {\n persist: false,\n anonymous: false,\n },\n quotes: {\n persist: false,\n anonymous: false,\n },\n quotesInitialLoadTime: {\n persist: false,\n anonymous: false,\n },\n quotesLastFetched: {\n persist: false,\n anonymous: false,\n },\n quotesLoadingStatus: {\n persist: false,\n anonymous: false,\n },\n quoteFetchError: {\n persist: false,\n anonymous: false,\n },\n quotesRefreshCount: {\n persist: false,\n anonymous: false,\n },\n};\n\nconst RESET_STATE_ABORT_MESSAGE = 'Reset controller state';\n\n/** The input to start polling for the {@link BridgeController} */\ntype BridgePollingInput = {\n networkClientId: NetworkClientId;\n updatedQuoteRequest: GenericQuoteRequest;\n};\n\nexport class BridgeController extends StaticIntervalPollingController<BridgePollingInput>()<\n typeof BRIDGE_CONTROLLER_NAME,\n BridgeControllerState,\n BridgeControllerMessenger\n> {\n #abortController: AbortController | undefined;\n\n #quotesFirstFetched: number | undefined;\n\n readonly #clientId: string;\n\n readonly #getLayer1GasFee: (params: {\n transactionParams: TransactionParams;\n chainId: ChainId;\n }) => Promise<string>;\n\n readonly #fetchFn: FetchFunction;\n\n readonly #config: {\n customBridgeApiBaseUrl?: string;\n };\n\n constructor({\n messenger,\n state,\n clientId,\n getLayer1GasFee,\n fetchFn,\n config,\n }: {\n messenger: BridgeControllerMessenger;\n state?: Partial<BridgeControllerState>;\n clientId: BridgeClientId;\n getLayer1GasFee: (params: {\n transactionParams: TransactionParams;\n chainId: ChainId;\n }) => Promise<string>;\n fetchFn: FetchFunction;\n config?: {\n customBridgeApiBaseUrl?: string;\n };\n }) {\n super({\n name: BRIDGE_CONTROLLER_NAME,\n metadata,\n messenger,\n state: {\n ...getDefaultBridgeControllerState(),\n ...state,\n },\n });\n\n this.setIntervalLength(REFRESH_INTERVAL_MS);\n\n this.#abortController = new AbortController();\n this.#getLayer1GasFee = getLayer1GasFee;\n this.#clientId = clientId;\n this.#fetchFn = fetchFn;\n this.#config = config ?? {};\n\n // Register action handlers\n this.messagingSystem.registerActionHandler(\n `${BRIDGE_CONTROLLER_NAME}:setBridgeFeatureFlags`,\n this.setBridgeFeatureFlags.bind(this),\n );\n this.messagingSystem.registerActionHandler(\n `${BRIDGE_CONTROLLER_NAME}:updateBridgeQuoteRequestParams`,\n this.updateBridgeQuoteRequestParams.bind(this),\n );\n this.messagingSystem.registerActionHandler(\n `${BRIDGE_CONTROLLER_NAME}:resetState`,\n this.resetState.bind(this),\n );\n this.messagingSystem.registerActionHandler(\n `${BRIDGE_CONTROLLER_NAME}:getBridgeERC20Allowance`,\n this.getBridgeERC20Allowance.bind(this),\n );\n }\n\n _executePoll = async (pollingInput: BridgePollingInput) => {\n await this.#fetchBridgeQuotes(pollingInput);\n };\n\n updateBridgeQuoteRequestParams = async (\n paramsToUpdate: Partial<GenericQuoteRequest>,\n ) => {\n this.stopAllPolling();\n this.#abortController?.abort('Quote request updated');\n\n const updatedQuoteRequest = {\n ...DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest,\n ...paramsToUpdate,\n };\n\n this.update((state) => {\n state.quoteRequest = updatedQuoteRequest;\n state.quotes = DEFAULT_BRIDGE_CONTROLLER_STATE.quotes;\n state.quotesLastFetched =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesLastFetched;\n state.quotesLoadingStatus =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesLoadingStatus;\n state.quoteFetchError = DEFAULT_BRIDGE_CONTROLLER_STATE.quoteFetchError;\n state.quotesRefreshCount =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesRefreshCount;\n state.quotesInitialLoadTime =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesInitialLoadTime;\n });\n\n if (isValidQuoteRequest(updatedQuoteRequest)) {\n this.#quotesFirstFetched = Date.now();\n const providerConfig = this.#getSelectedNetworkClient()?.configuration;\n\n let insufficientBal: boolean | undefined;\n if (isSolanaChainId(updatedQuoteRequest.srcChainId)) {\n // If the source chain is not an EVM network, use value from params\n insufficientBal = paramsToUpdate.insufficientBal;\n } else if (providerConfig?.rpcUrl?.includes('tenderly')) {\n // If the rpcUrl is a tenderly fork (e2e tests), set insufficientBal=true\n // The bridge-api filters out quotes if the balance on mainnet is insufficient so this override allows quotes to always be returned\n insufficientBal = true;\n } else {\n // Otherwise query the src token balance from the RPC provider\n insufficientBal =\n paramsToUpdate.insufficientBal ??\n !(await this.#hasSufficientBalance(updatedQuoteRequest));\n }\n\n const networkClientId = this.#getSelectedNetworkClientId();\n // Set refresh rate based on the source chain before starting polling\n this.#setIntervalLength();\n this.startPolling({\n networkClientId,\n updatedQuoteRequest: {\n ...updatedQuoteRequest,\n insufficientBal,\n },\n });\n }\n };\n\n readonly #hasSufficientBalance = async (\n quoteRequest: GenericQuoteRequest,\n ) => {\n const walletAddress = this.#getMultichainSelectedAccount()?.address;\n const srcChainIdInHex = formatChainIdToHex(quoteRequest.srcChainId);\n const provider = this.#getSelectedNetworkClient()?.provider;\n const normalizedSrcTokenAddress = formatAddressToCaipReference(\n quoteRequest.srcTokenAddress,\n );\n\n return (\n provider &&\n walletAddress &&\n normalizedSrcTokenAddress &&\n quoteRequest.srcTokenAmount &&\n srcChainIdInHex &&\n (await hasSufficientBalance(\n provider,\n walletAddress,\n normalizedSrcTokenAddress,\n quoteRequest.srcTokenAmount,\n srcChainIdInHex,\n ))\n );\n };\n\n resetState = () => {\n this.stopAllPolling();\n this.#abortController?.abort(RESET_STATE_ABORT_MESSAGE);\n\n this.update((state) => {\n // Cannot do direct assignment to state, i.e. state = {... }, need to manually assign each field\n state.quoteRequest = DEFAULT_BRIDGE_CONTROLLER_STATE.quoteRequest;\n state.quotesInitialLoadTime =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesInitialLoadTime;\n state.quotes = DEFAULT_BRIDGE_CONTROLLER_STATE.quotes;\n state.quotesLastFetched =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesLastFetched;\n state.quotesLoadingStatus =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesLoadingStatus;\n state.quoteFetchError = DEFAULT_BRIDGE_CONTROLLER_STATE.quoteFetchError;\n state.quotesRefreshCount =\n DEFAULT_BRIDGE_CONTROLLER_STATE.quotesRefreshCount;\n\n // Keep feature flags\n const originalFeatureFlags = state.bridgeFeatureFlags;\n state.bridgeFeatureFlags = originalFeatureFlags;\n });\n };\n\n setBridgeFeatureFlags = async () => {\n const bridgeFeatureFlags = await fetchBridgeFeatureFlags(\n this.#clientId,\n this.#fetchFn,\n this.#config.customBridgeApiBaseUrl ?? BRIDGE_PROD_API_BASE_URL,\n );\n this.update((state) => {\n state.bridgeFeatureFlags = bridgeFeatureFlags;\n });\n this.#setIntervalLength();\n };\n\n /**\n * Sets the interval length based on the source chain\n */\n readonly #setIntervalLength = () => {\n const { state } = this;\n const { srcChainId } = state.quoteRequest;\n const refreshRateOverride = srcChainId\n ? state.bridgeFeatureFlags[BridgeFeatureFlagsKey.EXTENSION_CONFIG].chains[\n formatChainIdToCaip(srcChainId)\n ]?.refreshRate\n : undefined;\n const defaultRefreshRate =\n state.bridgeFeatureFlags[BridgeFeatureFlagsKey.EXTENSION_CONFIG]\n .refreshRate;\n this.setIntervalLength(refreshRateOverride ?? defaultRefreshRate);\n };\n\n readonly #fetchBridgeQuotes = async ({\n networkClientId: _networkClientId,\n updatedQuoteRequest,\n }: BridgePollingInput) => {\n const { bridgeFeatureFlags, quotesInitialLoadTime, quotesRefreshCount } =\n this.state;\n this.#abortController?.abort('New quote request');\n this.#abortController = new AbortController();\n\n this.update((state) => {\n state.quotesLoadingStatus = RequestStatus.LOADING;\n state.quoteRequest = updatedQuoteRequest;\n state.quoteFetchError = DEFAULT_BRIDGE_CONTROLLER_STATE.quoteFetchError;\n });\n\n try {\n const quotes = await fetchBridgeQuotes(\n updatedQuoteRequest,\n // AbortController is always defined by this line, because we assign it a few lines above,\n // not sure why Jest thinks it's not\n // Linters accurately say that it's defined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.#abortController!.signal as AbortSignal,\n this.#clientId,\n this.#fetchFn,\n this.#config.customBridgeApiBaseUrl ?? BRIDGE_PROD_API_BASE_URL,\n );\n\n const quotesWithL1GasFees = await this.#appendL1GasFees(quotes);\n const quotesWithSolanaFees = await this.#appendSolanaFees(quotes);\n\n this.update((state) => {\n state.quotes = quotesWithL1GasFees ?? quotesWithSolanaFees ?? quotes;\n state.quotesLoadingStatus = RequestStatus.FETCHED;\n });\n } catch (error) {\n const isAbortError = (error as Error).name === 'AbortError';\n const isAbortedDueToReset = error === RESET_STATE_ABORT_MESSAGE;\n if (isAbortedDueToReset || isAbortError) {\n return;\n }\n\n this.update((state) => {\n state.quoteFetchError =\n error instanceof Error ? error.message : 'Unknown error';\n state.quotesLoadingStatus = RequestStatus.ERROR;\n state.quotes = DEFAULT_BRIDGE_CONTROLLER_STATE.quotes;\n });\n console.log('Failed to fetch bridge quotes', error);\n } finally {\n const { maxRefreshCount } =\n bridgeFeatureFlags[BridgeFeatureFlagsKey.EXTENSION_CONFIG];\n\n const updatedQuotesRefreshCount = quotesRefreshCount + 1;\n // Stop polling if the maximum number of refreshes has been reached\n if (\n updatedQuoteRequest.insufficientBal ||\n (!updatedQuoteRequest.insufficientBal &&\n updatedQuotesRefreshCount >= maxRefreshCount)\n ) {\n this.stopAllPolling();\n }\n\n // Update quote fetching stats\n const quotesLastFetched = Date.now();\n this.update((state) => {\n state.quotesInitialLoadTime =\n updatedQuotesRefreshCount === 1 && this.#quotesFirstFetched\n ? quotesLastFetched - this.#quotesFirstFetched\n : quotesInitialLoadTime;\n state.quotesLastFetched = quotesLastFetched;\n state.quotesRefreshCount = updatedQuotesRefreshCount;\n });\n }\n };\n\n readonly #appendL1GasFees = async (\n quotes: QuoteResponse[],\n ): Promise<(QuoteResponse & L1GasFees)[] | undefined> => {\n // Indicates whether some of the quotes are not for optimism or base\n const hasInvalidQuotes = quotes.some(({ quote }) => {\n const chainId = formatChainIdToCaip(quote.srcChainId);\n return ![CHAIN_IDS.OPTIMISM, CHAIN_IDS.BASE]\n .map(formatChainIdToCaip)\n .includes(chainId);\n });\n\n // Only append L1 gas fees if all quotes are for either optimism or base\n if (!hasInvalidQuotes) {\n return await Promise.all(\n quotes.map(async (quoteResponse) => {\n const { quote, trade, approval } = quoteResponse;\n const chainId = numberToHex(quote.srcChainId) as ChainId;\n\n const getTxParams = (txData: TxData) => ({\n from: txData.from,\n to: txData.to,\n value: txData.value,\n data: txData.data,\n gasLimit: txData.gasLimit?.toString(),\n });\n const approvalL1GasFees = approval\n ? await this.#getLayer1GasFee({\n transactionParams: getTxParams(approval),\n chainId,\n })\n : '0';\n const tradeL1GasFees = await this.#getLayer1GasFee({\n transactionParams: getTxParams(trade),\n chainId,\n });\n return {\n ...quoteResponse,\n l1GasFeesInHexWei: sumHexes(approvalL1GasFees, tradeL1GasFees),\n };\n }),\n );\n }\n\n return undefined;\n };\n\n readonly #appendSolanaFees = async (\n quotes: QuoteResponse[],\n ): Promise<(QuoteResponse & SolanaFees)[] | undefined> => {\n // Return early if some of the quotes are not for solana\n if (\n quotes.some(({ quote: { srcChainId } }) => !isSolanaChainId(srcChainId))\n ) {\n return undefined;\n }\n\n return await Promise.all(\n quotes.map(async (quoteResponse) => {\n const { trade } = quoteResponse;\n const selectedAccount = this.#getMultichainSelectedAccount();\n\n if (selectedAccount?.metadata?.snap?.id && typeof trade === 'string') {\n const { value: fees } = (await this.messagingSystem.call(\n 'SnapController:handleRequest',\n {\n snapId: selectedAccount.metadata.snap.id as SnapId,\n origin: 'metamask',\n handler: HandlerType.OnRpcRequest,\n request: {\n method: 'getFeeForTransaction',\n params: {\n transaction: trade,\n scope: selectedAccount.options.scope,\n },\n },\n },\n )) as { value: string };\n\n return {\n ...quoteResponse,\n solanaFeesInLamports: fees,\n };\n }\n return quoteResponse;\n }),\n );\n };\n\n #getMultichainSelectedAccount() {\n return this.messagingSystem.call(\n 'AccountsController:getSelectedMultichainAccount',\n );\n }\n\n #getSelectedNetworkClientId() {\n const { selectedNetworkClientId } = this.messagingSystem.call(\n 'NetworkController:getState',\n );\n return selectedNetworkClientId;\n }\n\n #getSelectedNetworkClient() {\n const selectedNetworkClientId = this.#getSelectedNetworkClientId();\n const networkClient = this.messagingSystem.call(\n 'NetworkController:getNetworkClientById',\n selectedNetworkClientId,\n );\n return networkClient;\n }\n\n /**\n *\n * @param contractAddress - The address of the ERC20 token contract\n * @param chainId - The hex chain ID of the bridge network\n * @returns The atomic allowance of the ERC20 token contract\n */\n getBridgeERC20Allowance = async (\n contractAddress: string,\n chainId: Hex,\n ): Promise<string> => {\n const provider = this.#getSelectedNetworkClient()?.provider;\n if (!provider) {\n throw new Error('No provider found');\n }\n\n const ethersProvider = new Web3Provider(provider);\n const contract = new Contract(contractAddress, abiERC20, ethersProvider);\n const { address: walletAddress } =\n this.#getMultichainSelectedAccount() ?? {};\n const allowance: BigNumber = await contract.allowance(\n walletAddress,\n METABRIDGE_CHAIN_TO_ADDRESS_MAP[chainId],\n );\n return allowance.toString();\n };\n}\n"]}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.METABRIDGE_CHAIN_TO_ADDRESS_MAP = exports.DEFAULT_BRIDGE_CONTROLLER_STATE = exports.DEFAULT_FEATURE_FLAG_CONFIG = exports.BRIDGE_CONTROLLER_NAME = exports.DEFAULT_MAX_REFRESH_COUNT = exports.REFRESH_INTERVAL_MS = exports.BRIDGE_MM_FEE_RATE = exports.BRIDGE_DEFAULT_SLIPPAGE = exports.BRIDGE_PREFERRED_GAS_ESTIMATE = exports.BRIDGE_QUOTE_MAX_RETURN_DIFFERENCE_PERCENTAGE = exports.BRIDGE_QUOTE_MAX_ETA_SECONDS = exports.METABRIDGE_ETHEREUM_ADDRESS = exports.ETH_USDT_ADDRESS = exports.BridgeClientId = exports.BRIDGE_PROD_API_BASE_URL = exports.BRIDGE_DEV_API_BASE_URL = exports.ALLOWED_BRIDGE_CHAIN_IDS = void 0;
4
4
  const constants_1 = require("@ethersproject/constants");
5
+ const keyring_api_1 = require("@metamask/keyring-api");
5
6
  const chains_1 = require("./chains.cjs");
6
7
  const types_1 = require("../types.cjs");
7
8
  // TODO read from feature flags
@@ -15,6 +16,7 @@ exports.ALLOWED_BRIDGE_CHAIN_IDS = [
15
16
  chains_1.CHAIN_IDS.ARBITRUM,
16
17
  chains_1.CHAIN_IDS.LINEA_MAINNET,
17
18
  chains_1.CHAIN_IDS.BASE,
19
+ keyring_api_1.SolScope.Mainnet,
18
20
  ];
19
21
  exports.BRIDGE_DEV_API_BASE_URL = 'https://bridge.dev-api.cx.metamask.io';
20
22
  exports.BRIDGE_PROD_API_BASE_URL = 'https://bridge.api.cx.metamask.io';
@@ -46,7 +48,6 @@ exports.DEFAULT_BRIDGE_CONTROLLER_STATE = {
46
48
  },
47
49
  quoteRequest: {
48
50
  srcTokenAddress: constants_1.AddressZero,
49
- slippage: exports.BRIDGE_DEFAULT_SLIPPAGE,
50
51
  },
51
52
  quotesInitialLoadTime: null,
52
53
  quotes: [],
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.cjs","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;AAGvD,yCAAqC;AAErC,wCAAiD;AAEjD,+BAA+B;AAClB,QAAA,wBAAwB,GAAG;IACtC,kBAAS,CAAC,OAAO;IACjB,kBAAS,CAAC,GAAG;IACb,kBAAS,CAAC,OAAO;IACjB,kBAAS,CAAC,UAAU;IACpB,kBAAS,CAAC,SAAS;IACnB,kBAAS,CAAC,QAAQ;IAClB,kBAAS,CAAC,QAAQ;IAClB,kBAAS,CAAC,aAAa;IACvB,kBAAS,CAAC,IAAI;CACf,CAAC;AAIW,QAAA,uBAAuB,GAAG,uCAAuC,CAAC;AAClE,QAAA,wBAAwB,GAAG,mCAAmC,CAAC;AAE5E,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAEY,QAAA,gBAAgB,GAAG,4CAA4C,CAAC;AAChE,QAAA,2BAA2B,GACtC,4CAA4C,CAAC;AAClC,QAAA,4BAA4B,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS;AACjD,QAAA,6CAA6C,GAAG,GAAG,CAAC,CAAC,2EAA2E;AAEhI,QAAA,6BAA6B,GAAG,MAAM,CAAC;AACvC,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAC9B,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAC3B,QAAA,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC;AAChC,QAAA,yBAAyB,GAAG,CAAC,CAAC;AAE9B,QAAA,sBAAsB,GAAG,kBAAkB,CAAC;AAE5C,QAAA,2BAA2B,GAAG;IACzC,WAAW,EAAE,2BAAmB;IAChC,eAAe,EAAE,iCAAyB;IAC1C,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,EAAE;CACX,CAAC;AAEW,QAAA,+BAA+B,GAA0B;IACpE,kBAAkB,EAAE;QAClB,CAAC,6BAAqB,CAAC,gBAAgB,CAAC,EAAE,mCAA2B;QACrE,CAAC,6BAAqB,CAAC,aAAa,CAAC,EAAE,mCAA2B;KACnE;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,uBAAW;QAC5B,QAAQ,EAAE,+BAAuB;KAClC;IACD,qBAAqB,EAAE,IAAI;IAC3B,MAAM,EAAE,EAAE;IACV,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,CAAC;CACtB,CAAC;AAEW,QAAA,+BAA+B,GAAwB;IAClE,CAAC,kBAAS,CAAC,OAAO,CAAC,EAAE,mCAA2B;CACjD,CAAC","sourcesContent":["import { AddressZero } from '@ethersproject/constants';\nimport type { Hex } from '@metamask/utils';\n\nimport { CHAIN_IDS } from './chains';\nimport type { BridgeControllerState } from '../types';\nimport { BridgeFeatureFlagsKey } from '../types';\n\n// TODO read from feature flags\nexport const ALLOWED_BRIDGE_CHAIN_IDS = [\n CHAIN_IDS.MAINNET,\n CHAIN_IDS.BSC,\n CHAIN_IDS.POLYGON,\n CHAIN_IDS.ZKSYNC_ERA,\n CHAIN_IDS.AVALANCHE,\n CHAIN_IDS.OPTIMISM,\n CHAIN_IDS.ARBITRUM,\n CHAIN_IDS.LINEA_MAINNET,\n CHAIN_IDS.BASE,\n];\n\nexport type AllowedBridgeChainIds = (typeof ALLOWED_BRIDGE_CHAIN_IDS)[number];\n\nexport const BRIDGE_DEV_API_BASE_URL = 'https://bridge.dev-api.cx.metamask.io';\nexport const BRIDGE_PROD_API_BASE_URL = 'https://bridge.api.cx.metamask.io';\n\nexport enum BridgeClientId {\n EXTENSION = 'extension',\n MOBILE = 'mobile',\n}\n\nexport const ETH_USDT_ADDRESS = '0xdac17f958d2ee523a2206206994597c13d831ec7';\nexport const METABRIDGE_ETHEREUM_ADDRESS =\n '0x0439e60F02a8900a951603950d8D4527f400C3f1';\nexport const BRIDGE_QUOTE_MAX_ETA_SECONDS = 60 * 60; // 1 hour\nexport const BRIDGE_QUOTE_MAX_RETURN_DIFFERENCE_PERCENTAGE = 0.5; // if a quote returns in x times less return than the best quote, ignore it\n\nexport const BRIDGE_PREFERRED_GAS_ESTIMATE = 'high';\nexport const BRIDGE_DEFAULT_SLIPPAGE = 0.5;\nexport const BRIDGE_MM_FEE_RATE = 0.875;\nexport const REFRESH_INTERVAL_MS = 30 * 1000;\nexport const DEFAULT_MAX_REFRESH_COUNT = 5;\n\nexport const BRIDGE_CONTROLLER_NAME = 'BridgeController';\n\nexport const DEFAULT_FEATURE_FLAG_CONFIG = {\n refreshRate: REFRESH_INTERVAL_MS,\n maxRefreshCount: DEFAULT_MAX_REFRESH_COUNT,\n support: false,\n chains: {},\n};\n\nexport const DEFAULT_BRIDGE_CONTROLLER_STATE: BridgeControllerState = {\n bridgeFeatureFlags: {\n [BridgeFeatureFlagsKey.EXTENSION_CONFIG]: DEFAULT_FEATURE_FLAG_CONFIG,\n [BridgeFeatureFlagsKey.MOBILE_CONFIG]: DEFAULT_FEATURE_FLAG_CONFIG,\n },\n quoteRequest: {\n srcTokenAddress: AddressZero,\n slippage: BRIDGE_DEFAULT_SLIPPAGE,\n },\n quotesInitialLoadTime: null,\n quotes: [],\n quotesLastFetched: null,\n quotesLoadingStatus: null,\n quoteFetchError: null,\n quotesRefreshCount: 0,\n};\n\nexport const METABRIDGE_CHAIN_TO_ADDRESS_MAP: Record<Hex, string> = {\n [CHAIN_IDS.MAINNET]: METABRIDGE_ETHEREUM_ADDRESS,\n};\n"]}
1
+ {"version":3,"file":"bridge.cjs","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;AACvD,uDAAiD;AAGjD,yCAAqC;AAErC,wCAAiD;AAEjD,+BAA+B;AAClB,QAAA,wBAAwB,GAAG;IACtC,kBAAS,CAAC,OAAO;IACjB,kBAAS,CAAC,GAAG;IACb,kBAAS,CAAC,OAAO;IACjB,kBAAS,CAAC,UAAU;IACpB,kBAAS,CAAC,SAAS;IACnB,kBAAS,CAAC,QAAQ;IAClB,kBAAS,CAAC,QAAQ;IAClB,kBAAS,CAAC,aAAa;IACvB,kBAAS,CAAC,IAAI;IACd,sBAAQ,CAAC,OAAO;CACR,CAAC;AAIE,QAAA,uBAAuB,GAAG,uCAAuC,CAAC;AAClE,QAAA,wBAAwB,GAAG,mCAAmC,CAAC;AAE5E,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAEY,QAAA,gBAAgB,GAAG,4CAA4C,CAAC;AAChE,QAAA,2BAA2B,GACtC,4CAA4C,CAAC;AAClC,QAAA,4BAA4B,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS;AACjD,QAAA,6CAA6C,GAAG,GAAG,CAAC,CAAC,2EAA2E;AAEhI,QAAA,6BAA6B,GAAG,MAAM,CAAC;AACvC,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAC9B,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAC3B,QAAA,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC;AAChC,QAAA,yBAAyB,GAAG,CAAC,CAAC;AAE9B,QAAA,sBAAsB,GAAG,kBAAkB,CAAC;AAE5C,QAAA,2BAA2B,GAAG;IACzC,WAAW,EAAE,2BAAmB;IAChC,eAAe,EAAE,iCAAyB;IAC1C,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,EAAE;CACX,CAAC;AAEW,QAAA,+BAA+B,GAA0B;IACpE,kBAAkB,EAAE;QAClB,CAAC,6BAAqB,CAAC,gBAAgB,CAAC,EAAE,mCAA2B;QACrE,CAAC,6BAAqB,CAAC,aAAa,CAAC,EAAE,mCAA2B;KACnE;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,uBAAW;KAC7B;IACD,qBAAqB,EAAE,IAAI;IAC3B,MAAM,EAAE,EAAE;IACV,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,CAAC;CACtB,CAAC;AAEW,QAAA,+BAA+B,GAAwB;IAClE,CAAC,kBAAS,CAAC,OAAO,CAAC,EAAE,mCAA2B;CACjD,CAAC","sourcesContent":["import { AddressZero } from '@ethersproject/constants';\nimport { SolScope } from '@metamask/keyring-api';\nimport type { Hex } from '@metamask/utils';\n\nimport { CHAIN_IDS } from './chains';\nimport type { BridgeControllerState } from '../types';\nimport { BridgeFeatureFlagsKey } from '../types';\n\n// TODO read from feature flags\nexport const ALLOWED_BRIDGE_CHAIN_IDS = [\n CHAIN_IDS.MAINNET,\n CHAIN_IDS.BSC,\n CHAIN_IDS.POLYGON,\n CHAIN_IDS.ZKSYNC_ERA,\n CHAIN_IDS.AVALANCHE,\n CHAIN_IDS.OPTIMISM,\n CHAIN_IDS.ARBITRUM,\n CHAIN_IDS.LINEA_MAINNET,\n CHAIN_IDS.BASE,\n SolScope.Mainnet,\n] as const;\n\nexport type AllowedBridgeChainIds = (typeof ALLOWED_BRIDGE_CHAIN_IDS)[number];\n\nexport const BRIDGE_DEV_API_BASE_URL = 'https://bridge.dev-api.cx.metamask.io';\nexport const BRIDGE_PROD_API_BASE_URL = 'https://bridge.api.cx.metamask.io';\n\nexport enum BridgeClientId {\n EXTENSION = 'extension',\n MOBILE = 'mobile',\n}\n\nexport const ETH_USDT_ADDRESS = '0xdac17f958d2ee523a2206206994597c13d831ec7';\nexport const METABRIDGE_ETHEREUM_ADDRESS =\n '0x0439e60F02a8900a951603950d8D4527f400C3f1';\nexport const BRIDGE_QUOTE_MAX_ETA_SECONDS = 60 * 60; // 1 hour\nexport const BRIDGE_QUOTE_MAX_RETURN_DIFFERENCE_PERCENTAGE = 0.5; // if a quote returns in x times less return than the best quote, ignore it\n\nexport const BRIDGE_PREFERRED_GAS_ESTIMATE = 'high';\nexport const BRIDGE_DEFAULT_SLIPPAGE = 0.5;\nexport const BRIDGE_MM_FEE_RATE = 0.875;\nexport const REFRESH_INTERVAL_MS = 30 * 1000;\nexport const DEFAULT_MAX_REFRESH_COUNT = 5;\n\nexport const BRIDGE_CONTROLLER_NAME = 'BridgeController';\n\nexport const DEFAULT_FEATURE_FLAG_CONFIG = {\n refreshRate: REFRESH_INTERVAL_MS,\n maxRefreshCount: DEFAULT_MAX_REFRESH_COUNT,\n support: false,\n chains: {},\n};\n\nexport const DEFAULT_BRIDGE_CONTROLLER_STATE: BridgeControllerState = {\n bridgeFeatureFlags: {\n [BridgeFeatureFlagsKey.EXTENSION_CONFIG]: DEFAULT_FEATURE_FLAG_CONFIG,\n [BridgeFeatureFlagsKey.MOBILE_CONFIG]: DEFAULT_FEATURE_FLAG_CONFIG,\n },\n quoteRequest: {\n srcTokenAddress: AddressZero,\n },\n quotesInitialLoadTime: null,\n quotes: [],\n quotesLastFetched: null,\n quotesLoadingStatus: null,\n quoteFetchError: null,\n quotesRefreshCount: 0,\n};\n\nexport const METABRIDGE_CHAIN_TO_ADDRESS_MAP: Record<Hex, string> = {\n [CHAIN_IDS.MAINNET]: METABRIDGE_ETHEREUM_ADDRESS,\n};\n"]}
@@ -1,6 +1,7 @@
1
+ import { SolScope } from "@metamask/keyring-api";
1
2
  import type { Hex } from "@metamask/utils";
2
3
  import type { BridgeControllerState } from "../types.cjs";
3
- export declare const ALLOWED_BRIDGE_CHAIN_IDS: ("0x1" | "0xe708" | "0x2105" | "0x38" | "0xa" | "0x89" | "0xa86a" | "0xa4b1" | "0x144")[];
4
+ export declare const ALLOWED_BRIDGE_CHAIN_IDS: readonly ["0x1", "0x38", "0x89", "0x144", "0xa86a", "0xa", "0xa4b1", "0xe708", "0x2105", SolScope.Mainnet];
4
5
  export type AllowedBridgeChainIds = (typeof ALLOWED_BRIDGE_CHAIN_IDS)[number];
5
6
  export declare const BRIDGE_DEV_API_BASE_URL = "https://bridge.dev-api.cx.metamask.io";
6
7
  export declare const BRIDGE_PROD_API_BASE_URL = "https://bridge.api.cx.metamask.io";
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.cts","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAG3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AAItD,eAAO,MAAM,wBAAwB,2FAUpC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAC/E,eAAO,MAAM,wBAAwB,sCAAsC,CAAC;AAE5E,oBAAY,cAAc;IACxB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAC7E,eAAO,MAAM,2BAA2B,+CACM,CAAC;AAC/C,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,6CAA6C,MAAM,CAAC;AAEjE,eAAO,MAAM,6BAA6B,SAAS,CAAC;AACpD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,mBAAmB,QAAY,CAAC;AAC7C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD,eAAO,MAAM,2BAA2B;;;;;CAKvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,qBAe7C,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAE/D,CAAC"}
1
+ {"version":3,"file":"bridge.d.cts","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,8BAA8B;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAG3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AAItD,eAAO,MAAM,wBAAwB,4GAW3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAC/E,eAAO,MAAM,wBAAwB,sCAAsC,CAAC;AAE5E,oBAAY,cAAc;IACxB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAC7E,eAAO,MAAM,2BAA2B,+CACM,CAAC;AAC/C,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,6CAA6C,MAAM,CAAC;AAEjE,eAAO,MAAM,6BAA6B,SAAS,CAAC;AACpD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,mBAAmB,QAAY,CAAC;AAC7C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD,eAAO,MAAM,2BAA2B;;;;;CAKvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,qBAc7C,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAE/D,CAAC"}
@@ -1,6 +1,7 @@
1
+ import { SolScope } from "@metamask/keyring-api";
1
2
  import type { Hex } from "@metamask/utils";
2
3
  import type { BridgeControllerState } from "../types.mjs";
3
- export declare const ALLOWED_BRIDGE_CHAIN_IDS: ("0x1" | "0xe708" | "0x2105" | "0x38" | "0xa" | "0x89" | "0xa86a" | "0xa4b1" | "0x144")[];
4
+ export declare const ALLOWED_BRIDGE_CHAIN_IDS: readonly ["0x1", "0x38", "0x89", "0x144", "0xa86a", "0xa", "0xa4b1", "0xe708", "0x2105", SolScope.Mainnet];
4
5
  export type AllowedBridgeChainIds = (typeof ALLOWED_BRIDGE_CHAIN_IDS)[number];
5
6
  export declare const BRIDGE_DEV_API_BASE_URL = "https://bridge.dev-api.cx.metamask.io";
6
7
  export declare const BRIDGE_PROD_API_BASE_URL = "https://bridge.api.cx.metamask.io";
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.mts","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAG3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AAItD,eAAO,MAAM,wBAAwB,2FAUpC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAC/E,eAAO,MAAM,wBAAwB,sCAAsC,CAAC;AAE5E,oBAAY,cAAc;IACxB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAC7E,eAAO,MAAM,2BAA2B,+CACM,CAAC;AAC/C,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,6CAA6C,MAAM,CAAC;AAEjE,eAAO,MAAM,6BAA6B,SAAS,CAAC;AACpD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,mBAAmB,QAAY,CAAC;AAC7C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD,eAAO,MAAM,2BAA2B;;;;;CAKvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,qBAe7C,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAE/D,CAAC"}
1
+ {"version":3,"file":"bridge.d.mts","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,8BAA8B;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAG3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AAItD,eAAO,MAAM,wBAAwB,4GAW3B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAC/E,eAAO,MAAM,wBAAwB,sCAAsC,CAAC;AAE5E,oBAAY,cAAc;IACxB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAC7E,eAAO,MAAM,2BAA2B,+CACM,CAAC;AAC/C,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,6CAA6C,MAAM,CAAC;AAEjE,eAAO,MAAM,6BAA6B,SAAS,CAAC;AACpD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,mBAAmB,QAAY,CAAC;AAC7C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD,eAAO,MAAM,2BAA2B;;;;;CAKvC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,qBAc7C,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAE/D,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { AddressZero } from "@ethersproject/constants";
2
+ import { SolScope } from "@metamask/keyring-api";
2
3
  import { CHAIN_IDS } from "./chains.mjs";
3
4
  import { BridgeFeatureFlagsKey } from "../types.mjs";
4
5
  // TODO read from feature flags
@@ -12,6 +13,7 @@ export const ALLOWED_BRIDGE_CHAIN_IDS = [
12
13
  CHAIN_IDS.ARBITRUM,
13
14
  CHAIN_IDS.LINEA_MAINNET,
14
15
  CHAIN_IDS.BASE,
16
+ SolScope.Mainnet,
15
17
  ];
16
18
  export const BRIDGE_DEV_API_BASE_URL = 'https://bridge.dev-api.cx.metamask.io';
17
19
  export const BRIDGE_PROD_API_BASE_URL = 'https://bridge.api.cx.metamask.io';
@@ -43,7 +45,6 @@ export const DEFAULT_BRIDGE_CONTROLLER_STATE = {
43
45
  },
44
46
  quoteRequest: {
45
47
  srcTokenAddress: AddressZero,
46
- slippage: BRIDGE_DEFAULT_SLIPPAGE,
47
48
  },
48
49
  quotesInitialLoadTime: null,
49
50
  quotes: [],
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.mjs","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iCAAiC;AAGvD,OAAO,EAAE,SAAS,EAAE,qBAAiB;AAErC,OAAO,EAAE,qBAAqB,EAAE,qBAAiB;AAEjD,+BAA+B;AAC/B,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,GAAG;IACb,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,UAAU;IACpB,SAAS,CAAC,SAAS;IACnB,SAAS,CAAC,QAAQ;IAClB,SAAS,CAAC,QAAQ;IAClB,SAAS,CAAC,aAAa;IACvB,SAAS,CAAC,IAAI;CACf,CAAC;AAIF,MAAM,CAAC,MAAM,uBAAuB,GAAG,uCAAuC,CAAC;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,mCAAmC,CAAC;AAE5E,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GACtC,4CAA4C,CAAC;AAC/C,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS;AAC9D,MAAM,CAAC,MAAM,6CAA6C,GAAG,GAAG,CAAC,CAAC,2EAA2E;AAE7I,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAEzD,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,WAAW,EAAE,mBAAmB;IAChC,eAAe,EAAE,yBAAyB;IAC1C,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAA0B;IACpE,kBAAkB,EAAE;QAClB,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,2BAA2B;QACrE,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,2BAA2B;KACnE;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,WAAW;QAC5B,QAAQ,EAAE,uBAAuB;KAClC;IACD,qBAAqB,EAAE,IAAI;IAC3B,MAAM,EAAE,EAAE;IACV,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAwB;IAClE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,2BAA2B;CACjD,CAAC","sourcesContent":["import { AddressZero } from '@ethersproject/constants';\nimport type { Hex } from '@metamask/utils';\n\nimport { CHAIN_IDS } from './chains';\nimport type { BridgeControllerState } from '../types';\nimport { BridgeFeatureFlagsKey } from '../types';\n\n// TODO read from feature flags\nexport const ALLOWED_BRIDGE_CHAIN_IDS = [\n CHAIN_IDS.MAINNET,\n CHAIN_IDS.BSC,\n CHAIN_IDS.POLYGON,\n CHAIN_IDS.ZKSYNC_ERA,\n CHAIN_IDS.AVALANCHE,\n CHAIN_IDS.OPTIMISM,\n CHAIN_IDS.ARBITRUM,\n CHAIN_IDS.LINEA_MAINNET,\n CHAIN_IDS.BASE,\n];\n\nexport type AllowedBridgeChainIds = (typeof ALLOWED_BRIDGE_CHAIN_IDS)[number];\n\nexport const BRIDGE_DEV_API_BASE_URL = 'https://bridge.dev-api.cx.metamask.io';\nexport const BRIDGE_PROD_API_BASE_URL = 'https://bridge.api.cx.metamask.io';\n\nexport enum BridgeClientId {\n EXTENSION = 'extension',\n MOBILE = 'mobile',\n}\n\nexport const ETH_USDT_ADDRESS = '0xdac17f958d2ee523a2206206994597c13d831ec7';\nexport const METABRIDGE_ETHEREUM_ADDRESS =\n '0x0439e60F02a8900a951603950d8D4527f400C3f1';\nexport const BRIDGE_QUOTE_MAX_ETA_SECONDS = 60 * 60; // 1 hour\nexport const BRIDGE_QUOTE_MAX_RETURN_DIFFERENCE_PERCENTAGE = 0.5; // if a quote returns in x times less return than the best quote, ignore it\n\nexport const BRIDGE_PREFERRED_GAS_ESTIMATE = 'high';\nexport const BRIDGE_DEFAULT_SLIPPAGE = 0.5;\nexport const BRIDGE_MM_FEE_RATE = 0.875;\nexport const REFRESH_INTERVAL_MS = 30 * 1000;\nexport const DEFAULT_MAX_REFRESH_COUNT = 5;\n\nexport const BRIDGE_CONTROLLER_NAME = 'BridgeController';\n\nexport const DEFAULT_FEATURE_FLAG_CONFIG = {\n refreshRate: REFRESH_INTERVAL_MS,\n maxRefreshCount: DEFAULT_MAX_REFRESH_COUNT,\n support: false,\n chains: {},\n};\n\nexport const DEFAULT_BRIDGE_CONTROLLER_STATE: BridgeControllerState = {\n bridgeFeatureFlags: {\n [BridgeFeatureFlagsKey.EXTENSION_CONFIG]: DEFAULT_FEATURE_FLAG_CONFIG,\n [BridgeFeatureFlagsKey.MOBILE_CONFIG]: DEFAULT_FEATURE_FLAG_CONFIG,\n },\n quoteRequest: {\n srcTokenAddress: AddressZero,\n slippage: BRIDGE_DEFAULT_SLIPPAGE,\n },\n quotesInitialLoadTime: null,\n quotes: [],\n quotesLastFetched: null,\n quotesLoadingStatus: null,\n quoteFetchError: null,\n quotesRefreshCount: 0,\n};\n\nexport const METABRIDGE_CHAIN_TO_ADDRESS_MAP: Record<Hex, string> = {\n [CHAIN_IDS.MAINNET]: METABRIDGE_ETHEREUM_ADDRESS,\n};\n"]}
1
+ {"version":3,"file":"bridge.mjs","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iCAAiC;AACvD,OAAO,EAAE,QAAQ,EAAE,8BAA8B;AAGjD,OAAO,EAAE,SAAS,EAAE,qBAAiB;AAErC,OAAO,EAAE,qBAAqB,EAAE,qBAAiB;AAEjD,+BAA+B;AAC/B,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,GAAG;IACb,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,UAAU;IACpB,SAAS,CAAC,SAAS;IACnB,SAAS,CAAC,QAAQ;IAClB,SAAS,CAAC,QAAQ;IAClB,SAAS,CAAC,aAAa;IACvB,SAAS,CAAC,IAAI;IACd,QAAQ,CAAC,OAAO;CACR,CAAC;AAIX,MAAM,CAAC,MAAM,uBAAuB,GAAG,uCAAuC,CAAC;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,mCAAmC,CAAC;AAE5E,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GACtC,4CAA4C,CAAC;AAC/C,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS;AAC9D,MAAM,CAAC,MAAM,6CAA6C,GAAG,GAAG,CAAC,CAAC,2EAA2E;AAE7I,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAEzD,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,WAAW,EAAE,mBAAmB;IAChC,eAAe,EAAE,yBAAyB;IAC1C,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAA0B;IACpE,kBAAkB,EAAE;QAClB,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,2BAA2B;QACrE,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,2BAA2B;KACnE;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,WAAW;KAC7B;IACD,qBAAqB,EAAE,IAAI;IAC3B,MAAM,EAAE,EAAE;IACV,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAwB;IAClE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,2BAA2B;CACjD,CAAC","sourcesContent":["import { AddressZero } from '@ethersproject/constants';\nimport { SolScope } from '@metamask/keyring-api';\nimport type { Hex } from '@metamask/utils';\n\nimport { CHAIN_IDS } from './chains';\nimport type { BridgeControllerState } from '../types';\nimport { BridgeFeatureFlagsKey } from '../types';\n\n// TODO read from feature flags\nexport const ALLOWED_BRIDGE_CHAIN_IDS = [\n CHAIN_IDS.MAINNET,\n CHAIN_IDS.BSC,\n CHAIN_IDS.POLYGON,\n CHAIN_IDS.ZKSYNC_ERA,\n CHAIN_IDS.AVALANCHE,\n CHAIN_IDS.OPTIMISM,\n CHAIN_IDS.ARBITRUM,\n CHAIN_IDS.LINEA_MAINNET,\n CHAIN_IDS.BASE,\n SolScope.Mainnet,\n] as const;\n\nexport type AllowedBridgeChainIds = (typeof ALLOWED_BRIDGE_CHAIN_IDS)[number];\n\nexport const BRIDGE_DEV_API_BASE_URL = 'https://bridge.dev-api.cx.metamask.io';\nexport const BRIDGE_PROD_API_BASE_URL = 'https://bridge.api.cx.metamask.io';\n\nexport enum BridgeClientId {\n EXTENSION = 'extension',\n MOBILE = 'mobile',\n}\n\nexport const ETH_USDT_ADDRESS = '0xdac17f958d2ee523a2206206994597c13d831ec7';\nexport const METABRIDGE_ETHEREUM_ADDRESS =\n '0x0439e60F02a8900a951603950d8D4527f400C3f1';\nexport const BRIDGE_QUOTE_MAX_ETA_SECONDS = 60 * 60; // 1 hour\nexport const BRIDGE_QUOTE_MAX_RETURN_DIFFERENCE_PERCENTAGE = 0.5; // if a quote returns in x times less return than the best quote, ignore it\n\nexport const BRIDGE_PREFERRED_GAS_ESTIMATE = 'high';\nexport const BRIDGE_DEFAULT_SLIPPAGE = 0.5;\nexport const BRIDGE_MM_FEE_RATE = 0.875;\nexport const REFRESH_INTERVAL_MS = 30 * 1000;\nexport const DEFAULT_MAX_REFRESH_COUNT = 5;\n\nexport const BRIDGE_CONTROLLER_NAME = 'BridgeController';\n\nexport const DEFAULT_FEATURE_FLAG_CONFIG = {\n refreshRate: REFRESH_INTERVAL_MS,\n maxRefreshCount: DEFAULT_MAX_REFRESH_COUNT,\n support: false,\n chains: {},\n};\n\nexport const DEFAULT_BRIDGE_CONTROLLER_STATE: BridgeControllerState = {\n bridgeFeatureFlags: {\n [BridgeFeatureFlagsKey.EXTENSION_CONFIG]: DEFAULT_FEATURE_FLAG_CONFIG,\n [BridgeFeatureFlagsKey.MOBILE_CONFIG]: DEFAULT_FEATURE_FLAG_CONFIG,\n },\n quoteRequest: {\n srcTokenAddress: AddressZero,\n },\n quotesInitialLoadTime: null,\n quotes: [],\n quotesLastFetched: null,\n quotesLoadingStatus: null,\n quoteFetchError: null,\n quotesRefreshCount: 0,\n};\n\nexport const METABRIDGE_CHAIN_TO_ADDRESS_MAP: Record<Hex, string> = {\n [CHAIN_IDS.MAINNET]: METABRIDGE_ETHEREUM_ADDRESS,\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NETWORK_TO_SHORT_NETWORK_NAME_MAP = exports.NETWORK_TO_NAME_MAP = exports.MODE_DISPLAY_NAME = exports.MODE_SEPOLIA_DISPLAY_NAME = exports.SONEIUM_DISPLAY_NAME = exports.INK_DISPLAY_NAME = exports.INK_SEPOLIA_DISPLAY_NAME = exports.LISK_SEPOLIA_DISPLAY_NAME = exports.LISK_DISPLAY_NAME = exports.METACHAIN_ONE_DISPLAY_NAME = exports.BERACHAIN_DISPLAY_NAME = exports.OP_BNB_DISPLAY_NAME = exports.SCROLL_SEPOLIA_DISPLAY_NAME = exports.SCROLL_DISPLAY_NAME = exports.MOONRIVER_DISPLAY_NAME = exports.MOONBEAM_DISPLAY_NAME = exports.POLYGON_ZKEVM_DISPLAY_NAME = exports.CRONOS_DISPLAY_NAME = exports.AURORA_DISPLAY_NAME = exports.BASE_DISPLAY_NAME = exports.ZK_SYNC_ERA_DISPLAY_NAME = exports.GNOSIS_DISPLAY_NAME = exports.CELO_DISPLAY_NAME = exports.PALM_DISPLAY_NAME = exports.HARMONY_DISPLAY_NAME = exports.FANTOM_DISPLAY_NAME = exports.OPTIMISM_DISPLAY_NAME = exports.BNB_DISPLAY_NAME = exports.ARBITRUM_DISPLAY_NAME = exports.AVALANCHE_DISPLAY_NAME = exports.POLYGON_DISPLAY_NAME = exports.BSC_DISPLAY_NAME = exports.LOCALHOST_DISPLAY_NAME = exports.LINEA_MAINNET_DISPLAY_NAME = exports.LINEA_SEPOLIA_DISPLAY_NAME = exports.LINEA_GOERLI_DISPLAY_NAME = exports.SEPOLIA_DISPLAY_NAME = exports.GOERLI_DISPLAY_NAME = exports.MAINNET_DISPLAY_NAME = exports.NETWORK_TYPES = exports.CHAIN_IDS = void 0;
3
+ exports.NETWORK_TO_NAME_MAP = exports.MODE_DISPLAY_NAME = exports.MODE_SEPOLIA_DISPLAY_NAME = exports.SONEIUM_DISPLAY_NAME = exports.INK_DISPLAY_NAME = exports.INK_SEPOLIA_DISPLAY_NAME = exports.LISK_SEPOLIA_DISPLAY_NAME = exports.LISK_DISPLAY_NAME = exports.METACHAIN_ONE_DISPLAY_NAME = exports.BERACHAIN_DISPLAY_NAME = exports.OP_BNB_DISPLAY_NAME = exports.SCROLL_SEPOLIA_DISPLAY_NAME = exports.SCROLL_DISPLAY_NAME = exports.MOONRIVER_DISPLAY_NAME = exports.MOONBEAM_DISPLAY_NAME = exports.POLYGON_ZKEVM_DISPLAY_NAME = exports.CRONOS_DISPLAY_NAME = exports.AURORA_DISPLAY_NAME = exports.BASE_DISPLAY_NAME = exports.ZK_SYNC_ERA_DISPLAY_NAME = exports.GNOSIS_DISPLAY_NAME = exports.CELO_DISPLAY_NAME = exports.PALM_DISPLAY_NAME = exports.HARMONY_DISPLAY_NAME = exports.FANTOM_DISPLAY_NAME = exports.OPTIMISM_DISPLAY_NAME = exports.BNB_DISPLAY_NAME = exports.ARBITRUM_DISPLAY_NAME = exports.AVALANCHE_DISPLAY_NAME = exports.POLYGON_DISPLAY_NAME = exports.BSC_DISPLAY_NAME = exports.LOCALHOST_DISPLAY_NAME = exports.LINEA_MAINNET_DISPLAY_NAME = exports.LINEA_SEPOLIA_DISPLAY_NAME = exports.LINEA_GOERLI_DISPLAY_NAME = exports.SEPOLIA_DISPLAY_NAME = exports.GOERLI_DISPLAY_NAME = exports.MAINNET_DISPLAY_NAME = exports.NETWORK_TYPES = exports.CHAIN_IDS = void 0;
4
4
  /**
5
5
  * An object containing all of the chain ids for networks both built in and
6
6
  * those that we have added custom code to support our feature set.
@@ -154,15 +154,4 @@ exports.NETWORK_TO_NAME_MAP = {
154
154
  [exports.CHAIN_IDS.LISK]: exports.LISK_DISPLAY_NAME,
155
155
  [exports.CHAIN_IDS.LISK_SEPOLIA]: exports.LISK_SEPOLIA_DISPLAY_NAME,
156
156
  };
157
- exports.NETWORK_TO_SHORT_NETWORK_NAME_MAP = {
158
- [exports.CHAIN_IDS.MAINNET]: 'Ethereum',
159
- [exports.CHAIN_IDS.LINEA_MAINNET]: 'Linea',
160
- [exports.CHAIN_IDS.POLYGON]: exports.NETWORK_TO_NAME_MAP[exports.CHAIN_IDS.POLYGON],
161
- [exports.CHAIN_IDS.AVALANCHE]: 'Avalanche',
162
- [exports.CHAIN_IDS.BSC]: exports.NETWORK_TO_NAME_MAP[exports.CHAIN_IDS.BSC],
163
- [exports.CHAIN_IDS.ARBITRUM]: exports.NETWORK_TO_NAME_MAP[exports.CHAIN_IDS.ARBITRUM],
164
- [exports.CHAIN_IDS.OPTIMISM]: exports.NETWORK_TO_NAME_MAP[exports.CHAIN_IDS.OPTIMISM],
165
- [exports.CHAIN_IDS.ZKSYNC_ERA]: 'ZkSync Era',
166
- [exports.CHAIN_IDS.BASE]: 'Base',
167
- };
168
157
  //# sourceMappingURL=chains.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"chains.cjs","sourceRoot":"","sources":["../../src/constants/chains.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACU,QAAA,SAAS,GAAG;IACvB,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,OAAO;IAClB,GAAG,EAAE,MAAM;IACX,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,KAAK;IACf,gBAAgB,EAAE,UAAU;IAC5B,eAAe,EAAE,OAAO;IACxB,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,SAAS;IACvB,KAAK,EAAE,MAAM;IACb,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,MAAM;IACf,eAAe,EAAE,SAAS;IAC1B,SAAS,EAAE,QAAQ;IACnB,iBAAiB,EAAE,QAAQ;IAC3B,MAAM,EAAE,MAAM;IACd,cAAc,EAAE,OAAO;IACvB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,QAAQ;IACjB,YAAY,EAAE,QAAQ;IACtB,aAAa,EAAE,QAAQ;IACvB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,SAAS;IACvB,aAAa,EAAE,WAAW;IAC1B,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,QAAQ;IACtB,mBAAmB,EAAE,OAAO;IAC5B,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,OAAO;IACzB,aAAa,EAAE,QAAQ;IACvB,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,OAAO;IACjB,gBAAgB,EAAE,OAAO;IACzB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,OAAO;IACjB,eAAe,EAAE,SAAS;IAC1B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,OAAO;IACjB,aAAa,EAAE,OAAO;IACtB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,SAAS;IACzB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,QAAQ;IACjB,GAAG,EAAE,OAAO;IACZ,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,SAAS;IACxB,gBAAgB,EAAE,SAAS;IAC3B,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,OAAO;IACrB,EAAE,EAAE,QAAQ;IACZ,UAAU,EAAE,OAAO;IACnB,qBAAqB,EAAE,OAAO;IAC9B,6BAA6B,EAAE,QAAQ;IACvC,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,QAAQ;IACtB,WAAW,EAAE,SAAS;IACtB,GAAG,EAAE,QAAQ;IACb,YAAY,EAAE,OAAO;IACrB,IAAI,EAAE,QAAQ;CACN,CAAC;AAEE,QAAA,aAAa,GAAG;IAC3B,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;CACtB,CAAC;AAEE,QAAA,oBAAoB,GAAG,kBAAkB,CAAC;AAC1C,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAC7C,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAC7C,QAAA,sBAAsB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,gBAAgB,GAAG,qBAAqB,CAAC;AACzC,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,qBAAqB,GAAG,cAAc,CAAC;AACvC,QAAA,gBAAgB,GAAG,WAAW,CAAC;AAC/B,QAAA,qBAAqB,GAAG,YAAY,CAAC;AACrC,QAAA,mBAAmB,GAAG,cAAc,CAAC;AACrC,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AACjD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,iBAAiB,GAAG,cAAc,CAAC;AACnC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,wBAAwB,GAAG,oBAAoB,CAAC;AAChD,QAAA,iBAAiB,GAAG,cAAc,CAAC;AACnC,QAAA,mBAAmB,GAAG,gBAAgB,CAAC;AACvC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAC7C,QAAA,qBAAqB,GAAG,UAAU,CAAC;AACnC,QAAA,sBAAsB,GAAG,WAAW,CAAC;AACrC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,2BAA2B,GAAG,gBAAgB,CAAC;AAC/C,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAC9B,QAAA,sBAAsB,GAAG,iBAAiB,CAAC;AAC3C,QAAA,0BAA0B,GAAG,uBAAuB,CAAC;AACrD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,wBAAwB,GAAG,aAAa,CAAC;AACzC,QAAA,gBAAgB,GAAG,aAAa,CAAC;AACjC,QAAA,oBAAoB,GAAG,iBAAiB,CAAC;AACzC,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,iBAAiB,GAAG,cAAc,CAAC;AAEnC,QAAA,mBAAmB,GAAG;IACjC,CAAC,qBAAa,CAAC,MAAM,CAAC,EAAE,2BAAmB;IAC3C,CAAC,qBAAa,CAAC,OAAO,CAAC,EAAE,4BAAoB;IAC7C,CAAC,qBAAa,CAAC,YAAY,CAAC,EAAE,iCAAyB;IACvD,CAAC,qBAAa,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACzD,CAAC,qBAAa,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACzD,CAAC,qBAAa,CAAC,SAAS,CAAC,EAAE,8BAAsB;IACjD,CAAC,qBAAa,CAAC,OAAO,CAAC,EAAE,4BAAoB;IAE7C,CAAC,iBAAS,CAAC,QAAQ,CAAC,EAAE,6BAAqB;IAC3C,CAAC,iBAAS,CAAC,SAAS,CAAC,EAAE,8BAAsB;IAC7C,CAAC,iBAAS,CAAC,GAAG,CAAC,EAAE,wBAAgB;IACjC,CAAC,iBAAS,CAAC,IAAI,CAAC,EAAE,yBAAiB;IACnC,CAAC,iBAAS,CAAC,MAAM,CAAC,EAAE,2BAAmB;IACvC,CAAC,iBAAS,CAAC,OAAO,CAAC,EAAE,4BAAoB;IACzC,CAAC,iBAAS,CAAC,YAAY,CAAC,EAAE,iCAAyB;IACnD,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACrD,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACrD,CAAC,iBAAS,CAAC,SAAS,CAAC,EAAE,8BAAsB;IAC7C,CAAC,iBAAS,CAAC,QAAQ,CAAC,EAAE,6BAAqB;IAC3C,CAAC,iBAAS,CAAC,OAAO,CAAC,EAAE,4BAAoB;IACzC,CAAC,iBAAS,CAAC,MAAM,CAAC,EAAE,2BAAmB;IACvC,CAAC,iBAAS,CAAC,cAAc,CAAC,EAAE,mCAA2B;IACvD,CAAC,iBAAS,CAAC,OAAO,CAAC,EAAE,4BAAoB;IACzC,CAAC,iBAAS,CAAC,KAAK,CAAC,EAAE,2BAAmB;IACtC,CAAC,iBAAS,CAAC,UAAU,CAAC,EAAE,gCAAwB;IAChD,CAAC,iBAAS,CAAC,SAAS,CAAC,EAAE,8BAAsB;IAC7C,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACrD,CAAC,iBAAS,CAAC,IAAI,CAAC,EAAE,yBAAiB;IACnC,CAAC,iBAAS,CAAC,YAAY,CAAC,EAAE,iCAAyB;CAC3C,CAAC;AACE,QAAA,iCAAiC,GAG1C;IACF,CAAC,iBAAS,CAAC,OAAO,CAAC,EAAE,UAAU;IAC/B,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE,OAAO;IAClC,CAAC,iBAAS,CAAC,OAAO,CAAC,EAAE,2BAAmB,CAAC,iBAAS,CAAC,OAAO,CAAC;IAC3D,CAAC,iBAAS,CAAC,SAAS,CAAC,EAAE,WAAW;IAClC,CAAC,iBAAS,CAAC,GAAG,CAAC,EAAE,2BAAmB,CAAC,iBAAS,CAAC,GAAG,CAAC;IACnD,CAAC,iBAAS,CAAC,QAAQ,CAAC,EAAE,2BAAmB,CAAC,iBAAS,CAAC,QAAQ,CAAC;IAC7D,CAAC,iBAAS,CAAC,QAAQ,CAAC,EAAE,2BAAmB,CAAC,iBAAS,CAAC,QAAQ,CAAC;IAC7D,CAAC,iBAAS,CAAC,UAAU,CAAC,EAAE,YAAY;IACpC,CAAC,iBAAS,CAAC,IAAI,CAAC,EAAE,MAAM;CACzB,CAAC","sourcesContent":["import type { AllowedBridgeChainIds } from './bridge';\n\n/**\n * An object containing all of the chain ids for networks both built in and\n * those that we have added custom code to support our feature set.\n */\nexport const CHAIN_IDS = {\n MAINNET: '0x1',\n GOERLI: '0x5',\n LOCALHOST: '0x539',\n BSC: '0x38',\n BSC_TESTNET: '0x61',\n OPTIMISM: '0xa',\n OPTIMISM_TESTNET: '0xaa37dc',\n OPTIMISM_GOERLI: '0x1a4',\n BASE: '0x2105',\n BASE_TESTNET: '0x14a33',\n OPBNB: '0xcc',\n OPBNB_TESTNET: '0x15eb',\n POLYGON: '0x89',\n POLYGON_TESTNET: '0x13881',\n AVALANCHE: '0xa86a',\n AVALANCHE_TESTNET: '0xa869',\n FANTOM: '0xfa',\n FANTOM_TESTNET: '0xfa2',\n CELO: '0xa4ec',\n ARBITRUM: '0xa4b1',\n HARMONY: '0x63564c40',\n PALM: '0x2a15c308d',\n SEPOLIA: '0xaa36a7',\n HOLESKY: '0x4268',\n LINEA_GOERLI: '0xe704',\n LINEA_SEPOLIA: '0xe705',\n AMOY: '0x13882',\n BASE_SEPOLIA: '0x14a34',\n BLAST_SEPOLIA: '0xa0c71fd',\n OPTIMISM_SEPOLIA: '0xaa37dc',\n PALM_TESTNET: '0x2a15c3083',\n CELO_TESTNET: '0xaef3',\n ZK_SYNC_ERA_TESTNET: '0x12c',\n MANTA_SEPOLIA: '0x138b',\n UNICHAIN_SEPOLIA: '0x515',\n LINEA_MAINNET: '0xe708',\n AURORA: '0x4e454152',\n MOONBEAM: '0x504',\n MOONBEAM_TESTNET: '0x507',\n MOONRIVER: '0x505',\n CRONOS: '0x19',\n GNOSIS: '0x64',\n ZKSYNC_ERA: '0x144',\n TEST_ETH: '0x539',\n ARBITRUM_GOERLI: '0x66eed',\n BLAST: '0x13e31',\n FILECOIN: '0x13a',\n POLYGON_ZKEVM: '0x44d',\n SCROLL: '0x82750',\n SCROLL_SEPOLIA: '0x8274f',\n WETHIO: '0x4e',\n CHZ: '0x15b38',\n NUMBERS: '0x290b',\n SEI: '0x531',\n APE_TESTNET: '0x8157',\n APE_MAINNET: '0x8173',\n BERACHAIN: '0x138d5',\n METACHAIN_ONE: '0x1b6e6',\n ARBITRUM_SEPOLIA: '0x66eee',\n NEAR: '0x18d',\n NEAR_TESTNET: '0x18e',\n B3: '0x208d',\n B3_TESTNET: '0x7c9',\n GRAVITY_ALPHA_MAINNET: '0x659',\n GRAVITY_ALPHA_TESTNET_SEPOLIA: '0x34c1',\n LISK: '0x46f',\n LISK_SEPOLIA: '0x106a',\n INK_SEPOLIA: '0xba5eD',\n INK: '0xdef1',\n MODE_SEPOLIA: '0x397',\n MODE: '0x868b',\n} as const;\n\nexport const NETWORK_TYPES = {\n GOERLI: 'goerli',\n LOCALHOST: 'localhost',\n MAINNET: 'mainnet',\n SEPOLIA: 'sepolia',\n LINEA_GOERLI: 'linea-goerli',\n LINEA_SEPOLIA: 'linea-sepolia',\n LINEA_MAINNET: 'linea-mainnet',\n} as const;\n\nexport const MAINNET_DISPLAY_NAME = 'Ethereum Mainnet';\nexport const GOERLI_DISPLAY_NAME = 'Goerli';\nexport const SEPOLIA_DISPLAY_NAME = 'Sepolia';\nexport const LINEA_GOERLI_DISPLAY_NAME = 'Linea Goerli';\nexport const LINEA_SEPOLIA_DISPLAY_NAME = 'Linea Sepolia';\nexport const LINEA_MAINNET_DISPLAY_NAME = 'Linea Mainnet';\nexport const LOCALHOST_DISPLAY_NAME = 'Localhost 8545';\nexport const BSC_DISPLAY_NAME = 'Binance Smart Chain';\nexport const POLYGON_DISPLAY_NAME = 'Polygon';\nexport const AVALANCHE_DISPLAY_NAME = 'Avalanche Network C-Chain';\nexport const ARBITRUM_DISPLAY_NAME = 'Arbitrum One';\nexport const BNB_DISPLAY_NAME = 'BNB Chain';\nexport const OPTIMISM_DISPLAY_NAME = 'OP Mainnet';\nexport const FANTOM_DISPLAY_NAME = 'Fantom Opera';\nexport const HARMONY_DISPLAY_NAME = 'Harmony Mainnet Shard 0';\nexport const PALM_DISPLAY_NAME = 'Palm';\nexport const CELO_DISPLAY_NAME = 'Celo Mainnet';\nexport const GNOSIS_DISPLAY_NAME = 'Gnosis';\nexport const ZK_SYNC_ERA_DISPLAY_NAME = 'zkSync Era Mainnet';\nexport const BASE_DISPLAY_NAME = 'Base Mainnet';\nexport const AURORA_DISPLAY_NAME = 'Aurora Mainnet';\nexport const CRONOS_DISPLAY_NAME = 'Cronos';\nexport const POLYGON_ZKEVM_DISPLAY_NAME = 'Polygon zkEVM';\nexport const MOONBEAM_DISPLAY_NAME = 'Moonbeam';\nexport const MOONRIVER_DISPLAY_NAME = 'Moonriver';\nexport const SCROLL_DISPLAY_NAME = 'Scroll';\nexport const SCROLL_SEPOLIA_DISPLAY_NAME = 'Scroll Sepolia';\nexport const OP_BNB_DISPLAY_NAME = 'opBNB';\nexport const BERACHAIN_DISPLAY_NAME = 'Berachain Artio';\nexport const METACHAIN_ONE_DISPLAY_NAME = 'Metachain One Mainnet';\nexport const LISK_DISPLAY_NAME = 'Lisk';\nexport const LISK_SEPOLIA_DISPLAY_NAME = 'Lisk Sepolia';\nexport const INK_SEPOLIA_DISPLAY_NAME = 'Ink Sepolia';\nexport const INK_DISPLAY_NAME = 'Ink Mainnet';\nexport const SONEIUM_DISPLAY_NAME = 'Soneium Mainnet';\nexport const MODE_SEPOLIA_DISPLAY_NAME = 'Mode Sepolia';\nexport const MODE_DISPLAY_NAME = 'Mode Mainnet';\n\nexport const NETWORK_TO_NAME_MAP = {\n [NETWORK_TYPES.GOERLI]: GOERLI_DISPLAY_NAME,\n [NETWORK_TYPES.MAINNET]: MAINNET_DISPLAY_NAME,\n [NETWORK_TYPES.LINEA_GOERLI]: LINEA_GOERLI_DISPLAY_NAME,\n [NETWORK_TYPES.LINEA_SEPOLIA]: LINEA_SEPOLIA_DISPLAY_NAME,\n [NETWORK_TYPES.LINEA_MAINNET]: LINEA_MAINNET_DISPLAY_NAME,\n [NETWORK_TYPES.LOCALHOST]: LOCALHOST_DISPLAY_NAME,\n [NETWORK_TYPES.SEPOLIA]: SEPOLIA_DISPLAY_NAME,\n\n [CHAIN_IDS.ARBITRUM]: ARBITRUM_DISPLAY_NAME,\n [CHAIN_IDS.AVALANCHE]: AVALANCHE_DISPLAY_NAME,\n [CHAIN_IDS.BSC]: BSC_DISPLAY_NAME,\n [CHAIN_IDS.BASE]: BASE_DISPLAY_NAME,\n [CHAIN_IDS.GOERLI]: GOERLI_DISPLAY_NAME,\n [CHAIN_IDS.MAINNET]: MAINNET_DISPLAY_NAME,\n [CHAIN_IDS.LINEA_GOERLI]: LINEA_GOERLI_DISPLAY_NAME,\n [CHAIN_IDS.LINEA_MAINNET]: LINEA_MAINNET_DISPLAY_NAME,\n [CHAIN_IDS.LINEA_SEPOLIA]: LINEA_SEPOLIA_DISPLAY_NAME,\n [CHAIN_IDS.LOCALHOST]: LOCALHOST_DISPLAY_NAME,\n [CHAIN_IDS.OPTIMISM]: OPTIMISM_DISPLAY_NAME,\n [CHAIN_IDS.POLYGON]: POLYGON_DISPLAY_NAME,\n [CHAIN_IDS.SCROLL]: SCROLL_DISPLAY_NAME,\n [CHAIN_IDS.SCROLL_SEPOLIA]: SCROLL_SEPOLIA_DISPLAY_NAME,\n [CHAIN_IDS.SEPOLIA]: SEPOLIA_DISPLAY_NAME,\n [CHAIN_IDS.OPBNB]: OP_BNB_DISPLAY_NAME,\n [CHAIN_IDS.ZKSYNC_ERA]: ZK_SYNC_ERA_DISPLAY_NAME,\n [CHAIN_IDS.BERACHAIN]: BERACHAIN_DISPLAY_NAME,\n [CHAIN_IDS.METACHAIN_ONE]: METACHAIN_ONE_DISPLAY_NAME,\n [CHAIN_IDS.LISK]: LISK_DISPLAY_NAME,\n [CHAIN_IDS.LISK_SEPOLIA]: LISK_SEPOLIA_DISPLAY_NAME,\n} as const;\nexport const NETWORK_TO_SHORT_NETWORK_NAME_MAP: Record<\n AllowedBridgeChainIds,\n string\n> = {\n [CHAIN_IDS.MAINNET]: 'Ethereum',\n [CHAIN_IDS.LINEA_MAINNET]: 'Linea',\n [CHAIN_IDS.POLYGON]: NETWORK_TO_NAME_MAP[CHAIN_IDS.POLYGON],\n [CHAIN_IDS.AVALANCHE]: 'Avalanche',\n [CHAIN_IDS.BSC]: NETWORK_TO_NAME_MAP[CHAIN_IDS.BSC],\n [CHAIN_IDS.ARBITRUM]: NETWORK_TO_NAME_MAP[CHAIN_IDS.ARBITRUM],\n [CHAIN_IDS.OPTIMISM]: NETWORK_TO_NAME_MAP[CHAIN_IDS.OPTIMISM],\n [CHAIN_IDS.ZKSYNC_ERA]: 'ZkSync Era',\n [CHAIN_IDS.BASE]: 'Base',\n};\n"]}
1
+ {"version":3,"file":"chains.cjs","sourceRoot":"","sources":["../../src/constants/chains.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,SAAS,GAAG;IACvB,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,OAAO;IAClB,GAAG,EAAE,MAAM;IACX,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,KAAK;IACf,gBAAgB,EAAE,UAAU;IAC5B,eAAe,EAAE,OAAO;IACxB,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,SAAS;IACvB,KAAK,EAAE,MAAM;IACb,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,MAAM;IACf,eAAe,EAAE,SAAS;IAC1B,SAAS,EAAE,QAAQ;IACnB,iBAAiB,EAAE,QAAQ;IAC3B,MAAM,EAAE,MAAM;IACd,cAAc,EAAE,OAAO;IACvB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,QAAQ;IACjB,YAAY,EAAE,QAAQ;IACtB,aAAa,EAAE,QAAQ;IACvB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,SAAS;IACvB,aAAa,EAAE,WAAW;IAC1B,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,QAAQ;IACtB,mBAAmB,EAAE,OAAO;IAC5B,aAAa,EAAE,QAAQ;IACvB,gBAAgB,EAAE,OAAO;IACzB,aAAa,EAAE,QAAQ;IACvB,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,OAAO;IACjB,gBAAgB,EAAE,OAAO;IACzB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,OAAO;IACjB,eAAe,EAAE,SAAS;IAC1B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,OAAO;IACjB,aAAa,EAAE,OAAO;IACtB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,SAAS;IACzB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,QAAQ;IACjB,GAAG,EAAE,OAAO;IACZ,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,SAAS;IACxB,gBAAgB,EAAE,SAAS;IAC3B,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,OAAO;IACrB,EAAE,EAAE,QAAQ;IACZ,UAAU,EAAE,OAAO;IACnB,qBAAqB,EAAE,OAAO;IAC9B,6BAA6B,EAAE,QAAQ;IACvC,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,QAAQ;IACtB,WAAW,EAAE,SAAS;IACtB,GAAG,EAAE,QAAQ;IACb,YAAY,EAAE,OAAO;IACrB,IAAI,EAAE,QAAQ;CACN,CAAC;AAEE,QAAA,aAAa,GAAG;IAC3B,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;CACtB,CAAC;AAEE,QAAA,oBAAoB,GAAG,kBAAkB,CAAC;AAC1C,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAC7C,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAC7C,QAAA,sBAAsB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,gBAAgB,GAAG,qBAAqB,CAAC;AACzC,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,qBAAqB,GAAG,cAAc,CAAC;AACvC,QAAA,gBAAgB,GAAG,WAAW,CAAC;AAC/B,QAAA,qBAAqB,GAAG,YAAY,CAAC;AACrC,QAAA,mBAAmB,GAAG,cAAc,CAAC;AACrC,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AACjD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,iBAAiB,GAAG,cAAc,CAAC;AACnC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,wBAAwB,GAAG,oBAAoB,CAAC;AAChD,QAAA,iBAAiB,GAAG,cAAc,CAAC;AACnC,QAAA,mBAAmB,GAAG,gBAAgB,CAAC;AACvC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAC7C,QAAA,qBAAqB,GAAG,UAAU,CAAC;AACnC,QAAA,sBAAsB,GAAG,WAAW,CAAC;AACrC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,2BAA2B,GAAG,gBAAgB,CAAC;AAC/C,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAC9B,QAAA,sBAAsB,GAAG,iBAAiB,CAAC;AAC3C,QAAA,0BAA0B,GAAG,uBAAuB,CAAC;AACrD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,wBAAwB,GAAG,aAAa,CAAC;AACzC,QAAA,gBAAgB,GAAG,aAAa,CAAC;AACjC,QAAA,oBAAoB,GAAG,iBAAiB,CAAC;AACzC,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,iBAAiB,GAAG,cAAc,CAAC;AAEnC,QAAA,mBAAmB,GAAG;IACjC,CAAC,qBAAa,CAAC,MAAM,CAAC,EAAE,2BAAmB;IAC3C,CAAC,qBAAa,CAAC,OAAO,CAAC,EAAE,4BAAoB;IAC7C,CAAC,qBAAa,CAAC,YAAY,CAAC,EAAE,iCAAyB;IACvD,CAAC,qBAAa,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACzD,CAAC,qBAAa,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACzD,CAAC,qBAAa,CAAC,SAAS,CAAC,EAAE,8BAAsB;IACjD,CAAC,qBAAa,CAAC,OAAO,CAAC,EAAE,4BAAoB;IAE7C,CAAC,iBAAS,CAAC,QAAQ,CAAC,EAAE,6BAAqB;IAC3C,CAAC,iBAAS,CAAC,SAAS,CAAC,EAAE,8BAAsB;IAC7C,CAAC,iBAAS,CAAC,GAAG,CAAC,EAAE,wBAAgB;IACjC,CAAC,iBAAS,CAAC,IAAI,CAAC,EAAE,yBAAiB;IACnC,CAAC,iBAAS,CAAC,MAAM,CAAC,EAAE,2BAAmB;IACvC,CAAC,iBAAS,CAAC,OAAO,CAAC,EAAE,4BAAoB;IACzC,CAAC,iBAAS,CAAC,YAAY,CAAC,EAAE,iCAAyB;IACnD,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACrD,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACrD,CAAC,iBAAS,CAAC,SAAS,CAAC,EAAE,8BAAsB;IAC7C,CAAC,iBAAS,CAAC,QAAQ,CAAC,EAAE,6BAAqB;IAC3C,CAAC,iBAAS,CAAC,OAAO,CAAC,EAAE,4BAAoB;IACzC,CAAC,iBAAS,CAAC,MAAM,CAAC,EAAE,2BAAmB;IACvC,CAAC,iBAAS,CAAC,cAAc,CAAC,EAAE,mCAA2B;IACvD,CAAC,iBAAS,CAAC,OAAO,CAAC,EAAE,4BAAoB;IACzC,CAAC,iBAAS,CAAC,KAAK,CAAC,EAAE,2BAAmB;IACtC,CAAC,iBAAS,CAAC,UAAU,CAAC,EAAE,gCAAwB;IAChD,CAAC,iBAAS,CAAC,SAAS,CAAC,EAAE,8BAAsB;IAC7C,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE,kCAA0B;IACrD,CAAC,iBAAS,CAAC,IAAI,CAAC,EAAE,yBAAiB;IACnC,CAAC,iBAAS,CAAC,YAAY,CAAC,EAAE,iCAAyB;CAC3C,CAAC","sourcesContent":["/**\n * An object containing all of the chain ids for networks both built in and\n * those that we have added custom code to support our feature set.\n */\nexport const CHAIN_IDS = {\n MAINNET: '0x1',\n GOERLI: '0x5',\n LOCALHOST: '0x539',\n BSC: '0x38',\n BSC_TESTNET: '0x61',\n OPTIMISM: '0xa',\n OPTIMISM_TESTNET: '0xaa37dc',\n OPTIMISM_GOERLI: '0x1a4',\n BASE: '0x2105',\n BASE_TESTNET: '0x14a33',\n OPBNB: '0xcc',\n OPBNB_TESTNET: '0x15eb',\n POLYGON: '0x89',\n POLYGON_TESTNET: '0x13881',\n AVALANCHE: '0xa86a',\n AVALANCHE_TESTNET: '0xa869',\n FANTOM: '0xfa',\n FANTOM_TESTNET: '0xfa2',\n CELO: '0xa4ec',\n ARBITRUM: '0xa4b1',\n HARMONY: '0x63564c40',\n PALM: '0x2a15c308d',\n SEPOLIA: '0xaa36a7',\n HOLESKY: '0x4268',\n LINEA_GOERLI: '0xe704',\n LINEA_SEPOLIA: '0xe705',\n AMOY: '0x13882',\n BASE_SEPOLIA: '0x14a34',\n BLAST_SEPOLIA: '0xa0c71fd',\n OPTIMISM_SEPOLIA: '0xaa37dc',\n PALM_TESTNET: '0x2a15c3083',\n CELO_TESTNET: '0xaef3',\n ZK_SYNC_ERA_TESTNET: '0x12c',\n MANTA_SEPOLIA: '0x138b',\n UNICHAIN_SEPOLIA: '0x515',\n LINEA_MAINNET: '0xe708',\n AURORA: '0x4e454152',\n MOONBEAM: '0x504',\n MOONBEAM_TESTNET: '0x507',\n MOONRIVER: '0x505',\n CRONOS: '0x19',\n GNOSIS: '0x64',\n ZKSYNC_ERA: '0x144',\n TEST_ETH: '0x539',\n ARBITRUM_GOERLI: '0x66eed',\n BLAST: '0x13e31',\n FILECOIN: '0x13a',\n POLYGON_ZKEVM: '0x44d',\n SCROLL: '0x82750',\n SCROLL_SEPOLIA: '0x8274f',\n WETHIO: '0x4e',\n CHZ: '0x15b38',\n NUMBERS: '0x290b',\n SEI: '0x531',\n APE_TESTNET: '0x8157',\n APE_MAINNET: '0x8173',\n BERACHAIN: '0x138d5',\n METACHAIN_ONE: '0x1b6e6',\n ARBITRUM_SEPOLIA: '0x66eee',\n NEAR: '0x18d',\n NEAR_TESTNET: '0x18e',\n B3: '0x208d',\n B3_TESTNET: '0x7c9',\n GRAVITY_ALPHA_MAINNET: '0x659',\n GRAVITY_ALPHA_TESTNET_SEPOLIA: '0x34c1',\n LISK: '0x46f',\n LISK_SEPOLIA: '0x106a',\n INK_SEPOLIA: '0xba5eD',\n INK: '0xdef1',\n MODE_SEPOLIA: '0x397',\n MODE: '0x868b',\n} as const;\n\nexport const NETWORK_TYPES = {\n GOERLI: 'goerli',\n LOCALHOST: 'localhost',\n MAINNET: 'mainnet',\n SEPOLIA: 'sepolia',\n LINEA_GOERLI: 'linea-goerli',\n LINEA_SEPOLIA: 'linea-sepolia',\n LINEA_MAINNET: 'linea-mainnet',\n} as const;\n\nexport const MAINNET_DISPLAY_NAME = 'Ethereum Mainnet';\nexport const GOERLI_DISPLAY_NAME = 'Goerli';\nexport const SEPOLIA_DISPLAY_NAME = 'Sepolia';\nexport const LINEA_GOERLI_DISPLAY_NAME = 'Linea Goerli';\nexport const LINEA_SEPOLIA_DISPLAY_NAME = 'Linea Sepolia';\nexport const LINEA_MAINNET_DISPLAY_NAME = 'Linea Mainnet';\nexport const LOCALHOST_DISPLAY_NAME = 'Localhost 8545';\nexport const BSC_DISPLAY_NAME = 'Binance Smart Chain';\nexport const POLYGON_DISPLAY_NAME = 'Polygon';\nexport const AVALANCHE_DISPLAY_NAME = 'Avalanche Network C-Chain';\nexport const ARBITRUM_DISPLAY_NAME = 'Arbitrum One';\nexport const BNB_DISPLAY_NAME = 'BNB Chain';\nexport const OPTIMISM_DISPLAY_NAME = 'OP Mainnet';\nexport const FANTOM_DISPLAY_NAME = 'Fantom Opera';\nexport const HARMONY_DISPLAY_NAME = 'Harmony Mainnet Shard 0';\nexport const PALM_DISPLAY_NAME = 'Palm';\nexport const CELO_DISPLAY_NAME = 'Celo Mainnet';\nexport const GNOSIS_DISPLAY_NAME = 'Gnosis';\nexport const ZK_SYNC_ERA_DISPLAY_NAME = 'zkSync Era Mainnet';\nexport const BASE_DISPLAY_NAME = 'Base Mainnet';\nexport const AURORA_DISPLAY_NAME = 'Aurora Mainnet';\nexport const CRONOS_DISPLAY_NAME = 'Cronos';\nexport const POLYGON_ZKEVM_DISPLAY_NAME = 'Polygon zkEVM';\nexport const MOONBEAM_DISPLAY_NAME = 'Moonbeam';\nexport const MOONRIVER_DISPLAY_NAME = 'Moonriver';\nexport const SCROLL_DISPLAY_NAME = 'Scroll';\nexport const SCROLL_SEPOLIA_DISPLAY_NAME = 'Scroll Sepolia';\nexport const OP_BNB_DISPLAY_NAME = 'opBNB';\nexport const BERACHAIN_DISPLAY_NAME = 'Berachain Artio';\nexport const METACHAIN_ONE_DISPLAY_NAME = 'Metachain One Mainnet';\nexport const LISK_DISPLAY_NAME = 'Lisk';\nexport const LISK_SEPOLIA_DISPLAY_NAME = 'Lisk Sepolia';\nexport const INK_SEPOLIA_DISPLAY_NAME = 'Ink Sepolia';\nexport const INK_DISPLAY_NAME = 'Ink Mainnet';\nexport const SONEIUM_DISPLAY_NAME = 'Soneium Mainnet';\nexport const MODE_SEPOLIA_DISPLAY_NAME = 'Mode Sepolia';\nexport const MODE_DISPLAY_NAME = 'Mode Mainnet';\n\nexport const NETWORK_TO_NAME_MAP = {\n [NETWORK_TYPES.GOERLI]: GOERLI_DISPLAY_NAME,\n [NETWORK_TYPES.MAINNET]: MAINNET_DISPLAY_NAME,\n [NETWORK_TYPES.LINEA_GOERLI]: LINEA_GOERLI_DISPLAY_NAME,\n [NETWORK_TYPES.LINEA_SEPOLIA]: LINEA_SEPOLIA_DISPLAY_NAME,\n [NETWORK_TYPES.LINEA_MAINNET]: LINEA_MAINNET_DISPLAY_NAME,\n [NETWORK_TYPES.LOCALHOST]: LOCALHOST_DISPLAY_NAME,\n [NETWORK_TYPES.SEPOLIA]: SEPOLIA_DISPLAY_NAME,\n\n [CHAIN_IDS.ARBITRUM]: ARBITRUM_DISPLAY_NAME,\n [CHAIN_IDS.AVALANCHE]: AVALANCHE_DISPLAY_NAME,\n [CHAIN_IDS.BSC]: BSC_DISPLAY_NAME,\n [CHAIN_IDS.BASE]: BASE_DISPLAY_NAME,\n [CHAIN_IDS.GOERLI]: GOERLI_DISPLAY_NAME,\n [CHAIN_IDS.MAINNET]: MAINNET_DISPLAY_NAME,\n [CHAIN_IDS.LINEA_GOERLI]: LINEA_GOERLI_DISPLAY_NAME,\n [CHAIN_IDS.LINEA_MAINNET]: LINEA_MAINNET_DISPLAY_NAME,\n [CHAIN_IDS.LINEA_SEPOLIA]: LINEA_SEPOLIA_DISPLAY_NAME,\n [CHAIN_IDS.LOCALHOST]: LOCALHOST_DISPLAY_NAME,\n [CHAIN_IDS.OPTIMISM]: OPTIMISM_DISPLAY_NAME,\n [CHAIN_IDS.POLYGON]: POLYGON_DISPLAY_NAME,\n [CHAIN_IDS.SCROLL]: SCROLL_DISPLAY_NAME,\n [CHAIN_IDS.SCROLL_SEPOLIA]: SCROLL_SEPOLIA_DISPLAY_NAME,\n [CHAIN_IDS.SEPOLIA]: SEPOLIA_DISPLAY_NAME,\n [CHAIN_IDS.OPBNB]: OP_BNB_DISPLAY_NAME,\n [CHAIN_IDS.ZKSYNC_ERA]: ZK_SYNC_ERA_DISPLAY_NAME,\n [CHAIN_IDS.BERACHAIN]: BERACHAIN_DISPLAY_NAME,\n [CHAIN_IDS.METACHAIN_ONE]: METACHAIN_ONE_DISPLAY_NAME,\n [CHAIN_IDS.LISK]: LISK_DISPLAY_NAME,\n [CHAIN_IDS.LISK_SEPOLIA]: LISK_SEPOLIA_DISPLAY_NAME,\n} as const;\n"]}
@@ -1,4 +1,3 @@
1
- import type { AllowedBridgeChainIds } from "./bridge.cjs";
2
1
  /**
3
2
  * An object containing all of the chain ids for networks both built in and
4
3
  * those that we have added custom code to support our feature set.
@@ -152,5 +151,4 @@ export declare const NETWORK_TO_NAME_MAP: {
152
151
  readonly "0x46f": "Lisk";
153
152
  readonly "0x106a": "Lisk Sepolia";
154
153
  };
155
- export declare const NETWORK_TO_SHORT_NETWORK_NAME_MAP: Record<AllowedBridgeChainIds, string>;
156
154
  //# sourceMappingURL=chains.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chains.d.cts","sourceRoot":"","sources":["../../src/constants/chains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAiB;AAEtD;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEZ,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;CAQhB,CAAC;AAEX,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AACxD,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAC1D,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,wBAAwB,uBAAuB,CAAC;AAC7D,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAC1D,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAChD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,2BAA2B,mBAAmB,CAAC;AAC5D,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAC3C,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AACxD,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AACxD,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AACtD,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AACxD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BtB,CAAC;AACX,eAAO,MAAM,iCAAiC,EAAE,MAAM,CACpD,qBAAqB,EACrB,MAAM,CAWP,CAAC"}
1
+ {"version":3,"file":"chains.d.cts","sourceRoot":"","sources":["../../src/constants/chains.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEZ,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;CAQhB,CAAC;AAEX,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AACxD,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAC1D,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAC1D,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,wBAAwB,uBAAuB,CAAC;AAC7D,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAC1D,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAChD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,2BAA2B,mBAAmB,CAAC;AAC5D,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAC3C,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AACxD,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AACxD,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AACtD,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AACxD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BtB,CAAC"}
@@ -1,4 +1,3 @@
1
- import type { AllowedBridgeChainIds } from "./bridge.mjs";
2
1
  /**
3
2
  * An object containing all of the chain ids for networks both built in and
4
3
  * those that we have added custom code to support our feature set.
@@ -152,5 +151,4 @@ export declare const NETWORK_TO_NAME_MAP: {
152
151
  readonly "0x46f": "Lisk";
153
152
  readonly "0x106a": "Lisk Sepolia";
154
153
  };
155
- export declare const NETWORK_TO_SHORT_NETWORK_NAME_MAP: Record<AllowedBridgeChainIds, string>;
156
154
  //# sourceMappingURL=chains.d.mts.map