import { ethers } from 'ethers';
import { Provider } from '@ethersproject/providers';
import { BaseApi } from './base-api';
import { CreateTBAParams } from '../utils';
import { TransactionOptions } from '../types';
/**
 * Account API module, providing Token Bound Account (TBA) related functionality
 */
export declare class AccountApi extends BaseApi {
    private _registryWrapper;
    private _tbaWrapper;
    /**
     * Create Account API instance
     * @param provider Provider instance
     * @param signer Signer instance
     */
    constructor(provider: Provider, signer: ethers.Signer);
    /**
     * Calculate TBA address for an NFT (without creating the account)
     * @param params Creation parameters
     * @returns TBA address
     */
    computeTBAAddress(params: CreateTBAParams): Promise<string>;
    /**
     * Create TBA account
     * @param params Creation parameters
     * @param options Transaction options
     * @returns TBA address and transaction
     */
    createTBA(params: CreateTBAParams, options?: TransactionOptions): Promise<{
        tbaAddress: string;
        tx: ethers.ContractTransaction;
    }>;
    /**
     * Initialize TBA account
     * @param params Initialization parameters
     * @param options Transaction options
     * @returns Transaction object
     */
    initializeTBA(params: {
        accountAddress: string;
        chainId: number;
        tokenContract: string;
        tokenId: ethers.BigNumber | number | string;
    }, options?: TransactionOptions): Promise<ethers.ContractTransaction>;
    /**
     * Get TBA information related to an NFT
     * @param accountAddress TBA address
     * @returns TBA information
     */
    getTBAInfo(accountAddress: string): Promise<{
        chainId: ethers.BigNumber;
        tokenContract: string;
        tokenId: ethers.BigNumber;
        state: ethers.BigNumber;
    }>;
    /**
     * Execute a transaction from TBA
     * @param params Transaction parameters
     * @param options Transaction options
     * @returns Transaction result
     */
    executeTBATransaction(params: {
        accountAddress: string;
        to: string;
        value: ethers.BigNumber | number | string;
        data: string;
    }, options?: TransactionOptions): Promise<{
        tx: ethers.ContractTransaction;
        result: string;
    }>;
    /**
     * Check if an address is a valid signer for a TBA
     * @param accountAddress TBA address
     * @param signerAddress Signer address
     * @returns Whether it's a valid signer
     */
    isValidSigner(accountAddress: string, signerAddress: string): Promise<boolean>;
    /**
     * Convert NetworkId to network key string
     * @param networkId Network ID
     * @returns Network key
     */
    private getNetworkKey;
    /**
     * Handle connection update
     */
    protected onConnectionUpdated(): Promise<void>;
}
//# sourceMappingURL=account-api.d.ts.map