/** * Shared TypeScript types for Smokesignal frontend */ // Geo location from template (coordinates come as strings from backend) export interface GeoLocation { latitude: string | number longitude: string | number name?: string | null } // H3 bucket for map aggregation export interface H3Bucket { key: string doc_count?: number event_count?: number lfg_count?: number total?: number } // Location suggestion from API export interface LocationSuggestion { source?: string name?: string street?: string locality?: string region?: string postal_code?: string country?: string latitude?: number longitude?: number } // Event form location (address type) export interface AddressLocation { type: 'address' country: string postalCode?: string | null region?: string | null locality?: string | null street?: string | null name?: string | null } // Event form location (geo type) export interface GeoFormLocation { type: 'geo' latitude: string longitude: string name?: string | null } export type FormLocation = AddressLocation | GeoFormLocation // Event form link export interface FormLink { url: string label?: string | null } // Event form data export interface EventFormData { name: string description: string status: string mode: string tz: string startsAt: string | null endsAt: string | null locations: FormLocation[] links: FormLink[] headerCid?: string | null headerAlt?: string | null headerSize?: number | null thumbnailCid?: string | null thumbnailAlt?: string | null requireConfirmedEmail: boolean sendNotifications: boolean }