export interface Booking { id: number; userId: number; locationId: number; startAt: string; endAt: string; status: BookingStatus; sessionId?: number | null; createdAt: string; lastUpdatedAt: string; bookedEvses?: { id: number }[]; authorizedTokens?: { id: number; name: string }[]; accessMethods?: string[]; } export type BookingStatus = 'accepted' | 'reserved' | 'completed' | 'cancelled' | 'no-show' | 'failed'; export interface BookingRequest { id: number; type: 'create' | 'update' | 'cancel'; status: 'approved' | 'rejected'; userId: number; locationId?: number; startAt?: string; endAt?: string; bookingId?: number; rejectionReason?: string; createdAt: string; lastUpdatedAt: string; } export interface AvailabilitySlot { evseId: number; availableSlots: { startAt: string; endAt: string }[]; } export interface SessionData { userId: number | null; operatorId: number; appLanguage: string; appCountry: string; appTheme: 'LIGHT' | 'DARK'; designTokens?: Record; }