import type { Type_JSON } from './Utils'; /** Une vue a fabriquer : son identifiant, son nom affiche, et le diagramme qui la porte. */ export type Type_MergedViewSpec = { /** Identifiant de la vue dans le dictionnaire `views`. Unique, non vide, != maitre. */ id: string; /** Nom affiche dans le selecteur de vues. */ name: string; /** * Snapshot INTEGRAL du diagramme, tel que produit par `ApplicationData.toJSON()`. * Doit etre au meme format que le maitre (aucune migration n'est faite ici). */ snapshot: Type_JSON; }; export type Type_MergeOptions = { /** Vue active a l'ouverture. Defaut : la premiere vue. */ current_view?: string; /** Proposer le maitre dans le selecteur. Defaut : false (le maitre n'est qu'un support). */ show_master_in_views?: boolean; /** Nom affiche du maitre s'il est propose. Defaut : ''. */ master_view_name?: string; }; /** * Assemble un maitre et N snapshots en un document a N vues, encode en delta. * * Le maitre porte le graphe commun ; chaque vue est un snapshot integral dont seuls `id` * et `name` sont surcharges — c'est la forme exacte que produit l'application elle-meme * (`createNewView`) et celle que relit `ViewsReader.viewsFromJSON`. * * @returns la racine du document fusionne, vues deja encodees en `__patch` quand c'est * plus petit ET fidele (le garde-fou de `encodeViewsAsDelta` decide vue par vue). */ export declare function buildMultiViewDocument(master: Type_JSON, views: Type_MergedViewSpec[], options?: Type_MergeOptions): Type_JSON;