interface Asset {
    modelUuid: string;
    modelName: string;
    assetId: string;
    position: [number, number, number];
    rotation: [number, number, number];
    isLocked: boolean;
    isCollidable: boolean;
    isVisible: boolean;
    opacity: number;
    animations?: string[];
    animationState?: {
        current: string;
        playing: boolean;
    };
    eventData?: {
        type: string;
        point?: {
            uuid: string;
            position: [number, number, number];
            rotation: [number, number, number];
        }
        points?: {
            uuid: string;
            position: [number, number, number];
            rotation: [number, number, number];
        }[];
    }
};

type Assets = Asset[];


interface Point {
    uuid: string;
    position: [number, number, number];
    layer: number;
}

type AisleTypes = | 'solid-aisle' | 'dashed-aisle' | 'stripped-aisle' | 'dotted-aisle' | 'arrow-aisle' | 'arrows-aisle' | 'arc-aisle' | 'circle-aisle' | 'junction-aisle';

type AisleColors = | 'gray' | 'yellow' | 'green' | 'orange' | 'blue' | 'purple' | 'red' | 'bright green' | 'yellow-black' | 'white-black'

interface AisleType {
    typeName: 'Aisle';
    aisleType: AisleTypes;
    aisleColor: AisleColors;
    aisleWidth: number;
}

interface Aisle {
    uuid: string;
    points: [Point, Point];
    type: AisleType;
}

type Aisles = Aisle[];