/// <reference types="node" />
/// <reference types="node" />
import { DataAndSlot, AccountSubscriber, ResubOpts, BufferAndSlot } from './types';
import { Program } from '@coral-xyz/anchor';
import { AccountInfoBase, AccountInfoWithBase58EncodedData, AccountInfoWithBase64EncodedData, type Commitment } from 'gill';
import { PublicKey } from '@solana/web3.js';
export declare class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
    dataAndSlot?: DataAndSlot<T>;
    bufferAndSlot?: BufferAndSlot;
    accountName: string;
    logAccountName: string;
    program: Program;
    accountPublicKey: PublicKey;
    decodeBufferFn: (buffer: Buffer) => T;
    onChange: (data: T) => void;
    listenerId?: number;
    resubOpts?: ResubOpts;
    commitment?: Commitment;
    isUnsubscribing: boolean;
    timeoutId?: ReturnType<typeof setTimeout>;
    receivingData: boolean;
    private rpc;
    private rpcSubscriptions;
    private abortController?;
    constructor(accountName: string, program: Program, accountPublicKey: PublicKey, decodeBuffer?: (buffer: Buffer) => T, resubOpts?: ResubOpts, commitment?: Commitment);
    private handleNotificationLoop;
    subscribe(onChange: (data: T) => void): Promise<void>;
    setData(data: T, slot?: number): void;
    protected setTimeout(): void;
    fetch(): Promise<void>;
    handleRpcResponse(context: {
        slot: bigint;
    }, accountInfo?: AccountInfoBase & (AccountInfoWithBase58EncodedData | AccountInfoWithBase64EncodedData)): void;
    decodeBuffer(buffer: Buffer): T;
    unsubscribe(onResub?: boolean): Promise<void>;
}
