UNPKG

@abstract-foundation/agw-client

Version:
54 lines 2.53 kB
import { sendRawTransactionSync, } from "viem/actions"; import { getAction, getTransactionError, parseAccount, } from "viem/utils"; import { EOA_VALIDATOR_ADDRESS, INSUFFICIENT_BALANCE_SELECTOR, } from "../constants.js"; import { InsufficientBalanceError } from "../errors/insufficientBalance.js"; import { signPrivyTransaction } from "./sendPrivyTransaction.js"; import { sendTransactionInternal } from "./sendTransactionInternal.js"; export async function sendTransactionSync(client, signerClient, publicClient, parameters, isPrivyCrossApp = false, customPaymasterHandler = undefined) { const { throwOnReceiptRevert, timeout, ...txParameters } = parameters; if (isPrivyCrossApp) { try { let paymasterData = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any const requestAsAny = txParameters; if (customPaymasterHandler && !requestAsAny.paymaster && !requestAsAny.paymasterInput) { paymasterData = await customPaymasterHandler({ ...txParameters, from: client.account.address, chainId: txParameters.chain?.id ?? client.chain.id, }); } const updatedParameters = { ...txParameters, ...paymasterData, }; const signedTx = await signPrivyTransaction(client, updatedParameters); return await sendRawTransactionSync(publicClient, { serializedTransaction: signedTx, throwOnReceiptRevert, timeout, }); } catch (err) { if (err instanceof Error && err.message.includes(INSUFFICIENT_BALANCE_SELECTOR)) { throw new InsufficientBalanceError(); } throw getTransactionError(err, { ...txParameters, account: txParameters.account ? parseAccount(txParameters.account) : null, chain: txParameters.chain ?? undefined, }); } } return sendTransactionInternal(client, signerClient, publicClient, txParameters, EOA_VALIDATOR_ADDRESS, {}, customPaymasterHandler, (serializedTransaction) => getAction(client, sendRawTransactionSync, "sendRawTransactionSync")({ serializedTransaction, throwOnReceiptRevert, timeout, })); } //# sourceMappingURL=sendTransactionSync.js.map