import { Coord, CircleData, PointData, ElementPluginOptions, ElementImage } from './types';
import { Geometry as OlGeometry } from 'ol/geom';
import { default as OlFeature } from 'ol/Feature';
import { Container, Element } from '../../container';
import { Style, StorkeStyle, FillStyle, ImageStyle, CircleStyle } from '../../style';
import { default as OlStyle } from 'ol/style/Style';
import { Layer } from '../layers';
export type ElementData = CircleData | PointData | Coord;
/**
 *  线段和矩形是 PointData Array<[number, number]>
 *  圆形是 CircleData { center: number[], radius: number }
 *  图片是 Coord [number, number]
 */
export declare function getElementData(olGeometry: OlGeometry): ElementData;
export declare function getLayerByOlFeature(olFeature: OlFeature, container: Container): Layer | undefined;
export declare function getElementByOlFeature(olFeature: OlFeature, container: Container): Element<any> | undefined;
/**
 * 数据同步到olFeatrue上
 * @param OlFeature
 * @param Container
 * @returns boolean
 */
export declare function syncDataFeature(data: ElementData, olFeature: OlFeature): void;
/**
 * 通过olFeature里面的数据直接同步到element上
 * @param OlFeature
 * @param Container
 * @returns boolean
 */
export declare function syncOlFeatureElementData(olFeature: OlFeature, container: Container): void;
export declare function getElementOlStyle(element: Element): OlStyle[];
export declare function createElementCommon(olGeometry: OlGeometry, olFeature: OlFeature, options: ElementPluginOptions): {
    id: number;
    layerId: number;
    type: Element["type"];
    name: string | undefined;
    image: ElementImage | undefined;
    data: any;
    rotate: number;
    style: Partial<{
        stroke: Partial< StorkeStyle>;
        fill: Partial< FillStyle>;
        image: Partial< ImageStyle>;
        circle: Partial< CircleStyle>;
    }> | undefined;
    readonly props: {
        [x: string]: any;
    };
    setName(name: string): void;
    setRotate(rotate: number): void;
    setProps(props: Record<string, unknown>): void;
    getOlFeature(): OlFeature<OlGeometry>;
    setStyle(style: Style): void;
    setData(data: Coord | CircleData | PointData): void;
};
