import { Bounds, ICameraOptions, IControl, IDebugService, IIconFontGlyph, IImage, ILayer, ILngLat, IMapService, IMarker, IMarkerLayer, IPoint, IPopup, IPostProcessingPass, ISceneConfig, IStatusOptions, Point } from '@antv/l7-core';
import { Container } from 'inversify';
import ILayerManager from './ILayerManager';
import IMapController from './IMapController';
import IPostProcessingPassPluggable from './IPostProcessingPassPluggable';
/**
 * 暴露 Scene API
 *
 * @example
 * import { Scene } from 'l7/scene';
 * import { PointLayer } from 'l7/layers';
 *
 * const scene = new Scene();
 * const pointLayer = new PointLayer();
 * scene.addLayer(pointLayer);
 *
 */
declare class Scene implements IPostProcessingPassPluggable, IMapController, ILayerManager {
    private sceneService;
    private mapService;
    private controlService;
    private layerService;
    private debugService;
    private iconService;
    private markerService;
    private popupService;
    private fontService;
    private interactionService;
    private boxSelect;
    private container;
    constructor(config: ISceneConfig);
    get map(): unknown;
    get loaded(): boolean;
    getServiceContainer(): Container;
    getSize(): [number, number];
    getMinZoom(): number;
    getMaxZoom(): number;
    getType(): string;
    getMapContainer(): HTMLElement | null;
    getMapCanvasContainer(): HTMLElement;
    getMapService(): IMapService<unknown>;
    /**
     * 对外暴露 debugService
     * @returns
     */
    getDebugService(): IDebugService;
    exportPng(type?: 'png' | 'jpg'): Promise<string>;
    exportMap(type?: 'png' | 'jpg'): Promise<string>;
    registerRenderService(render: any): void;
    setBgColor(color: string): void;
    addLayer(layer: ILayer): void;
    initMask(layer: ILayer): ILayer | undefined;
    addMask(mask: ILayer, layerId: string): void;
    getPickedLayer(): number;
    getLayers(): ILayer[];
    getLayer(id: string): ILayer | undefined;
    getLayerByName(name: string): ILayer | undefined;
    removeLayer(layer: ILayer, parentLayer?: ILayer): Promise<void>;
    removeAllLayer(): Promise<void>;
    render(): void;
    setEnableRender(flag: boolean): void;
    /**
     * 为 layer/point/text 支持 iconfont 模式支持
     * @param fontUnicode
     * @param name
     */
    addIconFont(name: string, fontUnicode: string): void;
    addIconFonts(options: string[][]): void;
    /**
     * 用户自定义添加第三方字体
     * @param fontFamily
     * @param fontPath
     */
    addFontFace(fontFamily: string, fontPath: string): void;
    addImage(id: string, img: IImage): Promise<void>;
    hasImage(id: string): boolean;
    removeImage(id: string): void;
    addIconFontGlyphs(fontFamily: string, glyphs: IIconFontGlyph[]): void;
    addControl(ctr: IControl): void;
    removeControl(ctr: IControl): void;
    getControlByName(name: string): IControl<any> | undefined;
    addMarker(marker: IMarker): void;
    addMarkerLayer(layer: IMarkerLayer): void;
    removeMarkerLayer(layer: IMarkerLayer): void;
    removeAllMakers(): void;
    addPopup(popup: IPopup): void;
    removePopup(popup: IPopup): void;
    on(type: string, handle: (...args: any[]) => void): void;
    once(type: string, handle: (...args: any[]) => void): void;
    emit(type: string, handle: (...args: any[]) => void): void;
    off(type: string, handle: (...args: any[]) => void): void;
    getZoom(): number;
    getCenter(options?: ICameraOptions): ILngLat;
    setCenter(center: [number, number], options?: ICameraOptions): void;
    getPitch(): number;
    setPitch(pitch: number): void;
    getRotation(): number;
    getBounds(): Bounds;
    setRotation(rotation: number): void;
    zoomIn(): void;
    zoomOut(): void;
    panTo(p: Point): void;
    panBy(x: number, y: number): void;
    getContainer(): HTMLElement | null;
    setZoom(zoom: number): void;
    fitBounds(bound: Bounds, options?: unknown): void;
    setZoomAndCenter(zoom: number, center: Point): void;
    setMapStyle(style: any): void;
    setMapStatus(options: Partial<IStatusOptions>): void;
    pixelToLngLat(pixel: Point): ILngLat;
    lngLatToPixel(lnglat: Point): IPoint;
    containerToLngLat(pixel: Point): ILngLat;
    lngLatToContainer(lnglat: Point): IPoint;
    destroy(): void;
    registerPostProcessingPass(constructor: new (...args: any[]) => IPostProcessingPass<unknown>, name: string): void;
    enableShaderPick(): void;
    diasbleShaderPick(): void;
    enableBoxSelect(once?: boolean): void;
    disableBoxSelect(): void;
    getPointSizeRange(): Float32Array;
    private initComponent;
    private initControl;
}
export { Scene };
