import * as React from "react"; import { type BookingRecord, type BookingsListSortDir, type BookingsListSortField } from "../index.js"; /** * Serializable snapshot of the booking-list filter / sort / paging * state. Hosts that want shareable URLs (operator starter) read this * from the URL on mount via `initialFilters` and push changes via * `onFiltersChange`. */ export interface BookingListFiltersState { search: string; /** `BOOKING_STATUS_ALL` ("all statuses") or any booking status value. */ status: string; productId: string | null; optionId: string | null; supplierId: string | null; productCategoryId: string | null; personId: string | null; organizationId: string | null; availabilitySlotId: string | null; dateFrom: string | null; dateTo: string | null; paxMin: string; paxMax: string; sortBy: BookingsListSortField; sortDir: BookingsListSortDir; offset: number; } export interface BookingListProps { pageSize?: number; onSelectBooking?: (booking: BookingRecord) => void; /** * Extra action(s) rendered next to the primary "New booking" button in * the filter bar. Templates use this to surface adjacent flows such as * the trips without forking the component. */ headerActions?: React.ReactNode; /** * Initial filter / sort / paging state, typically parsed from the URL. * Only specified keys override the defaults — partial input is fine. */ initialFilters?: Partial; /** * Fires when any filter, sort, or paging value changes. Hosts push * the snapshot into the URL so refresh / share preserves the view. */ onFiltersChange?: (filters: BookingListFiltersState) => void; } export declare function BookingList({ pageSize, onSelectBooking, headerActions, initialFilters, onFiltersChange, }?: BookingListProps): React.JSX.Element;