import { ethers } from "ethers";
import type { CommunityConfig } from "../config";
export interface UserOpData {
    [key: string]: string;
}
export interface UserOpExtraData {
    description: string;
}
export interface UserOp {
    sender: string;
    nonce: bigint;
    initCode: Uint8Array;
    callData: Uint8Array;
    callGasLimit: bigint;
    verificationGasLimit: bigint;
    preVerificationGas: bigint;
    maxFeePerGas: bigint;
    maxPriorityFeePerGas: bigint;
    paymasterAndData: Uint8Array;
    signature: Uint8Array;
}
export interface BundlerOptions {
}
export declare class BundlerService {
    private config;
    private provider;
    private accountType;
    private options;
    constructor(config: CommunityConfig, options?: BundlerOptions);
    senderAccountExists(sender: string): Promise<boolean>;
    private generateUserOp;
    private prepareUserOp;
    private paymasterSignUserOp;
    private signUserOp;
    private submitUserOp;
    call(signer: ethers.Signer, contractAddress: string, sender: string, data: Uint8Array, value?: bigint, userOpData?: UserOpData, extraData?: UserOpExtraData): Promise<string>;
    sendERC20Token(signer: ethers.Signer, tokenAddress: string, from: string, to: string, amount: string, description?: string): Promise<string>;
    mintERC20Token(signer: ethers.Signer, tokenAddress: string, from: string, to: string, amount: string, description?: string): Promise<string>;
    burnFromERC20Token(signer: ethers.Signer, tokenAddress: string, sender: string, from: string, amount: string, description?: string): Promise<string>;
    setProfile(signer: ethers.Signer, signerAccountAddress: string, profileAccountAddress: string, username: string, ipfsHash: string): Promise<string>;
    awaitSuccess(txHash: string, timeout?: number): Promise<ethers.TransactionReceipt>;
}
//# sourceMappingURL=index.d.ts.map