import { Listener } from 'xstream';
export interface Header {
    time: {
        secs: number;
        nsecs: number;
    };
    frame_id: string;
}
export interface Stamped {
    header: Header;
}
export interface Point {
    x: number;
    y: number;
    z: number;
}
export interface PointMessage {
    point: Point;
}
export interface PointStampedMessage extends PointMessage, Stamped {
}
export declare type ROSMessage = PointMessage | PointStampedMessage;
export declare enum DataSourceState {
    READY = 0,
    RECEIVING = 1,
    ERRORED = 2,
    DESTROYED = 3,
    PAUSED = 4
}
export interface DataSourceListener<T> extends Partial<Listener<T>> {
    onOtherClientsConnect?: (clientCount: number) => void;
}
export declare abstract class DataSource<T> {
    abstract state: DataSourceState;
    abstract pause: () => void;
    abstract resume: () => void;
    abstract addEventListener: (listener: DataSourceListener<T>) => void;
    abstract removeEventListener: (listener: DataSourceListener<T>) => void;
}
