The @abstract-foundation/agw-client
package provides the core client library for interacting with the 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.
Install the core client library via NPM:
npm install @abstract-foundation/agw-client
import { createAbstractClient } from '@abstract-foundation/agw-client'
import { createAbstractClient } from '@abstract-foundation/agw-client';
import { ChainEIP712, http } from 'viem';
import { Account } from 'viem/accounts';
// Assume you have a signer account and chain configuration
const signer: Account = {
address: '0xYourSignerAddress',
// ...other account properties
};
(async () => {
const abstractClient = await createAbstractClient({
signer,
chain,
transport: http(), // optional, defaults to HTTP transport if omitted
});
// Use the abstractClient instance
})();
Asynchronously creates an AbstractClient
instance, extending the standard Client
with actions specific to the Abstract Global Wallet.
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
})();
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);
}
})();
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
sponsor: {
paymaster: '0xPaymasterAddress', // Address of the Paymaster contract
},
});
console.log('Sponsored Transaction Hash:', txHash);
} catch (error) {
console.error('Error sending sponsored transaction:', error);
}
})();
-
Paymaster: The
paymaster
object is specified in thesendTransaction
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.
For detailed documentation, please refer to the Abstract Global Wallet Documentation.