import { TerraDraw } from "../terra-draw";
import { HistoryChange, TerraDrawUndoRedoInterface, TerraDrawUndoRedoOptions } from "./undo-redo-types";
export interface TerraDrawSessionUndoRedoInterface extends TerraDrawUndoRedoInterface {
    register(options: {
        draw: TerraDraw;
        onHistoryChange: (historyChange: HistoryChange) => void;
    }): void;
}
export declare class TerraDrawSessionUndoRedo implements TerraDrawSessionUndoRedoInterface {
    private draw;
    private onHistoryChange;
    private readonly maxStackSize;
    private historyById;
    private undoStack;
    private ignoreProgrammaticCreate;
    private ignoreProgrammaticDelete;
    private deletedFeatureIds;
    private redoStack;
    private isReplayingHistory;
    constructor(options?: TerraDrawUndoRedoOptions);
    register(options: {
        draw: TerraDraw;
        onHistoryChange: (historyChange: HistoryChange) => void;
    }): void;
    private emitStackChange;
    private pushUndoStackEntry;
    private pushRedoStackEntry;
    private handleChange;
    private handleFinish;
    private isDrawing;
    private applySnapshotDuringReplay;
    canUndo(): boolean;
    canRedo(): boolean;
    undo(): boolean;
    redo(): boolean;
    clearHistory(): void;
    undoSize(): number;
    redoSize(): number;
}
