import * as i0 from '@angular/core';
import { OnInit, OnDestroy, EventEmitter, ChangeDetectorRef, ElementRef, NgZone } from '@angular/core';
import * as THREE from 'three';

interface MeshOptions {
    castShadow?: boolean;
    position?: THREE.Vector3;
    receiveShadow?: boolean;
    scale?: THREE.Vector3;
    up?: THREE.Vector3;
    userData?: Record<string, any>;
    visible?: boolean;
}
declare class StlModelViewerComponent implements OnInit, OnDestroy {
    private cdr;
    private eleRef;
    private ngZone;
    stlModels: string[];
    stlModelFiles: string[];
    hasControls: boolean;
    camera: THREE.PerspectiveCamera;
    cameraTarget: THREE.Vector3;
    light: THREE.Light;
    material: THREE.Material;
    scene: THREE.Scene;
    renderer: THREE.WebGLRenderer;
    controls: any | null;
    meshOptions: MeshOptions[];
    centered: boolean;
    rendered: EventEmitter<void>;
    hasWebGL: boolean;
    meshGroup: any;
    isRendered: boolean;
    showStlModel: boolean;
    stlLoader: any;
    middle: any;
    constructor(cdr: ChangeDetectorRef, eleRef: ElementRef, ngZone: NgZone);
    ngOnInit(): void;
    ngOnDestroy(): void;
    createMesh(path: string, meshOptions?: MeshOptions, parse?: boolean): Promise<THREE.Mesh>;
    render: () => void;
    setSizes(): void;
    onWindowResize: () => void;
    private init;
    static ɵfac: i0.ɵɵFactoryDeclaration<StlModelViewerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StlModelViewerComponent, "stl-model-viewer", never, { "stlModels": { "alias": "stlModels"; "required": false; }; "stlModelFiles": { "alias": "stlModelFiles"; "required": false; }; "hasControls": { "alias": "hasControls"; "required": false; }; "camera": { "alias": "camera"; "required": false; }; "cameraTarget": { "alias": "cameraTarget"; "required": false; }; "light": { "alias": "light"; "required": false; }; "material": { "alias": "material"; "required": false; }; "scene": { "alias": "scene"; "required": false; }; "renderer": { "alias": "renderer"; "required": false; }; "controls": { "alias": "controls"; "required": false; }; "meshOptions": { "alias": "meshOptions"; "required": false; }; "centered": { "alias": "centered"; "required": false; }; }, { "rendered": "rendered"; }, never, never, true, never>;
}

declare class StlModelViewerModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<StlModelViewerModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<StlModelViewerModule, never, [typeof StlModelViewerComponent], [typeof StlModelViewerComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<StlModelViewerModule>;
}

export { StlModelViewerComponent, StlModelViewerModule };
export type { MeshOptions };
