/** * Shared DTO shapes for the organizer live map. Both endpoints return plain * JSON (no SuperJSON) with `Date` fields serialized as ISO strings and Prisma * `Decimal` coordinates coerced to numbers. */ export type MapUser = { id: number; name: string; email: string; }; export type MapTeam = { id: number; name: string; owner: MapUser; members: MapUser[]; }; export type MapPosition = { userId: number; lat: number; lon: number; accuracy: number | null; recordedAt: string; }; export type MapAnswer = { id: number; lat: number; lon: number; createdAt: string; memberId: number; teamId: number; pictureUrl: string | null; quest: { id: number; title_de: string; title_en: string; }; }; export type HuntMapData = { teams: MapTeam[]; positions: MapPosition[]; answers: MapAnswer[]; }; export type TrailPoint = { lat: number; lon: number; accuracy: number | null; recordedAt: string; }; export type UserTrail = { points: TrailPoint[]; };