import { BigNumber, BigNumberish, TypedDataField } from 'ethers'; import { BehaviorSubject } from 'rxjs'; import { Provider } from '@ethersproject/providers'; import { EntryPoint, INonceManager } from '../contracts'; import { UserOperationStruct } from '../contracts/account-abstraction/contracts/core/BaseAccount'; import { TransactionDetailsForUserOp } from './TransactionDetailsForUserOp'; import { PaymasterAPI } from './PaymasterAPI'; import { ErrorSubject, NotPromise } from '../common'; import { GasOverheads } from './calcPreVerificationGas'; import { Factory, Network, NetworkNames, SdkOptions, SignMessageDto, State, StateService, WalletProviderLike } from '..'; import { Context } from '../context'; export interface BaseApiParams { provider: Provider; entryPointAddress: string; accountAddress?: string; overheads?: Partial; walletProvider: WalletProviderLike; optionsLike?: SdkOptions; } export interface UserOpResult { transactionHash: string; success: boolean; } export declare abstract class BaseAccountAPI { private senderAddress; private isPhantom; readonly services: Context['services']; context: Context; protected readonly entryPointView: EntryPoint; protected readonly nonceManager: INonceManager; provider: Provider; overheads?: Partial; entryPointAddress: string; accountAddress?: string; paymasterAPI?: PaymasterAPI; factoryUsed: Factory; constructor(params: BaseApiParams); get state(): StateService; get state$(): BehaviorSubject; get error$(): ErrorSubject; get supportedNetworks(): Network[]; destroy(): void; signMessage(dto: SignMessageDto): Promise; setPaymasterApi(paymaster: PaymasterAPI | null): Promise; require(options?: { network?: boolean; wallet?: boolean; }): Promise; getNetworkChainId(networkName?: NetworkNames): number; validateResolveName(options?: { network?: number; name?: string; }): Promise; init(): Promise; protected abstract getAccountInitCode(): Promise; protected abstract getNonce(key?: number): Promise; protected abstract encodeExecute(target: string, value: BigNumberish, data: string): Promise; protected abstract encodeBatch(targets: string[], values: BigNumberish[], datas: string[]): Promise; protected abstract signUserOpHash(userOpHash: string): Promise; checkAccountPhantom(): Promise; getCounterFactualAddress(): Promise; getInitCode(): Promise; getVerificationGasLimit(): Promise; getPreVerificationGas(userOp: Partial): Promise; packUserOp(userOp: NotPromise): string; encodeUserOpCallDataAndGasLimit(detailsForUserOp: TransactionDetailsForUserOp): Promise<{ callData: string; callGasLimit: BigNumber; }>; getUserOpHash(userOp: UserOperationStruct): Promise; getAccountAddress(): Promise; estimateCreationGas(initCode?: string): Promise; createUnsignedUserOp(info: TransactionDetailsForUserOp, key?: number): Promise; signUserOp(userOp: UserOperationStruct): Promise; createSignedUserOp(info: TransactionDetailsForUserOp, key?: number): Promise; getUserOpReceipt(userOpHash: string, timeout?: number, interval?: number): Promise; signTypedData(types: TypedDataField[], message: any): Promise; }