import type { RenderMaterial, RevitTransform, ViralPoint } from "./base-elements";
export interface ViralViewerRevitProject {
    Materials: RenderMaterial[];
    StructuralGeometries: ViralViewerRevitStructuralGeometry[];
    NoneStructuralGeometries: ViralViewerRevitNoneStructuralGeometry[];
}
export interface ViralViewerRevitStructuralGeometry {
    MaterialIndex: number;
    Vertices: ViralPoint[];
    Indices: number[];
}
export declare class ViralViewerRevitNoneStructuralGeometry {
    MaterialIndex: number;
    Vertices: ViralPoint[];
    Indices: number[];
    Name: string;
    Instances: RevitTransform[];
}
export interface ViralutionFragmentModel {
    Materials: RenderMaterial[];
    Fragments: Fragment[];
}
export declare class Fragment {
    MaterialIndex: number;
    Elements: ElementFragment[];
}
export declare class ElementFragment {
    Vertices: ViralPoint[];
    Indices: number[];
    Instances: RevitTransform[];
    Id: string;
}
export declare class ViralViewerRevitGeometry {
    Vertices: ViralPoint[];
    Indices: number[];
    Transform: RevitTransform | null;
}
export declare class BufferElement {
    /**
     * In case this buffer element is instanced mesh this buffer is original geometry
     */
    buffer: Float32Array | null;
    normals: Float32Array | null;
    /**
     * In case this buffer element is instanced mesh this field is null
     */
    elementId: string;
    modelId: number;
    localMaterialIndex?: number;
    globalMaterialIndex?: number;
    minPoint?: ViralPoint;
    maxPoint?: ViralPoint;
    /**
     * In case this buffer element is instanced mesh
     */
    instances: {
        elementId: string;
        transform: number[];
    }[];
}
