UNPKG

@abstract-foundation/agw-react

Version:
52 lines 2.08 kB
import { validChains, } from '@abstract-foundation/agw-client'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import React, { useMemo } from 'react'; import { http } from 'viem'; import { createConfig, WagmiProvider } from 'wagmi'; import { abstractWalletConnector } from './abstractWalletConnector.js'; /** * AbstractWalletProvider is a React provider that wraps the WagmiProvider and QueryClientProvider. * It provides the AbstractWalletContext to its children. * @example * ```tsx * import { AbstractWalletProvider } from '@abstractwallet/agw-react'; * * const App = () => { * // optional configuration overrides * const transport = http("https://your.abstract.node.example.com/rpc") * const queryClient = new QueryClient() * return ( * <AbstractWalletProvider chain={abstractTestnet} transport={transport} queryClient={queryClient}> * <Component {...pageProps} /> * </AbstractWalletProvider> * ); * }; * ``` * @param {AbstractWalletConfig} config - The configuration for the AbstractWalletProvider. */ export const AbstractWalletProvider = ({ chain, transport, queryClient = new QueryClient(), customPaymasterHandler, children, }) => { if (!validChains[chain.id]) { throw new Error(`Chain ${chain.id} is not supported`); } const wagmiConfig = useMemo(() => { return createConfig({ chains: [chain], ssr: true, connectors: [ abstractWalletConnector({ customPaymasterHandler, }), ], transports: { [chain.id]: transport ?? http(undefined, { batch: true, }), }, multiInjectedProviderDiscovery: false, }); }, [chain, transport, customPaymasterHandler]); return (React.createElement(WagmiProvider, { config: wagmiConfig }, React.createElement(QueryClientProvider, { client: queryClient }, children))); }; //# sourceMappingURL=agwProvider.js.map