/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
import { SignedMsgOrderId, SignedMsgUserOrdersAccount } from '../types';
import { Commitment, PublicKey } from '@solana/web3.js';
import { ResubOpts } from '../accounts/types';
import { DriftClient } from '../driftClient';
import StrictEventEmitter from 'strict-event-emitter-types';
import { EventEmitter } from 'events';
export interface SignedMsgUserOrdersAccountSubscriberEvents {
    onAccountUpdate: (activeSignedMsgOrderIds: SignedMsgOrderId[], authorityPubkey: PublicKey, slot: number) => void;
    newSignedMsgOrderIds: (newSignedMsgOrderIds: SignedMsgOrderId[], authorityPubkey: PublicKey, slot: number) => void;
}
export declare class SignedMsgUserOrdersAccountSubscriber {
    protected driftClient: DriftClient;
    protected commitment: Commitment;
    protected resubOpts?: ResubOpts;
    protected resyncTimeoutId?: NodeJS.Timeout;
    protected resyncIntervalMs?: number;
    protected decodeFn: (name: string, data: Buffer) => SignedMsgUserOrdersAccount;
    protected signedMsgUserOrderAccounts: Map<string, {
        slot: number;
        signedMsgUserOrdersAccount: SignedMsgUserOrdersAccount;
    }>;
    mostRecentSlot: number;
    fetchPromise?: Promise<void>;
    fetchPromiseResolver: () => void;
    protected subscriber: WebSocketProgramAccountSubscriber<SignedMsgUserOrdersAccount>;
    eventEmitter: StrictEventEmitter<EventEmitter, SignedMsgUserOrdersAccountSubscriberEvents>;
    constructor({ driftClient, commitment, resubOpts, decodeFn, resyncIntervalMs, }: {
        driftClient: DriftClient;
        commitment?: Commitment;
        resubOpts?: ResubOpts;
        decodeFn?: (name: string, data: Buffer) => SignedMsgUserOrdersAccount;
        resyncIntervalMs?: number;
    });
    subscribe(): Promise<void>;
    fetch(): Promise<void>;
    tryUpdateSignedMsgUserOrdersAccount(data: Buffer | SignedMsgUserOrdersAccount, dataType: 'buffer' | 'decoded', slot: number, skipEventEmitting?: boolean): void;
    unsubscribe(): Promise<void>;
}
//# sourceMappingURL=signedMsgUserAccountSubscriber.d.ts.map