@abstract-foundation/agw-client
Version:
Abstract Global Wallet Client SDK
46 lines • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sendTransaction = sendTransaction;
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 sendTransaction(client, signerClient, publicClient, parameters, isPrivyCrossApp = false, customPaymasterHandler = undefined) {
if (isPrivyCrossApp) {
try {
let paymasterData = {};
const requestAsAny = parameters;
if (customPaymasterHandler &&
!requestAsAny.paymaster &&
!requestAsAny.paymasterInput) {
paymasterData = await customPaymasterHandler({
...parameters,
from: client.account.address,
chainId: parameters.chain?.id ?? client.chain.id,
});
}
const updatedParameters = {
...parameters,
...paymasterData,
};
const signedTx = await (0, sendPrivyTransaction_js_1.signPrivyTransaction)(client, updatedParameters);
return await publicClient.sendRawTransaction({
serializedTransaction: signedTx,
});
}
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, {
...parameters,
account: parameters.account ? (0, utils_1.parseAccount)(parameters.account) : null,
chain: parameters.chain ?? undefined,
});
}
}
return (0, sendTransactionInternal_js_1.sendTransactionInternal)(client, signerClient, publicClient, parameters, constants_js_1.EOA_VALIDATOR_ADDRESS, {}, customPaymasterHandler);
}
//# sourceMappingURL=sendTransaction.js.map