import { AfterViewInit, ChangeDetectorRef, ElementRef, IterableDiffers, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef, TrackByFunction } from '@angular/core';
import { TimelinePositionControlService } from './services/timeline-position-control.service';
import { TimelineAxis, TimelineSidePosition } from './types';
import * as i0 from "@angular/core";
export declare class TimelineComponent<T> implements OnInit, OnDestroy, OnChanges, AfterViewInit {
    private _differs;
    private _cd;
    private _timelinePositionControlService;
    private _elementRef;
    /**
     * Data array to render
     */
    dataSource: T[];
    /**
     * Tracking function that will be used to check the differences in data changes.
     */
    trackBy: TrackByFunction<T>;
    /**
     * Axis for timeline
     */
    axis: TimelineAxis;
    /**
     * Layout for timeline
     */
    layout: TimelineSidePosition;
    /** @hidden */
    _loadingTemplate: TemplateRef<any>;
    /** @hidden */
    private _firstListOutlet;
    /** @hidden */
    private _secondListOutlet;
    /** The timeline node template for the timeline */
    /** @hidden */
    private _nodeDefs;
    /** @hidden */
    _canShowFirstList: boolean;
    /** @hidden */
    _canShowSecondList: boolean;
    /** @hidden */
    _loading: boolean;
    /** @hidden
     * Differ used to find the changes in the data provided by the data source.
     */
    private _dataDifferForFirstList;
    /** @hidden */
    private _dataDifferForSecondList;
    /** @hidden */
    private readonly _onDestroy;
    /** @hidden */
    constructor(_differs: IterableDiffers, _cd: ChangeDetectorRef, _timelinePositionControlService: TimelinePositionControlService, _elementRef: ElementRef<HTMLElement>);
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(changes: SimpleChanges): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /**
     * Update state by new data source
     * If the data source is null, interpret this by clearing the node outlet.
     */
    /** @hidden */
    private switchDataSource;
    /** Check for changes made in the data and render each change (node added/removed/moved). */
    /** @hidden */
    private _renderNodeChanges;
    /** @hidden */
    private _setPositionStrategy;
    /**
     * Create the embedded view for the data node template and place it in the correct index location
     * within the data node view container.
     */
    /** @hidden */
    private _insertNode;
    /**
     * Finds the matching node definition that should be used for this node data. If there is only
     * one node definition, it is returned.
     */
    /** @hidden */
    private _getNodeDef;
    /**
     * Split data list to two list first and second to represent timelines in two lists.
     */
    /** @hidden */
    private _splitList;
    static ɵfac: i0.ɵɵFactoryDeclaration<TimelineComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TimelineComponent<any>, "fd-timeline", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; "axis": { "alias": "axis"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; }, {}, ["_nodeDefs"], never, true, never>;
}
