The transformEIP1193Provider function transforms a standard EIP1193 provider into an Abstract Global Wallet (AGW) compatible provider. This allows you to use existing wallet providers with Abstract Global Wallet.

Import

import { transformEIP1193Provider } from "@abstract-foundation/agw-client";

Usage

import { transformEIP1193Provider } from "@abstract-foundation/agw-client";
import { abstractTestnet } from "viem/chains";
import { getDefaultProvider } from "ethers";

// Assume we have an EIP1193 provider
const originalProvider = getDefaultProvider();

const agwProvider = transformEIP1193Provider({
  provider: originalProvider,
  chain: abstractTestnet,
});

// Now you can use agwProvider as a drop-in replacement

Parameters

options
TransformEIP1193ProviderOptions
required

An object containing the following properties:

Returns

An EIP1193Provider instance with modified behavior for specific JSON-RPC methods to be compatible with the Abstract Global Wallet.

How it works

The transformEIP1193Provider function wraps the original provider and intercepts specific Ethereum JSON-RPC methods:

  1. eth_accounts: Returns the smart account address along with the original signer address.
  2. eth_signTransaction and eth_sendTransaction:
    • If the transaction is from the original signer, it passes through to the original provider.
    • If it’s from the smart account, it uses the AGW client to handle the transaction.

For all other methods, it passes the request through to the original provider.