import { Position } from "codemirror";
import { IRemoteCursorManagerOptions } from "./IRemoteCursorManagerOptions";
import { RemoteCursor } from "./RemoteCursor";
/**
 * The RemoteCursorManager class is responsible for creating and managing a
 * set of indicators that show where remote users's cursors are located when
 * using CodeMirror in a collaborative editing context.  The RemoteCursorManager
 * leverages CodeMirror's Widget concept to add cursor nodes to the editor.
 */
export declare class RemoteCursorManager {
    /**
     * Creates a new RemoteCursorManager with the supplied options.
     *
     * @param options
     *   The options that will configure the RemoteCursorManager behavior.
     */
    constructor(options: IRemoteCursorManagerOptions);
    /**
     * Adds a new remote cursor to the editor.
     *
     * @param id
     *   A unique id that will be used to reference this cursor.
     * @param color
     *   The css color that the cursor and tooltip should be rendered in.
     * @param label
     *   An optional label for the tooltip. If tooltips are enabled.
     *
     * @returns
     *   The remote cursor widget that will be added to the editor.
     */
    addCursor(id: string, color: string, label?: string): RemoteCursor;
    /**
     * Removes the remote cursor from the editor.
     *
     * @param id
     *   The unique id of the cursor to remove.
     */
    removeCursor(id: string): void;
    /**
     * Updates the location of the specified remote cursor using a CodeMirror
     * Position object.
     *
     * @param id
     *   The unique id of the cursor to remove.
     * @param position
     *   The location of the cursor to set.
     */
    setCursorPosition(id: string, position: Position): void;
    /**
     * Updates the location of the specified remote cursor based on a zero-based
     * text index.
     *
     * @param id
     *   The unique id of the cursor to remove.
     * @param index
     *   The location of the cursor to set.
     */
    setCursorIndex(id: string, index: number): void;
    /**
     * Shows the specified cursor. Note the cursor may be scrolled out of view.
     *
     * @param id
     *   The unique id of the cursor to show.
     */
    showCursor(id: string): void;
    /**
     * Hides the specified cursor.
     *
     * @param id
     *   The unique id of the cursor to show.
     */
    hideCursor(id: string): void;
}
