UNPKG

@abstract-foundation/agw-web

Version:

Abstract Global Wallet for the web (generic EIP-6963 provider)

50 lines 1.69 kB
import { transformEIP1193Provider } from '@abstract-foundation/agw-client'; import { toPrivyWalletProvider } from '@privy-io/cross-app-connect'; import { http } from 'viem'; import abstractIcon from './abstract-icon.js'; class EIP6963AnnounceProviderEvent extends CustomEvent { constructor(detail) { super('eip6963:announceProvider', { detail }); } } const eip6963info = { uuid: '2306fd26-fcfb-4f9e-87da-0d1e237e917c', name: 'Abstract Global Wallet', icon: abstractIcon, rdns: 'xyz.abs.privy', }; export function announceProvider({ chain, transport, customPaymasterHandler, }) { if (typeof window === 'undefined') { return () => void 0; } const privyProvider = toPrivyWalletProvider({ chainId: chain.id, providerAppId: 'cm04asygd041fmry9zmcyn5o5', chains: [chain], transports: { [chain.id]: transport ?? http(undefined, { batch: true, }), }, }); const abstractProvider = transformEIP1193Provider({ provider: privyProvider, chain, transport: transport ?? http(undefined, { batch: true, }), isPrivyCrossApp: true, customPaymasterHandler, }); const event = new EIP6963AnnounceProviderEvent({ info: eip6963info, provider: abstractProvider, }); window.dispatchEvent(event); const handler = () => window.dispatchEvent(event); window.addEventListener('eip6963:requestProvider', handler); return () => window.removeEventListener('eip6963:requestProvider', handler); } //# sourceMappingURL=eip6963emitter.js.map