import { z } from 'zod'; import type { EntityManagerService } from '../../services'; import type { CommentEntityType } from '../generated/default'; import type { Comment } from '../generated/default/models/Comment'; import type { Track } from '../generated/default/models/Track'; import type { User } from '../generated/default/models/User'; export type CommentsApiServicesConfig = { entityManager?: EntityManagerService; }; /** Fan-club feed item: root coin-thread comment (text post) or artist track. */ export type FanClubFeedTextPostItem = { item_type: 'text_post'; comment: Comment; }; export type FanClubFeedTrackItem = { item_type: 'track'; track: Track; }; export type FanClubFeedItem = FanClubFeedTextPostItem | FanClubFeedTrackItem; export type FanClubFeedResponse = { data: FanClubFeedItem[]; related: { users: User[]; tracks: Track[]; }; }; export type CommentMetadata = { body?: string; commentId?: number; userId: number; entityId?: number; entityType?: CommentEntityType; parentCommentId?: number; trackTimestampS?: number; mentions?: number[]; }; export declare const CreateCommentSchema: z.ZodEffects; entityId: z.ZodOptional>; entityType: z.ZodOptional>; body: z.ZodOptional; commentId: z.ZodOptional; parentCommentId: z.ZodOptional; trackTimestampS: z.ZodOptional; mentions: z.ZodOptional>; isMembersOnly: z.ZodOptional; videoUrl: z.ZodOptional; }, "strict", z.ZodTypeAny, { userId: number; entityId?: number | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; body?: string | undefined; commentId?: number | undefined; parentCommentId?: number | undefined; trackTimestampS?: number | undefined; mentions?: number[] | undefined; isMembersOnly?: boolean | undefined; videoUrl?: string | undefined; }, { userId: string; entityId?: string | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; body?: string | undefined; commentId?: number | undefined; parentCommentId?: number | undefined; trackTimestampS?: number | undefined; mentions?: number[] | undefined; isMembersOnly?: boolean | undefined; videoUrl?: string | undefined; }>, { userId: number; entityId?: number | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; body?: string | undefined; commentId?: number | undefined; parentCommentId?: number | undefined; trackTimestampS?: number | undefined; mentions?: number[] | undefined; isMembersOnly?: boolean | undefined; videoUrl?: string | undefined; }, { userId: string; entityId?: string | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; body?: string | undefined; commentId?: number | undefined; parentCommentId?: number | undefined; trackTimestampS?: number | undefined; mentions?: number[] | undefined; isMembersOnly?: boolean | undefined; videoUrl?: string | undefined; }>; export type EntityManagerCreateCommentRequest = z.input; export declare const UpdateCommentSchema: z.ZodEffects; entityId: z.ZodEffects; trackId: z.ZodOptional>; entityType: z.ZodOptional>; body: z.ZodString; mentions: z.ZodOptional>; }, "strict", z.ZodTypeAny, { userId: number; entityId: number; body: string; trackId?: number | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; mentions?: number[] | undefined; }, { userId: string; entityId: string; body: string; trackId?: string | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; mentions?: number[] | undefined; }>, { userId: number; entityId: number; body: string; trackId?: number | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; mentions?: number[] | undefined; }, { userId: string; entityId: string; body: string; trackId?: string | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; mentions?: number[] | undefined; }>; export type EntityManagerUpdateCommentRequest = z.input; export declare const DeleteCommentSchema: z.ZodObject<{ userId: z.ZodEffects; entityId: z.ZodEffects; }, "strict", z.ZodTypeAny, { userId: number; entityId: number; }, { userId: string; entityId: string; }>; export type EntityManagerDeleteCommentRequest = z.input; export declare const PinCommentSchema: z.ZodObject<{ userId: z.ZodEffects; entityId: z.ZodEffects; trackId: z.ZodEffects; isPin: z.ZodBoolean; }, "strict", z.ZodTypeAny, { trackId: number; userId: number; entityId: number; isPin: boolean; }, { trackId: string; userId: string; entityId: string; isPin: boolean; }>; export type EntityManagerPinCommentRequest = z.input; export declare const ReactCommentSchema: z.ZodEffects; commentId: z.ZodEffects; isLiked: z.ZodBoolean; trackId: z.ZodOptional>; entityType: z.ZodOptional>; }, "strict", z.ZodTypeAny, { userId: number; commentId: number; isLiked: boolean; trackId?: number | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; }, { userId: string; commentId: string; isLiked: boolean; trackId?: string | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; }>, { userId: number; commentId: number; isLiked: boolean; trackId?: number | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; }, { userId: string; commentId: string; isLiked: boolean; trackId?: string | undefined; entityType?: "Track" | "Event" | "FanClub" | undefined; }>; export type EntityManagerReactCommentRequest = z.input; export declare const ReportCommentSchema: z.ZodObject<{ userId: z.ZodEffects; entityId: z.ZodEffects; }, "strict", z.ZodTypeAny, { userId: number; entityId: number; }, { userId: string; entityId: string; }>; export type EntityManagerReportCommentRequest = z.input;