Skip to content

Commit add7b26

Browse files
authored
feat: Base Bridge executor route (#3998)
* feat: Base Bridge executor route * fix: no explorer link yet
1 parent ace9b78 commit add7b26

16 files changed

Lines changed: 1219 additions & 55 deletions

File tree

bun.lock

Lines changed: 994 additions & 49 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bunfig.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ minimumReleaseAgeExcludes = [
5050
"@wormhole-foundation/wormhole-connect",
5151
# @wormhole-labs packages
5252
"@wormhole-labs/cctp-executor-route",
53+
"@wormhole-labs/base-bridge-executor-route",
5354
"@wormhole-labs/wallet-aggregator-aptos",
5455
"@wormhole-labs/wallet-aggregator-core",
5556
"@wormhole-labs/wallet-aggregator-evm",

package.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@
4040
"types": "./lib/executor.d.ts",
4141
"require": "./lib/executor.js",
4242
"import": "./lib/executor.mjs"
43+
},
44+
"./base": {
45+
"types": "./lib/base.d.ts",
46+
"require": "./lib/base.js",
47+
"import": "./lib/base.mjs"
4348
}
4449
},
4550
"files": [
@@ -88,6 +93,7 @@
8893
"@wormhole-foundation/sdk-sui-core": "4.7.3",
8994
"@wormhole-foundation/sdk-sui-ntt": "4.0.10",
9095
"@wormhole-labs/cctp-executor-route": "0.25.0",
96+
"@wormhole-labs/base-bridge-executor-route": "1.0.3",
9197
"@wormhole-labs/wallet-aggregator-aptos": "1.3.3",
9298
"@wormhole-labs/wallet-aggregator-core": "1.3.3",
9399
"@wormhole-labs/wallet-aggregator-evm": "1.3.3",

src/components/SampleApp/index.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import {
5252
monadBridgeExecutorRoute,
5353
monadBridgeManualRoute,
5454
} from 'exports/monad';
55+
import { createBaseBridgeRoute } from 'exports/base';
5556
import type { WormholeConnectTheme } from 'theme';
5657

5758
const MAX_URL_SIZE = 30_000; // 30kb (HTTP header limit is set to 32kb)
@@ -105,6 +106,8 @@ const parseConfig = (config: string): WormholeConnectConfig => {
105106
window.monadBridgeExecutorRoute = monadBridgeExecutorRoute;
106107
/* @ts-ignore */
107108
window.monadBridgeManualRoute = monadBridgeManualRoute;
109+
/* @ts-ignore */
110+
window.createBaseBridgeRoute = createBaseBridgeRoute;
108111

109112
return eval(
110113
`(function() { return ${config} })()`,
@@ -352,6 +355,10 @@ function SampleApp() {
352355
<pre>monadBridgeManualRoute</pre>
353356
<i>{'(MultiTokenNttRoute.Config) -> RouteConstructor'}</i>
354357
</li>
358+
<li>
359+
<pre>createBaseBridgeRoute</pre>
360+
<i>{'(TokenConfiguration[])) -> RouteConstructor'}</i>
361+
</li>
355362
<li></li>
356363
</ul>
357364
</div>

src/config/testnet/chains.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ export const TESTNET_CHAINS: ChainsConfig = {
9191
},
9292
BaseSepolia: {
9393
displayName: 'Base Sepolia',
94-
explorerUrl: 'https://base-sepolia.blockscout.com/',
94+
explorerUrl: 'https://sepolia.basescan.org/',
9595
explorerName: 'Etherscan',
9696
icon: 'Base',
9797
symbol: 'BASE',

src/exports/base.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import '@wormhole-labs/base-bridge-executor-route';
2+
3+
export { createBaseBridgeRoute, type TokenConfiguration } from '../routes/base';

src/hooks/useFetchQuotes.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,11 @@ export default (routes: string[], params: Params): HookReturn => {
247247
continue;
248248
}
249249

250+
// Skip value loss filtering for BaseBridgeRoute (value should be preserved 1:1)
251+
if (name === 'BaseBridgeRoute') {
252+
continue;
253+
}
254+
250255
const quote = filtered[name];
251256

252257
if (quote !== undefined && quote.success) {

src/hooks/useGasSlider.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
import type { Chain } from '@wormhole-foundation/sdk';
12
import config from 'config';
23
import type { Token } from 'config/tokens';
34

45
type Props = {
6+
destChain?: Chain;
57
destToken?: Token;
68
route?: string;
79
isTransactionInProgress: boolean;
@@ -13,9 +15,13 @@ export const useGasSlider = (
1315
disabled: boolean;
1416
showGasSlider: boolean | undefined;
1517
} => {
16-
const { destToken, route, isTransactionInProgress } = props;
18+
const { destChain, destToken, route, isTransactionInProgress } = props;
1719

18-
const disabled = isTransactionInProgress;
20+
// Disable gas toggle for BaseBridgeRoute when destination is Base
21+
const isBaseBridgeToBase =
22+
route === 'BaseBridgeRoute' && destChain === 'Base';
23+
24+
const disabled = isTransactionInProgress || isBaseBridgeToBase;
1925
const showGasSlider =
2026
!!route &&
2127
config.routes.get(route).NATIVE_GAS_DROPOFF_SUPPORTED &&

src/routes/base/bridge.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import type { BaseBridgeExecutorRoute } from '@wormhole-labs/base-bridge-executor-route';
2+
import {
3+
baseBridgeRoute,
4+
type TokenConfiguration,
5+
} from '@wormhole-labs/base-bridge-executor-route';
6+
import type { routes } from '@wormhole-foundation/sdk-connect';
7+
8+
export type { BaseBridgeExecutorRoute, TokenConfiguration };
9+
10+
export function createBaseBridgeRoute(
11+
tokens: TokenConfiguration[],
12+
config?: BaseBridgeExecutorRoute.Config,
13+
): routes.RouteConstructor {
14+
config = config || { referrerFeeDbps: 0n };
15+
return baseBridgeRoute(config, tokens);
16+
}

src/routes/base/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { createBaseBridgeRoute } from './bridge';
2+
export type { TokenConfiguration } from './bridge';

0 commit comments

Comments
 (0)