import type { Chain, Transport } from "viem";
import type { GetEntryPointFromAccount, SmartContractAccount } from "../../../account/smartContractAccount.js";
import type { BaseSmartAccountClient } from "../../../client/smartAccountClient.js";
import type { UserOperationStruct } from "../../../types.js";
import { type Deferrable } from "../../../utils/index.js";
import type { BuildUserOperationParameters, SendUserOperationParameters, UserOperationContext } from "../types.js";
export declare function _initUserOperation<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined, TContext extends UserOperationContext | undefined = UserOperationContext | undefined, TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>>(client: BaseSmartAccountClient<TTransport, TChain, TAccount>, args: SendUserOperationParameters<TAccount, TContext, TEntryPointVersion> | BuildUserOperationParameters<TAccount, TContext, TEntryPointVersion>): Promise<Deferrable<UserOperationStruct<TEntryPointVersion>>>;
