@abstract-foundation/agw-client
Version:
Abstract Global Wallet Client SDK
37 lines • 1.41 kB
JavaScript
import { BaseError, encodeFunctionData, } from 'viem';
import { getContractError, parseAccount } from 'viem/utils';
import {} from 'viem/zksync';
import { AccountNotFoundError } from '../errors/account.js';
import { sendTransactionForSession } from './sendTransactionForSession.js';
export async function writeContractForSession(client, signerClient, publicClient, parameters, session, customPaymasterHandler = undefined) {
const { abi, account: account_ = client.account, address, args, dataSuffix, functionName, ...request } = parameters;
if (!account_)
throw new AccountNotFoundError({
docsPath: '/docs/contract/writeContract',
});
const account = parseAccount(account_);
const data = encodeFunctionData({
abi,
args,
functionName,
});
try {
return await sendTransactionForSession(client, signerClient, publicClient, {
data: `${data}${dataSuffix ? dataSuffix.replace('0x', '') : ''}`,
to: address,
account,
...request,
}, session, customPaymasterHandler);
}
catch (error) {
throw getContractError(error, {
abi,
address,
args,
docsPath: '/docs/contract/writeContract',
functionName,
sender: account.address,
});
}
}
//# sourceMappingURL=writeContractForSession.js.map