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