import { type Difference } from 'microdiff';
import { type MaybeGetter, type Setter } from './utils.js';
type LogEvent = {
    difference: Difference[];
    timestamp: number;
};
type StateHistoryOptions = {
    capacity?: MaybeGetter<number>;
};
/**
 * Tracks the change history of a value, providing undo and redo capabilities.
 *
 * @see {@link https://runed.dev/docs/utilities/state-history}
 */
export declare class StateHistoryDiff<T extends Record<string, unknown> | unknown[]> {
    #private;
    log: LogEvent[];
    snapshot: T;
    readonly canUndo: boolean;
    readonly canRedo: boolean;
    constructor(value: MaybeGetter<T>, set: Setter<T>, options?: StateHistoryOptions);
    undo(): void;
    redo(): void;
}
export {};
