import { z } from 'zod';
import type { EntityManagerService } from '../../services';
import type { CommentEntityType } from '../generated/default';
export type CommentsApiServicesConfig = {
    entityManager?: EntityManagerService;
};
export type CommentMetadata = {
    body?: string;
    commentId?: number;
    userId: number;
    entityId: number;
    entityType?: CommentEntityType;
    parentCommentId?: number;
    trackTimestampS?: number;
    mentions?: number[];
};
export declare const CreateCommentSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    entityId: z.ZodEffects<z.ZodString, number, string>;
    entityType: z.ZodOptional<z.ZodString>;
    body: z.ZodOptional<z.ZodString>;
    commentId: z.ZodOptional<z.ZodNumber>;
    parentCommentId: z.ZodOptional<z.ZodNumber>;
    trackTimestampS: z.ZodOptional<z.ZodNumber>;
    mentions: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    entityId: number;
    entityType?: string | undefined;
    body?: string | undefined;
    commentId?: number | undefined;
    parentCommentId?: number | undefined;
    trackTimestampS?: number | undefined;
    mentions?: number[] | undefined;
}, {
    userId: string;
    entityId: string;
    entityType?: string | undefined;
    body?: string | undefined;
    commentId?: number | undefined;
    parentCommentId?: number | undefined;
    trackTimestampS?: number | undefined;
    mentions?: number[] | undefined;
}>;
export type EntityManagerCreateCommentRequest = z.input<typeof CreateCommentSchema>;
export declare const UpdateCommentSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    entityId: z.ZodEffects<z.ZodString, number, string>;
    trackId: z.ZodEffects<z.ZodString, number, string>;
    body: z.ZodString;
}, "strict", z.ZodTypeAny, {
    trackId: number;
    userId: number;
    entityId: number;
    body: string;
}, {
    trackId: string;
    userId: string;
    entityId: string;
    body: string;
}>;
export type EntityManagerUpdateCommentRequest = z.input<typeof UpdateCommentSchema>;
export declare const DeleteCommentSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    entityId: z.ZodEffects<z.ZodString, number, string>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    entityId: number;
}, {
    userId: string;
    entityId: string;
}>;
export type EntityManagerDeleteCommentRequest = z.input<typeof DeleteCommentSchema>;
export declare const PinCommentSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    entityId: z.ZodEffects<z.ZodString, number, string>;
    trackId: z.ZodEffects<z.ZodString, number, string>;
    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<typeof PinCommentSchema>;
export declare const ReactCommentSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    commentId: z.ZodEffects<z.ZodString, number, string>;
    isLiked: z.ZodBoolean;
    trackId: z.ZodEffects<z.ZodString, number, string>;
}, "strict", z.ZodTypeAny, {
    trackId: number;
    userId: number;
    commentId: number;
    isLiked: boolean;
}, {
    trackId: string;
    userId: string;
    commentId: string;
    isLiked: boolean;
}>;
export type EntityManagerReactCommentRequest = z.input<typeof ReactCommentSchema>;
export declare const ReportCommentSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    entityId: z.ZodEffects<z.ZodString, number, string>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    entityId: number;
}, {
    userId: string;
    entityId: string;
}>;
export type EntityManagerReportCommentRequest = z.input<typeof ReportCommentSchema>;
