import { Interval } from 'date-fns'; export declare const M_MS: number; export declare const D_M: number; export declare const D_MS: number; export declare function isTime(time: any): time is Date; export declare function isValidTime(time: any): time is Date; export declare function isValidOptionalTime(time: any): time is Date | undefined; export declare function isSameTime(t1: Date | undefined, t2: Date | undefined): boolean; export declare function isSameDay(t1: Date | undefined, t2: Date | undefined): boolean; export declare function isLateTime(t1: Date | undefined, t2: Date | undefined): boolean; /** 对比两个时间的大小,undefined 和无效时间等同于负无穷 */ export declare function compareTime(t1: Date | undefined, t2: Date | undefined): -1 | 0 | 1; export declare function mergeDateAndTime(date: Date | undefined, time: Date | undefined): Date | undefined; /** * 确保一个时间值被限制在所指定的起止区间或邻域区间内 * NOTE: 这里的邻域是闭区间 */ export declare function clampTime(time: Date, start: Date | undefined, end: Date | undefined): Date; export declare function clampTime(time: Date, center: Date, radius: number): Date; export declare type SliderStep = 'second' | 'minute' | 'hour'; export interface StepInfo { key: SliderStep; s: number; ms: number; tf: string; floor: (time: V) => V extends Date ? Date : undefined; ceil: (time: V) => V extends Date ? Date : undefined; prev: (time: V) => V extends Date ? Date : undefined; next: (time: V) => V extends Date ? Date : undefined; } export declare const STEP_INFOS: { [key in SliderStep]: StepInfo; }; /** * 表示一个时间区间,其中包含两个可能未定义的 Date 类型的时间点。 * * **NOTE:** * * 在 Range 类型中,时间点并不一定是按序的(即有可能第 1 个时间点是结束时间,而第 2 个时间点是起始时间), * 因此,我们定义了两套时间点的名称: * * - leftPoint: 区间中第一个时间点 * - rightPoint: 区间中第二个时间点 * - startPoint: 区间中的超始时间点 * - endPoint: 区间中的结束时间点 * * 另外若区间中只有一个有效时间点,则该时间点为 startPoint,而 endPoint 则会是 undefined。 */ export declare type Range = (Date | undefined)[]; export declare type PointFixedSide = 'left' | 'right'; export declare type PointRelativeSide = 'start' | 'end'; export declare const EMPTY_RANGE: Range; export declare function isValidRange(range: any): range is Range; export declare function isFullRange(range: any): range is Date[]; export declare function isEmptyRange(range: Range): boolean; export declare function isSameRange(r1: Range, r2: Range): boolean; export declare function diffRange(r1: Range, r2: Range): { start: boolean; end: boolean; }; export declare function checkMovedPoint(r1: Range, r2: Range): PointRelativeSide | undefined; /** * 确保所返回的时间区间中: * 1. 如果有两个时间点,则左时间点一定小于或等于右时间点; * 2. 如果只有一个时间点,则一定是左时间点,而右时间点为 undefined; * 3. 所有时间点一定是有效时间。 */ export declare function normalizeRange(range: Range): Range; /** * 确保 r1 的方向与 r2 保持一致。 * 即确保若 r2 的左时间为起始时间点,则 r1 的左时间也为起始时间点,若 r2 的左时间为结束时间点,则 r1 也一样。 * 若 r1 的方向与 r2 一样,若 r2 为 undefined,则直接返回 r1 的原值。 */ export declare function ensureSameDirection(r1: Range, r2: Range): Range; export declare function getStartPoint(range: Range): { time: Date | undefined; side: PointFixedSide; }; export declare function getEndPoint(range: Range): { time: Date | undefined; side: PointFixedSide; }; export declare function getLeftPoint(range: Range | undefined): Date | undefined; export declare function getRightPoint(range: Range | undefined): Date | undefined; export declare function getRangeDuration(range: Range, step: StepInfo): number; export declare function getMiddleTime(range: Date[]): Date; export declare function intersection(r1: Interval, r2: Interval): Interval | undefined; export declare function clamp(val: number, min: number, max: number): number; export declare function clampIndex(val: number, len: number): number; export declare function assert(condition: unknown, message?: string): asserts condition; /** 检查鼠标左键是否被按下 */ export declare function detectLeftButton(event: PointerEvent): boolean; /** 计算两点之间的距离 */ export declare function calcDistance(x1: number, y1: number, x2: number, y2: number): number; export declare function notNil(value: TValue | null | undefined): value is TValue;