import type { AgTimeInterval, AgTimeIntervalUnit } from 'ag-charts-types';
export declare function intervalFloor(interval: AgTimeInterval | AgTimeIntervalUnit, date: Date | number): Date;
export declare function intervalCeil(interval: AgTimeInterval | AgTimeIntervalUnit, date: Date | number): Date;
export declare function intervalPrevious(interval: AgTimeInterval | AgTimeIntervalUnit, date: Date): Date;
export declare function intervalNext(interval: AgTimeInterval | AgTimeIntervalUnit, date: Date): Date;
interface RangeParams {
    defaultAlignment?: 'start' | 'interval';
    extend?: boolean;
    visibleRange?: [number, number];
    limit?: number;
}
export declare function intervalExtent(start: Date | number, stop: Date | number, visibleRange?: [number, number]): [Date, Date];
export declare function intervalRangeCount(interval: AgTimeInterval | AgTimeIntervalUnit, start: Date, stop: Date, params?: RangeParams): number;
export declare function intervalRange(interval: AgTimeInterval | AgTimeIntervalUnit, start: Date, stop: Date, params?: RangeParams): Date[];
export interface IntervalRangeNumericResult {
    /** Encoded band values (not timestamps - internal encoding) */
    encodedValues: number[];
    /** Encoding parameters needed to decode back to Date objects */
    encodingParams: {
        unit: AgTimeIntervalUnit;
        step: number;
        utc: boolean;
        offset: number;
    };
}
/**
 * Returns encoded numeric values instead of Date objects.
 * Use this for performance-critical paths where Date objects aren't needed.
 * Call decodeIntervalValue() to convert individual values back to Date when needed.
 */
export declare function intervalRangeNumeric(interval: AgTimeInterval | AgTimeIntervalUnit, start: Date, stop: Date, params?: RangeParams): IntervalRangeNumericResult;
/**
 * Decode a single encoded value back to a Date object.
 */
export declare function decodeIntervalValue(encoded: number, encodingParams: {
    unit: AgTimeIntervalUnit;
    step: number;
    utc: boolean;
    offset: number;
}): Date;
/**
 * Convert encoded value to milliseconds timestamp.
 * Optimized to avoid Date object creation for linear time units (ms, sec, min, hour).
 */
export declare function encodedToTimestamp(encoded: number, encodingParams: {
    unit: AgTimeIntervalUnit;
    step: number;
    utc: boolean;
    offset: number;
}): number;
export declare function intervalRangeStartIndex(interval: AgTimeInterval | AgTimeIntervalUnit, start: Date, stop: Date, { extend, visibleRange, limit, defaultAlignment }?: RangeParams): number;
export {};
