@metamask-previews/bridge-controller 10.0.0-preview-e7013a54 → 10.0.0-preview-e56c504a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -18
- package/dist/bridge-controller.cjs +25 -96
- package/dist/bridge-controller.cjs.map +1 -1
- package/dist/bridge-controller.d.cts +5 -5
- package/dist/bridge-controller.d.cts.map +1 -1
- package/dist/bridge-controller.d.mts +5 -5
- package/dist/bridge-controller.d.mts.map +1 -1
- package/dist/bridge-controller.mjs +26 -97
- package/dist/bridge-controller.mjs.map +1 -1
- package/dist/constants/bridge.cjs +1 -2
- package/dist/constants/bridge.cjs.map +1 -1
- package/dist/constants/bridge.d.cts +1 -2
- package/dist/constants/bridge.d.cts.map +1 -1
- package/dist/constants/bridge.d.mts +1 -2
- package/dist/constants/bridge.d.mts.map +1 -1
- package/dist/constants/bridge.mjs +1 -2
- package/dist/constants/bridge.mjs.map +1 -1
- package/dist/constants/chains.cjs +12 -1
- package/dist/constants/chains.cjs.map +1 -1
- package/dist/constants/chains.d.cts +2 -0
- package/dist/constants/chains.d.cts.map +1 -1
- package/dist/constants/chains.d.mts +2 -0
- package/dist/constants/chains.d.mts.map +1 -1
- package/dist/constants/chains.mjs +11 -0
- package/dist/constants/chains.mjs.map +1 -1
- package/dist/constants/tokens.cjs +38 -61
- package/dist/constants/tokens.cjs.map +1 -1
- package/dist/constants/tokens.d.cts +48 -100
- package/dist/constants/tokens.d.cts.map +1 -1
- package/dist/constants/tokens.d.mts +48 -100
- package/dist/constants/tokens.d.mts.map +1 -1
- package/dist/constants/tokens.mjs +14 -37
- package/dist/constants/tokens.mjs.map +1 -1
- package/dist/index.cjs +1 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -16
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +4 -16
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -11
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs +3 -4
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +54 -108
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +54 -108
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +3 -4
- package/dist/types.mjs.map +1 -1
- package/dist/utils/balance.cjs +2 -2
- package/dist/utils/balance.cjs.map +1 -1
- package/dist/utils/balance.d.cts.map +1 -1
- package/dist/utils/balance.d.mts.map +1 -1
- package/dist/utils/balance.mjs +2 -2
- package/dist/utils/balance.mjs.map +1 -1
- package/dist/utils/bridge.cjs +5 -65
- package/dist/utils/bridge.cjs.map +1 -1
- package/dist/utils/bridge.d.cts +4 -27
- package/dist/utils/bridge.d.cts.map +1 -1
- package/dist/utils/bridge.d.mts +4 -27
- package/dist/utils/bridge.d.mts.map +1 -1
- package/dist/utils/bridge.mjs +5 -62
- package/dist/utils/bridge.mjs.map +1 -1
- package/dist/utils/fetch.cjs +26 -34
- package/dist/utils/fetch.cjs.map +1 -1
- package/dist/utils/fetch.d.cts +5 -6
- package/dist/utils/fetch.d.cts.map +1 -1
- package/dist/utils/fetch.d.mts +5 -6
- package/dist/utils/fetch.d.mts.map +1 -1
- package/dist/utils/fetch.mjs +24 -32
- package/dist/utils/fetch.mjs.map +1 -1
- package/dist/utils/quote.cjs +2 -12
- package/dist/utils/quote.cjs.map +1 -1
- package/dist/utils/quote.d.cts +2 -2
- package/dist/utils/quote.d.cts.map +1 -1
- package/dist/utils/quote.d.mts +2 -2
- package/dist/utils/quote.d.mts.map +1 -1
- package/dist/utils/quote.mjs +2 -12
- package/dist/utils/quote.mjs.map +1 -1
- package/dist/utils/validators.cjs +16 -15
- package/dist/utils/validators.cjs.map +1 -1
- package/dist/utils/validators.d.cts +3 -2
- package/dist/utils/validators.d.cts.map +1 -1
- package/dist/utils/validators.d.mts +3 -2
- package/dist/utils/validators.d.mts.map +1 -1
- package/dist/utils/validators.mjs +17 -16
- package/dist/utils/validators.mjs.map +1 -1
- package/package.json +2 -7
- package/dist/utils/caip-formatters.cjs +0 -102
- package/dist/utils/caip-formatters.cjs.map +0 -1
- package/dist/utils/caip-formatters.d.cts +0 -31
- package/dist/utils/caip-formatters.d.cts.map +0 -1
- package/dist/utils/caip-formatters.d.mts +0 -31
- package/dist/utils/caip-formatters.d.mts.map +0 -1
- package/dist/utils/caip-formatters.mjs +0 -95
- package/dist/utils/caip-formatters.mjs.map +0 -1
|
@@ -9,19 +9,17 @@ 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,
|
|
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;
|
|
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";
|
|
18
17
|
import { numberToHex } from "@metamask/utils";
|
|
19
18
|
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";
|
|
20
19
|
import { CHAIN_IDS } from "./constants/chains.mjs";
|
|
21
20
|
import { BridgeFeatureFlagsKey, RequestStatus } from "./types.mjs";
|
|
22
21
|
import { hasSufficientBalance } from "./utils/balance.mjs";
|
|
23
|
-
import { getDefaultBridgeControllerState,
|
|
24
|
-
import { formatAddressToCaipReference, formatChainIdToCaip, formatChainIdToHex } from "./utils/caip-formatters.mjs";
|
|
22
|
+
import { getDefaultBridgeControllerState, sumHexes } from "./utils/bridge.mjs";
|
|
25
23
|
import { fetchBridgeFeatureFlags, fetchBridgeQuotes } from "./utils/fetch.mjs";
|
|
26
24
|
import { isValidQuoteRequest } from "./utils/quote.mjs";
|
|
27
25
|
const metadata = {
|
|
@@ -102,46 +100,27 @@ export class BridgeController extends StaticIntervalPollingController() {
|
|
|
102
100
|
});
|
|
103
101
|
if (isValidQuoteRequest(updatedQuoteRequest)) {
|
|
104
102
|
__classPrivateFieldSet(this, _BridgeController_quotesFirstFetched, Date.now(), "f");
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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);
|
|
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);
|
|
125
108
|
this.startPolling({
|
|
126
109
|
networkClientId,
|
|
127
110
|
updatedQuoteRequest: {
|
|
128
111
|
...updatedQuoteRequest,
|
|
112
|
+
walletAddress,
|
|
129
113
|
insufficientBal,
|
|
130
114
|
},
|
|
131
115
|
});
|
|
132
116
|
}
|
|
133
117
|
};
|
|
134
118
|
_BridgeController_hasSufficientBalance.set(this, async (quoteRequest) => {
|
|
135
|
-
const walletAddress = __classPrivateFieldGet(this, _BridgeController_instances, "m",
|
|
136
|
-
const srcChainIdInHex =
|
|
119
|
+
const walletAddress = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedAccount).call(this).address;
|
|
120
|
+
const srcChainIdInHex = numberToHex(quoteRequest.srcChainId);
|
|
137
121
|
const provider = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedNetworkClient).call(this)?.provider;
|
|
138
|
-
const normalizedSrcTokenAddress = formatAddressToCaipReference(quoteRequest.srcTokenAddress);
|
|
139
122
|
return (provider &&
|
|
140
|
-
walletAddress
|
|
141
|
-
normalizedSrcTokenAddress &&
|
|
142
|
-
quoteRequest.srcTokenAmount &&
|
|
143
|
-
srcChainIdInHex &&
|
|
144
|
-
(await hasSufficientBalance(provider, walletAddress, normalizedSrcTokenAddress, quoteRequest.srcTokenAmount, srcChainIdInHex)));
|
|
123
|
+
(await hasSufficientBalance(provider, walletAddress, quoteRequest.srcTokenAddress, quoteRequest.srcTokenAmount, srcChainIdInHex)));
|
|
145
124
|
});
|
|
146
125
|
this.resetState = () => {
|
|
147
126
|
this.stopAllPolling();
|
|
@@ -169,25 +148,15 @@ export class BridgeController extends StaticIntervalPollingController() {
|
|
|
169
148
|
this.update((state) => {
|
|
170
149
|
state.bridgeFeatureFlags = bridgeFeatureFlags;
|
|
171
150
|
});
|
|
172
|
-
|
|
151
|
+
this.setIntervalLength(bridgeFeatureFlags[BridgeFeatureFlagsKey.EXTENSION_CONFIG].refreshRate);
|
|
173
152
|
};
|
|
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
|
-
});
|
|
187
153
|
_BridgeController_fetchBridgeQuotes.set(this, async ({ networkClientId: _networkClientId, updatedQuoteRequest, }) => {
|
|
188
154
|
const { bridgeFeatureFlags, quotesInitialLoadTime, quotesRefreshCount } = this.state;
|
|
189
155
|
__classPrivateFieldGet(this, _BridgeController_abortController, "f")?.abort('New quote request');
|
|
190
156
|
__classPrivateFieldSet(this, _BridgeController_abortController, new AbortController(), "f");
|
|
157
|
+
if (updatedQuoteRequest.srcChainId === updatedQuoteRequest.destChainId) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
191
160
|
this.update((state) => {
|
|
192
161
|
state.quotesLoadingStatus = RequestStatus.LOADING;
|
|
193
162
|
state.quoteRequest = updatedQuoteRequest;
|
|
@@ -201,9 +170,8 @@ export class BridgeController extends StaticIntervalPollingController() {
|
|
|
201
170
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
202
171
|
__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);
|
|
203
172
|
const quotesWithL1GasFees = await __classPrivateFieldGet(this, _BridgeController_appendL1GasFees, "f").call(this, quotes);
|
|
204
|
-
const quotesWithSolanaFees = await __classPrivateFieldGet(this, _BridgeController_appendSolanaFees, "f").call(this, quotes);
|
|
205
173
|
this.update((state) => {
|
|
206
|
-
state.quotes = quotesWithL1GasFees
|
|
174
|
+
state.quotes = quotesWithL1GasFees;
|
|
207
175
|
state.quotesLoadingStatus = RequestStatus.FETCHED;
|
|
208
176
|
});
|
|
209
177
|
}
|
|
@@ -217,7 +185,6 @@ export class BridgeController extends StaticIntervalPollingController() {
|
|
|
217
185
|
state.quoteFetchError =
|
|
218
186
|
error instanceof Error ? error.message : 'Unknown error';
|
|
219
187
|
state.quotesLoadingStatus = RequestStatus.ERROR;
|
|
220
|
-
state.quotes = DEFAULT_BRIDGE_CONTROLLER_STATE.quotes;
|
|
221
188
|
});
|
|
222
189
|
console.log('Failed to fetch bridge quotes', error);
|
|
223
190
|
}
|
|
@@ -243,18 +210,10 @@ export class BridgeController extends StaticIntervalPollingController() {
|
|
|
243
210
|
}
|
|
244
211
|
});
|
|
245
212
|
_BridgeController_appendL1GasFees.set(this, async (quotes) => {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
const chainId =
|
|
249
|
-
|
|
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);
|
|
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)) {
|
|
258
217
|
const getTxParams = (txData) => ({
|
|
259
218
|
from: txData.from,
|
|
260
219
|
to: txData.to,
|
|
@@ -276,35 +235,6 @@ export class BridgeController extends StaticIntervalPollingController() {
|
|
|
276
235
|
...quoteResponse,
|
|
277
236
|
l1GasFeesInHexWei: sumHexes(approvalL1GasFees, tradeL1GasFees),
|
|
278
237
|
};
|
|
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
|
-
};
|
|
308
238
|
}
|
|
309
239
|
return quoteResponse;
|
|
310
240
|
}));
|
|
@@ -322,7 +252,7 @@ export class BridgeController extends StaticIntervalPollingController() {
|
|
|
322
252
|
}
|
|
323
253
|
const ethersProvider = new Web3Provider(provider);
|
|
324
254
|
const contract = new Contract(contractAddress, abiERC20, ethersProvider);
|
|
325
|
-
const { address: walletAddress } = __classPrivateFieldGet(this, _BridgeController_instances, "m",
|
|
255
|
+
const { address: walletAddress } = __classPrivateFieldGet(this, _BridgeController_instances, "m", _BridgeController_getSelectedAccount).call(this);
|
|
326
256
|
const allowance = await contract.allowance(walletAddress, METABRIDGE_CHAIN_TO_ADDRESS_MAP[chainId]);
|
|
327
257
|
return allowance.toString();
|
|
328
258
|
};
|
|
@@ -339,14 +269,13 @@ export class BridgeController extends StaticIntervalPollingController() {
|
|
|
339
269
|
this.messagingSystem.registerActionHandler(`${BRIDGE_CONTROLLER_NAME}:getBridgeERC20Allowance`, this.getBridgeERC20Allowance.bind(this));
|
|
340
270
|
}
|
|
341
271
|
}
|
|
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(),
|
|
343
|
-
return this.messagingSystem.call('AccountsController:
|
|
344
|
-
}, _BridgeController_getSelectedNetworkClientId = function _BridgeController_getSelectedNetworkClientId() {
|
|
345
|
-
const { selectedNetworkClientId } = this.messagingSystem.call('NetworkController:getState');
|
|
346
|
-
return selectedNetworkClientId;
|
|
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');
|
|
347
274
|
}, _BridgeController_getSelectedNetworkClient = function _BridgeController_getSelectedNetworkClient() {
|
|
348
|
-
const selectedNetworkClientId =
|
|
275
|
+
const { selectedNetworkClientId } = this.messagingSystem.call('NetworkController:getState');
|
|
349
276
|
const networkClient = this.messagingSystem.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
|
|
350
277
|
return networkClient;
|
|
278
|
+
}, _BridgeController_getSelectedNetworkClientId = function _BridgeController_getSelectedNetworkClientId(chainId) {
|
|
279
|
+
return this.messagingSystem.call('NetworkController:findNetworkClientIdByChainId', chainId);
|
|
351
280
|
};
|
|
352
281
|
//# 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 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"]}
|
|
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"]}
|
|
@@ -2,7 +2,6 @@
|
|
|
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");
|
|
6
5
|
const chains_1 = require("./chains.cjs");
|
|
7
6
|
const types_1 = require("../types.cjs");
|
|
8
7
|
// TODO read from feature flags
|
|
@@ -16,7 +15,6 @@ exports.ALLOWED_BRIDGE_CHAIN_IDS = [
|
|
|
16
15
|
chains_1.CHAIN_IDS.ARBITRUM,
|
|
17
16
|
chains_1.CHAIN_IDS.LINEA_MAINNET,
|
|
18
17
|
chains_1.CHAIN_IDS.BASE,
|
|
19
|
-
keyring_api_1.SolScope.Mainnet,
|
|
20
18
|
];
|
|
21
19
|
exports.BRIDGE_DEV_API_BASE_URL = 'https://bridge.dev-api.cx.metamask.io';
|
|
22
20
|
exports.BRIDGE_PROD_API_BASE_URL = 'https://bridge.api.cx.metamask.io';
|
|
@@ -48,6 +46,7 @@ exports.DEFAULT_BRIDGE_CONTROLLER_STATE = {
|
|
|
48
46
|
},
|
|
49
47
|
quoteRequest: {
|
|
50
48
|
srcTokenAddress: constants_1.AddressZero,
|
|
49
|
+
slippage: exports.BRIDGE_DEFAULT_SLIPPAGE,
|
|
51
50
|
},
|
|
52
51
|
quotesInitialLoadTime: null,
|
|
53
52
|
quotes: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.cjs","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":";;;AAAA,wDAAuD;
|
|
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,7 +1,6 @@
|
|
|
1
|
-
import { SolScope } from "@metamask/keyring-api";
|
|
2
1
|
import type { Hex } from "@metamask/utils";
|
|
3
2
|
import type { BridgeControllerState } from "../types.cjs";
|
|
4
|
-
export declare const ALLOWED_BRIDGE_CHAIN_IDS:
|
|
3
|
+
export declare const ALLOWED_BRIDGE_CHAIN_IDS: ("0x1" | "0xe708" | "0x2105" | "0x38" | "0xa" | "0x89" | "0xa86a" | "0xa4b1" | "0x144")[];
|
|
5
4
|
export type AllowedBridgeChainIds = (typeof ALLOWED_BRIDGE_CHAIN_IDS)[number];
|
|
6
5
|
export declare const BRIDGE_DEV_API_BASE_URL = "https://bridge.dev-api.cx.metamask.io";
|
|
7
6
|
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,
|
|
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,7 +1,6 @@
|
|
|
1
|
-
import { SolScope } from "@metamask/keyring-api";
|
|
2
1
|
import type { Hex } from "@metamask/utils";
|
|
3
2
|
import type { BridgeControllerState } from "../types.mjs";
|
|
4
|
-
export declare const ALLOWED_BRIDGE_CHAIN_IDS:
|
|
3
|
+
export declare const ALLOWED_BRIDGE_CHAIN_IDS: ("0x1" | "0xe708" | "0x2105" | "0x38" | "0xa" | "0x89" | "0xa86a" | "0xa4b1" | "0x144")[];
|
|
5
4
|
export type AllowedBridgeChainIds = (typeof ALLOWED_BRIDGE_CHAIN_IDS)[number];
|
|
6
5
|
export declare const BRIDGE_DEV_API_BASE_URL = "https://bridge.dev-api.cx.metamask.io";
|
|
7
6
|
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,
|
|
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,5 +1,4 @@
|
|
|
1
1
|
import { AddressZero } from "@ethersproject/constants";
|
|
2
|
-
import { SolScope } from "@metamask/keyring-api";
|
|
3
2
|
import { CHAIN_IDS } from "./chains.mjs";
|
|
4
3
|
import { BridgeFeatureFlagsKey } from "../types.mjs";
|
|
5
4
|
// TODO read from feature flags
|
|
@@ -13,7 +12,6 @@ export const ALLOWED_BRIDGE_CHAIN_IDS = [
|
|
|
13
12
|
CHAIN_IDS.ARBITRUM,
|
|
14
13
|
CHAIN_IDS.LINEA_MAINNET,
|
|
15
14
|
CHAIN_IDS.BASE,
|
|
16
|
-
SolScope.Mainnet,
|
|
17
15
|
];
|
|
18
16
|
export const BRIDGE_DEV_API_BASE_URL = 'https://bridge.dev-api.cx.metamask.io';
|
|
19
17
|
export const BRIDGE_PROD_API_BASE_URL = 'https://bridge.api.cx.metamask.io';
|
|
@@ -45,6 +43,7 @@ export const DEFAULT_BRIDGE_CONTROLLER_STATE = {
|
|
|
45
43
|
},
|
|
46
44
|
quoteRequest: {
|
|
47
45
|
srcTokenAddress: AddressZero,
|
|
46
|
+
slippage: BRIDGE_DEFAULT_SLIPPAGE,
|
|
48
47
|
},
|
|
49
48
|
quotesInitialLoadTime: null,
|
|
50
49
|
quotes: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.mjs","sourceRoot":"","sources":["../../src/constants/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iCAAiC;
|
|
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,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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;
|
|
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;
|
|
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,4 +154,15 @@ 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
|
+
};
|
|
157
168
|
//# sourceMappingURL=chains.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.cjs","sourceRoot":"","sources":["../../src/constants/chains.ts"],"names":[],"mappings":"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","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
|
+
{"version":3,"file":"chains.cjs","sourceRoot":"","sources":["../../src/constants/chains.ts"],"names":[],"mappings":"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","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,3 +1,4 @@
|
|
|
1
|
+
import type { AllowedBridgeChainIds } from "./bridge.cjs";
|
|
1
2
|
/**
|
|
2
3
|
* An object containing all of the chain ids for networks both built in and
|
|
3
4
|
* those that we have added custom code to support our feature set.
|
|
@@ -151,4 +152,5 @@ export declare const NETWORK_TO_NAME_MAP: {
|
|
|
151
152
|
readonly "0x46f": "Lisk";
|
|
152
153
|
readonly "0x106a": "Lisk Sepolia";
|
|
153
154
|
};
|
|
155
|
+
export declare const NETWORK_TO_SHORT_NETWORK_NAME_MAP: Record<AllowedBridgeChainIds, string>;
|
|
154
156
|
//# sourceMappingURL=chains.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
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
|
+
{"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,3 +1,4 @@
|
|
|
1
|
+
import type { AllowedBridgeChainIds } from "./bridge.mjs";
|
|
1
2
|
/**
|
|
2
3
|
* An object containing all of the chain ids for networks both built in and
|
|
3
4
|
* those that we have added custom code to support our feature set.
|
|
@@ -151,4 +152,5 @@ export declare const NETWORK_TO_NAME_MAP: {
|
|
|
151
152
|
readonly "0x46f": "Lisk";
|
|
152
153
|
readonly "0x106a": "Lisk Sepolia";
|
|
153
154
|
};
|
|
155
|
+
export declare const NETWORK_TO_SHORT_NETWORK_NAME_MAP: Record<AllowedBridgeChainIds, string>;
|
|
154
156
|
//# sourceMappingURL=chains.d.mts.map
|