import { ILineChartDataPoint, ILineChartDateRange, ILineChartGraphType, ILineChartMetric, ILineChartMetricUnit } from "../../core/LineChart/type";
import { formatBitPerSecond, formatBps, formatBytes, formatCount, formatFrequency, formatNanoSecond, formatPercent, formatTemperature } from "../../utils/tower";
export declare function filterLineChartPointsByDateRange(points: ILineChartDataPoint[], dateRange?: ILineChartDateRange): ILineChartDataPoint[];
export declare const parseLineChartRange: (range: string) => {
    span: number;
    unit: "h" | "d";
};
export declare const lineChartXaxisCal: (lastTime: number, dateRange: ILineChartDateRange, width: number) => number[];
export declare const lineChartTickFormatter: (tick: number, dateRange: ILineChartDateRange) => string;
export declare function getLineChartXAxisDomain(dateRange: ILineChartDateRange, xaxisLastTime?: number): [number, number];
export declare const getLineChartRangeTimestamp: (dateRange: ILineChartDateRange) => number;
export declare const getLineChartStep: (dateRange: ILineChartDateRange) => number;
export declare const filterLineChartDataOverlapping: <Data extends {
    t: number;
    v?: number | undefined;
} = {
    t: number;
    v?: number | undefined;
}>(data: Data[], startTimestamp: number, length: number, step: number, tolerance: number) => (Data | {
    t: number;
    v: number;
})[];
export declare const convertLineChartDataStruct: (streams: ILineChartDataPoint[][]) => ILineChartDataPoint[];
export declare const filterLineChartOverlappingMetric: (metric: ILineChartMetric, dateRange: ILineChartDateRange) => {
    sample_streams: {
        points: (ILineChartDataPoint | {
            t: number;
            v: number;
        })[];
        legend: import("../../core/LineChart/type").ILineChartILegend;
        step: number;
        tolerance: number;
    }[];
    unit: ILineChartMetricUnit;
    dropped: boolean;
};
export declare const deletePointsOutOfRange: (data: ILineChartDataPoint[], timeRange: ILineChartDateRange, now: number) => ILineChartDataPoint[];
export declare const getFirstExpectedTimestamp: (data: ILineChartDataPoint[], timeRange: ILineChartDateRange, now: number, step: number, dateRange: ILineChartDateRange | undefined) => number;
export declare const addMissingDataWithZero: (data: ILineChartDataPoint[], timeRange: ILineChartDateRange, unit: ILineChartMetricUnit, step: number, dateRange?: ILineChartDateRange) => ILineChartDataPoint[];
export declare const convertLineChartUnit: (value: number, from: string, to: string, decimals?: number) => number;
export declare const UNIT_FORMATTER: {
    readonly PERCENT: readonly [typeof formatPercent, "%", 2, false];
    readonly RATIO: readonly [typeof formatPercent, "%"];
    readonly COUNT: readonly [typeof formatCount, ""];
    readonly DATA_SIZE: readonly [typeof formatBytes, "B"];
    readonly DATA_RATE_BYTE: readonly [typeof formatBps, "Bps"];
    readonly DATA_RATE_BIT: readonly [typeof formatBitPerSecond, "bps"];
    readonly TIME: readonly [typeof formatNanoSecond, "ns"];
    readonly FREQUENCY: readonly [typeof formatFrequency, "Hz"];
    readonly TEMPERATURE: readonly [typeof formatTemperature, "℃"];
    readonly LOAD: readonly [typeof formatCount, ""];
};
export declare const getLineChartYDataMax: (dataPoints: ILineChartDataPoint[], type: ILineChartGraphType) => number;
export declare const getYAxisUpperBound: (max: number, type: ILineChartMetricUnit) => number;
export declare const getYAxisDomain: (dataPoints: ILineChartDataPoint[], graphType: ILineChartGraphType, unitType: ILineChartMetricUnit) => [number, number];
export declare function lineChartYaxisTickFormatter(value?: number, unit?: ILineChartMetricUnit): string;
