wagmi
This example uses the built-in @tokenflight/adapter-wagmi package.
Live project Open in StackBlitz
Install
Section titled “Install”pnpm add @tokenflight/swap @tokenflight/adapter-wagmi @wagmi/core wagmi viemExample
Section titled “Example”import { useEffect, useMemo } from 'react';import { TokenFlightWidget } from '@tokenflight/swap';import { WagmiWalletAdapter } from '@tokenflight/adapter-wagmi';import { createConfig, http } from '@wagmi/core';import { mainnet, base } from '@wagmi/core/chains';import { injected } from 'wagmi/connectors';
const wagmiConfig = createConfig({ chains: [mainnet, base], connectors: [injected()], transports: { [mainnet.id]: http(), [base.id]: http(), },});
export default function App() { const walletAdapter = useMemo(() => new WagmiWalletAdapter(wagmiConfig), []);
useEffect(() => { const widget = new TokenFlightWidget({ container: '#widget', config: { toToken: { chainId: 8453, address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' }, amount: '100', tradeType: 'EXACT_OUTPUT', theme: 'light', }, walletAdapter, }); widget.initialize(); return () => widget.destroy(); }, [walletAdapter]);
return <div id="widget" style={{ minHeight: 560 }} />;}How It Works
Section titled “How It Works”-
Configure wagmi — define your chains, connectors (injected, WalletConnect, Coinbase, etc.), and transports. The
WagmiWalletAdapterauto-derivessupportedChainIdsfromwagmiConfig.chains. -
Wrap with
WagmiWalletAdapter— creates anIWalletAdapterthat delegates to wagmi for wallet connections and transaction signing. EVM-only (no Solana support). -
Mount in
useEffect— always initialize after the DOM container is available. Returnwidget.destroy()for cleanup.
Adding Callbacks and Token Pre-selection
Section titled “Adding Callbacks and Token Pre-selection”const widget = new TokenFlightWidget({ container: '#widget', config: { toToken: { chainId: 8453, address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' }, // USDC on Base amount: '100', tradeType: 'EXACT_OUTPUT', theme: 'dark', }, walletAdapter, callbacks: { onSwapSuccess: (data) => console.log('Done:', data), onSwapError: (error) => console.error(error.code, error.message), },});See Events & Callbacks for all available callbacks.