import { Layer as OlLayer } from 'ol/layer';
import { Emitter } from '../events/emitter';
import { createElement, ElementData } from './elements';
import { ElementPluginsMap, Element, ElementType } from './elements/element';
import { CircleData, PointData, ElementExtend } from './elements/types';
export { type Element, type ElementType, type CircleData, type PointData, type ElementData };
export interface Layer {
    id: number;
    type?: string;
    name?: string;
    create<T extends keyof ElementPluginsMap>(options: Omit<ElementPluginsMap[T]['options'], keyof ElementExtend> & {
        type: T;
    }, useAdd?: boolean): ReturnType<typeof createElement<T>>;
    add(element: Element): void;
    remove(element: Element): void;
    clean(): void;
    destroy(): void;
    getElementById(elementId: number): Element | undefined;
    getOlLayer(): OlLayer;
    getElements(): Element[];
    [key: string]: unknown;
}
export interface LayerOptions {
    type?: string;
    name?: string;
}
/**
 * 图层负责元素创建、添加、移除、清空
 * 同时也能通过图层id来获取图层、getLayers获取当前全部图层
 */
export declare function createLayer(emitter: Emitter, options?: LayerOptions): Layer;
