@owlprotocol/contracts-account-abstraction
Version:
ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.
31 lines (30 loc) • 1.63 kB
JavaScript
import * as chains from "viem/chains";
import { getAction } from "viem/utils";
import { getChainId } from "viem/actions";
import { calcArbitrumPreVerificationGas } from "./calcArbitrumPreVerificationGas.js";
import { calcOptimismPreVerificationGas } from "./calcOptimismPreVerificationGas.js";
import { calcDefaultPreVerificationGas } from "../../gasestimation/calcDefaultPreVerificationGas.js";
async function calcPreVerificationGas(client, parameters) {
const { packedUserOperation, entryPoint, overheads } = parameters;
const chainId = client.chain?.id ?? await getAction(client, getChainId, "getChainId")({});
let preVerificationGas = calcDefaultPreVerificationGas(packedUserOperation, overheads);
if (chainId === 59140 || chainId === 59142) {
preVerificationGas *= 2n;
} else if (chainId === chains.optimism.id || chainId === chains.optimismSepolia.id || chainId === chains.optimismGoerli.id || chainId === chains.base.id || chainId === chains.baseGoerli.id || chainId === chains.baseSepolia.id || chainId === chains.opBNB.id || chainId === chains.opBNBTestnet.id || chainId === 957) {
preVerificationGas = await calcOptimismPreVerificationGas(client, {
packedUserOperation,
entryPoint,
staticFee: preVerificationGas
});
} else if (chainId === chains.arbitrum.id || chainId === chains.arbitrumNova.id || chainId === chains.arbitrumSepolia.id) {
preVerificationGas = await calcArbitrumPreVerificationGas(client, {
packedUserOperation,
entryPoint,
staticFee: preVerificationGas
});
}
return preVerificationGas;
}
export {
calcPreVerificationGas
};