import ROSLIB from 'roslib';
import { DataSource, DataSourceListener, DataSourceState } from './index';
export interface RosTopic {
    name: string;
    messageType: string;
}
export interface RosTopicOptions {
    compression?: string;
    throttle_rate?: number;
    queueSize?: number;
    latch?: boolean;
    queue_length?: number;
}
export declare class ROSDataSource<T> implements DataSource<T> {
    private ros;
    private topicDescriptor;
    private keepMemory;
    options?: RosTopicOptions | undefined;
    private readonly producer;
    private stream;
    state: DataSourceState;
    private topic;
    private listeners;
    constructor(ros: ROSLIB.Ros, topicDescriptor: RosTopic, keepMemory: boolean, options?: RosTopicOptions | undefined);
    private initStream;
    addEventListener: (listener: DataSourceListener<T>) => void;
    removeEventListener: (listener: DataSourceListener<T>) => void;
    pause: () => void;
    resume: () => void;
}
