import { IObservableArray } from "mobx"; import { Entity, EntityField, EntityList } from "./types"; export interface Setter { set(config: T): void; } export interface Clearer { clear(): void; } export interface StoreNode extends Setter, Clearer { } export interface StoreListNode extends IObservableArray { $entity: Entity; set(array: {}[]): void; } export declare type EntityValue = EntityField | EntityList; export declare type StoreType = undefined | null | number | number[] | boolean | boolean[] | string | string[] | EntityStoreItem; export declare type EntityStoreNode = { [key: string]: EntityValue; } & StoreNode<{}>; export declare type EntityStoreItem = EntityStoreNode | StoreListNode; export declare type EntityMapping = { [P in keyof T]?: string; }; export declare type AsStoreListNode = { [P in keyof T]: StoreListNode; }; /** * Construit un store d'entité à partir de la config et les entités données. * Le store d'entité inclut les métadonnées pour tous les champs des entités utilsées. * @param simpleNodes Un objet dont les propriétés décrivent tous les noeuds "simples" du store. * @param listNodes Un objet dont les propriétés décrivent tous les noeuds "listes" du store. * @param entityList La liste des toutes les entités utilisées par les noeuds du store (y compris les composées). * @param entityMapping Un objet contenant les mappings "nom du noeud": "nom de l'entité", pour spécifier les cas ou les noms sont différents. */ export declare function makeEntityStore(simpleNodes: T1, listNodes: T2, entityList: Entity[], entityMapping?: EntityMapping): T1 & AsStoreListNode & StoreNode<{}>; /** * Met à plat un noeud de store pour récupèrer sa valeur "brute". * @param entityStoreItem Le noeud de store à mettre à plat. */ export declare function toFlatValues(entityStoreItem: StoreNode<{}>): {};