import { BuildingOptions } from '../../types';
import { FlightPart } from '../../modules/mapFlight';
import { MarkerTooltipPosition } from './components/marker';
export type PovTooltipPosition = 'top' | 'bottom' | 'top-left' | 'top-right' | 'left' | 'right' | 'bottom-left' | 'bottom-right';
interface PointOfViewContent {
    title: string;
    description: string;
}
interface BasePointOfView {
    id: string;
    buildingStates?: Array<{
        modelId: string;
        floorId: string;
    }>;
    lonLat: number[];
    height?: number;
    elevation?: number;
    flightScenario: FlightPart[];
    tooltipPos: PovTooltipPosition;
    markerTooltipPos?: MarkerTooltipPosition;
}
export type PointOfView = BasePointOfView & PointOfViewContent;
interface ComplexContent {
    title: string;
    description?: string;
    architects?: string;
    year?: string;
}
interface BaseComplex {
    id: string;
    tooltipPosition?: MarkerTooltipPosition;
    image?: string;
    flightPitch?: number;
    flightStyleZoom?: number;
    flightRotationDuration?: number;
    flightDontResetView?: boolean;
    flightScenario?: FlightPart[];
    coordinates: number[];
    mapOptions: BuildingOptions['mapOptions'];
    buildings: BuildingOptions[];
    maxZoom?: number;
}
export interface Complex extends BaseComplex, ComplexContent {
    pointsOfView?: PointOfView[];
}
interface ComplexWithoutContent extends BaseComplex {
    pointsOfView?: BasePointOfView[];
}
export type ComplexWithCity = Complex & {
    cityId: string;
};
interface BaseCityData {
    id: string;
    mapOptions: BuildingOptions['mapOptions'];
    complexPreviews?: string[];
    tooltipPosition?: MarkerTooltipPosition;
}
export interface CityData extends BaseCityData {
    title?: string;
    mode?: string;
    complexes: Complex[];
}
export interface CityDataWithoutContent extends BaseCityData {
    complexes: ComplexWithoutContent[];
}
export {};
