import { Camera, WebGLRenderer } from 'three';
import mapboxgl from 'mapbox-gl';
import { PolyScene } from '../../../../engine/scene/PolyScene';
import { MapboxViewer } from '../../../../engine/viewers/Mapbox';
import { LngLat } from '../Common';
export type ThreejsLayerRenderFunc = (renderer: WebGLRenderer) => void;
export interface ThreejsLayerOptions {
    map: mapboxgl.Map;
    scene: PolyScene;
    camera: Camera;
    canvas: HTMLCanvasElement;
    lngLat: LngLat;
    viewer: MapboxViewer;
    renderFunc: ThreejsLayerRenderFunc;
}
export declare class ThreejsLayer {
    readonly id: string;
    readonly type: 'custom';
    readonly renderingMode: '3d';
    private _renderer;
    private _displayScene;
    private _map;
    private _viewer;
    private _renderFunc;
    private _camera;
    private _lngLat;
    constructor(options: ThreejsLayerOptions);
    onAdd(map: mapboxgl.Map, gl: WebGLRenderingContext): void;
    private createRenderer;
    render(gl: WebGLRenderingContext, matrix: number[]): Promise<void>;
    private _vX;
    private _vY;
    private _vZ;
    private mRX;
    private mRY;
    private mRZ;
    private s;
    private m;
    private l;
    _updateCameraMatrix(matrix: number[]): void;
}
