UNPKG

@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
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 };