userOperationV6Schema: ZodEffects<
    ZodObject<
        {
            callData: ZodString;
            callGasLimit: ZodBigInt;
            initCode: ZodString;
            maxFeePerGas: ZodBigInt;
            maxPriorityFeePerGas: ZodBigInt;
            nonce: ZodBigInt;
            paymasterAndData: ZodString;
            preVerificationGas: ZodBigInt;
            sender: ZodString;
            signature: ZodString;
            verificationGasLimit: ZodBigInt;
        },
        "strip",
        {
            callData: string;
            callGasLimit: bigint;
            initCode: string;
            maxFeePerGas: bigint;
            maxPriorityFeePerGas: bigint;
            nonce: bigint;
            paymasterAndData: string;
            preVerificationGas: bigint;
            sender: string;
            signature: string;
            verificationGasLimit: bigint;
        },
        {
            callData: string;
            callGasLimit: bigint;
            initCode: string;
            maxFeePerGas: bigint;
            maxPriorityFeePerGas: bigint;
            nonce: bigint;
            paymasterAndData: string;
            preVerificationGas: bigint;
            sender: string;
            signature: string;
            verificationGasLimit: bigint;
        },
    >,
    {
        callData: `0x${string}`;
        callGasLimit: bigint;
        initCode: `0x${string}`;
        maxFeePerGas: bigint;
        maxPriorityFeePerGas: bigint;
        nonce: bigint;
        paymasterAndData: `0x${string}`;
        preVerificationGas: bigint;
        sender: `0x${string}`;
        signature: `0x${string}`;
        verificationGasLimit: bigint;
    },
    {
        callData: string;
        callGasLimit: bigint;
        initCode: string;
        maxFeePerGas: bigint;
        maxPriorityFeePerGas: bigint;
        nonce: bigint;
        paymasterAndData: string;
        preVerificationGas: bigint;
        sender: string;
        signature: string;
        verificationGasLimit: bigint;
    },
> = ...

Zod schema for validating and transforming UserOperation objects for EntryPoint v0.6.0. Enforces correct types and transforms string values to their appropriate types.

const userOp = userOperationV6Schema.parse({
sender: "0x123...",
nonce: "0x1",
initCode: "0x",
callData: "0x123...",
callGasLimit: "1000000",
verificationGasLimit: "1000000",
preVerificationGas: "21000",
maxFeePerGas: "1000000000",
maxPriorityFeePerGas: "1000000000",
paymasterAndData: "0x",
signature: "0x123..."
});