import { ethers } from 'ethers';
import { Provider } from '@ethersproject/providers';
import { BaseTransactionWrapper } from './base-transaction-wrapper';
import { TransactionOptions } from '../types';
/**
 * Wrapper for Token Bound Account contract operations
 */
export declare class TBAWrapper extends BaseTransactionWrapper {
    /**
     * Create TBA wrapper instance
     * @param provider Provider instance
     * @param signer Signer instance
     */
    constructor(provider: Provider, signer: ethers.Signer);
    /**
     * Get TBA account contract instance
     * @param address Account address
     * @returns ERC6551Account contract instance
     */
    private getAccountContract;
    /**
     * Get token information of a TBA
     * @param accountAddress TBA address
     * @returns Token information
     */
    tokenOf(accountAddress: string): Promise<{
        chainId: ethers.BigNumber;
        tokenContract: string;
        tokenId: ethers.BigNumber;
    }>;
    /**
     * Get state of a TBA
     * @param accountAddress TBA address
     * @returns State as BigNumber
     */
    getState(accountAddress: string): Promise<ethers.BigNumber>;
    /**
     * Initialize a TBA
     * @param params Initialization parameters
     * @param options Transaction options
     * @returns Transaction
     */
    initialize(params: {
        accountAddress: string;
        chainId: number;
        tokenContract: string;
        tokenId: ethers.BigNumber | number | string;
    }, options?: TransactionOptions): Promise<ethers.ContractTransaction>;
    /**
     * Execute a transaction from a TBA
     * @param params Execution parameters
     * @param options Transaction options
     * @returns Transaction and result
     */
    execute(params: {
        accountAddress: string;
        to: string;
        value: ethers.BigNumber | number | string;
        data: string;
    }, options?: TransactionOptions): Promise<{
        tx: ethers.ContractTransaction;
        result: string;
    }>;
    /**
     * Check if address is a valid signer for a TBA
     * @param accountAddress TBA address
     * @param signerAddress Signer address to check
     * @returns Whether the address is a valid signer
     */
    isValidSigner(accountAddress: string, signerAddress: string): Promise<boolean>;
}
//# sourceMappingURL=tba-wrapper.d.ts.map