/// <reference types="node" />
import { BufferAndSlot, ProgramAccountSubscriber, ResubOpts } from './types';
import { Commitment, Context, KeyedAccountInfo, MemcmpFilter, PublicKey } from '@solana/web3.js';
import { DriftProgram } from '../config';
export declare class WebSocketProgramAccountSubscriber<T> implements ProgramAccountSubscriber<T> {
    subscriptionName: string;
    accountDiscriminator: string;
    bufferAndSlot?: BufferAndSlot;
    bufferAndSlotMap: Map<string, BufferAndSlot>;
    program: DriftProgram;
    decodeBuffer: (accountName: string, ix: Buffer) => T;
    onChange: (accountId: PublicKey, data: T, context: Context, buffer: Buffer) => void;
    listenerId?: number;
    resubOpts?: ResubOpts;
    isUnsubscribing: boolean;
    timeoutId?: ReturnType<typeof setTimeout>;
    options: {
        filters: MemcmpFilter[];
        commitment?: Commitment;
    };
    receivingData: boolean;
    constructor(subscriptionName: string, accountDiscriminator: string, program: DriftProgram, decodeBufferFn: (accountName: string, ix: Buffer) => T, options?: {
        filters: MemcmpFilter[];
        commitment?: Commitment;
    }, resubOpts?: ResubOpts);
    subscribe(onChange: (accountId: PublicKey, data: T, context: Context, buffer: Buffer) => void): Promise<void>;
    protected setTimeout(): void;
    handleRpcResponse(context: Context, keyedAccountInfo: KeyedAccountInfo): void;
    unsubscribe(onResub?: boolean): Promise<void>;
}
