/**
 * History Manager
 *
 * Manages a global history stack for tracking state changes across atoms
 */
import type { AtomWithHistory, HistoryEntry, HistoryStack } from './types';
export declare const historyStore: {
    get: <Value>(atom: import("jotai").Atom<Value>) => Value;
    set: <Value, Args extends unknown[], Result>(atom: import("jotai").WritableAtom<Value, Args, Result>, ...args: Args) => Result;
    sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
} | ({
    get: <Value>(atom: import("jotai").Atom<Value>) => Value;
    set: <Value, Args extends unknown[], Result>(atom: import("jotai").WritableAtom<Value, Args, Result>, ...args: Args) => Result;
    sub: (atom: import("jotai").Atom<unknown>, listener: () => void) => () => void;
} & import("jotai/vanilla/store").INTERNAL_DevStoreRev4);
export declare const historyStackAtom: import("jotai").PrimitiveAtom<HistoryStack> & {
    init: HistoryStack;
};
export declare const isHistoryOperationInProgressAtom: import("jotai").PrimitiveAtom<boolean> & {
    init: boolean;
};
export declare const currentGroupOperationAtom: import("jotai").PrimitiveAtom<HistoryEntry[] | null> & {
    init: HistoryEntry[] | null;
};
export declare const isGroupOperationInProgressAtom: import("jotai").PrimitiveAtom<boolean> & {
    init: boolean;
};
/**
 * Register an atom with the history system
 * @param atom - The atom to register
 */
export declare function registerHistoryAtom<Value>(atom: AtomWithHistory<Value>): void;
/**
 * Unregister an atom from the history system
 * @param atom - The atom to unregister
 */
export declare function unregisterHistoryAtom<Value>(atom: AtomWithHistory<Value>): void;
/**
 * Find an atom by ID in the registry - O(1) lookup with Map
 */
export declare function getAtomById(id: string): AtomWithHistory<any> | undefined;
export declare const generateId: () => string;
export declare const pushToHistory: (id: string, prevValue: unknown, nextValue: unknown, options?: {
    historyLimit?: number;
    useFullValueInstead?: boolean;
    customDiff?: (prev: unknown, next: unknown) => unknown;
}) => void;
export declare const startGroupOperation: () => void;
export declare const endGroupOperation: () => void;
