/**
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
/**
* @module comments/annotations/annotation
* @publicApi
*/
import { Rect, Collection, type ObservableMixinConstructor } from "@ckeditor/ckeditor5-utils";
import type { View } from "@ckeditor/ckeditor5-ui";
import { type AnnotationView } from "./view/annotationview.js";
import type { AnnotationOptions } from "./annotations.js";
declare const _AnnotationBase: ObservableMixinConstructor;
/**
* Represents an annotation.
*
* Annotation is an entity that combines an {@link module:comments/annotations/view/annotationview~AnnotationView}
* and an annotation target (a DOM element or a {@link module:utils/dom/rect~Rect}) to which the annotation is bound.
*/
export declare class Annotation extends _AnnotationBase {
	/**
	* The visibility of the annotation. Annotations that are not visible, are filtered from Annotation UI collections.
	*
	* @observable
	*/
	isVisible: boolean;
	/**
	* The annotation view.
	*/
	view: AnnotationView;
	/**
	* A collection of DOM elements which, when focused, make the annotation active.
	*
	* By default, this collection only contains the annotation view element.
	* It can be extended with custom targets that will be tracked by the annotation focus tracking system.
	*/
	focusableElements: Collection<HTMLElement>;
	/**
	* Creates an instance of the {@link module:comments/annotations/annotation~Annotation}.
	*/
	constructor({ view, target, type, isVisible }: AnnotationOptions);
	/**
	* The type of the annotation.
	*/
	get type(): string;
	/**
	* The annotation inner view.
	*
	* It is the view that is wrapped by the annotation view.*
	*/
	get innerView(): View;
	/**
	* The annotation target to which the annotation view should be pinned.
	*
	* It can be an array of DOM elements or {@link module:utils/dom/rect~Rect a rect instance} or `null`.
	*/
	get target(): Rect | Array<HTMLElement> | null;
	/**
	* The position and dimensions of the annotation target to which the annotation is bound.
	*/
	get targetRect(): Rect | null;
	/**
	* The state of the annotation.
	*/
	get isActive(): boolean;
	set isActive(value: boolean);
	/**
	* Updates the target rect in the annotation view instance.
	*/
	updateTargetRect(): void;
	/**
	* Clears all event listeners and internal collections.
	*/
	destroy(): void;
	/**
	* Refreshes the visibility of the annotation based on the visibility of the annotation target.
	*
	* It sets the {@link #isVisible} property when the target is not attached to DOM or if the target or its descendant has
	* set the `display` attribute to `none`.
	*
	* This method only updates an annotation if the annotation target is an HTML Element.
	*/
	refreshVisibility(): void;
}
export type AnnotationTargetBase = Rect | HTMLElement | null;
export type AnnotationTarget = AnnotationTargetBase | (() => AnnotationTargetBase | Array<AnnotationTargetBase>);
/**
* An event fired when the user pressed Escape key while the annotation view was focused.
*/
export type AnnotationEscapeEvent = {
	name: string;
	args: [];
};
export {};
