import { Floor } from './Floor';
import { Image } from './Image';
import { Label } from './Label';
import { Line } from './Line';
import { Marker } from './Marker';
import { Surface } from './Surface';
import { Category } from './Category';

/**
 * POI is an aggregator for every entity existing in the map.
 * It is mandatory to manage every available objects in the map.
 * It can have an Image, a Label, a Line, a Surface or a Marker.
 */
export interface POI {
    /**
     * Unique ID, used to identify and ensure uniqueness of current POI.
     */
    readonly id: string;
    /**
     * The Floor in which current POI exist.
     */
    readonly floor?: Floor;
    /**
     * All Images related to current POI.
     */
    readonly images: Image[];
    /**
     * All Labels related to current POI.
     */
    readonly labels: Label[];
    /**
     * All Lines related to current POI.
     */
    readonly lines: Line[];
    /**
     * All Surfaces related to current POI.
     */
    readonly surfaces: Surface[];
    /**
     * All Markers related to current POI.
     */
    readonly markers: Marker[];
    /**
     * All the categories this POI belong to.
     */
    readonly categories: Category[];
}
