import { Address, Hash, PublicClient, Transport } from "viem";
import { GasPrices, PaymasterData, SponsorshipPolicyData, UnsignedUserOperation, UserOperation, UserOperationGas, UserOperationReceipt } from "../types";
import { Pimlico } from "./pimlico";
type SponsorshipPolicy = {
    sponsorshipPolicyId: string;
};
type BundlerRpcSchema = [
    {
        Method: "pm_sponsorUserOperation";
        Parameters: [UnsignedUserOperation, Address, SponsorshipPolicy];
        ReturnType: PaymasterData;
    },
    {
        Method: "eth_estimateUserOperationGas";
        Parameters: [UnsignedUserOperation, Address];
        ReturnType: UserOperationGas;
    },
    {
        Method: "eth_sendUserOperation";
        Parameters: [UserOperation, Address];
        ReturnType: Hash;
    },
    {
        Method: "pimlico_getUserOperationGasPrice";
        Parameters: [];
        ReturnType: GasPrices;
    },
    {
        Method: "eth_getUserOperationReceipt";
        Parameters: [Hash];
        ReturnType: UserOperationReceipt | null;
    }
];
export declare class Erc4337Bundler {
    client: PublicClient<Transport, undefined, undefined, BundlerRpcSchema>;
    entryPointAddress: Address;
    pimlico: Pimlico;
    chainId: number;
    constructor(entryPointAddress: Address, apiKey: string, chainId: number);
    getPaymasterData(rawUserOp: UnsignedUserOperation, sponsorshipPolicy?: string): Promise<PaymasterData>;
    sendUserOperation(userOp: UserOperation): Promise<Hash>;
    getGasPrice(): Promise<GasPrices>;
    getUserOpReceipt(userOpHash: Hash): Promise<UserOperationReceipt>;
    getSponsorshipPolicies(): Promise<SponsorshipPolicyData[]>;
    private _getUserOpReceiptInner;
}
export {};
