/**
* @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/comments/commentsediting
* @publicApi
*/
import { Plugin, type Editor, type PluginDependenciesOf } from "@ckeditor/ckeditor5-core";
import type { Marker } from "@ckeditor/ckeditor5-engine";
import { CommentsRepository } from "./commentsrepository.js";
import { Users } from "@ckeditor/ckeditor5-collaboration-core";
import { EditorAnnotations } from "../annotations/editorannotations.js";
import { CommentsRestrictedEditingMode } from "./integrations/commentsrestrictededitingmode.js";
import { CommentsImportWord } from "./integrations/importword.js";
import { CommentsClipboard } from "./integrations/clipboard.js";
import { ShowCommentHighlights } from "./integrations/showcommenthighlights.js";
import "../../theme/commentmarker.css";
/**
* Plugin that keeps in sync comments in {@link module:comments/comments/commentsrepository~CommentsRepository} with
* {@link module:engine/model/markercollection~Marker comment markers}.
*/
export declare class CommentsEditing extends Plugin {
	/**
	* If set to `true`, the plugin won't load comment thread for the new marker immediately after the marker is added to the editor.
	* Instead, the plugin will wait until the flag will be set to `false` and then load missing comments.
	*
	* It's useful to hold fetching comments from the server when comments are used with real-time collaboration.
	* When a user connects to an existing document, the operations from the history need to be applied one by one.
	* An operation which added a new comment marker might be followed by an operation which removes that marker, so it's not
	* necessary to make an additional request then.
	*
	* @observable
	*/
	isThreadsLoadingPaused: boolean;
	/**
	* Name of the active comment marker.
	*
	* Markers conversion checks if comment should be marked as active and adds/removes additional css class during the conversion.
	*
	* @observable
	*/
	activeMarker: string | null;
	/**
	* @inheritDoc
	*/
	static get requires(): PluginDependenciesOf<[CommentsRepository, EditorAnnotations, Users, CommentsRestrictedEditingMode, CommentsImportWord, CommentsClipboard, ShowCommentHighlights]>;
	/**
	* @inheritDoc
	*/
	static get pluginName(): "CommentsEditing";
	/**
	* @inheritDoc
	*/
	static override get isOfficialPlugin(): true;
	/**
	* @inheritDoc
	*/
	static override get isPremiumPlugin(): true;
	/**
	* @inheritDoc
	*/
	constructor(editor: Editor);
	/**
	* @inheritDoc
	*/
	init(): void;
	/**
	* @inheritDoc
	*/
	afterInit(): void;
	/**
	* @inheritDoc
	*/
	override destroy(): void;
	/**
	* Returns `true` if there is at least one marker in the content that is related to a comment thread with given `threadId`.
	*
	* @param threadId Comment thread id.
	*/
	hasMarkerForId(threadId: string): boolean;
	/**
	* Returns all markers that are related to the comment thread with the given `threadId`.
	*
	* @param threadId Comment thread id.
	* @returns Array with all markers related to given comment thread.
	*/
	getAllMarkersForId(threadId: string): Array<Marker>;
	/**
	* Scrolls editing view to the first thread marker.
	*
	* @param threadId Comment thread id.
	*/
	scrollToThreadMarker(threadId: string): void;
}
