import type { ParseOptions } from './work';
import type { TilesetHeader } from "../model/tile3d/header";
export interface LooseWorkVideo {
    source: string;
    matrix: number[];
    size: number[];
}
export interface LooseWorkPanorama {
    active?: boolean;
    loadable?: boolean;
    index?: number;
    right?: string;
    left?: string;
    up?: string;
    down?: string;
    front?: string;
    back?: string;
    video?: LooseWorkVideo;
    tiles?: number[];
    size_list?: number[];
    derived_id?: number | string;
    derived_id_str?: string;
}
export interface LooseWorkInitial {
    mode?: string;
    pano_index?: number;
    panoIndex?: number;
    pano?: number;
    longitude?: number;
    latitude?: number;
    fov?: number;
    distance?: number;
    offset?: number[] | {
        x: number;
        y: number;
        z: number;
    };
    heading?: number;
}
export interface LooseWorkModel {
    file_url?: string;
    material_textures?: string[];
    material_base_url?: string;
    up_axis?: string;
    coordinate?: NonNullable<TilesetHeader['rootMeta']>['coordinate'];
    tiles?: {
        type?: 'point_cloud' | 'mesh' | 'gaussian_splatting' | string;
        name?: string;
        up_axis?: string;
        tileset_url: string;
    };
    layers?: [
        {
            type?: 'point_cloud' | 'mesh' | 'gaussian_splatting' | string;
            name?: string;
            up_axis?: string;
            tileset_url: string;
        }
    ];
}
export interface LooseWorkObserver {
    active?: boolean;
    loadable?: boolean;
    index?: number;
    visible_nodes?: number[];
    visibleNodes?: number[];
    accessible_nodes?: number[];
    accessibleNodes?: number[];
    quaternion?: {
        y: number;
        x: number;
        z: number;
        w: number;
    };
    standing_position?: number[];
    standingPosition?: number[];
    position?: number[];
    floor?: number;
    floor_index?: number;
    floorIndex?: number;
    derived_id?: number | string;
    derived_id_str?: string;
}
export interface LooseWork {
    work_code?: string;
    code?: string;
    resource_code?: string;
    basic_code?: string;
    vr_code?: string;
    workCode?: string;
    project_id?: string;
    name?: string;
    modelAsync?: boolean;
    initial?: LooseWorkInitial;
    base_url?: string;
    model?: LooseWorkModel;
    panorama?: {
        base_url?: string;
        pano_high_cube_base_url?: string;
        pano_cube_base_url?: string;
        pattern?: LooseWorkPanorama;
        info?: LooseWorkPanorama[];
        list?: LooseWorkPanorama[];
    };
    observers?: LooseWorkObserver[];
}
export interface LooseWorkWithExtrinsics extends ParseOptions {
    /** work 数据 */
    work: LooseWork;
}
export interface LoosePanoWork {
    name?: string;
    code?: string;
    up: string;
    down: string;
    right: string;
    left: string;
    front: string;
    back: string;
    size: number;
}
