import type { Type_JSON } from './Utils'; /** Ce qu'une ligne de contrainte veut dire, du point de vue de l'utilisateur. */ export type Type_DeterminationSubject = { kind: string; subject: string; variant?: number; label?: string; constraint_type?: string; }; /** Une réponse à « d'où vient ta valeur », partagée par toutes les cellules * qui ont la même. */ export type Type_DeterminationExplanation = { type: string; constraints: number[]; coefs: number[]; min_by: number[]; max_by: number[]; fixed_by: number[]; combines: number[]; }; export type Type_DeterminationCatalog = { subjects: Type_DeterminationSubject[]; explanations: Type_DeterminationExplanation[]; }; export declare const DETERMINATION_CLASSIFICATIONS: string[]; /** Vrai quand le solveur n'a laissé aucun degré de liberté à la valeur. */ export declare const determinationIsFixed: (type: string) => boolean; /** Vrai quand la valeur n'est pas fixée : c'est le cas qui appelle une saisie. */ export declare const determinationIsFree: (type: string) => boolean; /** Clé i18n du libellé d'une classification. */ export declare const determinationClassificationKey: (type: string) => string; /** Clé i18n de la phrase qui explique ce que la classification implique. */ export declare const determinationMeaningKey: (type: string) => string; /** Clé i18n du libellé d'une nature de contrainte. */ export declare const determinationSubjectKey: (kind: string) => string; /** * Lit le catalogue depuis le JSON, ou undefined s'il est inutilisable. * * Tout enregistrement mal formé fait tomber le catalogue ENTIER : un catalogue * partiellement lu ferait pointer les index des cellules sur les mauvaises * explications, et chacune paraîtrait plausible. Mieux vaut ne rien expliquer. */ export declare const determinationCatalogFromJSON: (raw: unknown) => Type_DeterminationCatalog | undefined; /** Forme JSON, symétrique de la lecture (membres vides omis). */ export declare const determinationCatalogToJSON: (catalog: Type_DeterminationCatalog) => Type_JSON; /** * Coefficient d'une variable dans une contrainte donnée, ou undefined. * * undefined ne veut pas dire « zéro » : c'est « le fichier ne le dit pas » * (écrit par un moteur antérieur aux coefficients). L'interface montre alors le * flux sans signe plutôt qu'un signe inventé. */ export declare const determinationCoefficient: (explanation: Type_DeterminationExplanation | undefined, subject_id: number) => number | undefined; /** Explication désignée par un index, ou undefined si le fichier ne la porte pas. */ export declare const determinationLookup: (catalog: Type_DeterminationCatalog | undefined, index: number | null | undefined) => Type_DeterminationExplanation | undefined;