UNPKG

ox

Version:

Ethereum Standard Library

63 lines 2.25 kB
import * as Quantity from '../core/internal/quantity.js'; /** * Converts an {@link ox#UserOperationGas.Rpc} to an {@link ox#UserOperationGas.UserOperationGas}. * * @example * ```ts twoslash * import { UserOperationGas } from 'ox/erc4337' * * const userOperationGas = UserOperationGas.fromRpc({ * callGasLimit: '0x69420', * preVerificationGas: '0x69420', * verificationGasLimit: '0x69420' * }) * ``` * * @param rpc - The RPC user operation gas to convert. * @returns An instantiated {@link ox#UserOperationGas.UserOperationGas}. */ export function fromRpc(rpc) { const gas = rpc; return { ...gas, callGasLimit: BigInt(gas.callGasLimit), preVerificationGas: BigInt(gas.preVerificationGas), verificationGasLimit: BigInt(gas.verificationGasLimit), ...(gas.paymasterVerificationGasLimit && { paymasterVerificationGasLimit: BigInt(gas.paymasterVerificationGasLimit), }), ...(gas.paymasterPostOpGasLimit && { paymasterPostOpGasLimit: BigInt(gas.paymasterPostOpGasLimit), }), }; } /** * Converts a {@link ox#UserOperationGas.UserOperationGas} to a {@link ox#UserOperationGas.Rpc}. * * @example * ```ts twoslash * import { UserOperationGas } from 'ox/erc4337' * * const userOperationGas = UserOperationGas.toRpc({ * callGasLimit: 300_000n, * preVerificationGas: 100_000n, * verificationGasLimit: 100_000n * }) * ``` * * @param userOperationGas - The user operation gas to convert. * @returns An RPC-formatted user operation gas. */ export function toRpc(userOperationGas) { const gas = userOperationGas; const rpc = {}; rpc.callGasLimit = Quantity.fromNumberish(gas.callGasLimit); rpc.preVerificationGas = Quantity.fromNumberish(gas.preVerificationGas); rpc.verificationGasLimit = Quantity.fromNumberish(gas.verificationGasLimit); if (gas.paymasterVerificationGasLimit !== undefined) rpc.paymasterVerificationGasLimit = Quantity.fromNumberish(gas.paymasterVerificationGasLimit); if (gas.paymasterPostOpGasLimit !== undefined) rpc.paymasterPostOpGasLimit = Quantity.fromNumberish(gas.paymasterPostOpGasLimit); return rpc; } //# sourceMappingURL=UserOperationGas.js.map