@abstract-foundation/agw-client
Version:
Abstract Global Wallet Client SDK
56 lines • 2.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sendTransactionSync = sendTransactionSync;
const actions_1 = require("viem/actions");
const utils_1 = require("viem/utils");
const constants_js_1 = require("../constants.js");
const insufficientBalance_js_1 = require("../errors/insufficientBalance.js");
const sendPrivyTransaction_js_1 = require("./sendPrivyTransaction.js");
const sendTransactionInternal_js_1 = require("./sendTransactionInternal.js");
async function sendTransactionSync(client, signerClient, publicClient, parameters, isPrivyCrossApp = false, customPaymasterHandler = undefined) {
const { throwOnReceiptRevert, timeout, ...txParameters } = parameters;
if (isPrivyCrossApp) {
try {
let paymasterData = {};
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 (0, sendPrivyTransaction_js_1.signPrivyTransaction)(client, updatedParameters);
return await (0, actions_1.sendRawTransactionSync)(publicClient, {
serializedTransaction: signedTx,
throwOnReceiptRevert,
timeout,
});
}
catch (err) {
if (err instanceof Error &&
err.message.includes(constants_js_1.INSUFFICIENT_BALANCE_SELECTOR)) {
throw new insufficientBalance_js_1.InsufficientBalanceError();
}
throw (0, utils_1.getTransactionError)(err, {
...txParameters,
account: txParameters.account
? (0, utils_1.parseAccount)(txParameters.account)
: null,
chain: txParameters.chain ?? undefined,
});
}
}
return (0, sendTransactionInternal_js_1.sendTransactionInternal)(client, signerClient, publicClient, txParameters, constants_js_1.EOA_VALIDATOR_ADDRESS, {}, customPaymasterHandler, (serializedTransaction) => (0, utils_1.getAction)(client, actions_1.sendRawTransactionSync, "sendRawTransactionSync")({
serializedTransaction,
throwOnReceiptRevert,
timeout,
}));
}
//# sourceMappingURL=sendTransactionSync.js.map