import { BaseEntity } from "./BaseEntity.js"; import type { AddCommentsData, UpdateCommentsData } from "./EndpointApi.types.js"; import type { CommentItemNormalized } from "./serverDataType/Comment.js"; export declare class Comment extends BaseEntity { static entityType: string; static entityTag: string; static SCHEMA_CONSTANTS: string[]; static ADD_BLOCKS: Map<"ADD_COMMENTS", "addComments">; static UPDATE_BLOCKS: Map<"ADD_COMMENTS", "updateComments">; defaultFields: Record; removeFields: string[]; /** * Transforme les champs imbriqués (author) en instances d'entités. * @param data - Les données brutes du serveur. * @returns Les données transformées. * @protected */ protected _transformServerData(data: CommentItemNormalized): CommentItemNormalized; get(): Promise; save(): Promise>; _add: (payload: Record) => Promise; _update: (payload: Record) => Promise; addComments(data?: Partial): Promise; updateComments(data?: Partial): Promise; /** * Supprimer un commentaire : Supprime un commentaire existant. * Constant : DELETE_COMMENT */ delete(): Promise; /** * Créer une réponse à ce commentaire (commentaire sur commentaire). * @param commentData - Données du commentaire. * @returns Instance de Comment. */ comment(commentData?: Record): Promise; /** * Ajoute un vote sur ce commentaire * * @param status - Statut du vote (ex: 'like', 'dislike', 'love', etc.) * @returns Promise contenant la réponse de l'API après l'ajout du vote * @throws {ApiError} Si la news n'a pas d'ID (non enregistrée) */ addVote(status: string): Promise; /** * Récupère la liste des votes (like, love, etc.) sur ce commentaire. * * Wrap de `SHOW_VOTE` avec auto-injection du `type` (`"comments"`) et de * `this.id` dans `pathParams`. Le retour contient `vote` (votes individuels * indexés par userId) et `voteCount` (compteurs par statut). * * @returns Réponse API : `{ _id, vote, voteCount }` ou variante d'erreur. * @throws {ApiError} 404 si le commentaire n'a pas d'id (non enregistré). * * @example * const votes = await comment.getVotes(); * votes.voteCount?.like; // nombre de likes * votes.vote?.[userId]; // vote détaillé d'un user */ getVotes(): Promise; /** * Signale un abus sur ce commentaire * * @param params - Paramètres du signalement * @param params.reason - Raison du signalement * @param params.comment - Commentaire expliquant le signalement (optionnel) * @returns Promise contenant la réponse de l'API après le signalement * @throws {ApiError} Si la news n'a pas d'ID (non enregistrée) */ addReportAbuse({ reason, comment }: { reason: string; comment?: string; }): Promise; form(): Promise; }