import type { AnswerDocsByFormId, AnswersByFormId } from "./Answer.js"; import type { GeoCoordinates, GeoPosition, IdObject, LinkContributorsRef, LinkProjectRef, LinkEventsRef, ParentsMap, PostalAddress, DateValue, SocialNetwork } from "./common.js"; import type EJSONType from "../../EJSONType.js"; type ObjectIDCtor = typeof EJSONType["ObjectID"]; type ObjectID = InstanceType; export interface ProjectLinksBlock { contributors?: Record; projects?: Record; events?: Record; [k: string]: unknown; } /** * Types d'avancement supportés */ export declare const PROJECT_AVANCEMENTS: readonly ["abandoned", "concept", "development", "production", "started", "testing", "idea", "mature", "qa", "finished"]; export type ProjectAvancement = (typeof PROJECT_AVANCEMENTS)[number]; export interface ProjectItemJson { _id: IdObject; collection: "projects"; name: string; created?: DateValue; updated?: DateValue; modified?: DateValue; parent?: ParentsMap; description?: string; shortDescription?: string; avancement?: ProjectAvancement; slug?: string; address?: PostalAddress; geo?: GeoCoordinates; geoPosition?: GeoPosition; tags?: string[]; links?: ProjectLinksBlock; creator?: string; profilImageUrl?: string; profilMediumImageUrl?: string; profilThumbImageUrl?: string; profilMarkerImageUrl?: string; socialNetwork?: SocialNetwork; email?: string; url?: string; answer?: string; /** * Enrichissement par les Answers liées au résultat — renvoyé uniquement par * `/costum/navigator/gettl` (variant `navigator-tl` de `searchCostum`). * Forme JSON brute (avant linkage par `_transformServerData`). * Distinct du champ `answer` (singulier) qui est l'id d'une Answer principale. */ answers?: AnswerDocsByFormId; [key: string]: unknown; } export interface ProjectItemNormalized { id: string; _id: ObjectID; collection: "projects"; name: string; created?: Date; updated?: Date; modified?: Date; parent?: ParentsMap; description?: string; shortDescription?: string; avancement?: ProjectAvancement; slug?: string; address?: PostalAddress; geo?: GeoCoordinates; geoPosition?: GeoPosition; tags?: string[]; links?: ProjectLinksBlock; creator?: string; profilImageUrl?: string; profilMediumImageUrl?: string; profilThumbImageUrl?: string; profilMarkerImageUrl?: string; socialNetwork?: SocialNetwork; email?: string; url?: string; answer?: string; /** * Enrichissement par les Answers liées au résultat — renvoyé uniquement par * `/costum/navigator/gettl` (variant `navigator-tl` de `searchCostum`). * Forme normalisée (après linkage par `Project._transformServerData`) : `Answer[]` par formId. * Distinct du champ `answer` (singulier) qui est l'id d'une Answer principale. */ answers?: AnswersByFormId; [key: string]: unknown; } export {};