import { PointGeometry, PolygonGeometry } from "../../types";
export interface AibeeGraphicLayer {
    id: string;
    name: string;
    l_type: "graph";
    elements: {
        id: string;
        height: number;
        airHeight: number;
        area: number;
        group: string;
        fillColor: string;
        fillOpacity: number;
        strokeColor: string;
        strokeOpacity: number;
        strokeWidth: number;
        visible: boolean;
        doors: any[];
        geometry: PolygonGeometry | PointGeometry;
        layerType: string;
        zIndex: number;
        deltaHeight?: number;
        canMerge: boolean;
        texts: string[];
        userData: Record<string, any>;
    }[];
    mergedElements: (AibeeGraphicLayer['elements'][0] & {
        mergedGeometry: Record<any, any>;
        lineGeometry?: Record<any, any>;
    })[];
}
export interface AibeeRangeLayer {
    name: string;
    l_type: "range";
    elements: {
        id: string;
        center_x: number;
        center_y: number;
        geometry: PolygonGeometry;
    }[];
}
export interface AibeeGroundLayer {
    name: string;
    l_type: "ground";
    elements: AibeeGraphicLayer["elements"];
    mergedElements: AibeeGraphicLayer["mergedElements"];
}
export interface AibeeWallLayer {
    name: string;
    l_type: "wall";
    elements: (AibeeGraphicLayer["elements"][0] & {
        secondUrl: string;
    })[];
    mergedElements: (AibeeWallLayer["elements"][0] & AibeeGraphicLayer["mergedElements"][0])[];
}
export interface AibeeLaneLayer {
    name: string;
    l_type: "lane";
    elements: (AibeeGraphicLayer["elements"][0] & {
        secondColor: string;
        secondWidth: number;
        geometry: PolygonGeometry;
        double: boolean;
        dashed: boolean;
    })[];
    mergedElements: {
        mergedGeometry: Record<any, any>;
        lineGeometry?: Record<any, any>;
        dashedLineGeometry?: Record<any, any>;
    };
}
export interface AibeeTexture2dLayer {
    name: string;
    l_type: "texture2d";
    elements: {
        uuid: string;
        iconUrl: string;
        name: string;
        secondRotate: number;
        deltaHeight: number;
        airHeight: number;
        height: number;
        opacity: number;
        visible: boolean;
        poi_info: any;
        geometry: PolygonGeometry;
    }[];
    mergedElements: (AibeeTexture2dLayer["elements"][0] & AibeeGraphicLayer["mergedElements"][0])[];
}
export interface AibeeTexture3dLayer {
    name: string;
    l_type: "texture3d";
    elements: AibeeTexture2dLayer["elements"];
    mergedElements: (AibeeTexture3dLayer["elements"][0] & AibeeGraphicLayer["mergedElements"][0])[];
}
export interface AibeeGlbLayer {
    name: string;
    l_type: "glb";
    elements: (AibeeGraphicLayer["elements"][0] & {
        secondUrl: string;
        secondWidth: number;
        secondRotate: number;
        geometry: PolygonGeometry;
        center_x: number;
        center_y: number;
        center_coord_x: number;
        center_coord_y: number;
    })[];
}
export interface AibeeStoreLayer {
    name: string;
    l_type: "store";
    elements: (AibeeGraphicLayer["elements"][0] & {
        center_x: number;
        center_y: number;
        center_coord_x: number;
        center_coord_y: number;
        store_name: string;
        icon: string;
        poi_info: any;
        store_info_ext: {
            remarks: string;
            eng_remarks: string;
            traditional_remarks: string;
            description: string;
            eng_desc: string;
            traditional_description: string;
            commercial_format: string;
            commercial_name_en: string;
            commercial_traditional_name: string;
            poi_name: string;
            traditional_name: string;
        };
    })[];
    mergedElements: (AibeeStoreLayer['elements'][0] & AibeeGraphicLayer['mergedElements'][0])[];
}
export interface AibeeFacilityLayer {
    name: string;
    l_type: "facility";
    elements: (AibeeGraphicLayer["elements"][0] & {
        center_x: number;
        center_y: number;
        center_coord_x: number;
        center_coord_y: number;
        store_name: string;
        icon: string;
        poi_info: any;
        infra_info_ext: {
            remarks: string;
            eng_remarks: string;
            traditional_remarks: string;
            description: string;
            eng_desc: string;
            traditional_description: string;
            poi_name: string;
            traditional_name: string;
            type_name: string;
        };
    })[];
    mergedElements: (AibeeFacilityLayer['elements'][0] & AibeeGraphicLayer['mergedElements'][0])[];
}
export interface AibeeParkingSpaceLayer {
    name: string;
    l_type: "parkingSpace";
    elements: (AibeeGraphicLayer["elements"][0] & {
        center_x: number;
        center_y: number;
        center_coord_x: number;
        center_coord_y: number;
        poi_info: any;
        parkingType: string;
        geometry: PolygonGeometry;
    })[];
    mergedElements: (AibeeParkingSpaceLayer["elements"][0] & AibeeGraphicLayer["mergedElements"][0])[];
    mergedParkingTexture?: AibeeTexture2dLayer['mergedElements'];
}
export interface AibeeTextLayer {
    name: string;
    l_type: "text";
    elements: (AibeeGraphicLayer["elements"][0] & {
        texts: string[];
        secondHeight: number;
        secondRotate: number;
        center_x: number;
        center_y: number;
        center_coord_x: number;
        center_coord_y: number;
        geometry: PolygonGeometry;
    })[];
}
export type AibeeLayerData = AibeeGraphicLayer | AibeeRangeLayer | AibeeGroundLayer | AibeeWallLayer | AibeeLaneLayer | AibeeTexture2dLayer | AibeeTexture3dLayer | AibeeGlbLayer | AibeeStoreLayer | AibeeFacilityLayer | AibeeParkingSpaceLayer | AibeeTextLayer;
export interface AibeeFloorData {
    layers: AibeeLayerData[];
    floorHeight: number;
    version: string;
    floor: string;
    transformed?: boolean;
}
