import { HexBigInt } from "../schemas.js"; import { object, z } from "../zod.js"; export const Mutliplier = object( { multiplier: z.number() }, { description: "Multiplier" }, ); export type Mutliplier = z.input; // This is still being defined in https://github.com/ethereum/ERCs/pull/947/files#diff-dab085f963ca621595044bcbc0922705aa38b69f5bf8770dcb3d0496a633efcfR158 export const GasParamsOverrideCapability = object( { preVerificationGas: z .union([HexBigInt({ description: "Absolute" }), Mutliplier]) .optional(), verificationGasLimit: z .union([HexBigInt({ description: "Absolute" }), Mutliplier]) .optional(), callGasLimit: z .union([HexBigInt({ description: "Absolute" }), Mutliplier]) .optional(), paymasterVerificationGasLimit: z .union([HexBigInt({ description: "Absolute" }), Mutliplier]) .optional(), paymasterPostOpGasLimit: z .union([HexBigInt({ description: "Absolute" }), Mutliplier]) .optional(), maxFeePerGas: z .union([HexBigInt({ description: "Absolute" }), Mutliplier]) .optional(), maxPriorityFeePerGas: z .union([HexBigInt({ description: "Absolute" }), Mutliplier]) .optional(), }, { description: "Overrides for estimated gas params. Each field accepts an absolute hex value or a multiplier. [On Monad, gas-limit multipliers (callGasLimit, verificationGasLimit, paymasterVerificationGasLimit, paymasterPostOpGasLimit) require a preVerificationGas multiplier that is >= each of them, because raising a gas limit raises the required preVerificationGas; use absolute hex overrides to avoid this constraint.]", }, ); export type GasParamsOverrideCapability = z.input< typeof GasParamsOverrideCapability >;