export type NotificationType = | "playlist_followed" | "user_followed" | "user_dump_posted" | "playlist_dump_added" | "dump_upvoted" | "user_mentioned" | "dump_commented" | "comment_liked"; export interface PlaylistFollowedData { followerId: string; followerUsername: string; playlistId: string; playlistTitle: string; } export interface UserFollowedData { followerId: string; followerUsername: string; } export interface UserDumpPostedData { dumperId: string; dumperUsername: string; dumpId: string; dumpTitle: string; } export interface PlaylistDumpAddedData { dumpId: string; dumpTitle: string; playlistId: string; playlistTitle: string; } export interface DumpUpvotedData { voterId: string; voterUsername: string; dumpId: string; dumpTitle: string; } export interface UserMentionedData { mentionerId: string; mentionerUsername: string; contextType: "comment" | "dump" | "playlist" | "chat"; contextId: string; contextTitle: string; dumpId?: string; } export interface DumpCommentedData { commenterId: string; commenterUsername: string; commentId: string; dumpId: string; dumpTitle: string; } export interface CommentLikedData { likerId: string; likerUsername: string; commentId: string; dumpId: string; dumpTitle: string; } export type NotificationData = | PlaylistFollowedData | UserFollowedData | UserDumpPostedData | PlaylistDumpAddedData | DumpUpvotedData | UserMentionedData | DumpCommentedData | CommentLikedData; export interface Notification { id: string; userId: string; type: NotificationType; data: NotificationData; read: boolean; createdAt: Date; }