/// <reference types="node" />
import { LaserGrpcConfigs, ResubOpts } from './types';
import { Context, MemcmpFilter, PublicKey } from '@solana/web3.js';
import { DriftProgram } from '../config';
import { WebSocketProgramAccountSubscriber } from './webSocketProgramAccountSubscriber';
import { LaserCommitmentLevel } from '../isomorphic/grpc';
type LaserCommitment = (typeof LaserCommitmentLevel)[keyof typeof LaserCommitmentLevel];
export declare class LaserstreamProgramAccountSubscriber<T> extends WebSocketProgramAccountSubscriber<T> {
    private stream;
    private commitmentLevel;
    listenerId?: number;
    private readonly laserConfig;
    private readonly laserCommitmentLevel;
    private constructor();
    static create<U>(grpcConfigs: LaserGrpcConfigs, subscriptionName: string, accountDiscriminator: string, program: DriftProgram, decodeBufferFn: (accountName: string, ix: Buffer) => U, options?: {
        filters: MemcmpFilter[];
    }, resubOpts?: ResubOpts): Promise<LaserstreamProgramAccountSubscriber<U>>;
    subscribe(onChange: (accountId: PublicKey, data: T, context: Context, buffer: Buffer) => void): Promise<void>;
    unsubscribe(onResub?: boolean): Promise<void>;
    toLaserCommitment(level: string | number | undefined): LaserCommitment;
}
export {};
