import { type Hex } from "viem";
import type { EntryPointVersion } from "../entrypoint/types";
import type { BigNumberish, Multiplier, UserOperationFeeOptionsField, UserOperationOverrides, UserOperationRequest, UserOperationStruct } from "../types";
export declare function isValidRequest<TEntryPointVersion extends EntryPointVersion = EntryPointVersion>(request: UserOperationStruct<TEntryPointVersion>): request is UserOperationRequest<TEntryPointVersion>;
export declare function isValidPaymasterAndData<TEntryPointVersion extends EntryPointVersion = EntryPointVersion>(request: UserOperationStruct<TEntryPointVersion>): boolean;
export declare function isValidFactoryAndData<TEntryPointVersion extends EntryPointVersion = EntryPointVersion>(request: UserOperationStruct<TEntryPointVersion>): boolean;
export declare function applyUserOpOverride<TValue extends BigNumberish | undefined>(value: TValue, override?: BigNumberish | Multiplier): TValue | BigNumberish;
export declare function applyUserOpFeeOption<TValue extends BigNumberish | undefined>(value: TValue, feeOption?: UserOperationFeeOptionsField): TValue | BigNumberish;
export declare function applyUserOpOverrideOrFeeOption<TValue extends BigNumberish | undefined>(value: TValue, override?: BigNumberish | Multiplier, feeOption?: UserOperationFeeOptionsField): TValue | BigNumberish;
export declare const bypassPaymasterAndData: <TEntryPointVersion extends keyof import("../entrypoint/types").EntryPointRegistryBase<unknown> = keyof import("../entrypoint/types").EntryPointRegistryBase<unknown>>(overrides: Partial<{
    callGasLimit: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["callGasLimit"];
    maxFeePerGas: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["maxFeePerGas"];
    maxPriorityFeePerGas: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["maxPriorityFeePerGas"];
    preVerificationGas: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["preVerificationGas"];
    verificationGasLimit: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["verificationGasLimit"];
    nonceKey: bigint;
    stateOverride: import("viem").StateOverride;
} & import("../types").UserOperationPaymasterOverrides<TEntryPointVersion>> | undefined) => boolean;
export declare const bypassPaymasterAndDataEmptyHex: <TEntryPointVersion extends keyof import("../entrypoint/types").EntryPointRegistryBase<unknown> = keyof import("../entrypoint/types").EntryPointRegistryBase<unknown>>(overrides: Partial<{
    callGasLimit: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["callGasLimit"];
    maxFeePerGas: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["maxFeePerGas"];
    maxPriorityFeePerGas: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["maxPriorityFeePerGas"];
    preVerificationGas: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["preVerificationGas"];
    verificationGasLimit: {
        multiplier: number;
    } | UserOperationStruct<TEntryPointVersion>["verificationGasLimit"];
    nonceKey: bigint;
    stateOverride: import("viem").StateOverride;
} & import("../types").UserOperationPaymasterOverrides<TEntryPointVersion>> | undefined) => boolean;
export declare const parsePaymasterAndData: (paymasterAndData: Hex) => Pick<UserOperationRequest<"0.7.0">, "paymaster" | "paymasterData">;
export declare const concatPaymasterAndData: ({ paymaster, paymasterData, }: Pick<UserOperationRequest<"0.7.0">, "paymaster" | "paymasterData">) => Hex;
