import { Element as SElement, ElementData, Style, ElementType as SElementType } from '@web-map-service/map2d';
export { type SElement };
export interface ElementOptions {
    id?: number;
    type: string;
    name?: string;
    style?: Style;
    rotate?: number;
    sElementType?: SElementType;
    data: ElementData;
}
export type CreateElementOption = Omit<ElementOptions, 'type'>;
export interface Element {
    id: number;
    type: string;
    name?: string;
    rotate?: number;
    props?: SElement['props'];
    setProps: SElement['setProps'];
    setName(name: string): void;
    setRotate(rotate: number): void;
    getSElement(): SElement;
    style?: Style;
    setStyle(style: Style): void;
    data: ElementData;
    setData(data: ElementData): void;
}
export interface Layer {
    id: number;
    type: string;
    name?: string;
    sElementType: SElementType[];
    create(options: CreateElementOption): Element;
    add(element: Element): void;
    remove(element: Element): void;
    getElements(): Element[];
    getElementById(id: number): Element | undefined;
}
export interface ElementPlugin {
    create(options: ElementOptions): Element | undefined;
    add(elements: Element | Element[]): void;
    remove(elements: Element | Element[]): void;
    addLayer(layer: Layer): void;
    removeLayer(layer: Layer): void;
    getLayers(): Layer[];
    getLayerByType(type: string): Layer | undefined;
    getLayerById(id: number): Layer | undefined;
}
export type ElementPluginExtend = {
    element: ElementPlugin;
};
