import { TimelineUi } from './timeline_ui';
import { TimelineRowModel, TimelineModel, TimelineEventModel } from './timeline_model';
export declare class TimelineLaneArray {
    private _ui;
    private _row;
    private _lanes;
    private _laneNums;
    private _rebuildLanesMouseWheel;
    private _rebuildLanes;
    private _newEvent;
    private _addEvent;
    private _removeEvent;
    private _model;
    private _eventAttrsListeners;
    constructor(model: TimelineModel, row: TimelineRowModel, ui: TimelineUi, allowMultipleLanes: boolean);
    get length(): number;
    lane(index: number): TimelineLane;
    get numEvents(): number;
    eventAt(laneNum: number, time_PMILLIS: number): TimelineEventModel;
    dispose(): void;
}
export declare function effectiveEdges_PMILLIS(ui: TimelineUi, event: TimelineEventModel): number[];
export interface TimelineLane {
    length: number;
    event(index: number): TimelineEventModel;
    isEmpty(): boolean;
    eventAtTime(time_PMILLIS: number): TimelineEventModel;
    add(event: TimelineEventModel): void;
    remove(event: TimelineEventModel): void;
    eventStillFits(event: TimelineEventModel): boolean;
    update(event: TimelineEventModel): void;
    collisionsWithInterval(start_PMILLIS: number, end_PMILLIS: number): TimelineEventModel[];
    couldFitEvent(event: TimelineEventModel): boolean;
}
export declare class TimelineLaneStack implements TimelineLane {
    private _events;
    private _starts_PMILLIS;
    private _ends_PMILLIS;
    private _indices;
    private _ui;
    constructor(ui: TimelineUi);
    get length(): number;
    event(index: number): TimelineEventModel;
    isEmpty(): boolean;
    eventAtTime(time_PMILLIS: number): TimelineEventModel;
    add(event: TimelineEventModel): void;
    remove(event: TimelineEventModel): void;
    eventStillFits(event: TimelineEventModel): boolean;
    update(event: TimelineEventModel): void;
    collisionsWithInterval(start_PMILLIS: number, end_PMILLIS: number): TimelineEventModel[];
    couldFitEvent(event: TimelineEventModel): boolean;
    _eventFitsBetween(event: TimelineEventModel, iBefore: number, iAfter: number): boolean;
}
export declare class TimelineLaneSimple implements TimelineLane {
    private _events;
    private _orders;
    private _ids;
    private _ui;
    constructor(ui: TimelineUi);
    get length(): number;
    event(index: number): TimelineEventModel;
    isEmpty(): boolean;
    eventAtTime(time_PMILLIS: number): TimelineEventModel;
    add(event: TimelineEventModel): void;
    remove(event: TimelineEventModel): void;
    update(event: TimelineEventModel): void;
    collisionsWithInterval(start_PMILLIS: number, end_PMILLIS: number): TimelineEventModel[];
    eventStillFits(event: TimelineEventModel): boolean;
    couldFitEvent(event: TimelineEventModel): boolean;
    _getIndex(queryEvent: TimelineEventModel): number;
}
