import { PointOfInterest } from "./api/entities/poi";

/**
 * Interface representing a data source for handling points of interest (POI) operations.
 */
export interface PoiDatasourceInf {
  /**
   * Registers a new point of interest.
   * @param form - The POI data to register.
   * @returns A promise that resolves when the registration is complete.
   */
  registerPoint(form: PointOfInterest): Promise<void>;

  /**
   * Retrieves a list of POIs by place.
   * @param idPlace - The ID of the place.
   * @returns A promise that resolves to an array of PointOfInterest objects.
   */
  getPOIsByPlace(idPlace: number): Promise<PointOfInterest[]>;

  /**
   * Retrieves a POI by its ID.
   * @param idPoint - The ID of the POI.
   * @returns A promise that resolves to a PointOfInterest object.
   */
  getPOIById(idPoint: number): Promise<PointOfInterest>;

  /**
   * Retrieves a PDF document containing information about specified POIs.
   * @param idPlace - The ID of the place.
   * @param pointsId - An array of POI IDs.
   * @returns A promise that resolves to a string representing the PDF document.
   */
  getPDFByPoints(idPlace: number, pointsId: number[]): Promise<string>;
}
