import { CustomLayerInterface, LngLat, MercatorCoordinate, LngLatLike, Map } from 'mapbox-gl';
import { EventDispatcher, WebGLRenderer, Scene, Camera, Object3D } from 'three';

type CustomLayerEventMap = {
    beforerender: {
        renderer: WebGLRenderer;
        scene: Scene;
        camera: Camera;
    };
    afterrender: {
        renderer: WebGLRenderer;
        scene: Scene;
        camera: Camera;
    };
};
declare class CustomLayer extends EventDispatcher<CustomLayerEventMap> implements CustomLayerInterface {
    readonly id: string;
    readonly type: "custom";
    readonly renderingMode: "2d" | "3d";
    readonly anchor: LngLat;
    readonly worldAnchor: MercatorCoordinate;
    private _map;
    private _camera;
    private _scene;
    private _renderer;
    constructor({ id, anchor, renderingMode, }: {
        id: string;
        anchor: LngLatLike;
        renderingMode: "2d" | "3d";
    });
    get map(): Map | null;
    add(object: Object3D): void;
    remove(object: Object3D): void;
    onAdd(map: Map, gl: WebGLRenderingContext): void;
    onRemove(): void;
    prerender(_gl: WebGLRenderingContext, matrix: number[]): void;
    render(): void;
}

export { CustomLayer as C };
