export class YUndoManagerConfig {
    /**
     * @param {Y.UndoManager} undoManager
     */
    constructor(undoManager: Y.UndoManager);
    undoManager: Y.UndoManager;
    /**
     * @param {any} origin
     */
    addTrackedOrigin(origin: any): void;
    /**
     * @param {any} origin
     */
    removeTrackedOrigin(origin: any): void;
    /**
     * @return {boolean} Whether a change was undone.
     */
    undo(): boolean;
    /**
     * @return {boolean} Whether a change was redone.
     */
    redo(): boolean;
}
/**
 * @type {cmState.Facet<YUndoManagerConfig, YUndoManagerConfig>}
 */
export const yUndoManagerFacet: cmState.Facet<YUndoManagerConfig, YUndoManagerConfig>;
/**
 * @type {cmState.AnnotationType<YUndoManagerConfig>}
 */
export const yUndoManagerAnnotation: cmState.AnnotationType<YUndoManagerConfig>;
export const yUndoManager: cmView.ViewPlugin<YUndoManagerPluginValue>;
/**
 * @type {cmState.StateCommand}
 */
export const undo: cmState.StateCommand;
/**
 * @type {cmState.StateCommand}
 */
export const redo: cmState.StateCommand;
export function undoDepth(state: cmState.EditorState): number;
export function redoDepth(state: cmState.EditorState): number;
/**
 * Default key bindigs for the undo manager.
 * @type {Array<cmView.KeyBinding>}
 */
export const yUndoManagerKeymap: Array<cmView.KeyBinding>;
import * as Y from "yjs";
import * as cmState from "@codemirror/state";
/**
 * @extends {PluginValue}
 */
declare class YUndoManagerPluginValue {
    /**
     * @param {cmView.EditorView} view
     */
    constructor(view: cmView.EditorView);
    view: cmView.EditorView;
    conf: YUndoManagerConfig;
    _undoManager: Y.UndoManager;
    syncConf: import("./y-sync.js").YSyncConfig;
    /**
     * @type {null | YRange}
     */
    _beforeChangeSelection: null | YRange;
    _mux: import("lib0/mutex").mutex;
    _onStackItemAdded: ({ stackItem, changedParentTypes }: {
        stackItem: any;
        changedParentTypes: any;
    }) => void;
    _onStackItemPopped: ({ stackItem }: {
        stackItem: any;
    }) => void;
    /**
     * Do this without mutex, simply use the sync annotation
     */
    _storeSelection: () => void;
    /**
     * @param {cmView.ViewUpdate} update
     */
    update(update: cmView.ViewUpdate): void;
    destroy(): void;
}
import * as cmView from "@codemirror/view";
import { YRange } from "./y-range.js";
export {};
