import type { BeanCollection, CellCtrl, INotesFeature, RowCtrl } from 'ag-grid-community';
import type { INotePopupOwner, INotesFeatureSupport, NoteTarget } from './notesShared';
declare abstract class BaseNotesFeature implements INotesFeature, INotePopupOwner {
    protected readonly beans: BeanCollection;
    protected readonly notesSvc: INotesFeatureSupport;
    private popup?;
    private activeTarget?;
    private showTimer;
    private hideTimer;
    private suppressHoverUntilPointerLeave;
    private preserveActivePopupOwnerOnClose;
    constructor(beans: BeanCollection, notesSvc: INotesFeatureSupport);
    refresh(): void;
    show(params?: {
        focusEditor?: boolean;
        pinned?: 'left' | 'right';
    }): void;
    hide(save?: boolean): void;
    closeNotePopup(save?: boolean): void;
    destroy(): void;
    protected getNoteTrigger(): 'hover' | 'click';
    protected onPointerEnter(target: NoteTarget | undefined, event: PointerEvent): void;
    protected onPointerLeave(event: PointerEvent): void;
    protected onContextMenu(): void;
    protected onClick(target: NoteTarget | undefined, event: MouseEvent): void;
    protected abstract refreshHasNotesStyling(): void;
    protected abstract getTarget(pinned?: 'left' | 'right'): NoteTarget | undefined;
    private openPopup;
    private onPopupClosed;
    private matchesActiveTarget;
    private scheduleHide;
    private cancelHide;
    protected clearShowTimer(): void;
}
export declare class AgNotesFeature extends BaseNotesFeature {
    private readonly ctrl;
    constructor(beans: BeanCollection, ctrl: CellCtrl, notesSvc: INotesFeatureSupport);
    refresh(): void;
    initialise(): void;
    protected refreshHasNotesStyling(): void;
    private getPosition;
    protected getTarget(): NoteTarget;
}
export declare class AgFullWidthRowNotesFeature extends BaseNotesFeature {
    private readonly ctrl;
    constructor(beans: BeanCollection, ctrl: RowCtrl, notesSvc: INotesFeatureSupport);
    initialise(): void;
    protected refreshHasNotesStyling(): void;
    private registerGui;
    private getPositionForGui;
    private getTargetForGui;
    protected getTarget(pinned?: 'left' | 'right'): NoteTarget | undefined;
}
export {};
