/// <reference types="node" />
import { DataAndSlot, UserAccountEvents, UserAccountSubscriber } from './types';
import { DriftProgram } from '../config';
import StrictEventEmitter from 'strict-event-emitter-types';
import { EventEmitter } from 'events';
import { PublicKey } from '@solana/web3.js';
import { WebSocketProgramAccountSubscriber } from './webSocketProgramAccountSubscriber';
import { UserAccount } from '../types';
export declare class WebSocketProgramUserAccountSubscriber implements UserAccountSubscriber {
    isSubscribed: boolean;
    eventEmitter: StrictEventEmitter<EventEmitter, UserAccountEvents>;
    private userAccountPublicKey;
    private program;
    private programSubscriber;
    private userAccountAndSlot?;
    constructor(program: DriftProgram, userAccountPublicKey: PublicKey, programSubscriber: WebSocketProgramAccountSubscriber<UserAccount>);
    subscribe(userAccount?: UserAccount): Promise<boolean>;
    fetch(): Promise<void>;
    updateData(userAccount: UserAccount, slot: number): void;
    unsubscribe(): Promise<void>;
    getUserAccountAndSlot(): DataAndSlot<UserAccount>;
}
