import { DateAdapter, DateFormatter } from '@koobiq/components/core';
import { KbqCustomTimeRangeType, KbqRange, KbqRangeValue, KbqTimeRangeRange, KbqTimeRangeTranslationType, KbqTimeRangeType, KbqTimeRangeUnits } from './types';
import * as i0 from "@angular/core";
export declare class KbqTimeRangeService<T> {
    readonly dateAdapter: DateAdapter<T>;
    readonly dateFormatter: DateFormatter<T>;
    readonly providedDefaultTimeRangeTypes: KbqTimeRangeType[];
    readonly customTimeRangeTypes: KbqCustomTimeRangeType[] | null;
    readonly DEFAULT_RANGE_TYPE: KbqTimeRangeType;
    readonly timeRangeConfig: Record<KbqTimeRangeType, Omit<KbqCustomTimeRangeType, 'type'>>;
    constructor();
    static range: (dateTimeISOString: string) => KbqRange;
    add({ type, ...customTimeRangeConfig }: KbqCustomTimeRangeType): void;
    getTimeRangeTypeUnits(type: KbqTimeRangeType): KbqTimeRangeUnits;
    getTimeRangeUnitByType(type: KbqTimeRangeType): KbqTimeRangeTranslationType;
    getDefaultRangeValue(): Required<KbqRangeValue<T>>;
    getTimeRangeDefaultValue(rangeValue: KbqRangeValue<T>, availableTimeRangeTypes?: KbqTimeRangeType[]): KbqTimeRangeRange;
    calculateTimeRange(type?: KbqTimeRangeType, rangeValue?: KbqRangeValue<T>): KbqRange;
    combineDateAndTime(date: T, time: T): T;
    lastUnitsRange: (unitsInfo: KbqTimeRangeUnits) => KbqRange;
    checkAndCorrectTimeRangeValue(value: KbqTimeRangeRange | null | undefined, availableTimeRangeTypes: KbqTimeRangeType[], rangeValue: KbqRangeValue<T>): KbqTimeRangeRange;
    omitMilliseconds(date: T): T;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqTimeRangeService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<KbqTimeRangeService<any>>;
}
