@communecter/cocolight-api-client 1.0.54 → 1.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/401.cocolight-api-client.browser.js +1 -0
  2. package/dist/401.cocolight-api-client.cjs +1 -0
  3. package/dist/401.cocolight-api-client.mjs.js +1 -0
  4. package/dist/588.cocolight-api-client.browser.js +1 -0
  5. package/dist/588.cocolight-api-client.cjs +1 -0
  6. package/dist/588.cocolight-api-client.mjs.js +1 -0
  7. package/dist/593.cocolight-api-client.browser.js +1 -0
  8. package/dist/593.cocolight-api-client.cjs +1 -0
  9. package/dist/593.cocolight-api-client.mjs.js +1 -0
  10. package/dist/839.cocolight-api-client.browser.js +1 -0
  11. package/dist/839.cocolight-api-client.cjs +1 -0
  12. package/dist/839.cocolight-api-client.mjs.js +1 -0
  13. package/dist/cocolight-api-client.browser.js +3 -3
  14. package/dist/cocolight-api-client.cjs +1 -1
  15. package/dist/cocolight-api-client.mjs.js +1 -1
  16. package/dist/cocolight-api-client.vite.mjs.js +1 -1
  17. package/dist/cocolight-api-client.vite.mjs.js.map +1 -1
  18. package/package.json +29 -17
  19. package/src/{Api.js → Api.ts} +85 -95
  20. package/src/{ApiClient.js → ApiClient.ts} +436 -247
  21. package/src/EJSONType.ts +103 -0
  22. package/src/api/{Badge.js → Badge.ts} +56 -45
  23. package/src/api/BaseEntity.ts +3890 -0
  24. package/src/api/Comment.ts +200 -0
  25. package/src/api/{EndpointApi.js → EndpointApi.ts} +363 -297
  26. package/src/api/EndpointApi.types.ts +4609 -0
  27. package/src/api/EntityRegistry.ts +203 -0
  28. package/src/api/Event.ts +332 -0
  29. package/src/api/News.ts +331 -0
  30. package/src/api/{Organization.js → Organization.ts} +155 -119
  31. package/src/api/{Poi.js → Poi.ts} +68 -60
  32. package/src/api/{Project.js → Project.ts} +150 -127
  33. package/src/api/{User.js → User.ts} +321 -256
  34. package/src/api/UserApi.ts +148 -0
  35. package/src/api/serverDataType/Comment.ts +88 -0
  36. package/src/api/serverDataType/Event.ts +80 -0
  37. package/src/api/serverDataType/News.ts +138 -0
  38. package/src/api/serverDataType/Organization.ts +80 -0
  39. package/src/api/serverDataType/Project.ts +71 -0
  40. package/src/api/serverDataType/User.ts +103 -0
  41. package/src/api/serverDataType/common.ts +80 -0
  42. package/src/endpoints.module.ts +2621 -0
  43. package/src/error.ts +86 -0
  44. package/src/index.ts +86 -0
  45. package/src/mixin/UserMixin.ts +4 -0
  46. package/src/types/api-responses.ts +217 -0
  47. package/src/types/entities.ts +22 -0
  48. package/src/types/error-guards.ts +230 -0
  49. package/src/types/index.ts +39 -0
  50. package/src/types/payloads.ts +21 -0
  51. package/src/types/transforms.ts +110 -0
  52. package/src/utils/{FileOfflineStorageStrategy.node.js → FileOfflineStorageStrategy.node.ts} +15 -12
  53. package/src/utils/{FileStorageStrategy.node.js → FileStorageStrategy.node.ts} +16 -39
  54. package/src/utils/MultiServerFileStorageStrategy.node.ts +67 -0
  55. package/src/utils/MultiServerTokenStorageStrategy.ts +139 -0
  56. package/src/utils/{OfflineClientManager.js → OfflineClientManager.ts} +82 -86
  57. package/src/utils/OfflineQueueStorageStrategy.ts +47 -0
  58. package/src/utils/TokenStorage.ts +77 -0
  59. package/src/utils/compat.ts +12 -0
  60. package/src/utils/createDefaultMultiServerTokenStorageStrategy.ts +35 -0
  61. package/src/utils/{createDefaultOfflineStrategy.js → createDefaultOfflineStrategy.ts} +8 -3
  62. package/src/utils/createDefaultTokenStorageStrategy.ts +33 -0
  63. package/src/utils/{reactive.js → reactive.ts} +49 -40
  64. package/src/utils/stream-utils.node.ts +12 -0
  65. package/types/Api.d.ts +38 -82
  66. package/types/Api.d.ts.map +1 -0
  67. package/types/ApiClient.d.ts +244 -184
  68. package/types/ApiClient.d.ts.map +1 -0
  69. package/types/EJSONType.d.ts +48 -22
  70. package/types/EJSONType.d.ts.map +1 -0
  71. package/types/api/Badge.d.ts +20 -20
  72. package/types/api/Badge.d.ts.map +1 -0
  73. package/types/api/BaseEntity.d.ts +751 -446
  74. package/types/api/BaseEntity.d.ts.map +1 -0
  75. package/types/api/Comment.d.ts +36 -0
  76. package/types/api/EndpointApi.d.ts +347 -295
  77. package/types/api/EndpointApi.d.ts.map +1 -0
  78. package/types/api/EndpointApi.types.d.ts +3914 -4133
  79. package/types/api/EntityRegistry.d.ts +18 -16
  80. package/types/api/EntityRegistry.d.ts.map +1 -0
  81. package/types/api/Event.d.ts +119 -35
  82. package/types/api/Event.d.ts.map +1 -0
  83. package/types/api/News.d.ts +52 -20
  84. package/types/api/News.d.ts.map +1 -0
  85. package/types/api/Organization.d.ts +165 -49
  86. package/types/api/Organization.d.ts.map +1 -0
  87. package/types/api/Poi.d.ts +51 -22
  88. package/types/api/Poi.d.ts.map +1 -0
  89. package/types/api/Project.d.ts +151 -52
  90. package/types/api/Project.d.ts.map +1 -0
  91. package/types/api/User.d.ts +222 -93
  92. package/types/api/User.d.ts.map +1 -0
  93. package/types/api/UserApi.d.ts +60 -9
  94. package/types/api/UserApi.d.ts.map +1 -0
  95. package/types/api/serverDataType/Comment.d.ts +83 -0
  96. package/types/api/serverDataType/Event.d.ts +67 -0
  97. package/types/api/serverDataType/News.d.ts +130 -0
  98. package/types/api/serverDataType/Organization.d.ts +65 -0
  99. package/types/api/serverDataType/Organization.d.ts.map +1 -0
  100. package/types/api/serverDataType/Project.d.ts +58 -0
  101. package/types/api/serverDataType/Project.d.ts.map +1 -0
  102. package/types/api/serverDataType/User.d.ts +86 -0
  103. package/types/api/serverDataType/User.d.ts.map +1 -0
  104. package/types/api/serverDataType/common.d.ts +71 -0
  105. package/types/api/serverDataType/common.d.ts.map +1 -0
  106. package/types/endpoints.module.d.ts +6922 -1215
  107. package/types/endpoints.module.d.ts.map +1 -0
  108. package/types/error.d.ts +25 -51
  109. package/types/error.d.ts.map +1 -0
  110. package/types/index.d.ts +55 -48
  111. package/types/index.d.ts.map +1 -0
  112. package/types/mixin/UserMixin.d.ts +1 -1
  113. package/types/mixin/UserMixin.d.ts.map +1 -0
  114. package/types/types/api-responses.d.ts +190 -0
  115. package/types/types/api-responses.d.ts.map +1 -0
  116. package/types/types/entities.d.ts +17 -0
  117. package/types/types/entities.d.ts.map +1 -0
  118. package/types/types/error-guards.d.ts +99 -0
  119. package/types/types/error-guards.d.ts.map +1 -0
  120. package/types/types/index.d.ts +7 -0
  121. package/types/types/payloads.d.ts +17 -0
  122. package/types/types/payloads.d.ts.map +1 -0
  123. package/types/types/transforms.d.ts +79 -0
  124. package/types/types/transforms.d.ts.map +1 -0
  125. package/types/utils/FileOfflineStorageStrategy.node.d.ts +10 -9
  126. package/types/utils/FileOfflineStorageStrategy.node.d.ts.map +1 -0
  127. package/types/utils/FileStorageStrategy.node.d.ts +9 -20
  128. package/types/utils/FileStorageStrategy.node.d.ts.map +1 -0
  129. package/types/utils/MultiServerFileStorageStrategy.node.d.ts +13 -18
  130. package/types/utils/MultiServerFileStorageStrategy.node.d.ts.map +1 -0
  131. package/types/utils/MultiServerTokenStorageStrategy.d.ts +30 -51
  132. package/types/utils/MultiServerTokenStorageStrategy.d.ts.map +1 -0
  133. package/types/utils/OfflineClientManager.d.ts +52 -88
  134. package/types/utils/OfflineClientManager.d.ts.map +1 -0
  135. package/types/utils/OfflineQueueStorageStrategy.d.ts +12 -9
  136. package/types/utils/OfflineQueueStorageStrategy.d.ts.map +1 -0
  137. package/types/utils/TokenStorage.d.ts +20 -70
  138. package/types/utils/TokenStorage.d.ts.map +1 -0
  139. package/types/utils/compat.d.ts +4 -0
  140. package/types/utils/compat.d.ts.map +1 -0
  141. package/types/utils/createDefaultMultiServerTokenStorageStrategy.d.ts +2 -11
  142. package/types/utils/createDefaultMultiServerTokenStorageStrategy.d.ts.map +1 -0
  143. package/types/utils/createDefaultOfflineStrategy.d.ts +2 -3
  144. package/types/utils/createDefaultOfflineStrategy.d.ts.map +1 -0
  145. package/types/utils/createDefaultTokenStorageStrategy.d.ts +2 -12
  146. package/types/utils/createDefaultTokenStorageStrategy.d.ts.map +1 -0
  147. package/types/utils/reactive.d.ts +10 -16
  148. package/types/utils/reactive.d.ts.map +1 -0
  149. package/types/utils/stream-utils.node.d.ts +3 -2
  150. package/types/utils/stream-utils.node.d.ts.map +1 -0
  151. package/dist/123.cocolight-api-client.browser.js +0 -1
  152. package/dist/123.cocolight-api-client.cjs +0 -1
  153. package/dist/22.cocolight-api-client.mjs.js +0 -1
  154. package/dist/339.cocolight-api-client.mjs.js +0 -1
  155. package/dist/394.cocolight-api-client.browser.js +0 -1
  156. package/dist/394.cocolight-api-client.cjs +0 -1
  157. package/dist/405.cocolight-api-client.browser.js +0 -1
  158. package/dist/405.cocolight-api-client.cjs +0 -1
  159. package/dist/774.cocolight-api-client.mjs.js +0 -1
  160. package/dist/790.cocolight-api-client.mjs.js +0 -1
  161. package/dist/931.cocolight-api-client.browser.js +0 -1
  162. package/dist/931.cocolight-api-client.cjs +0 -1
  163. package/src/EJSONType.js +0 -53
  164. package/src/api/BaseEntity.js +0 -2828
  165. package/src/api/EntityRegistry.js +0 -152
  166. package/src/api/Event.js +0 -226
  167. package/src/api/News.js +0 -244
  168. package/src/api/UserApi.js +0 -81
  169. package/src/endpoints.module.js +0 -5
  170. package/src/error.js +0 -121
  171. package/src/index.js +0 -97
  172. package/src/mixin/UserMixin.js +0 -8
  173. package/src/utils/MultiServerFileStorageStrategy.node.js +0 -87
  174. package/src/utils/MultiServerTokenStorageStrategy.js +0 -188
  175. package/src/utils/OfflineQueueStorageStrategy.js +0 -51
  176. package/src/utils/TokenStorage.js +0 -153
  177. package/src/utils/createDefaultMultiServerTokenStorageStrategy.js +0 -51
  178. package/src/utils/createDefaultTokenStorageStrategy.js +0 -49
  179. package/src/utils/stream-utils.node.js +0 -10
