/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { DateFormatOptions, IntlService } from '@progress/kendo-angular-intl';
import { MappingService } from '../common/mapping.service';
import { TimelineOptions } from '../models/timeline-options.interface';
import { DateRange } from '../models/date-range.interface';
import { Slot } from '../models/slot.interface';
/**
 * @hidden
 */
export declare const DAY_FORMAT = "E d/MM";
/**
 * @hidden
 */
export declare const HOUR_FORMAT = "HH:mm aa";
/**
 * @hidden
 */
export declare const MONTH_FORMAT = "MMM";
/**
 * @hidden
 */
export declare const YEAR_FORMAT = "yyyy";
/**
 * @hidden
 */
export declare abstract class TimelineBaseViewService {
    protected intlService: IntlService;
    protected mapper: MappingService;
    options: TimelineOptions;
    protected _viewStart: number;
    constructor(intlService: IntlService, mapper: MappingService);
    get viewStart(): number;
    /**
     *
     * @param tasks - The tasks which are going to be rendered in the table
     * @returns {number}
     */
    abstract getSlots(tasks: any[]): Array<Slot[]>;
    /**
     *
     * @param tasks - The tasks which are going to be rendered in the table
     * @returns {Array<Object>} - A collection containing the day and hours slots
     * Used to render the number of columns and the header
     */
    abstract getTableWidth(tasks: any[]): number;
    /**
     * Gets the date which will be used for the first slot.
     * The first slot should not be the range start - it might not leave space for dependency connections drawn on the left.
     */
    abstract getStartOffset(rangeStart: Date): Date;
    /**
     * Gets the date which will be used for the last slot.
     * The last slot should not be the range end - it might not leave space for dependency connections drawn on the right.
     */
    abstract getEndOffset(rangeEnd: Date): Date;
    /**
     *
     * @param tasks - The tasks which are going to be rendered in the table
     * @returns {Object} - An object containing the range start and end dates
     */
    protected getRange(tasks: any): DateRange;
    /**
     *
     * @param start - The tasks' range start date
     * @param end - The tasks' range end date
     * @returns {Array<Object>} - A collection containing the hour slots
     */
    protected getHours(start: any, end: any, customDateFormat?: string | DateFormatOptions): Array<Slot>;
    /**
     *
     * @param start - The tasks' range start date
     * @param end - The tasks' range end date
     * @returns {Array<Object>} - A collection containing the day slots
     */
    protected getDays(start: any, end: any, customDateFormat?: string | DateFormatOptions): Array<Slot>;
    protected getWeeks(start: any, end: any, customDateFormat?: string | DateFormatOptions): Array<Slot>;
    protected getMonths(start: any, end: any, isMainViewType?: boolean, customDateFormat?: string | DateFormatOptions): Array<Slot>;
    protected getYears(start: any, end: any, customDateFormat?: any): Array<Slot>;
}
