import type { StorageProvider } from '../storage/storage-provider.js';
import { type TimeseriesReport } from './timeseries.js';
export interface TimeseriesQuery {
    windowMs: number;
    buckets?: number;
    type?: string;
    tag?: string;
}
export interface TimeseriesServiceOptions {
    pageSize?: number;
    scanCap?: number;
}
export interface TimeseriesResult extends TimeseriesReport {
    scanned: number;
    truncated: boolean;
}
/** Computes a throughput time-series by aggregating stored entries over a
 *  window. Reads the store on demand — no separate time-series capture. */
export declare class TimeseriesService {
    private readonly storage;
    private readonly pageSize;
    private readonly scanCap;
    constructor(storage: StorageProvider, options?: TimeseriesServiceOptions);
    getTimeseries(query: TimeseriesQuery): Promise<TimeseriesResult>;
    /**
     * Rollup-backed assembly. Queries the 1-minute rollup buckets covering the
     * window for the relevant metrics (the single `type` if filtered, else the
     * builtin metric universe) and re-buckets them into the report's requested
     * `buckets`. `scanned` reflects the number of rollup rows read; rollups never
     * truncate (they are bounded by minute granularity, not raw volume).
     */
    private fromRollups;
}
//# sourceMappingURL=timeseries.service.d.ts.map