@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 be used 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-client
Quick 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';
const signer: Account = {
address: '0xYourSignerAddress',
};
(async () => {
const abstractClient = await createAbstractClient({
signer,
chain,
transport: http(),
});
})();
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: ,
chain: ,
});
})();
Examples
Sending a Transaction
import { createAbstractClient } from '@abstract-foundation/agw-client';
(async () => {
const abstractClient = await createAbstractClient({
signer: ,
chain: ,
});
try {
const txHash = await abstractClient.sendTransaction({
to: '0xRecipientAddress',
value: 1000000000000000000n,
});
console.log('Transaction Hash:', txHash);
} catch (error) {
console.error('Error sending transaction:', error);
}
})();
import { createAbstractClient } from '@abstract-foundation/agw-client';
import { ChainEIP712, http } from 'viem';
import { Account } from 'viem/accounts';
(async () => {
const signer: Account = {
address: '0xYourSignerAddress',
};
const abstractClient = await createAbstractClient({
signer,
chain,
transport: http(),
});
try {
const txHash = await abstractClient.sendTransaction({
to: '0xRecipientAddress',
value: 1000000000000000000n,
sponsor: {
paymaster: '0xPaymasterAddress',
},
});
console.log('Sponsored Transaction Hash:', txHash);
} catch (error) {
console.error('Error sending sponsored transaction:', error);
}
})();
Explanation of Paymaster Usage:
- Paymaster: The
paymaster
object is specified in the sendTransaction
method, 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.