userOperationV7Schema: ZodEffects<
    ZodObject<
        {
            callData: ZodString;
            callGasLimit: ZodBigInt;
            factory: ZodOptional<ZodString>;
            factoryData: ZodOptional<ZodString>;
            maxFeePerGas: ZodBigInt;
            maxPriorityFeePerGas: ZodBigInt;
            nonce: ZodBigInt;
            paymaster: ZodOptional<ZodString>;
            paymasterData: ZodOptional<ZodString>;
            paymasterPostOpGasLimit: ZodOptional<ZodBigInt>;
            paymasterVerificationGasLimit: ZodOptional<ZodBigInt>;
            preVerificationGas: ZodBigInt;
            sender: ZodString;
            signature: ZodString;
            verificationGasLimit: ZodBigInt;
        },
        "strip",
        {
            callData: string;
            callGasLimit: bigint;
            factory?: string;
            factoryData?: string;
            maxFeePerGas: bigint;
            maxPriorityFeePerGas: bigint;
            nonce: bigint;
            paymaster?: string;
            paymasterData?: string;
            paymasterPostOpGasLimit?: bigint;
            paymasterVerificationGasLimit?: bigint;
            preVerificationGas: bigint;
            sender: string;
            signature: string;
            verificationGasLimit: bigint;
        },
        {
            callData: string;
            callGasLimit: bigint;
            factory?: string;
            factoryData?: string;
            maxFeePerGas: bigint;
            maxPriorityFeePerGas: bigint;
            nonce: bigint;
            paymaster?: string;
            paymasterData?: string;
            paymasterPostOpGasLimit?: bigint;
            paymasterVerificationGasLimit?: bigint;
            preVerificationGas: bigint;
            sender: string;
            signature: string;
            verificationGasLimit: bigint;
        },
    >,
    {
        callData: `0x${string}`;
        callGasLimit: bigint;
        factory: `0x${string}`;
        factoryData: `0x${string}`;
        maxFeePerGas: bigint;
        maxPriorityFeePerGas: bigint;
        nonce: bigint;
        paymaster: `0x${string}`;
        paymasterData: `0x${string}`;
        paymasterPostOpGasLimit?: bigint;
        paymasterVerificationGasLimit?: bigint;
        preVerificationGas: bigint;
        sender: `0x${string}`;
        signature: `0x${string}`;
        verificationGasLimit: bigint;
    },
    {
        callData: string;
        callGasLimit: bigint;
        factory?: string;
        factoryData?: string;
        maxFeePerGas: bigint;
        maxPriorityFeePerGas: bigint;
        nonce: bigint;
        paymaster?: string;
        paymasterData?: string;
        paymasterPostOpGasLimit?: bigint;
        paymasterVerificationGasLimit?: bigint;
        preVerificationGas: bigint;
        sender: string;
        signature: string;
        verificationGasLimit: bigint;
    },
> = ...

Schema for validating and transforming UserOperation objects for EntryPoint v0.7.0. Enforces correct types and transforms string values to their appropriate types.

const userOp = userOperationV7Schema.parse({
sender: "0x123...",
nonce: "0x1",
factory: "0x456...",
factoryData: "0x789...",
callData: "0xabc...",
callGasLimit: "1000000",
verificationGasLimit: "1000000",
preVerificationGas: "21000",
maxFeePerGas: "1000000000",
maxPriorityFeePerGas: "1000000000",
paymaster: "0xdef...",
paymasterData: "0x123...",
signature: "0x456..."
});