import { Coordinates, Waypoint } from '../shared/types'; export type Marker = Waypoint & { key: string; remove: () => void; moveUp: () => void; moveDown: () => void; label: string; }; type GenericReducerAction = { type: TType; data: TData; }; export type ReducerAction = | GenericReducerAction< 'add', { coordinates: Coordinates; remove: (key: string) => void; moveUp: (key: string) => void; moveDown: (key: string) => void; } > | GenericReducerAction<'remove', { key: string }> | GenericReducerAction<'moveUp', { key: string }> | GenericReducerAction<'moveDown', { key: string }> | GenericReducerAction<'reorder', { oldIndex: number; newIndex: number }>; export type ReorderMarkersParams = { oldIndex: number; newIndex: number; }; export type MarkersProps = { markers: Marker[]; onMarkersReorder: (params: ReorderMarkersParams) => void; }; export type MapProps = { markers: Marker[]; onMapClick: (coordinates: Coordinates) => void; }; export type ExportProps = { markers: Marker[]; }; export type MarkerProps = { marker: Marker; isFirst: boolean; isLast: boolean; };