import { OrderedSet } from '../util/ordered_set';
import { TimelineEventStyleUi } from './timeline_event_style';
import { TimelineAnnotationStyleUi } from './timeline_annotation_style';
import { SimpleModel, XyModel } from '../misc';
import { Texture2D } from '../texture';
import { Notification, Notification1, Notification2 } from '../util/notification';
import { Pane, PointerEvent } from '../core';
import { TimelineModel, TimelineRowModel, TimelineEventModel, TimelineAnnotationModel, TimelineTimeseriesFragmentModel } from './timeline_model';
import { TimelineRowPaneFactory } from './timeline_row';
export interface TimelineUiOptions {
    allowEventMultiSelection?: boolean;
}
export declare class TimelineUi {
    private _input;
    private _selection;
    private _groupUis;
    private _rowUis;
    private _eventStyles;
    private _annotationStyles;
    private _millisPerPx;
    private _imageStatus;
    private _imageCache;
    private _dispose;
    private _panes;
    constructor(model: TimelineModel, options?: TimelineUiOptions);
    get input(): TimelineInput;
    get selection(): TimelineSelectionModel;
    get groupUis(): OrderedSet<TimelineGroupUi>;
    groupUi(groupGuid: string): TimelineGroupUi;
    get rowUis(): OrderedSet<TimelineRowUi>;
    rowUi(rowGuid: string): TimelineRowUi;
    get eventStyles(): OrderedSet<TimelineEventStyleUi>;
    eventStyle(styleGuid: string): TimelineEventStyleUi;
    get annotationStyles(): OrderedSet<TimelineAnnotationStyleUi>;
    annotationStyle(styleGuid: string): TimelineAnnotationStyleUi;
    get millisPerPx(): SimpleModel<number>;
    loadImage(url: string, onLoaded: () => void): Texture2D;
    get panes(): OrderedSet<Pane>;
    addPane(paneId: string, pane: Pane): void;
    removePane(paneId: string): void;
    getPane(paneId: string): Pane;
    get dispose(): Notification;
}
export declare class TimelineGroupUi {
    private _groupGuid;
    constructor(groupGuid: string);
    get groupGuid(): string;
}
export declare class TimelineRowUi {
    private _rowGuid;
    private _paneFactoryChanged;
    private _paneFactory;
    private _panes;
    constructor(rowGuid: string);
    get rowGuid(): string;
    get paneFactoryChanged(): Notification;
    get paneFactory(): TimelineRowPaneFactory;
    set paneFactory(paneFactory: TimelineRowPaneFactory);
    get panes(): OrderedSet<Pane>;
    addPane(paneId: string, pane: Pane): void;
    removePane(paneId: string): void;
    getPane(paneId: string): Pane;
}
export declare class TimelineInput {
    private _mouseMove;
    private _mouseExit;
    private _timeHover;
    private _rowHover;
    private _eventHover;
    private _mouseDown;
    private _mouseUp;
    private _contextMenu;
    get mouseMove(): Notification1<PointerEvent>;
    get mouseExit(): Notification1<PointerEvent>;
    get timeHover(): Notification2<number, PointerEvent>;
    get rowHover(): Notification2<TimelineRowModel, PointerEvent>;
    get eventHover(): Notification2<TimelineEventModel, PointerEvent>;
    get mouseDown(): Notification1<PointerEvent>;
    get mouseUp(): Notification1<PointerEvent>;
    get contextMenu(): Notification1<PointerEvent>;
}
export declare class TimelineSelectionModel {
    private _mousePos;
    private _hoveredY;
    private _hoveredTime_PMILLIS;
    private _selectedInterval;
    private _hoveredRow;
    private _hoveredEvent;
    private _selectedEvents;
    private _hoveredTimeseries;
    private _hoveredAnnotation;
    get mousePos(): XyModel;
    get hoveredY(): SimpleModel<number>;
    get hoveredTime_PMILLIS(): SimpleModel<number>;
    get selectedInterval(): TimeIntervalModel;
    get hoveredRow(): SimpleModel<TimelineRowModel>;
    get hoveredEvent(): SimpleModel<TimelineEventModel>;
    get selectedEvents(): OrderedSet<TimelineEventModel>;
    get hoveredTimeseries(): TimelineTimeseriesFragmentSelectionModel;
    get hoveredAnnotation(): SimpleModel<TimelineAnnotationModel>;
}
export declare class TimelineTimeseriesFragmentSelectionModel {
    private _fragment;
    private _index;
    private _changed;
    constructor(fragment?: TimelineTimeseriesFragmentModel, index?: number);
    setValue(fragment: TimelineTimeseriesFragmentModel, index: number): void;
    clearValue(): void;
    get fragment(): TimelineTimeseriesFragmentModel;
    get index(): number;
    get changed(): Notification;
    get times_PMILLIS(): number;
    get data(): number;
}
export declare class TimeIntervalModel {
    private _start_PMILLIS;
    private _end_PMILLIS;
    private _cursor_PMILLIS;
    private _changed;
    constructor(start_PMILLIS: number, end_PMILLIS: number, cursor_PMILLIS?: number);
    get start_PMILLIS(): number;
    get end_PMILLIS(): number;
    get cursor_PMILLIS(): number;
    get duration_MILLIS(): number;
    get changed(): Notification;
    set start_PMILLIS(start_PMILLIS: number);
    set end_PMILLIS(end_PMILLIS: number);
    set cursor_PMILLIS(cursor_PMILLIS: number);
    setInterval(start_PMILLIS: number, end_PMILLIS: number, cursor_PMILLIS?: number): void;
    overlaps(start_PMILLIS: number, end_PMILLIS: number): boolean;
    contains(time_PMILLIS: number): boolean;
    pan(amount_MILLIS: number): void;
    scale(factor: number, anchor_PMILLIS: number): void;
}
