import 'localized_content.dart';
import 'transport_mode.dart';
class TourStop {
const TourStop({
required this.poiId,
required this.title,
required this.guideText,
required this.walkMinutesFromPrevious,
this.audioUrls = const {},
});
final String poiId;
final LocalizedContent title;
final LocalizedContent guideText;
final int walkMinutesFromPrevious;
final Map<String, String> audioUrls;
}
class Tour {
const Tour({
required this.id,
required this.title,
required this.subtitle,
required this.category,
required this.durationMinutes,
required this.distanceKm,
required this.stops,
required this.highlight,
this.imageUrl,
this.familyFriendly = false,
this.offlineReady = false,
this.recommendedTransport = TransportMode.walking,
this.supportedTransportModes = const [
TransportMode.walking,
TransportMode.bicycle,
TransportMode.publicTransit,
],
this.transportNote,
this.dynamic = false,
this.topicSlugs = const [],
this.topicNames = const [],
this.eraSlugs = const [],
this.eraNames = const [],
});
final String id;
final LocalizedContent title;
final LocalizedContent subtitle;
final String category;
final int durationMinutes;
final double distanceKm;
final List<TourStop> stops;
final bool highlight;
final String? imageUrl;
final bool familyFriendly;
final bool offlineReady;
/// Recommendation can come from WordPress later. Until then the repository
/// derives a conservative recommendation from distance / stop spacing.
final TransportMode recommendedTransport;
final List<TransportMode> supportedTransportModes;
final String? transportNote;
/// True for routes assembled locally from POIs rather than a WP tour.
final bool dynamic;
final List<String> topicSlugs;
final List<String> topicNames;
final List<String> eraSlugs;
final List<String> eraNames;
bool supports(TransportMode mode) => supportedTransportModes.contains(mode);
}

