import { ServerAPI } from '@signalk/server-api';
import * as WebSocket from 'ws';
export declare class HistoricalStreamingService {
    private app;
    private activeSubscriptions;
    private historyAPI;
    private wsServer?;
    private connectedClients;
    private streamBuffers;
    private streamLastTimestamps;
    private streamTimeSeriesData;
    private streamsConfigPath;
    private streamsAlreadyLoaded;
    private lastSubscriptionCheck;
    private readonly SUBSCRIPTION_CHECK_INTERVAL;
    private streamTimeouts;
    constructor(app: ServerAPI, dataDir?: string);
    private setupSubscriptionInterceptor;
    private isSubscriptionMessage;
    private handleSubscriptionRequest;
    private handleSubscribe;
    private handleUnsubscribe;
    private isHistoricalDataPath;
    private startHistoricalStream;
    private streamHistoricalData;
    private processHistoricalDataResponse;
    private streamSampleDataFallback;
    shutdown(): void;
    getActiveSubscriptions(): any[];
    triggerHistoricalStream(path: string): void;
    private streams;
    private streamIntervals;
    private parseTimeRange;
    private loadPersistedStreams;
    private saveStreamsConfig;
    createStream(streamConfig: any): any;
    getAllStreams(): any[];
    startStream(streamId: string): {
        success: boolean;
        error: string;
        message?: undefined;
    } | {
        success: boolean;
        message: string;
        error?: undefined;
    } | {
        success: boolean;
        error?: undefined;
        message?: undefined;
    };
    private startContinuousStreaming;
    private broadcastToClients;
    private broadcastTimeSeriesData;
    private emitSignalKStreamData;
    private getHistoricalDataWindow;
    private generateSampleTimeSeries;
    private generateSampleValue;
    pauseStream(streamId: string): {
        success: boolean;
        error: string;
        paused?: undefined;
    } | {
        success: boolean;
        paused: boolean;
        error?: undefined;
    };
    stopStream(streamId: string): {
        success: boolean;
        error: string;
    } | {
        success: boolean;
        error?: undefined;
    };
    deleteStream(streamId: string): {
        success: boolean;
        error: string;
    } | {
        success: boolean;
        error?: undefined;
    };
    updateStream(streamId: string, streamConfig: any): boolean;
    getStreamStats(): {
        totalStreams: number;
        runningStreams: number;
        pausedStreams: number;
        stoppedStreams: number;
        totalDataPointsStreamed: any;
        connectedClients: number;
        streams: any[];
    };
    addWebSocketClient(ws: WebSocket): void;
    removeWebSocketClient(ws: WebSocket): void;
    private storeTimeSeriesData;
    private deduplicateDataPoints;
    private enrichDataPointsWithMovingAverages;
    getStreamTimeSeriesData(streamId: string, limit?: number): any[] | null;
}
//# sourceMappingURL=historical-streaming.d.ts.map