// Public barrel for the schedule feature. See frozen-barrels.md.

// 3A — URL serializer/parser
export type { ScheduleParams } from "./url.js";
export {
  parseScheduleUrl,
  buildScheduleUrl,
  parseScheduleRouteParams,
  buildScheduleRouteParams,
} from "./url.js";

// 3A — Types
export type {
  IScheduleRouteDirectionParams,
  IScheduleFlightId,
  IScheduleSearchRequest,
  IScheduleResponse,
  IScheduleDetailsResponse,
  IScheduleCalendarParams,
  IScheduleDaysResponse,
  IScheduleRouteParams,
  IScheduleDetailsParams,
} from "./types.js";

// Re-exported shared types
export type { IFlight, ISimpleFlight, IBoardResponse, IFlightLeg } from "./types.js";

// 3B — API functions
export { searchSchedule, getScheduleDetails, getScheduleCalendarDays } from "./api.js";

// 3B — React hooks
export { useScheduleSearch } from "./hooks/useScheduleSearch.js";
export type { UseScheduleSearchResult } from "./hooks/useScheduleSearch.js";
export { useScheduleDetails } from "./hooks/useScheduleDetails.js";
export type { UseScheduleDetailsResult, UseScheduleDetailsParams } from "./hooks/useScheduleDetails.js";
export { useScheduleCalendar } from "./hooks/useScheduleCalendar.js";
export type { UseScheduleCalendarResult } from "./hooks/useScheduleCalendar.js";

// 3D — SEO builder functions
export {
  buildScheduleStartSeo,
  buildScheduleSearchSeo,
  buildScheduleDetailsSeo,
} from "./seo.js";
export type { TFunction, CityNames } from "./seo.js";

// 3D — JSON-LD builder functions
export { buildScheduleFlightJsonLd, buildScheduleFlightListJsonLd } from "./json-ld.js";

// 3C — Feature-specific page components
export { ScheduleStartPage } from "./components/ScheduleStartPage.js";
export { ScheduleSearchPage } from "./components/ScheduleSearchPage.js";
export type { ScheduleSearchPageProps } from "./components/ScheduleSearchPage.js";
export { ScheduleDetailsPage } from "./components/ScheduleDetailsPage.js";
export type { ScheduleDetailsPageProps } from "./components/ScheduleDetailsPage.js";
