@abstract-foundation/agw-client
v0.1.0
Published
Abstract Global Wallet Client SDK
Downloads
6,842
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 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';
// 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
})();
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
sponsor: {
paymaster: '0xPaymasterAddress', // Address of the Paymaster contract
},
});
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 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.
Documentation
For detailed documentation, please refer to the Abstract Global Wallet Documentation.