import { Feature } from 'ol';
import { Coordinate } from 'ol/coordinate';
import { Extent } from 'ol/extent';
import Geometry from 'ol/geom/Geometry';
import { ProjectionLike } from 'ol/proj';
import { IDictionary } from '../core/contracts';
import { FeatureThing, ITransformOpts } from './contracts';
export declare class WAFeature {
    private _feature;
    constructor(_feature: Feature<Geometry>);
    static readonly GEOMETRYNAME_DEFAULT = "geometry";
    static readonly GEOMETRYNAME_HINT = "polygraph_geometryname";
    static readonly WGS84_CODE = "EPSG:4326";
    static factory: (obj: FeatureThing) => WAFeature;
    static transform(geometry: Geometry, sourceProjection: ProjectionLike, targetProjection: ProjectionLike): Geometry;
    static isSquare(poly: Geometry): boolean;
    static distanceSphere(coordinate: Coordinate, projection: ProjectionLike, distance: number, vertices?: number): Geometry;
    assertValid(): WAFeature;
    getGeometry(): Geometry;
    getGeometryAsArray(): Geometry[];
    getGeometryTransformed(sourceProjection: ProjectionLike, targetProjection: ProjectionLike): Geometry;
    getGeometryName(): string;
    setGeometryName(geometryName: string): void;
    getExtent(): Extent;
    getProperties(): IDictionary<any>;
    getCenter(): Coordinate;
    getOlFeature(): Feature<Geometry>;
    private serialize;
    asWkt(decimals?: number, opts?: ITransformOpts): string;
    asGeoJson(decimals?: number, opts?: ITransformOpts): string;
    asTurf(projCode: string): any;
    asGml(decimals?: number, opts?: ITransformOpts): string;
    intersects(feature: WAFeature, projCode: string): boolean;
    contains(feature: WAFeature): boolean;
    dwithin(feature: WAFeature, distance: number, greatCircle: boolean, projCode: string): boolean;
}
