import type { Type_JSON } from './Utils'; /** Clé portant les noms de clés supprimées à un niveau donné du patch. */ export declare const DELETED_KEY = "__deleted"; /** Marqueur d'une entrée de vue encodée en delta. */ export declare const PATCH_KEY = "__patch"; /** Égalité structurelle profonde (JSON : pas de cycles, pas d'undefined). */ export declare function deepEqual(a: unknown, b: unknown): boolean; /** * Patch STRUCTUREL élagué : même forme que la base, réduit aux seules clés qui * diffèrent, plus la liste des clés supprimées à chaque niveau. * * Les TABLEAUX sont traités comme des valeurs ATOMIQUES (remplacés en bloc s'ils * diffèrent). C'est délibéré : le diff élément par élément est précisément là où * naissent les bugs de décalage d'index. Les collections qui comptent (nœuds, * flux) sont de toute façon des dictionnaires indexés par identifiant — donc * diffées finement ET insensibles à l'ordre. * * @returns le patch, ou `undefined` si base et cible sont identiques. */ export declare function diffStructural(base: unknown, target: unknown): unknown; /** Applique un patch structurel sur une base (la base n'est jamais mutée). */ export declare function applyStructural(base: unknown, patch: unknown): unknown; /** * ÉCRITURE — remplace en place chaque vue de `root['views']` par son delta. * * Une vue n'est encodée en delta QUE si le patch, réappliqué immédiatement, * reconstitue la vue à l'identique. Sinon elle reste un snapshot intégral : on * ne troque jamais de la fiabilité contre des octets. * * @returns nombre de vues effectivement encodées en delta (pour les tests/logs). */ export declare function encodeViewsAsDelta(root: Type_JSON): number; /** * LECTURE — ré-étend en place chaque vue encodée en delta vers son snapshot * complet. Les vues déjà en snapshot intégral (fichiers anciens, ou vues sur * lesquelles le garde-fou d'écriture a préféré le snapshot) sont laissées telles * quelles : la détection est STRUCTURELLE (présence de `__patch`), pas fondée sur * la version — un fichier mixte se relit donc correctement. * * @returns nombre de vues ré-étendues. */ export declare function decodeViewsFromDelta(root: Type_JSON): number;