/**
 * @file m4.ts
 * @output m4Reduce — pixel-aware time series data reduction
 * @position Utility consumed by chart line/stream components for large datasets
 *
 * Implements the M4 algorithm from "M4: A Visualization-Oriented Time Series
 * Data Aggregation" (Jugel et al., VLDB 2014).
 *
 * For each pixel column, retains 4 values: first, last, min, max.
 * This is the minimum set needed to visually reproduce a line chart at the
 * target resolution. A 1M-point dataset becomes ~4×width points.
 */
export interface M4Point {
    x: number;
    y: number;
}
/**
 * Reduce a time-series dataset to at most 4 points per pixel column.
 *
 * The output preserves all visual features (peaks, troughs, trends) that
 * are distinguishable at the given pixel width. Points within the same
 * pixel column are collapsed to first/min/max/last.
 *
 * @param data — input points, must be sorted by x ascending
 * @param width — chart width in pixels (determines bucket count)
 * @param xDomain — [min, max] of the x-axis. If omitted, derived from data.
 * @returns reduced points (at most 4 × width, typically much fewer)
 *
 * @example
 * ```
 * // Reduce 100k points to fit a 600px chart
 * const reduced = m4Reduce(rawData, 600);
 * ```
 */
export declare function m4Reduce(data: M4Point[], width: number, xDomain?: [number, number]): M4Point[];
//# sourceMappingURL=m4.d.ts.map