@@ -1,124 +1,235 @@
1
+ import type { UpdateSettingsData, UpdateBlockDescriptionData, UpdateBlockInfoData, UpdateBlockSocialData, UpdateBlockLocalityData, GetNewsData, GetGalleryData, GlobalAutocompleteCostumData, CostumEventRequestActorsData, CostumEventRequestSubeventsData, CostumEventRequestDatesData, CostumEventRequestElementEventData, CostumEventRequestCategoriesData, CostumEventRequestEventData, CostumEventRequestLinkTlToEventData, CostumEventRequestLoadContextTagData, GetOrganizationsAdminData, GetOrganizationsNoAdminData, GetProjectsAdminData, GetProjectsNoAdminData, GetPoisAdminData, GetPoisNoAdminData, GetSubscribersData, GetBadgesData } from "./EndpointApi.types.js";
2
+ import type { TransformsMap } from "../types/entities.js";
1
3
  /**
2
- * @typedef {import("../ApiClient.js").default} ApiClient
3
- * @typedef {import("./EndpointApi.js").default} EndpointApi
4
+ * Types pour les méthodes d'entité (organization, project, poi, event, badge, news)
5
+ * Permettent soit de récupérer une entité existante (GET), soit de créer une nouvelle instance (CREATE)
4
6
  */
7
+ type OrganizationInput = {
8
+ id: string;
9
+ } | {
10
+ slug: string;
11
+ } | Record<string, any>;
12
+ type ProjectInput = {
13
+ id: string;
14
+ } | {
15
+ slug: string;
16
+ } | Record<string, any>;
17
+ type PoiInput = {
18
+ id: string;
19
+ } | {
20
+ slug: string;
21
+ } | Record<string, any>;
22
+ type EventInput = {
23
+ id: string;
24
+ } | {
25
+ slug: string;
26
+ } | Record<string, any>;
27
+ type BadgeInput = {
28
+ id: string;
29
+ } | Record<string, any>;
30
+ type NewsInput = {
31
+ id: string;
32
+ } | Record<string, any>;
33
+ type ApiClient = import("../ApiClient.js").default;
34
+ type EndpointApi = import("./EndpointApi.js").default;
35
+ type User = import("./User.js").User;
36
+ type Organization = import("./Organization.js").Organization;
37
+ type Project = import("./Project.js").Project;
38
+ type EventEntity = import("./Event.js").Event;
39
+ type Poi = import("./Poi.js").Poi;
40
+ type News = import("./News.js").News;
41
+ type Badge = import("./Badge.js").Badge;
42
+ type Comment = import("./Comment.js").Comment;
43
+ type AnyEntity = User | Organization | Project | Poi | EventEntity | Badge | News | Comment;
44
+ type ParentLike = BaseEntity<any> & {
45
+ apiClient: ApiClient;
46
+ userContext?: User | null;
47
+ };
48
+ type EndpointApiCtor = {
49
+ new (apiClient: ApiClient): EndpointApi;
50
+ };
51
+ type EndpointApiDep = EndpointApi | EndpointApiCtor;
52
+ interface Deps {
53
+ EndpointApi: EndpointApiDep;
54
+ User?: any;
55
+ Organization?: any;
56
+ Project?: any;
57
+ Poi?: any;
58
+ Event?: any;
59
+ Badge?: any;
60
+ News?: any;
61
+ Comment?: any;
62
+ }
63
+ interface BaseEntityConfig {
64
+ entityTag?: string;
65
+ }
66
+ interface EntityTypeMap {
67
+ citoyens: User;
68
+ organizations: Organization;
69
+ projects: Project;
70
+ events: EventEntity;
71
+ poi: Poi;
72
+ news: News;
73
+ badges: Badge;
74
+ comments: Comment;
75
+ }
76
+ type ReadableWithMeta = import("stream").Readable & {
77
+ path?: string;
78
+ mimeType?: string;
79
+ };
80
+ type UploadInput = File | Blob | Buffer | import("stream").Readable;
81
+ type ValidatedUpload = File | Buffer | ReadableWithMeta;
82
+ export interface PaginatorPage<T> {
83
+ count: {
84
+ total: number;
85
+ };
86
+ results: T[];
87
+ pageIndex: number;
88
+ pageNumber: number;
89
+ hasNext: boolean;
90
+ hasPrev: boolean;
91
+ next?: () => Promise<PaginatorPage<T>>;
92
+ prev?: () => Promise<PaginatorPage<T>>;
93
+ }
94
+ /**
95
+ * Type helper pour extraire les noms de méthodes depuis un Map as const
96
+ *
97
+ * @example
98
+ * static UPDATE_BLOCKS = new Map([
99
+ * ["UPDATE_BLOCK_DESCRIPTION", "updateDescription"],
100
+ * ["UPDATE_BLOCK_INFO", "updateInfo"]
101
+ * ] as const);
102
+ *
103
+ * type MethodNames = ExtractMethodNames<typeof MyClass.UPDATE_BLOCKS>;
104
+ * // Result: "updateDescription" | "updateInfo"
105
+ */
106
+ export type ExtractMethodNames<T> = T extends Map<any, infer V> ? V extends readonly (readonly [any, infer M])[] ? M : never : never;
107
+ interface LinkMeta {
108
+ linkType: "memberOf" | "projects" | "events" | "friends";
109
+ connectTypeConnect: "member" | "contributor" | "attendee" | "friend";
110
+ connectTypeDisconnect: "members" | "contributors" | "attendees" | "friends";
111
+ }
112
+ type BaseEntityCtor = typeof BaseEntity & {
113
+ entityTag: string;
114
+ entityType: "citoyens" | "organizations" | "projects" | "events" | "poi" | "badges" | "news" | "comments";
115
+ SCHEMA_CONSTANTS: string | string[];
116
+ };
117
+ interface FilterValueExistsOnly {
118
+ $exists: boolean;
119
+ }
120
+ interface FilterValueInOnly {
121
+ $in: string[];
122
+ }
123
+ interface FilterValueCombined {
124
+ $in: string[];
125
+ $exists: boolean;
126
+ }
127
+ type FilterValue = FilterValueExistsOnly | FilterValueInOnly | FilterValueCombined;
128
+ type LinkFilters = Record<string, FilterValue>;
129
+ interface MinimalUserLink {
130
+ toBeValidated?: boolean;
131
+ isInviting?: boolean;
132
+ }
133
+ type EntityFilterValue = string | boolean | RegExp | ((value: any) => boolean);
134
+ type EntityFilters = Record<string, EntityFilterValue>;
135
+ interface LinkEntitiesOptions {
136
+ key?: string;
137
+ mapFn?: (entity: any) => any;
138
+ }
139
+ type Deletable = {
140
+ _isDeleted?: boolean;
141
+ };
142
+ type ReactiveData = Record<string, any> & {
143
+ __isReactive?: boolean;
144
+ __raw?: any;
145
+ };
146
+ interface FinalizerResult<TOut> {
147
+ results: TOut[];
148
+ count: {
149
+ total: number;
150
+ } & Record<string, any>;
151
+ }
152
+ type EntityType = "citoyens" | "organizations" | "projects" | "events" | "poi" | "badges" | "news";
5
153
  /**
6
154
  * Classe de base pour toutes les entités métiers : utilisateurs, projets, organisations, etc.
7
155
  * Fournit un système de brouillon (draft), transformation, appel API sécurisé,
8
156
  * et gestion de données côté client avec support du mode offline.
157
+ * @template object TServerData
9
158
  * @abstract
10
159
  */
