"""Flight-specific formatting utilities."""
from typing import Dict, Any
from .common import format_currency, format_duration
def format_markdown_flight_offer(offer: Dict[str, Any]) -> str:
"""Format a flight offer as readable markdown."""
lines = []
# Header with price
total = format_currency(offer["total_amount"], offer["total_currency"])
lines.append(f"## Flight Offer - {total}")
lines.append(f"**Offer ID**: `{offer['id']}`")
lines.append(f"**Expires**: {offer['expires_at']}")
lines.append("")
# Slices (journey segments)
for i, slice_info in enumerate(offer.get("slices", []), 1):
origin = slice_info["origin"]["iata_code"]
destination = slice_info["destination"]["iata_code"]
duration = format_duration(slice_info["duration"])
lines.append(f"### Slice {i}: {origin} → {destination}")
lines.append(f"**Departure**: {slice_info['departure_at']}")
lines.append(f"**Arrival**: {slice_info['arrival_at']}")
lines.append(f"**Duration**: {duration}")
# Segments (individual flights)
for j, segment in enumerate(slice_info.get("segments", []), 1):
airline = segment["marketing_carrier"]["name"]
flight_num = segment["marketing_carrier_flight_number"]
lines.append(f" - **Flight {j}**: {airline} {flight_num}")
lines.append(f" {segment['origin']['iata_code']} → {segment['destination']['iata_code']}")
lines.append("")
return "\n".join(lines)