@abstract-foundation/agw-client
v1.12.0
Published
Abstract Global Wallet Client SDK
Readme
@abstract-foundation/agw-client
The @abstract-foundation/agw-client package provides the core client library for interacting with the Abstract Global Wallet (AGW).
Abstract Global Wallet (AGW)
Abstract Global Wallet (AGW) is a cross-application smart contract wallet that users can use to interact with any application built on Abstract, powered by Abstract's native account abstraction.
Installation
Install the core client library via NPM:
npm install @abstract-foundation/agw-clientQuick Start
Importing
import { createAbstractClient } from '@abstract-foundation/agw-client'Creating an Abstract Client
import { createAbstractClient } from '@abstract-foundation/agw-client';
import { ChainEIP712, http } from 'viem';
import { Account } from 'viem/accounts';
import { abstractTestnet } from 'viem/chains';
// Assume you have a signer account and chain configuration
const signer: Account = {
address: '0xYourSignerAddress',
// ...other account properties
};
const chain = abstractTestnet;
(async () => {
const abstractClient = await createAbstractClient({
signer,
chain,
transport: http(), // optional, defaults to HTTP transport if omitted
});
// Use the abstractClient instance
})();API Reference
createAbstractClient
Asynchronously creates an AbstractClient instance, extending the standard Client with actions specific to the Abstract Global Wallet.
Example
import { createAbstractClient } from '@abstract-foundation/agw-client';
(async () => {
const abstractClient = await createAbstractClient({
signer: /* your signer account */,
chain: /* your chain configuration */,
});
// Use abstractClient to interact with the blockchain
})();Examples
Sending a Transaction
import { createAbstractClient } from '@abstract-foundation/agw-client';
(async () => {
const abstractClient = await createAbstractClient({
signer: /* your signer account */,
chain: /* your chain configuration */,
});
try {
const txHash = await abstractClient.sendTransaction({
to: '0xRecipientAddress',
value: 1000000000000000000n, // 1 ETH in wei
});
console.log('Transaction Hash:', txHash);
} catch (error) {
console.error('Error sending transaction:', error);
}
})();Sponsored Transactions via Paymasters
import { createAbstractClient } from '@abstract-foundation/agw-client';
import { ChainEIP712, http } from 'viem';
import { Account } from 'viem/accounts';
(async () => {
// Create a signer account and chain configuration
const signer: Account = {
address: '0xYourSignerAddress',
// ...other account properties
};
// Create an instance of Abstract Client
const abstractClient = await createAbstractClient({
signer,
chain,
transport: http(), // Optional, defaults to HTTP transport if omitted
});
// Example of a sponsored transaction using a Paymaster
try {
const txHash = await abstractClient.sendTransaction({
to: '0xRecipientAddress',
value: 1000000000000000000n, // 1 ETH in wei
paymaster: '0xPaymasterAddress',
paymasterInput: '0x',
});
console.log('Sponsored Transaction Hash:', txHash);
} catch (error) {
console.error('Error sending sponsored transaction:', error);
}
})();
Explanation of Paymaster Usage:
- Paymaster: The
paymasterobject is specified in thesendTransactionmethod, allowing the Paymaster contract to cover the gas fees for the transaction. - Sponsored Transaction: The transaction fee is covered by the Paymaster, so the user’s balance is unaffected by gas costs.
Documentation
For detailed documentation, please refer to the Abstract Global Wallet Documentation.