11
- export class BaseEntity {
160
+ export declare class BaseEntity<TServerData = any> {
161
+ __entityTag: string;
162
+ deps: Partial<Deps>;
163
+ apiClient: ApiClient;
164
+ parent: ParentLike | null;
165
+ userContext: User | null;
166
+ endpointApi: EndpointApi;
167
+ data: any;
168
+ meta?: any;
169
+ _draftData: ReactiveData;
170
+ _initialDraftData: Record<string, any>;
171
+ _serverData: TServerData & ReactiveData;
172
+ _calledFromSave: boolean;
173
+ _syncReactiveDraft: boolean;
174
+ _isDeleted: boolean;
175
+ _add?: ((payload: any) => Promise<void | unknown>) | undefined;
176
+ _update?: ((payload: any) => Promise<boolean>) | undefined;
177
+ _allowedFieldsCache?: string[];
178
+ _allowedFieldsMetadata?: {
179
+ combinedSchema: any;
180
+ transforms: TransformsMap;
181
+ removeFields: string[];
182
+ };
12
183
  static entityTag: string;
184
+ static entityType?: string;
185
+ static SCHEMA_CONSTANTS?: string | string[];
13
186
  /**
14
- * Crée une nouvelle instance d'entité à partir des données du serveur.
15
- *
16
- * @param {Object} data - Données du serveur.
17
- * @param {BaseEntity} parent - Instance parente.
18
- * @param {Object} deps - Dépendances injectées.
19
- * @returns {BaseEntity} Nouvelle instance d'entité.
187
+ * Vérifie que l'objet n'a pas été supprimé.
188
+ * @throws {ApiError} - Si l'objet a été supprimé.
20
189
  */
21
- static fromServerData(data: any, parent: BaseEntity, deps: any): BaseEntity;
190
+ protected _checkNotDeleted(): void;
22
191
  /**
23
- * Restaure les données sérialisées en un objet d'origine.
192
+ * Constructeur de l'entité.
24
193
  *
25
- * @param {Object} obj - L'objet à restaurer.
26
- * @returns {Object} L'objet restauré.
27
- */
28
- static _revive(obj: any): any;
29
- /**
30
- * Crée une instance d'entité à partir de données JSON.
194
+ * `parent` peut être :
195
+ * - une instance d'ApiClient
196
+ * - une instance d'entité (User, Organization, Project, Poi, Event, Badge, News)
31
197
  *
32
- * @param {Object} json - Données JSON à utiliser.
33
- * @param {Object} parent - Instance parente.
34
- * @param {Object} deps - Dépendances injectées.
35
- * @returns {object} Nouvelle instance d'entité.
198
+ * @param parent
199
+ * @param data - Données initiales.
200
+ * @param deps - Dépendances injectées (EndpointApi, autres entités).
201
+ * @param config - Configuration optionnelle (ex. `entityTag`).
202
+ * @throws {ApiError} Si `parent` est invalide ou si `deps.EndpointApi` n'est ni une instance ni un constructeur.
36
203
  */
37
- static fromJSON(json: any, parent: any, deps: any): object;
204
+ constructor(parent: ApiClient | ParentLike, data?: object, deps?: Partial<Deps>, config?: BaseEntityConfig);
38
205
  /**
39
- * Constructeur de l'entité.
40
- * @param {Object} parent - L'ApiClient ou une entité parente.
41
- * @param {Object} parent.apiClient - Instance de l'ApiClient.
42
- * @param {Object} [parent.parent] - Instance parente.
43
- * @param {Object} [data={}] - Données initiales.
44
- * @param {Object} [deps={}] - Dépendances injectées (EndpointApi, autres entités).
45
- * @param {Object|function} deps.EndpointApi - Instance de l'API.
46
- * @param {function} deps.User - Classe d'entité utilisateur.
47
- * @param {function} deps.Organization - Classe d'entité organisation.
48
- * @param {function} deps.Project - Classe d'entité projet.
49
- * @param {function} deps.Poi - Classe d'entité point d'intérêt.
50
- * @param {function} deps.Event - Classe d'entité événement.
51
- * @param {function} deps.Badge - Classe d'entité badge.
52
- * @param {function} deps.News - Classe d'entité actualité.
53
- * @param {string} [config.entityTag] - Tag d'entité (ex: "User", "Organization").
54
- * @param {Object} [config={}] - Configuration optionnelle.
55
- * @throws {ApiError} Si les dépendances ou parent sont invalides.
56
- */
57
- constructor(parent: {
58
- apiClient: any;
59
- parent?: any;
60
- }, data?: any, deps?: {
61
- EndpointApi: any | Function;
62
- User: Function;
63
- Organization: Function;
64
- Project: Function;
65
- Poi: Function;
66
- Event: Function;
67
- Badge: Function;
68
- News: Function;
69
- }, config?: any);
70
- /** @type {Object} Données de brouillon modifiables */
71
- _draftData: any;
72
- /** @type {Object} Snapshot initial des données de brouillon */
73
- _initialDraftData: any;
74
- /** @type {Object|null} Données reçues du serveur */
75
- _serverData: any | null;
76
- /** @type {boolean} Indique si `save()` est en cours */
77
- _calledFromSave: boolean;
78
- /** @type {boolean} Indique si le draft est synchronisé avec le serveur */
79
- _syncReactiveDraft: boolean;
80
- __entityTag: any;
81
- deps: {
82
- EndpointApi: any | Function;
83
- User: Function;
84
- Organization: Function;
85
- Project: Function;
86
- Poi: Function;
87
- Event: Function;
88
- Badge: Function;
89
- News: Function;
90
- };
91
- /** @type {ApiClient} */
92
- apiClient: ApiClient;
93
- parent: {
94
- apiClient: any;
95
- parent?: any;
96
- };
97
- userContext: any;
98
- /** @type {EndpointApi} */
99
- endpointApi: EndpointApi;
100
- data: any;
101
- getEntityTag: (__entityTag: any) => any;
102
- /** @returns {string|null} Identifiant de l'entité */
206
+ * Permet de récupérer le constructeur typé correctement.
207
+ */
208
+ protected _getCtor(): BaseEntityCtor;
209
+ getEntityTag: (__entityTag: string | undefined) => string | undefined;
210
+ /** @returns Identifiant de l'entité */
103
211
  get id(): string | null;
104
- /** @returns {string|null} Slug de l'entité */
212
+ /** @returns Slug de l'entité */
105
213
  get slug(): string | null;
106
- /** Définit un ID (utilisé en interne) */
107
- _id(newId: any): void;
108
- /** @returns {boolean} Indique si l'utilisateur est connecté */
214
+ /**
215
+ * Définit un ID (utilisé en interne)
216
+ * @param newId - Nouvel ID à définir.
217
+ */
218
+ _id(newId: string): void;
219
+ /** @returns Indique si l'utilisateur est connecté */
109
220
  get isConnected(): boolean;
110
- /** @returns {string|null} Identifiant utilisateur associé */
221
+ /** @returns Identifiant utilisateur associé */
111
222
  get userId(): string | null;
112
- /** @returns {Object} Données de brouillon courantes */
113
- get draftData(): any;
114
- /** @returns {Object} Données de brouillon initiales */
115
- get initialDraftData(): any;
116
- /** @returns {Object|null} Données brutes du serveur */
117
- get serverData(): any | null;
118
- /** @returns {boolean} Indique si cette entité représente l'utilisateur connecté */
223
+ /** @returns Données de brouillon courantes (réactif) */
224
+ get draftData(): ReactiveData;
225
+ /** @returns Données de brouillon initiales (non-réactif) */
226
+ get initialDraftData(): Record<string, any>;
227
+ /** @returns Données brutes du serveur */
228
+ get serverData(): TServerData;
229
+ /** @returns Indique si cette entité représente l'utilisateur connecté */
119
230
  get isMe(): boolean;
120
- /** @returns {string} Type de l'entité (ex: 'citoyens') */
121
- getEntityType(): string;
231
+ /** @returns Type de l'entité (ex: 'citoyens') */
232
+ getEntityType(): "citoyens" | "organizations" | "projects" | "events" | "poi" | "badges" | "news" | "comments";
122
233
  /**
123
234
  * Indique si le draft contient des modifications par rapport aux données initiales.
124
235
  * @returns {boolean}
@@ -126,46 +237,61 @@ export class BaseEntity {
126
237
  hasChanges(): boolean;
127
238
  /**
128
239
  * Rafraîchit l'entité en rechargeant ses données depuis le serveur.
129
- * @returns {Promise<Object>} Données mises à jour
240
+ * @returns Données mises à jour
130
241
  */
131
- refresh(): Promise<any>;
242
+ refresh(): Promise<Record<string, any>>;
132
243
  /**
133
244
  * Sauvegarde les modifications locales vers le serveur (add ou update).
134
- * @returns {Promise<Object>} Données serveur mises à jour
245
+ * @returns Données serveur mises à jour (après éventuel `refresh()`)
246
+ */
247
+ save(): Promise<Record<string, any>>;
248
+ /**
249
+ * Crée une nouvelle instance d'entité à partir des données du serveur.
250
+ *
251
+ * @param data - Données du serveur.
252
+ * @param parent - Instance parente (ApiClient ou BaseEntity).
253
+ * @param deps - Dépendances injectées (classes d'entités disponibles).
254
+ * @returns Nouvelle instance d'entité.
255
+ */
256
+ static fromServerData(data: object, parent: ApiClient | ParentLike, deps: object): BaseEntity<any>;
257
+ /**
258
+ * Hook pour transformer les données du serveur avant qu'elles ne soient appliquées.
259
+ * Peut être overridé dans les classes filles pour transformer des champs imbriqués en instances d'entités.
260
+ *
261
+ * @param data - Les données brutes du serveur.
262
+ * @returns Les données transformées.
263
+ * @protected
135
264
  */
136
- save(): Promise<any>;
265
+ protected _transformServerData(data: TServerData): TServerData;
137
266
  /**
138
267
  * Met à jour les données de l'entité avec de nouvelles données.
139
268
  *
140
- * @param {Object} newData - Les nouvelles données à appliquer.
141
- * @returns {void}
142
- * @private
269
+ * @param newData - Les nouvelles données à appliquer.
270
+ * @param {{ forceInitialDraftReset?: boolean }} [options]
271
+ * @protected
143
272
  */
144
- private _setData;
145
- _updateDraftPreservingUserChanges(draft: any): void;
273
+ protected _setData(newData: TServerData, { forceInitialDraftReset }?: {
274
+ forceInitialDraftReset?: boolean;
275
+ }): void;
276
+ _updateDraftPreservingUserChanges(draft: Record<string, any>): void;
146
277
  _resetInitialDraftData(): void;
147
278
  _toRawDeep(obj: any): any;
148
279
  /**
149
280
  * Champs à ajouter automatiquement à chaque draft (ex: `typeElement`).
150
281
  * Souvent utilisés dans les conditions `if/then` du JSON Schema.
151
- * @type {Object<string, any>}
152
282
  */
153
283
  defaultFields: {
154
- [x: string]: any;
284
+ [key: string]: any;
155
285
  };
156
286
  /**
157
287
  * Champs à exclure explicitement du draft et des payloads.
158
- * @type {string[]}
159
288
  */
160
289
  removeFields: string[];
161
290
  /**
162
291
  * Transformations à appliquer à certains champs lors de la lecture depuis le draft.
163
292
  * Clé = champ, valeur = fonction (val, full) => valeur transformée.
164
- * @type {Object<string, function(any, object): any>}
165
293
  */
166
- transforms: {
167
- [x: string]: (arg0: any, arg1: object) => any;
168
- };
294
+ transforms: TransformsMap;
169
295
  /**
170
296
  * ───────────────────────────────
171
297
  * JSON
@@ -174,19 +300,45 @@ export class BaseEntity {
174
300
  /**
175
301
  * Convertit l'instance en JSON pour l'envoi au serveur.
176
302
  *
177
- * @returns {Object} Représentation JSON de l'instance.
178
- */
179
- toJSON(): any;
303
+ * @returns Représentation JSON de l'instance.
304
+ */
305
+ toJSON(): {
306
+ __entityTag: string;
307
+ __isSerializedEntity: boolean;
308
+ serverData: any;
309
+ parent: {
310
+ id?: string;
311
+ type?: string;
312
+ __entityTag?: string;
313
+ slug?: string;
314
+ } | null;
315
+ };
180
316
  _serialize(obj: any): any;
181
317
  /**
182
318
  * Supprime les propriétés non sérialisables d'un objet.
183
319
  *
184
- * @param {Object} obj - L'objet à nettoyer.
185
- * @param {WeakSet} [seen] - Ensemble pour éviter les références circulaires.
186
- * @returns {Object} L'objet nettoyé.
320
+ * @param obj - L'objet à nettoyer.
321
+ * @param seen - Ensemble pour éviter les références circulaires.
322
+ * @returns L'objet nettoyé.
187
323
  * @private
188
324
  */
189
325
  private _removeUnserializables;
326
+ /**
327
+ * Restaure les données sérialisées en un objet d'origine.
328
+ *
329
+ * @param obj - L'objet à restaurer.
330
+ * @returns L'objet restauré.
331
+ */
332
+ static _revive(obj: object): any;
333
+ /**
334
+ * Crée une instance d'entité à partir de données JSON.
335
+ *
336
+ * @param json - Données JSON à utiliser.
337
+ * @param parent - Instance parente.
338
+ * @param deps - Dépendances injectées.
339
+ * @returns Nouvelle instance d'entité.
340
+ */
341
+ static fromJSON(json: unknown, parent?: ApiClient | BaseEntity<any> | null, deps?: object): BaseEntity<any>;
190
342
  /**
191
343
  * ───────────────────────────────
192
344
  * UtilMixin
@@ -195,74 +347,72 @@ export class BaseEntity {
195
347
  /**
196
348
  * Appelle une méthode de l'API.
197
349
  *
198
- * @param {string} constant - Le nom de la méthode à appeler.
199
- * @param {object} data - Les données à passer à la méthode.
200
- * @returns {Promise<any>} - La promesse de la méthode appelée.
350
+ * @param constant - Le nom de la méthode à appeler.
351
+ * @param data - Les données à passer à la méthode.
352
+ * @returns - `response.data` transformé ; peut être `null` si la requête est **mise en file** (offline/breaker).
201
353
  * @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
202
354
  * @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
203
355
  * @throws {ApiClientError} - Si l'utilisateur n'est pas authentifié.
204
356
  */
205
- call(constant: string, data?: object): Promise<any>;
357
+ call(constant: string, data?: object): Promise<unknown>;
206
358
  /**
207
359
  * Appelle une méthode de l'API si l'utilisateur n'est pas connecté.
208
360
  *
209
- * @param {string} constant - Le nom de la méthode à appeler.
210
- * @param {object} data - Les données à passer à la méthode.
211
- * @returns {Promise<any>} - La promesse de la méthode appelée.
361
+ * @param constant - Le nom de la méthode à appeler.
362
+ * @param data - Les données à passer à la méthode.
363
+ * @returns - `response.data` ou `null` si enqueue offline/breaker.
212
364
  * @throws {ApiAuthenticationError} - Si l'utilisateur est connecté.
213
365
  * @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
214
366
  * @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
215
367
  * @throws {ApiClientError} - Si une erreur se produit lors de l'appel de l'API.
216
368
  */
217
- callNoConnected(constant: string, data?: object): Promise<any>;
369
+ callNoConnected(constant: string, data?: object): Promise<unknown>;
218
370
  /**
219
371
  * Appelle une méthode de l'API si l'utilisateur est connecté.
220
372
  *
221
- * @param {string|function} param - Le nom de la méthode à appeler ou une fonction de rappel.
222
- * @param {object} data - Les données à passer à la méthode.
223
- * @returns {Promise<any>} - La promesse de la méthode appelée.
373
+ * @param param - Le nom de la méthode à appeler ou une fonction de rappel.
374
+ * @param data - Les données à passer à la méthode.
375
+ * @returns - `response.data` ou `null` si enqueue offline/breaker.
224
376
  * @throws {ApiAuthenticationError} - Si l'utilisateur n'est pas connecté.
225
377
  * @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
226
378
  * @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
227
379
  * @throws {ApiClientError} - Si une erreur se produit lors de l'appel de l'API.
228
380
  */
229
- callIsConnected(param: string | Function, data?: object): Promise<any>;
381
+ callIsConnected(param: string | (() => Promise<any>), data?: object): Promise<unknown>;
230
382
  /**
231
383
  * Appelle une méthode de l'API si l'utilisateur est lui-même.
232
384
  *
233
- * @param {string|function} param - Le nom de la méthode à appeler ou une fonction de rappel.
234
- * @param {object} data - Les données à passer à la méthode.
235
- * @returns {Promise<any>} - La promesse de la méthode appelée.
385
+ * @param param - Le nom de la méthode à appeler ou une fonction de rappel.
386
+ * @param data - Les données à passer à la méthode.
387
+ * @returns - `response.data` ou `null` si enqueue offline/breaker.
236
388
  * @throws {ApiAuthenticationError} - Si l'utilisateur n'est pas lui-même.
237
389
  * @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
238
390
  * @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
239
391
  * @throws {ApiClientError} - Si une erreur se produit lors de l'appel de l'API.
240
392
  */
241
- callIsMe(param: string | Function, data?: object): Promise<any>;
393
+ callIsMe(param: string | (() => Promise<any>), data?: object): Promise<unknown>;
242
394
  /**
243
395
  * Valide une image d'entrée.
244
396
  *
245
- * @param {File|Blob|Buffer|ReadableStream} imageInput - L'image à valider.
246
- * @returns {Promise<File|Buffer|ReadableStream>} - L'image validée.
397
+ * @param imageInput - L'image à valider.
398
+ * @returns - L'image validée.
247
399
  * @private
248
400
  */
249
- private _validateImage;
401
+ protected _validateImage(imageInput: UploadInput): Promise<ValidatedUpload>;
250
402
  /**
251
403
  * Valide un fichier d'entrée.
252
404
  *
253
- * @param {File|Blob|Buffer|ReadableStream} fileInput - Le fichier à valider.
254
- * @returns {Promise<File|Buffer|ReadableStream>} - Le fichier validé.
405
+ * @param fileInput - Le fichier à valider.
406
+ * @returns - Le fichier validé.
255
407
  * @private
256
408
  */
257
- private _validateFile;
409
+ protected _validateFile(fileInput: UploadInput): Promise<ValidatedUpload>;
258
410
  /**
259
411
  * Valide les entrées d'upload de fichiers.
260
412
  *
261
- * @param {File|Blob|Buffer|ReadableStream} input - Le fichier à valider.
262
- * @param {Object} options - Options de validation.
263
- * @param {Array} options.allowedMimeTypes - Types MIME autorisés.
264
- * @param {string} options.expectedType - Type de fichier attendu (ex: "image", "file").
265
- * @returns {Promise<File|Buffer|ReadableStream>} - Le fichier validé.
413
+ * @param input - Le fichier à valider.
414
+ * @param {{ allowedMimeTypes?: string[], expectedType?: "image"|"file"|"any" }} options - Options de validation.
415
+ * @returns - Le fichier validé.
266
416
  * @throws {ApiValidationError} - Si le type de fichier est invalide.
267
417
  * @throws {Error} - Si le type de fichier est inconnu.
268
418
  * @private
@@ -270,18 +420,18 @@ export class BaseEntity {
270
420
  private _validateUploadInput;
271
421
  /**
272
422
  * Transforme un Buffer en ReadableStream équivalent à fs.createReadStream
273
- * @param {Buffer} buffer - Le buffer contenant les données binaires
274
- * @param {string} filename - Nom de fichier (utilisé dans FormData)
275
- * @param {string} mimeType - Type MIME (utilisé dans FormData)
276
- * @returns {Object} - { stream, filename, mimeType }
423
+ * @param buffer - Le buffer contenant les données binaires
424
+ * @param [filename="file.bin"] - Nom de fichier (utilisé dans FormData)
425
+ * @param [mimeType="application/octet-stream"] - Type MIME (utilisé dans FormData)
426
+ * @returns - Readable doté de `path` et `mimeType`
277
427
  * @private
278
428
  */
279
429
  private _createReadStreamFromBuffer;
280
430
  /**
281
431
  * Transforme un Buffer en ReadableStream.
282
432
  *
283
- * @param {Buffer} buffer - Le buffer à transformer.
284
- * @returns {Promise<stream.Readable>} - Un ReadableStream.
433
+ * @param buffer - Le buffer à transformer.
434
+ * @returns - Un ReadableStream.
285
435
  * @throws {Error} - Si appelé dans le navigateur.
286
436
  * @private
287
437
  */
@@ -289,7 +439,7 @@ export class BaseEntity {
289
439
  /**
290
440
  * Crée un PassThrough stream pour le traitement des fichiers.
291
441
  *
292
- * @returns {Promise<stream.PassThrough>} - Un PassThrough stream.
442
+ * @returns - Un PassThrough stream.
293
443
  * @throws {Error} - Si appelé dans le navigateur.
294
444
  * @private
295
445
  */
@@ -297,100 +447,139 @@ export class BaseEntity {
297
447
  /**
298
448
  * Supprime les propriétés d'un objet en fonction d'une liste de clés.
299
449
  *
300
- * @param {Object} obj - L'objet source.
301
- * @param {Array} propsToRemove - Liste des clés à supprimer
302
- * @param {boolean} [deep=false] - Si vrai, supprime les propriétés de manière récursive.
303
- * @returns {Object} - Un nouvel objet sans les propriétés supprimées.
450
+ * @param obj - L'objet source.
451
+ * @param propsToRemove - Liste des clés à supprimer
452
+ * @returns - Un nouvel objet sans les propriétés supprimées.
304
453
  * @private
305
454
  */
306
455
  private _omitProps;
307
456
  /**
308
457
  * Extrait les propriétés d'un objet en fonction d'une liste de clés.
309
458
  *
310
- * @param {Object} obj - L'objet source.
311
- * @param {Array} keys - Liste des clés à extraire.
312
- * @param {Object} [transforms={}] - Transformations à appliquer aux valeurs.
313
- * @returns {Object} - Un nouvel objet contenant les propriétés extraites.
459
+ * @param obj - L'objet source.
460
+ * @param keys - Liste des clés à extraire.
461
+ * @param [transforms={}] - Transformations à appliquer aux valeurs.
462
+ * @returns - Un nouvel objet contenant les propriétés extraites.
314
463
  * @private
315
464
  */
316
465
  private _pickProps;
317
466
  /**
318
467
  * Vérifie si au moins une clé est présente dans l'objet et n'est pas nulle.
319
468
  *
320
- * @param {Object} obj - L'objet à vérifier.
321
- * @param {Array} keys - Liste des clés à vérifier.
322
- * @returns {boolean} - true si au moins une clé est présente et non nulle, sinon false.
469
+ * @param obj - L'objet à vérifier.
470
+ * @param keys - Liste des clés à vérifier.
471
+ * @returns - true si au moins une clé est présente et non nulle, sinon false.
323
472
  * @private
324
473
  */
325
474
  private _hasAtLeastOne;
326
475
  /**
327
476
  * Crée un proxy filtré pour une liste d'entités.
328
- * @param {Array} list - Liste d'entités.
329
- * @returns {Proxy} Proxy filtré.
330
477
  * @private
331
478
  */
332
- private _createFilteredProxy;
479
+ _createFilteredProxy<T extends Deletable>(list: T[]): T[];
333
480
  /**
334
481
  * Génère un nouvel identifiant unique.
335
- * @returns {string} Un identifiant unique.
336
- * @private
482
+ * @returns Un identifiant unique.
483
+ * @protected
337
484
  */
338
- private _newId;
485
+ protected _newId(): string;
339
486
  /**
340
487
  * ───────────────────────────────
341
488
  * DraftStateMixin
342
489
  * ───────────────────────────────
343
490
  */
491
+ /**
492
+ * Recalcule les champs autorisés en fonction de l'état actuel du draft.
493
+ * Utilisé pour validation dynamique dans le proxy this.data.
494
+ * @returns Liste des champs autorisés
495
+ * @private
496
+ */
497
+ private _getAllowedFieldsForCurrentState;
344
498
  /**
345
499
  * Crée un proxy combinant draft + serveur, avec transformations facultatives.
346
- * @param {Object} server
347
- * @param {Object} draft
348
- * @param {Array} allowedFields - champs autorisés dans le draft
349
- * @param {Object} [transforms={}] - transformateurs de lecture
350
- * @param {Object} [options={}] - options
351
- * @returns {Proxy}
500
+ * @param apiClient
501
+ * @param [server={}]
502
+ * @param [draft={}]
503
+ * @param _allowedFields - champs autorisés dans le draft (fallback si pas de metadata)
504
+ * @param [transforms={}] - transformateurs de lecture
505
+ * @param {{ throwOnError?: boolean }} [options={}] - options
506
+ * @param [entity=this] - référence à l'entité pour recalcul dynamique
507
+ * @returns {object}
352
508
  * @private
353
509
  */
354
510
  private _createDraftProxy;
355
511
  /**
356
512
  * Extrait les champs modifiables d'un schéma JSON.
357
513
  *
358
- * @param {Object} schema - Le schéma JSON à analyser.
359
- * @param {Object} data - Les données à comparer.
360
- * @param {Object} ctx - Contexte d'extraction (pour la récursion).
361
- * @param {Object} ctx.defs - Définitions de schéma.
362
- * @param {Set} ctx.visited - Ensemble des schémas déjà visités.
363
- * @returns {Array} - Liste des champs modifiables.
514
+ * @param schema - Le schéma JSON à analyser.
515
+ * @param data - Les données à comparer.
516
+ * @param ctx - Contexte d'extraction (pour la récursion).
517
+ * @param ctx.defs - Définitions de schéma.
518
+ * @param ctx.visited - Ensemble des schémas déjà visités.
519
+ * @returns Liste des champs modifiables (propriétés `writeable` implicites).
364
520
  * @private
365
521
  */
366
522
  private _extractWritableFields;
367
523
  /**
368
524
  * Construit un brouillon et un proxy à partir des données et du schéma.
369
525
  *
370
- * @param {Object} options - Options de construction.
371
- * @param {Object} options.data - Données à utiliser pour le brouillon.
372
- * @param {Object} [options.serverData=null] - Données du serveur.
373
- * @param {string|Array} options.constant - Nom de la constante ou tableau de constantes.
374
- * @param {ApiClient} options.apiClient - Instance de l'API.
375
- * @param {Object} [options.transforms={}] - Transformations à appliquer.
376
- * @param {boolean} [options.throwOnError=true] - Si vrai, lève une erreur en cas de problème.
377
- * @param {Array} [options.removeFields=[]] - Liste des champs à ignorer.
378
- * @returns {Object} - Objet contenant le brouillon et le proxy.
526
+ * @param options - Options de construction.
527
+ * @param options.data - Données à utiliser pour le brouillon.
528
+ * @param options.serverData - Données du serveur.
529
+ * @param options.previousDraft - Brouillon précédent pour la réactivité.
530
+ * @param options.constant - Nom de la constante ou tableau de constantes.
531
+ * @param options.apiClient - Instance de l'API.
532
+ * @param options.transforms - Transformations à appliquer.
533
+ * @param options.throwOnError - Si vrai, lève une erreur en cas de problème.
534
+ * @param options.removeFields - Liste des champs à ignorer.
535
+ * @returns Draft réactif, proxy combiné, snapshot initial.
379
536
  * @private
380
537
  */
381
538
  private _buildDraftAndProxy;
539
+ /**
540
+ * Invoque une méthode de bloc de manière type-safe.
541
+ * Élimine le besoin de casts `as any` dans les classes dérivées.
542
+ *
543
+ * @param blocks - Le Map contenant les noms de méthodes (doit être `as const`)
544
+ * @param methodName - Le nom de la méthode à invoquer
545
+ * @param blockData - Les données à passer à la méthode
546
+ * @returns La valeur retournée par la méthode
547
+ * @protected
548
+ *
549
+ * @example
550
+ * // Dans une classe dérivée :
551
+ * await this._invokeBlockMethod(User.UPDATE_BLOCKS, methodName, blockData);
552
+ */
553
+ protected _invokeBlockMethod<T extends Map<string, any>>(blocks: T, methodName: string, blockData: any): Promise<any>;
382
554
  /**
383
555
  * Extrait les champs modifiés du schéma.
384
556
  *
385
- * @param {ApiClient} apiClient - Instance de l'API.
386
- * @param {string} constant - Nom de la constante.
387
- * @param {Object} data - Données à comparer.
388
- * @param {Function} getInitialDraft - Fonction pour obtenir le brouillon initial.
389
- * @param {Array} removeFields - Liste des champs à ignorer.
390
- * @returns {Object|null} - Champs modifiés ou null.
557
+ * @param apiClient - Instance de l'API.
558
+ * @param constant - Nom de la constante.
559
+ * @param data - Données à comparer.
560
+ * @param getInitialDraft - Fonction pour obtenir le brouillon initial.
561
+ * @param removeFields - Liste des champs à ignorer.
562
+ * @returns - Champs modifiés ou `null` si aucun changement.
563
+ * @protected
564
+ */
565
+ /**
566
+ * Détecte si une valeur est un type d'upload (Buffer, File, Blob, Stream)
567
+ * @param obj - La valeur à tester
568
+ * @returns true si c'est un type d'upload
569
+ * @private
570
+ */
571
+ private _isUploadType;
572
+ /**
573
+ * Compare deux valeurs de manière intelligente :
574
+ * - Types d'upload (Buffer, File, etc.) : comparaison par référence
575
+ * - Autres types : comparaison JSON
576
+ * @param current - Valeur actuelle
577
+ * @param initial - Valeur initiale
578
+ * @returns true si les valeurs sont différentes
391
579
  * @private
392
580
  */
393
- private _extractChangedFieldsFromSchema;
581
+ private _compareValues;
582
+ _extractChangedFieldsFromSchema(apiClient: ApiClient, constant: string, data: Record<string, any> | undefined, getInitialDraft: () => Record<string, any> | void, removeFields?: string[]): Record<string, any> | null;
394
583
  /**
395
584
  * Extrait tous les champs valides selon le schéma, et retourne uniquement ceux qui ont changé par rapport au draft initial.
396
585
  * Contrairement à `_extractChangedFieldsFromSchema`, cette méthode retourne l'ensemble des champs valides (`updated`)
@@ -401,15 +590,15 @@ export class BaseEntity {
401
590
  * - des champs non exclus dans `removeFields`
402
591
  * - des champs définis dans `data` (les `undefined` sont ignorés)
403
592
  *
404
- * @param {ApiClient} apiClient - Linstance de client API contenant les schémas.
405
- * @param {string} constant - Le nom de la constante de schéma (ex: "ADD_EVENT").
406
- * @param {Object} data - Les nouvelles données à comparer avec le draft initial.
407
- * @param {() => Object} getInitialDraft - Fonction qui retourne le draft initial (souvent `this.initialDraftData`).
408
- * @param {string[]} [removeFields=[]] - Champs à ignorer même sils sont valides.
409
- * @returns {Object|null} - Un objet `updated` avec les champs valides si au moins un champ a changé, sinon `null`.
593
+ * @param apiClient - L'instance de client API contenant les schémas.
594
+ * @param constant - Le nom de la constante de schéma (ex: "ADD_EVENT").
595
+ * @param data - Les nouvelles données à comparer avec le draft initial.
596
+ * @param getInitialDraft - Fonction qui retourne le draft initial (souvent `this.initialDraftData`).
597
+ * @param removeFields - Champs à ignorer même s'ils sont valides.
598
+ * @returns - Un objet `updated` avec les champs valides si au moins un champ a changé, sinon `null`.
410
599
  * @private
411
600
  */
412
- private _extractAllValidFieldsFromSchema;
601
+ _extractAllValidFieldsFromSchema(apiClient: ApiClient, constant: string, data: Record<string, any> | undefined, getInitialDraft: () => Record<string, any>, removeFields?: string[]): Record<string, any> | null;
413
602
  /**
414
603
  * ───────────────────────────────
415
604
  * MutualEntityMixin
@@ -417,69 +606,81 @@ export class BaseEntity {
417
606
  */
418
607
  /**
419
608
  * Résout l'identifiant de l'entité si seul le slug est fourni.
420
- * @param {string} type - Le type d'entité (ex : "citoyens", "organizations", "projects").
421
- * @returns {Promise<string>} L'identifiant résolu.
609
+ * @param type - Le type d'entité (ex : "citoyens", "organizations", "projects").
610
+ * @returns L'identifiant résolu.
611
+ * @throws {ApiResponseError} - Si le slug ne correspond pas à l'entité attendue.
612
+ * @throws {ApiError} - Si l'identifiant ne peut pas être résolu.
613
+ * @throws {ApiResponseError} - Si une erreur se produit lors de la récupération
422
614
  * @private
423
615
  */
424
616
  private _resolveId;
425
617
  /**
426
618
  * Récupère le profil public de l'entité.
427
619
  *
428
- * @returns {Promise<Object>} - Les données du profil public.
429
- * @private
620
+ * @returns - Les données du profil public.
621
+ * @protected
430
622
  */
431
- private _getPublicProfile;
623
+ protected _getPublicProfile(): Promise<Record<string, any>>;
432
624
  /**
433
625
  * Récupère la classe d'entité et ses dépendances à partir du type d'entité.
434
626
  *
435
- * @param {string} entityType - Le type d'entité.
436
- * @return {{ entityClass: Function, deps: Object } | null}
437
627
  * @private
438
628
  */
439
629
  private _getEntityMeta;
440
630
  /**
441
631
  * Lier des données d'entité à une instance d'entité.
442
632
  *
443
- * @param {string} entityType - Le type d'entité (ex : "citoyens", "organisations", "projets").
444
- * @param {Object} entityData - Les données de l'entité à lier.
445
- * @return {Object} L'entité liée.
633
+ * @param entityType - Le type d'entité (ex : "citoyens", "organisations", "projets").
634
+ * @param entityData - Les données de l'entité à lier.
635
+ * @return L'entité liée ou les données brutes si la metadata n'existe pas.
446
636
  * @private
447
637
  */
448
- private _linkEntity;
638
+ _linkEntity(entityType: string, entityData: object): AnyEntity | object;
639
+ /**
640
+ * Transforme un objet imbriqué avec {id, type} en instance d'entité.
641
+ * Utilisé pour transformer des champs comme author, target, etc.
642
+ *
643
+ * @param obj - L'objet à transformer (doit avoir au minimum {id, type}).
644
+ * @returns L'instance d'entité ou l'objet original si la transformation échoue.
645
+ * @protected
646
+ */
647
+ protected _linkNestedEntity<T = any>(obj: any): T | any;
449
648
  /**
450
649
  * Récupère et lie une entité à partir de son ID.
451
650
  *
452
- * @param {string} entityType - Le type d'entité.
453
- * @param {string} entityId - L'identifiant de l'entité.
454
- * @param {Object} [options] - Options supplémentaires :
455
- * @param {boolean} [options.skipGet] - Si true, ne pas appeler `get()` sur l'entité.
456
- * @return {Promise<Object|null>} L'entité liée ou null.
651
+ * @param entityType - Le type d'entité.
652
+ * @param entityId - L'identifiant de l'entité.
653
+ * @param options - Options supplémentaires :
654
+ * @param options.skipGet - Si true, ne pas appeler `get()` sur l'entité.
655
+ * @return L'entité liée ou null.
457
656
  * @private
458
657
  */
459
- private _linkEntityById;
658
+ _linkEntityById(entityType: string, entityId: string, options?: {
659
+ skipGet?: boolean;
660
+ }): Promise<AnyEntity | null>;
460
661
  /**
461
662
  * Lie une liste d'entités à partir de leurs données.
462
663
  *
463
- * @param {Array<Object>} results - Liste de données d'entités.
464
- * @return {Array<Object>} Liste d'entités liées.
664
+ * @param results - Liste de données d'entités.
665
+ * @return Liste d'entités liées.
465
666
  * @private
466
667
  */
467
- private _linkEntities;
668
+ protected _linkEntities(results: any[]): any[];
468
669
  /**
469
670
  * Lie des entités présentes dans `this.serverData` à partir de leurs IDs,
470
671
  * en les filtrant dynamiquement et en optionnellement les transformant.
471
672
  *
472
- * @param {string} entityType - Le type d'entité (ex : "badges", "citoyens", etc.).
473
- * @param {Object} filters - Clés/valeurs de filtres dynamiques. Les valeurs peuvent être :
673
+ * @param entityType - Le type d'entité (ex : "badges", "citoyens", etc.).
674
+ * @param filters - Clés/valeurs de filtres dynamiques. Les valeurs peuvent être :
474
675
  * - un littéral (comparaison stricte ou intelligente selon le type),
475
676
  * - une chaîne (utilise `includes` insensible à la casse),
476
677
  * - une RegExp (appliquée si la valeur est une chaîne),
477
678
  * - une fonction `(value) => boolean`.
478
- * @param {Object} [options] - Options supplémentaires :
479
- * @param {string} [options.key] - Le champ de `this.serverData` à utiliser (par défaut = entityType).
480
- * @param {Function} [options.mapFn] - Fonction de transformation `(entity) => any` appliquée au résultat.
679
+ * @param options - Options supplémentaires :
680
+ * @param options.key - Le champ de `this.serverData` à utiliser (par défaut = entityType).
681
+ * @param options.mapFn - Fonction de transformation `(entity) => any` appliquée au résultat.
481
682
  *
482
- * @return {Promise<Array<Object>>} Liste des entités liées, filtrées et éventuellement transformées.
683
+ * @return Liste des entités liées, filtrées et éventuellement transformées.
483
684
  *
484
685
  * @example
485
686
  * // Tous les badges avec `name` contenant "codev"
@@ -504,79 +705,82 @@ export class BaseEntity {
504
705
  * mapFn: (badge) => badge.meta.name
505
706
  * });
506
707
  */
507
- linkEntitiesFromServerData(entityType: string, filters?: any, options?: {
508
- key?: string;
509
- mapFn?: Function;
510
- }): Promise<Array<any>>;
708
+ linkEntitiesFromServerData(entityType: string, filters?: EntityFilters, options?: LinkEntitiesOptions): Promise<any[]>;
511
709
  /**
512
710
  * Crée une instance d'entité à partir des données fournies.
513
- * @param {string} entityType - Le type d'entité (ex : "citoyens", "organisations", "projets").
514
- * @param {Object} entityData - Les données de l'entité.
515
- * @return {Object} L'entité créée.
711
+ * @template keyof EntityTypeMap T
712
+ * @param entityType
713
+ * @param entityData
714
+ * @return {EntityTypeMap[T]}
516
715
  * @private
517
716
  */
518
- private _entityInstanceData;
717
+ _entityInstanceData<T extends keyof EntityTypeMap>(entityType: T, entityData: object): EntityTypeMap[T];
519
718
  /**
520
719
  * Crée une instance d'entité, et déclenche get() si certaines propriétés sont présentes.
521
- * @param {string} entityType
522
- * @param {Object} entityData
523
- * @return {Promise<Object>}
720
+ * @template keyof EntityTypeMap T
721
+ * @param entityType
722
+ * @param [entityData={}]
723
+ * @return {Promise<EntityTypeMap[T]>}
524
724
  */
525
- entity(entityType: string, entityData?: any): Promise<any>;
725
+ entity<T extends keyof EntityTypeMap>(entityType: T, entityData?: object): Promise<EntityTypeMap[T]>;
526
726
  /**
527
727
  * Récupère et lie une entité à partir de son slug.
528
- * @param {string} slug - Le slug de l'entité.
529
- * @return {Promise<Object|null>} L'entité liée ou null.
728
+ * @param slug - Le slug de l'entité.
729
+ * @return L'entité liée.
730
+ * @throws {ApiError} Si le slug est vide.
731
+ * @throws {ApiResponseError} Si le slug n'existe pas ou est invalide.
530
732
  */
531
- entityBySlug(slug: string): Promise<any | null>;
733
+ entityBySlug(slug: string): Promise<AnyEntity>;
532
734
  /**
533
735
  * Construit dynamiquement des filtres sur un lien entre entités
534
736
  *
535
- * @param {string} id - L'ID de l'entité cible.
536
- * @param {Object} options - Options de filtrage.
537
- * @param {"memberOf" | "projects"} [options.linkType] - Le type de lien (ex: "memberOf", "projects", etc.).
538
- * @param {boolean} [options.isAdmin] - Si défini, filtre selon l'existence de isAdmin.
539
- * @param {boolean} [options.isAdminPending] - Si défini, filtre selon l'existence de isAdminPending.
540
- * @param {boolean} [options.isInviting] - Si défini, filtre selon l'existence de isInviting.
541
- * @param {boolean} [options.toBeValidated] - Si défini, filtre selon l'existence de toBeValidated.
542
- * @param {Array<string>} [options.roles] - Rôles à filtrer.
543
- * @returns {Object} - Un objet de filtres à passer à une requête.
737
+ * @param id - L'ID de l'entité cible.
738
+ * @param options - Options de filtrage.
739
+ * @param options.linkType - Le type de lien (ex: "memberOf", "projects", etc.).
740
+ * @param options.isAdmin - Si défini, filtre selon l'existence de isAdmin.
741
+ * @param options.isAdminPending - Si défini, filtre selon l'existence de isAdminPending.
742
+ * @param options.isInviting - Si défini, filtre selon l'existence de isInviting.
743
+ * @param options.toBeValidated - Si défini, filtre selon l'existence de toBeValidated.
744
+ * @param options.roles - Rôles à filtrer.
745
+ * @returns - Un objet de filtres à passer à une requête.
544
746
  * @throws {TypeError} - Si les types des paramètres ne sont pas valides.
545
- * @private
747
+ * @protected
546
748
  */
547
- private _buildLinkFilters;
749
+ _buildLinkFilters(id: string | null, { linkType, isAdmin, isAdminPending, isInviting, toBeValidated, roles }: {
750
+ linkType: "memberOf" | "projects" | "events";
751
+ isAdmin?: boolean;
752
+ isAdminPending?: boolean;
753
+ isInviting?: boolean;
754
+ toBeValidated?: boolean;
755
+ roles?: string[];
756
+ }): LinkFilters;
548
757
  /**
549
758
  * Retourne les métadonnées de lien pour une entité :
550
759
  * - `linkType` : clé dans `serverData.links`
551
760
  * - `connectTypeConnect` : valeur envoyée pour `connect()`
552
761
  * - `connectTypeDisconnect` : valeur envoyée pour `disconnect()`
553
- * @typedef {Object} LinkMeta
554
- * @property {string} linkType
555
- * @property {string} connectTypeConnect
556
- * @property {string} connectTypeDisconnect
557
- * @returns {LinkMeta}
558
762
  * @throws {ApiError} - Si le type d'entité est inconnu.
559
- * @private
763
+ * @protected
560
764
  */
561
- private _getLinkMeta;
765
+ protected _getLinkMeta(): LinkMeta;
562
766
  /**
563
767
  * Vérifie si l'entité prend en charge les opérations de lien (`connect`, `disconnect`, etc.).
564
768
  * Utilise `_getLinkMeta()` comme source unique de vérité.
565
769
  *
566
770
  * @throws {ApiError} - Si l'entité ne supporte pas les liens.
567
- * @private
771
+ * @protected
568
772
  */
569
- private _checkLinkableEntity;
773
+ protected _checkLinkableEntity(): void;
570
774
  /**
571
775
  * Retourne le lien de l'utilisateur connecté avec l'entité cible (dans `parent.serverData.links`)
572
- * @private
776
+ * @protected
573
777
  */
574
- private _getLinkFromConnectedUser;
778
+ protected _getLinkFromConnectedUser(): import("./serverDataType/common.js").LinkProjectRef | import("./serverDataType/common.js").LinkEventsRef | import("./serverDataType/common.js").LinkfriendsRef | import("./serverDataType/common.js").LinkMemberOfUserRef | null;
575
779
  /**
576
780
  * Soumet une demande de connexion à une entité (ex : membre, contributeur),
577
781
  * ou valide l'invitation si elle existe déjà.
578
782
  *
579
- * @returns {Promise<Object>} - Résultat de l'API
783
+ * @returns - Résultat de l'API
580
784
  * @throws {ApiError} - En cas d'erreur de connexion ou d'invitation.
581
785
  * @private
582
786
  */
@@ -592,7 +796,7 @@ export class BaseEntity {
592
796
  /**
593
797
  * Accepte une demande de lien (ex : invitation à rejoindre un groupe).
594
798
  *
595
- * @returns {Promise<Object>} - Résultat de l'API
799
+ * @returns - Résultat de l'API
596
800
  * @throws {ApiError} - En cas d'erreur de connexion ou d'invitation.
597
801
  * @private
598
802
  */
@@ -600,7 +804,7 @@ export class BaseEntity {
600
804
  /**
601
805
  * Annule une demande de lien ou se déconnecte d'une entité.
602
806
  *
603
- * @returns {Promise<Object>} - Résultat de l'API
807
+ * @returns - Résultat de l'API
604
808
  * @throws {ApiError} - En cas d'erreur de connexion ou d'invitation.
605
809
  * @private
606
810
  */
@@ -613,245 +817,257 @@ export class BaseEntity {
613
817
  /**
614
818
  * Récupérer le profil public de l'entité
615
819
  *
616
- * @returns {Promise<Object>} - Les données de réponse.
820
+ * @returns - Les données de réponse.
617
821
  */
618
- get(): Promise<any>;
822
+ get(): Promise<Record<string, any>>;
619
823
  /**
620
824
  * Mettre à jour les paramètres d'un élément : Mise à jour des paramètres spécifiques d'un élément.
621
825
  * Constant : UPDATE_SETTINGS
622
- * @param {Object} data - Les données à envoyer.
623
- * @param {string} data.type - data.type
624
- * @param {undefined} data.value - data.value
625
- * @returns {Promise<Object>} - Les données de réponse.
826
+ * @param data
827
+ * @returns - Les données de réponse.
626
828
  * @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
627
829
  * @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
628
830
  * @throws {Error} - En cas d'erreur inattendue.
629
831
  */
630
- updateSettings(data?: {
631
- type: string;
632
- value: undefined;
633
- }): Promise<any>;
832
+ updateSettings(data: Omit<UpdateSettingsData, "idEntity" | "typeEntity">): Promise<unknown>;
634
833
  /**
635
834
  * Mettre à jour la description d'un élément : Permet de mettre à jour la description courte et complète d'un élément.
636
835
  * Constant : UPDATE_BLOCK_DESCRIPTION
637
- * @param {Object} data - Les données à envoyer.
638
- * @param {string} data.descMentions - Mentions dans la description (default: "")
639
- * @param {string} data.shortDescription - Courte description
640
- * @param {string} data.description - Description complète
641
- * @returns {Promise<Object>} - Les données de réponse.
836
+ * @param data - Les données à envoyer.
837
+ * @returns - Les données de réponse.
642
838
  * @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
643
839
  * @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
644
840
  * @throws {Error} - En cas d'erreur inattendue.
645
841
  */
646
- updateDescription(data?: {
647
- descMentions: string;
648
- shortDescription: string;
649
- description: string;
650
- }): Promise<any>;
842
+ updateDescription(data: Omit<UpdateBlockDescriptionData, "id" | "typeElement" | "block">): Promise<unknown>;
651
843
  /**
652
- * Mettre à jour les informations d'un élément : Permet de mettre à jour les informations générales d'un élément (nom, contacts, etc.).
653
- * Constant : UPDATE_BLOCK_INFO
654
- */
655
- updateInfo(data?: {}): Promise<any>;
844
+ * Mettre à jour les informations d'un élément : Permet de mettre à jour les informations générales d'un élément (nom, contacts, etc.).
845
+ * Constant : UPDATE_BLOCK_INFO
846
+ * @param data - Les données à envoyer.
847
+ * @returns - Les données de réponse.
848
+ * @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
849
+ * @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
850
+ * @throws {Error} - En cas d'erreur inattendue.
851
+ */
852
+ updateInfo(data: Omit<UpdateBlockInfoData, "id" | "typeElement" | "block">): Promise<unknown>;
656
853
  /**
657
854
  * Mettre à jour les réseaux sociaux d'un élément : Permet de mettre à jour les liens vers les réseaux sociaux d'un élément.
658
855
  * Constant : UPDATE_BLOCK_SOCIAL
856
+ * @param data - Les données à envoyer.
857
+ * @returns - Les données de réponse.
858
+ * @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
859
+ * @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
860
+ * @throws {Error} - En cas d'erreur inattendue.
861
+ */
862
+ updateSocial(data: Omit<UpdateBlockSocialData, "id" | "typeElement" | "block">): Promise<unknown>;
863
+ /**
864
+ * @private
865
+ */
866
+ private _isPostalAddress;
867
+ /**
868
+ * @private
659
869
  */
660
- updateSocial(data?: {}): Promise<any>;
870
+ private _isGeo;
871
+ /**
872
+ * @private
873
+ */
874
+ private _isGeoPosition;
661
875
  /**
662
876
  * Mettre à jour les localités d'un élément : Permet de mettre à jour l'adresse et les informations géographiques d'un élément.
663
877
  * Constant : UPDATE_BLOCK_LOCALITY
878
+ * @param data - Les données à envoyer.
879
+ * @returns - Les données de réponse.
880
+ * @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
881
+ * @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
882
+ * @throws {Error} - En cas d'erreur inattendue.
664
883
  */
665
- updateLocality(data?: {}): Promise<any>;
884
+ updateLocality(data: Omit<UpdateBlockLocalityData, "id" | "typeElement" | "block">): Promise<unknown>;
666
885
  /**
667
886
  * Mettre à jour le slug d'un élément : Permet de mettre à jour le slug pour une URL simplifiée.
668
887
  * Constant : UPDATE_BLOCK_SLUG
669
- * @param {Object} data - Les données à envoyer.
670
- * @param {string} data.slug - Le nouveau slug à appliquer.
671
- * @returns {Promise<Object>} - Les données de réponse.
888
+ * @param data - Les données à envoyer.
889
+ * @param data.slug - Le nouveau slug à appliquer.
890
+ * @returns - Les données de réponse.
672
891
  */
673
892
  updateSlug({ slug }: {
674
893
  slug: string;
675
- }): Promise<any>;
894
+ }): Promise<unknown>;
676
895
  /**
677
896
  * Mettre à jour l'image de profil : Permet de mettre à jour l'image de profil d'un utilisateur ou d'une entité.
678
897
  * Constant : PROFIL_IMAGE
679
- * @param {Object} data - Les données à envoyer.
680
- * @param {string} data.profil_avatar - L'image de profil à mettre à jour.
681
- * @returns {Promise<Object>} - Les données de réponse.
898
+ * @param data - Les données à envoyer.
899
+ * @param data.profil_avatar - L'image de profil à mettre à jour.
900
+ * @returns - Les données de réponse.
682
901
  */
683
902
  updateImageProfil({ profil_avatar: image }: {
684
- profil_avatar: string;
685
- }): Promise<any>;
903
+ profil_avatar: UploadInput;
904
+ }): Promise<unknown>;
686
905
  /**
687
906
  * Crée une instance d'organisation et récupère son profil si nécessaire.
688
907
  *
689
- * @param {Object} organizationData - Les données nécessaires pour initialiser l'organisation.
690
- * @returns {Promise<Organization>} Une promesse qui résout l'objet Organisation créé.
908
+ * @param organizationData - Les données pour initialiser l'organisation.
909
+ * - Si { id } ou { slug } : récupère l'organisation existante (GET)
910
+ * - Sinon : crée une nouvelle instance (CREATE)
911
+ * @returns Une promesse qui résout l'objet Organisation créé.
691
912
  * @throws {Error} Si une erreur se produit lors de la création de l'organisation.
692
913
  */
693
- organization(organizationData?: any): Promise<Organization>;
914
+ organization(organizationData?: OrganizationInput): Promise<Organization>;
694
915
  /**
695
916
  * Crée une instance de projet et récupère son profil si nécessaire.
696
917
  *
697
- * @param {Object} projectData - Les données nécessaires pour initialiser le projet.
698
- * @returns {Promise<Project>} Une promesse qui résout l'objet Projet créé.
918
+ * @param projectData - Les données pour initialiser le projet.
919
+ * - Si { id } ou { slug } : récupère le projet existant (GET)
920
+ * - Sinon : crée une nouvelle instance (CREATE)
921
+ * @returns Une promesse qui résout l'objet Projet créé.
699
922
  * @throws {Error} Si une erreur se produit lors de la création du projet.
700
923
  */
701
- project(projectData?: any): Promise<Project>;
924
+ project(projectData?: ProjectInput): Promise<Project>;
702
925
  /**
703
926
  * Crée une instance de POI et la récupère si nécessaire.
704
927
  *
705
- * @param {Object} poiData - Les données nécessaires pour initialiser le POI.
706
- * @returns {Promise<Poi>} Une promesse qui résout l'objet POI créé.
928
+ * @param poiData - Les données pour initialiser le POI.
929
+ * - Si { id } ou { slug } : récupère le POI existant (GET)
930
+ * - Sinon : crée une nouvelle instance (CREATE)
931
+ * @returns Une promesse qui résout l'objet POI créé.
707
932
  * @throws {Error} Si une erreur se produit lors de la création du POI.
708
933
  */
709
- poi(poiData?: any): Promise<Poi>;
934
+ poi(poiData?: PoiInput): Promise<Poi>;
710
935
  /**
711
936
  * Crée une instance d'événement et la récupère si nécessaire.
712
937
  *
713
- * @param {Object} eventData - Les données nécessaires pour initialiser l'événement.
714
- * @returns {Promise<Event>} Une promesse qui résout l'objet Événement créé.
938
+ * @param eventData - Les données pour initialiser l'événement.
939
+ * - Si { id } ou { slug } : récupère l'événement existant (GET)
940
+ * - Sinon : crée une nouvelle instance (CREATE)
941
+ * @returns Une promesse qui résout l'objet Événement créé.
715
942
  * @throws {Error} Si une erreur se produit lors de la création de l'événement.
716
943
  */
717
- event(eventData?: any): Promise<Event>;
944
+ event(eventData?: EventInput): Promise<EventEntity>;
718
945
  /**
719
946
  * Crée une instance de badge et la récupère si nécessaire.
720
947
  *
721
- * @param {Object} badgeData - Les données nécessaires pour initialiser le badge.
722
- * @returns {Promise<Badge>} Une promesse qui résout l'objet Badge créé.
948
+ * @param badgeData - Les données pour initialiser le badge.
949
+ * - Si { id } : récupère le badge existant (GET)
950
+ * - Sinon : crée une nouvelle instance (CREATE)
951
+ * @returns Une promesse qui résout l'objet Badge créé.
723
952
  * @throws {Error} Si une erreur se produit lors de la création du badge.
724
953
  */
725
- badge(badgeData?: any): Promise<Badge>;
954
+ badge(badgeData?: BadgeInput): Promise<Badge>;
726
955
  /**
727
956
  * Crée une instance de news et la récupère si nécessaire.
728
957
  *
729
- * @param {Object} newsData - Les données nécessaires pour initialiser la news.
730
- * @returns {Promise<News>} Une promesse qui résout l'objet News créé.
958
+ * @param newsData - Les données pour initialiser la news.
959
+ * - Si { id } : récupère la news existante (GET)
960
+ * - Sinon : crée une nouvelle instance (CREATE)
961
+ * @returns Une promesse qui résout l'objet News créé.
731
962
  * @throws {Error} Si une erreur se produit lors de la création de la news.
732
963
  */
733
- news(newsData?: any): Promise<News>;
964
+ news(newsData?: NewsInput): Promise<News>;
734
965
  /**
735
966
  * Récupérer les organisations d'une entitée : la liste des organisations dont l'entité est membre ou admin valide.
736
967
  * Constant : GET_ORGANIZATIONS_ADMIN | GET_ORGANIZATIONS_NO_ADMIN
737
- * @param {Object} data - Les données à envoyer.
738
- * @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
739
- * @returns {Promise<Object>} - Les données de réponse.
968
+ * @param data - Paramètres (partiels) de recherche/pagination.
969
+ * @returns - Les données de réponse.
740
970
  */
741
- getOrganizations(data?: any): Promise<any>;
971
+ getOrganizations(data?: Partial<GetOrganizationsAdminData | GetOrganizationsNoAdminData>): Promise<PaginatorPage<Organization>>;
742
972
  /**
743
973
  * Récupérer les projets d'une entitée : liste des projets de l'entité ou elle est "parent" ou "contributeur".
744
974
  * Constant : GET_PROJECTS_ADMIN | GET_PROJECTS_NO_ADMIN
745
- * @param {Object} data - Les données à envoyer.
746
- * @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
747
- * @returns {Promise<Object>} - Les données de réponse.
975
+ * @param data - Paramètres (partiels) de recherche/pagination.
976
+ * @returns - Les données de réponse.
748
977
  */
749
- getProjects(data?: any): Promise<any>;
978
+ getProjects(data?: Partial<GetProjectsAdminData | GetProjectsNoAdminData>): Promise<PaginatorPage<Project>>;
750
979
  /**
751
980
  * Récupérer les POIs d'une entité : liste des POIs de l'entité ou elle est "parent".
752
981
  * Constant : GET_POIS_NO_ADMIN / GET_POIS_ADMIN
753
- * @param {Object} data - Les données à envoyer.
754
- * @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
755
- * @returns {Promise<Object>} - Les données de réponse.
982
+ * @param data - Paramètres (partiels) de recherche/pagination.
983
+ * @returns - Les données de réponse.
756
984
  */
757
- getPois(data?: any): Promise<any>;
985
+ getPois(data?: Partial<GetPoisAdminData | GetPoisNoAdminData>): Promise<PaginatorPage<Poi>>;
758
986
  /**
759
987
  * Récupérer les abonnés d'une entité
760
988
  * Constant : GET_SUBSCRIBERS
761
- * @param {Object} data - Les données à envoyer.
762
- * @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
763
- * @returns {Promise<Object>} - Les données de réponse.
989
+ * @param data - Paramètres (partiels) de recherche/pagination.
990
+ * @returns - Les données de réponse.
764
991
  */
765
- getSubscribers(data?: any): Promise<any>;
992
+ getSubscribers(data?: Partial<GetSubscribersData>): Promise<PaginatorPage<User>>;
766
993
  /**
767
994
  * Liste des badges créés par l'entité
768
995
  * Constant : GET_BADGES
769
- * @param {Object} data - Les données à envoyer.
770
- * @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
771
- * @returns {Promise<Object>} - Les données de réponse.
996
+ * @param data - Paramètres (partiels) de recherche/pagination.
997
+ * @returns - Les données de réponse.
772
998
  */
773
- getBadgesIssuer(data?: any): Promise<any>;
999
+ getBadgesIssuer(data?: Partial<GetBadgesData>): Promise<PaginatorPage<Badge>>;
774
1000
  /**
775
- * Récupérer les actualités : Récupère la liste dactualités selon plusieurs critères.
1001
+ * Récupérer les actualités : Récupère la liste d'actualités selon plusieurs critères.
776
1002
  * Constant : GET_NEWS
777
- * @param {Object} data - Les données à envoyer.
778
- * @param {number} data.dateLimit - Limite de date timestamp ou 0 (default: 0)
779
- * @param {object} data.search - data.search
780
- * @param {string} data.search.name - Nom ou terme recherché (default: "")
781
- * @param {number} data.indexStep - Nombre de résultats par page (default: 12)
782
- * @returns {Promise<Object>} - Les données de réponse.
1003
+ * @param data - Paramètres (partiels) de recherche/pagination.
1004
+ * @returns - Les données de réponse.
783
1005
  * @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
784
1006
  * @throws {Error} - En cas d'erreur inattendue.
785
1007
  */
786
- getNews(data?: {
787
- dateLimit: number;
788
- search: {
789
- name: string;
790
- };
791
- indexStep: number;
792
- }): Promise<any>;
1008
+ getNews(data?: Partial<Omit<GetNewsData, "pathParams">>): Promise<News[]>;
793
1009
  /**
794
1010
  * Récupérer la galerie d'une entité.
795
1011
  * Constant : GET_GALLERY
796
- * @param {Object} data - Les données à envoyer.
797
- * @param {string} data.pathParams.docType - Type de document (default: "image")
798
- * @param {string} data.contentKey - Clé de contenu pour la galerie (default: "null")
799
- * @param {string} data.folderId - ID du dossier pour la galerie (default: "null")
800
- * @returns {Promise<Object>} - Les données de réponse.
1012
+ * @param data - Paramètres (partiels) de recherche.
1013
+ * @returns - Les données de réponse.
801
1014
  * @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
802
1015
  * @throws {Error} - En cas d'erreur inattendue.
803
1016
  */
804
- getGallery(data?: any): Promise<any>;
1017
+ getGallery(data?: Partial<Omit<GetGalleryData, "pathParams">> & {
1018
+ pathParams?: {
1019
+ docType?: "image" | "file";
1020
+ };
1021
+ }): Promise<Record<string, any>>;
805
1022
  /**
806
1023
  * Soumet une demande pour rejoindre l'entité courante (ex. organisation, projet, événement...).
807
1024
  * Si une invitation est en attente, elle est automatiquement acceptée.
808
1025
  *
809
- * @returns {Promise<Object>} - Résultat de la demande ou de la validation.
1026
+ * @returns - Résultat de la demande ou de la validation.
810
1027
  * @throws {ApiError} - Si l'entité ne supporte pas l'action ou si une demande est déjà en cours.
811
1028
  */
812
- requestToJoin(): Promise<any>;
1029
+ requestToJoin(): Promise<unknown>;
813
1030
  /**
814
1031
  * Soumet une demande pour devenir administrateur de l'entité courante.
815
1032
  * Si une invitation est en attente, elle est automatiquement validée.
816
1033
  *
817
- * @returns {Promise<Object>} - Résultat de la demande ou de la validation.
1034
+ * @returns - Résultat de la demande ou de la validation.
818
1035
  * @throws {ApiError} - Si l'entité ne supporte pas l'action ou si une demande est déjà en cours.
819
1036
  */
820
- requestToJoinAdmin(): Promise<any>;
1037
+ requestToJoinAdmin(): Promise<unknown>;
821
1038
  /**
822
1039
  * Accepte une invitation à rejoindre l'entité courante.
823
1040
  * Ne fonctionne que si un lien avec `isInviting` est détecté.
824
1041
  *
825
- * @returns {Promise<Object>} - Résultat de l'acceptation de l'invitation.
1042
+ * @returns - Résultat de l'acceptation de l'invitation.
826
1043
  * @throws {ApiError} - Si aucune invitation n'est en attente ou si l'entité ne supporte pas cette action.
827
1044
  */
828
- acceptInvitation(): Promise<any>;
1045
+ acceptInvitation(): Promise<unknown>;
829
1046
  /**
830
1047
  * Se désengage de l'entité courante : quitte un rôle (membre, contributeur, etc.).
831
1048
  *
832
- * @returns {Promise<Object>} - Résultat de la déconnexion.
1049
+ * @returns - Résultat de la déconnexion.
833
1050
  * @throws {ApiError} - Si l'entité ne supporte pas l'action ou si l'utilisateur n'est pas lié à cette entité.
834
1051
  */
835
- leave(): Promise<any>;
1052
+ leave(): Promise<unknown>;
836
1053
  /**
837
1054
  * S'abonne à l'entité courante.
838
1055
  *
839
- * @returns {Promise<Object>} - Résultat de l'abonnement.
1056
+ * @returns - Résultat de l'abonnement.
840
1057
  * @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si l'entité n'est pas enregistrée.
841
1058
  */
842
- follow(): Promise<any>;
1059
+ follow(): Promise<unknown>;
843
1060
  /**
844
1061
  * Se désabonne de l'entité courante.
845
1062
  *
846
- * @returns {Promise<Object>} - Résultat de la désinscription.
1063
+ * @returns - Résultat de la désinscription.
847
1064
  * @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si l'entité n'est pas enregistrée.
848
1065
  */
849
- unfollow(): Promise<any>;
1066
+ unfollow(): Promise<unknown>;
850
1067
  /**
851
1068
  * Vérifie si l'utilisateur est connecté et a accès à l'entité.
852
1069
  *
853
- * @param {string} action - Action à effectuer.
854
- * @returns {void}
1070
+ * @param action - Action à effectuer.
855
1071
  * @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si l'entité n'est pas enregistrée.
856
1072
  * @private
857
1073
  */
@@ -859,159 +1075,248 @@ export class BaseEntity {
859
1075
  /**
860
1076
  * Vérifie si l'utilisateur a un lien valide avec l'entité.
861
1077
  *
862
- * @param {Object} userLink - Lien de l'utilisateur avec l'entité.
863
- * @param {boolean} userLink.toBeValidated - Indique si le lien est en attente de validation.
864
- * @param {boolean} userLink.isInviting - Indique si l'utilisateur a été invité.
865
- * @returns {boolean} - `true` si le lien est valide, `false` sinon.
866
- * @private
1078
+ * @param userLink
1079
+ * @returns - `true` si le lien est valide, `false` sinon.
1080
+ * @protected
867
1081
  */
868
- private _validateUserLink;
1082
+ protected _validateUserLink(userLink: MinimalUserLink | null | undefined): boolean;
869
1083
  /**
870
1084
  * Vérifie si l'entité est d'un type spécifique.
871
1085
  *
872
- * @param {...string} types - Types d'entité attendus.
1086
+ * @param types - Types d'entité attendus.
873
1087
  * @throws {ApiError} - Si l'entité n'est pas du type attendu.
874
- * @private
1088
+ * @protected
875
1089
  */
876
- private _assertEntityType;
1090
+ protected _assertEntityType(...types: string[]): void;
877
1091
  /**
878
1092
  * Vérifie si l'entité est liée à un type de lien spécifique.
879
1093
  *
880
- * @param {string} linkType - Type de lien à vérifier.
881
- * @returns {boolean} - `true` si l'entité est liée, `false` sinon.
882
- * @private
1094
+ * @param linkType - Type de lien à vérifier.
1095
+ * @returns - `true` si l'entité est liée, `false` sinon.
1096
+ * @protected
883
1097
  */
884
- private _isLinked;
1098
+ protected _isLinked(linkType: string): boolean;
885
1099
  /**
886
1100
  * Vérifie si l'utilisateur est l'auteur de l'entité.
887
1101
  *
888
- * @returns {boolean} - `true` si l'utilisateur est l'auteur, `false` sinon.
1102
+ * @returns - `true` si l'utilisateur est l'auteur, `false` sinon.
889
1103
  * @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si les données du serveur ne sont pas disponibles.
890
1104
  */
891
1105
  isAuthor(): boolean;
892
1106
  /**
893
1107
  * Vérifie si l'utilisateur est administrateur de l'entité.
894
1108
  *
895
- * @returns {boolean} - `true` si l'utilisateur est administrateur, `false` sinon.
1109
+ * @returns - `true` si l'utilisateur est administrateur, `false` sinon.
896
1110
  * @throws {ApiError}
897
1111
  */
898
1112
  isAdmin(): boolean;
899
1113
  /**
900
1114
  * Vérifie si l'utilisateur est soit l'auteur, soit administrateur de l'entité.
901
1115
  *
902
- * @returns {boolean} - `true` si l'utilisateur est l'auteur ou administrateur, `false` sinon.
1116
+ * @returns - `true` si l'utilisateur est l'auteur ou administrateur, `false` sinon.
903
1117
  * @throws {ApiError}
904
1118
  */
905
1119
  isAuthorOrAdmin(): boolean;
906
1120
  /**
907
1121
  * Vérifie si l'utilisateur est membre de l'entité.
908
1122
  *
909
- * @returns {boolean} - `true` si l'utilisateur est membre, `false` sinon.
1123
+ * @returns - `true` si l'utilisateur est membre, `false` sinon.
910
1124
  * @throws {ApiError}
911
1125
  */
912
1126
  isMember(): boolean;
913
1127
  /**
914
1128
  * Vérifie si l'utilisateur est contributeur de l'entité.
915
1129
  *
916
- * @returns {boolean} - `true` si l'utilisateur est contributeur, `false` sinon.
1130
+ * @returns - `true` si l'utilisateur est contributeur, `false` sinon.
917
1131
  * @throws {ApiError}
918
1132
  */
919
1133
  isContributor(): boolean;
920
1134
  /**
921
1135
  * Vérifie si l'utilisateur est participant de l'entité.
922
1136
  *
923
- * @returns {boolean} - `true` si l'utilisateur est participant, `false` sinon.
1137
+ * @returns - `true` si l'utilisateur est participant, `false` sinon.
924
1138
  * @throws {ApiError}
925
1139
  */
926
1140
  isAttendee(): boolean;
927
1141
  /**
928
1142
  * Vérifie si l'utilisateur suit l'entité.
929
1143
  *
930
- * @returns {boolean} - `true` si l'utilisateur suit l'entité, `false` sinon.
1144
+ * @returns - `true` si l'utilisateur suit l'entité, `false` sinon.
931
1145
  * @throws {ApiError}
932
1146
  */
933
1147
  isFollower(): boolean;
934
1148
  /**
935
1149
  * Vérifie si l'utilisateur est abonné à l'entité.
936
1150
  *
937
- * @returns {boolean} - `true` si l'utilisateur est abonné, `false` sinon.
1151
+ * @returns - `true` si l'utilisateur est abonné, `false` sinon.
938
1152
  * @throws {ApiError}
939
1153
  */
940
1154
  isFollowing(): boolean;
941
1155
  /**
942
1156
  * Récupère le JSON personnalisé de l'entité
943
1157
  *
944
- * @returns {Promise<Object>} - Le JSON personnalisé de l'entité.
1158
+ * @returns - Le JSON personnalisé de l'entité.
945
1159
  * @throws {ApiError} - Si le slug de l'entité n'est pas défini.
946
1160
  */
947
- getCostumJson(): Promise<any>;
1161
+ getCostumJson(): Promise<unknown>;
948
1162
  /**
949
1163
  * Génère des plages d'index pour la pagination.
950
1164
  *
951
- * @param {Array<string>} searchType - Types de recherche.
952
- * @param {number} indexStep - Pas d'index.
953
- * @param {Object} previousRanges - Plages précédentes.
954
- * @returns {Object} - Plages d'index générées.
1165
+ * @param searchType - Types de recherche.
1166
+ * @param indexStep - Pas d'index.
1167
+ * @param previousRanges - Plages précédentes.
1168
+ * @returns - Plages d'index générées.
955
1169
  * @private
956
1170
  */
957
1171
  private _generateRanges;
958
1172
  /**
959
1173
  * Normalise le compte des résultats.
960
1174
  *
961
- * @param {Object} count - Compte des résultats.
962
- * @returns {Object} - Compte normalisé.
1175
+ * @param count - Compte des résultats.
1176
+ * @returns - Compte normalisé.
963
1177
  * @private
964
1178
  */
965
1179
  private _normalizeCount;
966
1180
  /**
967
1181
  * Récupère une valeur par défaut depuis un endpoint donné.
968
1182
  *
969
- * @param {string} constant - Le nom unique de lendpoint (ex: "GET_ORGANIZATIONS_NO_ADMIN")
970
- * @param {string} path - Le chemin vers la propriété (ex: "searchType")
971
- * @returns {*} La valeur par défaut, ou undefined si non trouvée
1183
+ * @param constant - Le nom unique de l'endpoint (ex: "GET_ORGANIZATIONS_NO_ADMIN")
1184
+ * @param path - Le chemin vers la propriété (ex: "searchType")
1185
+ * @returns La valeur par défaut, ou undefined si non trouvée
972
1186
  */
973
- _getDefaultFromEndpoint(constant: string, path: string): any;
1187
+ _getDefaultFromEndpoint(constant: string, path: string): unknown;
974
1188
  /**
975
- * Coeur de pagination stateless et réutilisable, sans logique métier.
976
- *
977
- * @param {Object} config
978
- * @param {Object} config.initialData - Paramètres de départ
979
- * @param {Function} config.finalizer - Fonction async qui retourne { results, count }
980
- *
981
- * @returns {Object} paginator avec .next() et .prev()
1189
+ * Coeur de pagination stateless et réutilisable.
982
1190
  */
983
- _createPaginatorEngine({ initialData, finalizer }: {
984
- initialData: any;
985
- finalizer: Function;
986
- }): any;
1191
+ _createPaginatorEngine<TData extends Record<string, any>, TOut>({ initialData, finalizer }: {
1192
+ initialData: Partial<TData>;
1193
+ finalizer: (data: TData) => Promise<FinalizerResult<TOut>>;
1194
+ }): {
1195
+ next: () => Promise<PaginatorPage<TOut>>;
1196
+ };
987
1197
  /**
988
- * Injection de contexte Communecter dans une requête finalizer.
989
- *
990
- * @param {Function} baseFinalizer - fonction async(data) => { results, count }
991
- * @returns {Function} fonction enrichie
992
- */
993
- _withCostumContext(baseFinalizer: Function): Function;
1198
+ * Injection de contexte Communecter dans une requête finalizer.
1199
+ */
1200
+ _withCostumContext<TIn extends Record<string, unknown>, TOut>(baseFinalizer: (data: TIn & {
1201
+ costumSlug: string;
1202
+ contextId: string;
1203
+ contextType: EntityType;
1204
+ sourceKey: string[];
1205
+ }) => Promise<TOut>): (data: TIn) => Promise<TOut>;
994
1206
  /**
995
1207
  * ───────────────────────────────
996
1208
  * custom
997
1209
  * ───────────────────────────────
998
1210
  */
999
1211
  /**
1000
- * Recherche liée à l'entité, version stateless.
1212
+ * Recherche globale liée au *costum* (stateless).
1213
+ * Injecte automatiquement le contexte (slug/id/type) via `_withCostumContext`,
1214
+ * puis pagine via `_createPaginatorEngine`. Cette méthode renvoie **directement
1215
+ * la première page** (rétro-compatible) avec `.results`, `.count`, et des helpers
1216
+ * de pagination si disponibles.
1001
1217
  *
1002
- * @param {Object} data - Données initiales de recherche.
1003
- * @returns {Object} - Un paginateur avec .next(), .prev(), etc.
1004
- */
1005
- searchCostum(data?: any): any;
1006
- costumEventRequestActors(data?: {}): Promise<any>;
1007
- costumEventRequestSubevents(data?: {}): Promise<any>;
1008
- costumEventRequestDates(data?: {}): Promise<any>;
1009
- costumEventRequestElementEvent(data?: {}): Promise<any>;
1010
- costumEventRequestCategories(data?: {}): Promise<any>;
1011
- costumEventRequestEvent(data?: {}): Promise<any>;
1012
- costumEventRequestLinkTlToEvent(data?: {}): Promise<any>;
1013
- costumEventRequestLoadContextTag(data?: {}): Promise<any>;
1218
+ * Remarque : les éléments de `results` peuvent être hétérogènes (multi-collections)
1219
+ * et éventuellement « liés » en entités par le moteur interne de pagination.
1220
+ *
1221
+ * @param data
1222
+ * Paramètres de recherche (partiels les valeurs manquantes sont complétées
1223
+ * par le moteur de pagination et le contexte).
1224
+ * @returns
1225
+ * Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
1226
+ * @throws {ApiResponseError}
1227
+ * @throws {Error}
1228
+ *
1229
+ * @example
1230
+ * // Recherche simple (première page)
1231
+ * const page = await entity.searchCostum({ name: "marseille", searchType: ["projects"], indexStep: 12, indexMin: 0 });
1232
+ * console.log(page.results, page.count.total);
1233
+ *
1234
+ * @example
1235
+ * // Paginer
1236
+ * if (page.hasNext) {
1237
+ * const nextPage = await page.next();
1238
+ * console.log(nextPage.pageNumber, nextPage.results.length);
1239
+ * }
1240
+ */
1241
+ searchCostum(data?: Partial<GlobalAutocompleteCostumData>): Promise<PaginatorPage<any>>;
1242
+ /**
1243
+ * @param data
1244
+ * Paramètres de recherche (partiels — les valeurs manquantes sont complétées
1245
+ * par le moteur de pagination et le contexte).
1246
+ * @returns
1247
+ * Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
1248
+ * @throws {ApiResponseError}
1249
+ * @throws {Error}
1250
+ */
1251
+ costumEventRequestActors(data?: Partial<Omit<CostumEventRequestActorsData, "pathParams">>): Promise<unknown>;
1252
+ /**
1253
+ * @param data
1254
+ * Paramètres de recherche (partiels — les valeurs manquantes sont complétées
1255
+ * par le moteur de pagination et le contexte).
1256
+ * Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
1257
+ * @throws {ApiResponseError}
1258
+ * @throws {Error}
1259
+ */
1260
+ costumEventRequestSubevents(data?: Partial<Omit<CostumEventRequestSubeventsData, "pathParams">>): Promise<unknown>;
1261
+ /**
1262
+ * @param data
1263
+ * Paramètres de recherche (partiels — les valeurs manquantes sont complétées
1264
+ * par le moteur de pagination et le contexte).
1265
+ * @returns
1266
+ * Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
1267
+ * @throws {ApiResponseError}
1268
+ * @throws {Error}
1269
+ */
1270
+ costumEventRequestDates(data?: Partial<Omit<CostumEventRequestDatesData, "pathParams">>): Promise<unknown>;
1271
+ /**
1272
+ * @param data
1273
+ * Paramètres de recherche (partiels — les valeurs manquantes sont complétées
1274
+ * par le moteur de pagination et le contexte).
1275
+ * @returns
1276
+ * Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
1277
+ * @throws {ApiResponseError}
1278
+ * @throws {Error}
1279
+ */
1280
+ costumEventRequestElementEvent(data?: Partial<Omit<CostumEventRequestElementEventData, "pathParams">>): Promise<unknown>;
1281
+ /**
1282
+ * @param data
1283
+ * Paramètres de recherche (partiels — les valeurs manquantes sont complétées
1284
+ * par le moteur de pagination et le contexte).
1285
+ * @returns
1286
+ * Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
1287
+ * @throws {ApiResponseError}
1288
+ * @throws {Error}
1289
+ */
1290
+ costumEventRequestCategories(data?: Partial<Omit<CostumEventRequestCategoriesData, "pathParams">>): Promise<unknown>;
1291
+ /**
1292
+ * @param data
1293
+ * Paramètres de recherche (partiels — les valeurs manquantes sont complétées
1294
+ * par le moteur de pagination et le contexte).
1295
+ * @returns
1296
+ * Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
1297
+ * @throws {ApiResponseError}
1298
+ * @throws {Error}
1299
+ */
1300
+ costumEventRequestEvent(data?: Partial<Omit<CostumEventRequestEventData, "pathParams">>): Promise<unknown>;
1301
+ /**
1302
+ * @param data
1303
+ * Paramètres de recherche (partiels — les valeurs manquantes sont complétées
1304
+ * par le moteur de pagination et le contexte).
1305
+ * @returns
1306
+ * Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
1307
+ * @throws {ApiResponseError}
1308
+ * @throws {Error}
1309
+ */
1310
+ costumEventRequestLinkTlToEvent(data: Pick<CostumEventRequestLinkTlToEventData, "tl" | "event"> & Partial<Omit<CostumEventRequestLinkTlToEventData, "tl" | "event" | "pathParams">>): Promise<unknown>;
1311
+ /**
1312
+ * @param data
1313
+ * Paramètres de recherche (partiels — les valeurs manquantes sont complétées
1314
+ * par le moteur de pagination et le contexte).
1315
+ * @returns
1316
+ * Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
1317
+ * @throws {ApiResponseError}
1318
+ * @throws {Error}
1319
+ */
1320
+ costumEventRequestLoadContextTag(data?: Partial<Omit<CostumEventRequestLoadContextTagData, "pathParams">>): Promise<unknown>;
1014
1321
  }
1015
1322
  export default BaseEntity;
1016
- export type ApiClient = import("../ApiClient.js").default;
1017
- export type EndpointApi = import("./EndpointApi.js").default;