import { Mention } from "./Mention";
import { User } from "./User";
import { Space } from "./Space";
import { ReactionCounts, ReactionType } from "./Reaction";
import { File } from "./File";
export interface TopComment {
    id: string;
    user: User;
    upvotesCount: number;
    content: string;
    createdAt: string;
}
export type EntityFile = File;
export interface Entity {
    id: string;
    foreignId: string | null;
    shortId: string;
    projectId: string;
    sourceId: string | null;
    spaceId: string | null;
    space?: Space | null;
    userId: string | null;
    user?: User | null;
    title: string | null;
    content: string | null;
    mentions: Mention[];
    attachments: Record<string, any>[];
    files?: EntityFile[];
    keywords: string[];
    upvotes: string[];
    downvotes: string[];
    reactionCounts: ReactionCounts;
    userReaction?: ReactionType | null;
    repliesCount: number;
    views: number;
    score: number;
    scoreUpdatedAt: Date;
    location: {
        type: "Point";
        coordinates: [number, number];
    } | null;
    metadata: Record<string, any>;
    topComment: TopComment | null;
    isSaved?: boolean;
    createdAt: Date;
    updatedAt: Date;
    deletedAt: Date | null;
    isDraft: boolean | null;
    moderationStatus: "approved" | "removed" | null;
    moderatedAt: Date | null;
    moderatedById: string | null;
    moderatedByType: "client" | "user" | null;
    moderationReason: string | null;
}
export type EntityInclude = "space" | "user" | "topComment" | "saved" | "files";
export type EntityIncludeArray = EntityInclude[];
export type EntityIncludeParam = string | EntityIncludeArray;
