@abstract-foundation/agw-web
Version:
Abstract Global Wallet for the web (generic EIP-6963 provider)
50 lines • 1.69 kB
JavaScript
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