import { z } from 'zod';
import type { EntityManagerService } from '../../services';
export type EventsApiServicesConfig = {
    entityManager?: EntityManagerService;
};
export declare const EventMetadataSchema: z.ZodObject<{
    userId: z.ZodNumber;
    eventId: z.ZodNumber;
    eventType: z.ZodOptional<z.ZodNativeEnum<{
        readonly RemixContest: "remix_contest";
        readonly LiveEvent: "live_event";
        readonly NewRelease: "new_release";
    }>>;
    entityType: z.ZodOptional<z.ZodNativeEnum<{
        readonly Track: "track";
        readonly Collection: "collection";
        readonly User: "user";
    }>>;
    entityId: z.ZodOptional<z.ZodNumber>;
    endDate: z.ZodOptional<z.ZodString>;
    eventData: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
}, "strip", z.ZodTypeAny, {
    userId: number;
    eventId: number;
    eventType?: "remix_contest" | "live_event" | "new_release" | undefined;
    entityType?: "track" | "user" | "collection" | undefined;
    entityId?: number | undefined;
    endDate?: string | undefined;
    eventData?: Record<string, any> | undefined;
}, {
    userId: number;
    eventId: number;
    eventType?: "remix_contest" | "live_event" | "new_release" | undefined;
    entityType?: "track" | "user" | "collection" | undefined;
    entityId?: number | undefined;
    endDate?: string | undefined;
    eventData?: Record<string, any> | undefined;
}>;
export declare const CreateEventSchema: z.ZodObject<{
    userId: z.ZodNumber;
    entityType: z.ZodOptional<z.ZodNativeEnum<{
        readonly Track: "track";
        readonly Collection: "collection";
        readonly User: "user";
    }>>;
    entityId: z.ZodOptional<z.ZodNumber>;
    eventType: z.ZodOptional<z.ZodNativeEnum<{
        readonly RemixContest: "remix_contest";
        readonly LiveEvent: "live_event";
        readonly NewRelease: "new_release";
    }>>;
    endDate: z.ZodOptional<z.ZodString>;
    eventData: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
    eventId: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    userId: number;
    entityType?: "track" | "user" | "collection" | undefined;
    entityId?: number | undefined;
    eventType?: "remix_contest" | "live_event" | "new_release" | undefined;
    endDate?: string | undefined;
    eventData?: Record<string, any> | undefined;
    eventId?: number | undefined;
}, {
    userId: number;
    entityType?: "track" | "user" | "collection" | undefined;
    entityId?: number | undefined;
    eventType?: "remix_contest" | "live_event" | "new_release" | undefined;
    endDate?: string | undefined;
    eventData?: Record<string, any> | undefined;
    eventId?: number | undefined;
}>;
export declare const UpdateEventSchema: z.ZodObject<Pick<{
    userId: z.ZodNumber;
    eventId: z.ZodNumber;
    eventType: z.ZodOptional<z.ZodNativeEnum<{
        readonly RemixContest: "remix_contest";
        readonly LiveEvent: "live_event";
        readonly NewRelease: "new_release";
    }>>;
    entityType: z.ZodOptional<z.ZodNativeEnum<{
        readonly Track: "track";
        readonly Collection: "collection";
        readonly User: "user";
    }>>;
    entityId: z.ZodOptional<z.ZodNumber>;
    endDate: z.ZodOptional<z.ZodString>;
    eventData: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
}, "userId" | "eventId" | "endDate" | "eventData">, "strip", z.ZodTypeAny, {
    userId: number;
    eventId: number;
    endDate?: string | undefined;
    eventData?: Record<string, any> | undefined;
}, {
    userId: number;
    eventId: number;
    endDate?: string | undefined;
    eventData?: Record<string, any> | undefined;
}>;
export declare const DeleteEventSchema: z.ZodObject<Pick<{
    userId: z.ZodNumber;
    eventId: z.ZodNumber;
    eventType: z.ZodOptional<z.ZodNativeEnum<{
        readonly RemixContest: "remix_contest";
        readonly LiveEvent: "live_event";
        readonly NewRelease: "new_release";
    }>>;
    entityType: z.ZodOptional<z.ZodNativeEnum<{
        readonly Track: "track";
        readonly Collection: "collection";
        readonly User: "user";
    }>>;
    entityId: z.ZodOptional<z.ZodNumber>;
    endDate: z.ZodOptional<z.ZodString>;
    eventData: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
}, "userId" | "eventId">, "strip", z.ZodTypeAny, {
    userId: number;
    eventId: number;
}, {
    userId: number;
    eventId: number;
}>;
export type CreateEventRequest = z.infer<typeof CreateEventSchema>;
export type UpdateEventRequest = z.infer<typeof UpdateEventSchema>;
export type DeleteEventRequest = z.infer<typeof DeleteEventSchema>;
