import { type Forceable, type Silentable, type Syncable, type Watchable, AbstractStore } from '@broxus/js-core';
import type Web3 from 'web3';
export interface EvmTokenWalletCtorParams {
    ownerAddress: string;
    tokenAddress: string;
    watchDebounceDelay?: number;
}
export interface EvmTokenWalletCreateParams extends EvmTokenWalletCtorParams, Syncable, Watchable {
}
export interface EvmTokenWalletData {
    balance?: string | undefined;
    ownerAddress: string;
    tokenAddress: string;
}
export interface EvmTokenWalletState {
    isSyncing?: boolean;
}
export declare class EvmTokenWallet extends AbstractStore<EvmTokenWalletData, EvmTokenWalletState> {
    protected readonly _connection: Web3;
    protected readonly params: EvmTokenWalletCtorParams;
    constructor(_connection: Web3, params: EvmTokenWalletCtorParams);
    static create(connection: Web3, params: EvmTokenWalletCreateParams): Promise<EvmTokenWallet>;
    sync(options?: Forceable & Silentable): Promise<void>;
    watch(): Promise<void>;
    unwatch(): Promise<void>;
    get balance(): EvmTokenWalletData['balance'];
    get ownerAddress(): EvmTokenWalletData['ownerAddress'];
    get tokenAddress(): EvmTokenWalletData['tokenAddress'];
    get isSyncing(): EvmTokenWalletState['isSyncing'];
    protected balanceCheckInterval: ReturnType<typeof setInterval> | undefined;
}
