export interface Trip {
	id: string;
	name: string;
	description: string;
	start_date: string;
	end_date: string;
	image_path: string | null;
	cover_image: string | null;
	share_token: string | null;
	created_at: string;
	immich_album_id: string | null;
}

export interface Transportation {
	id: string;
	trip_id: string;
	name: string;
	type: string;
	flight_number: string;
	from_location: string;
	to_location: string;
	date: string;
	end_date: string;
	timezone: string;
	description: string;
	link: string;
	cost_points: number;
	cost_cash: number;
	from_place_id: string;
	to_place_id: string;
	from_lat: number | null;
	from_lng: number | null;
	to_lat: number | null;
	to_lng: number | null;
}

export interface Lodging {
	id: string;
	trip_id: string;
	name: string;
	type: string;
	location: string;
	check_in: string;
	check_out: string;
	timezone: string;
	reservation_number: string;
	description: string;
	link: string;
	cost_points: number;
	cost_cash: number;
	place_id: string;
	latitude: number | null;
	longitude: number | null;
}

export interface Location {
	id: string;
	trip_id: string;
	name: string;
	description: string;
	latitude: number | null;
	longitude: number | null;
	category: string;
	visit_date: string;
	start_time: string;
	end_time: string;
	link: string;
	cost_points: number;
	cost_cash: number;
	hike_distance: string;
	hike_difficulty: string;
	hike_time: string;
	place_id: string;
	address: string;
}

export interface Note {
	id: string;
	trip_id: string;
	name: string;
	content: string;
	date: string;
}

export interface TripDetail extends Trip {
	transportations: Transportation[];
	lodging: Lodging[];
	locations: Location[];
	notes: Note[];
	images: TripImage[];
	documents: TripDocument[];
}

export interface TripImage {
	id: string;
	entity_type: string;
	entity_id: string;
	file_path: string;
	is_primary: number;
}

export interface TripDocument {
	id: string;
	entity_type: string;
	entity_id: string;
	file_path: string;
	original_name: string;
	mime_type: string;
}
