import { User } from "./User"; import { Space } from "./Space"; import { File } from "./File"; export type EventType = "online" | "physical" | "hybrid"; export type EventVisibility = "public" | "members" | "invite"; export type EventStatus = "active" | "cancelled"; export type RsvpStatus = "going" | "maybe" | "not_going"; export interface RsvpCounts { going: number; maybe: number; not_going: number; } export interface Event { id: string; shortId: string; projectId: string; userId: string | null; user?: User | null; title: string; description: string | null; startTime: string; endTime: string | null; timezone: string | null; type: EventType; url: string | null; venueName: string | null; address: string | null; location: { type: "Point"; coordinates: [number, number]; } | null; spaceId: string | null; space?: Space | null; visibility: EventVisibility; status: EventStatus; allowMaybe: boolean; guestListVisible: boolean; capacity: number | null; hostIds: string[]; coverImageId: string | null; files?: File[]; rsvpCounts: RsvpCounts; userRsvp?: RsvpStatus | null; metadata: Record; createdAt: string; updatedAt: string; deletedAt: string | null; } export interface EventRsvp { id: string; eventId: string; userId: string; user?: User | null; status: RsvpStatus; createdAt: string; updatedAt: string; } export interface EventInvite { id: string; eventId: string; userId: string; user?: User | null; invitedAt: string; createdAt: string; updatedAt: string; }