import { ProjectionLike } from 'ol/proj';
import { ClassDict } from '../core/contracts';
import { PolygraphBase } from '../core/polygraph';
import { FeatureThing, IPolygraphOlOpts, IFilterOpts, ICqlFilterOpts } from './contracts';
import { IOlOperators } from './ol';
export declare class PolygraphOl extends PolygraphBase<PolygraphOl> implements IOlOperators {
    private _opts;
    protected _getConfiguration(): IPolygraphOlOpts;
    protected _setConfiguration(config: IPolygraphOlOpts): void;
    protected _getPolygraph(): PolygraphOl;
    protected _getClassDict(): ClassDict;
    /**
     * Sets default projection for all Polygraphs.
     * Default `EPSG:3857` (Web Mercator)
     *
     * @remarks Projection must be known.
     *
     * @param projection - Projection instance or code
     */
    static defaultProjection(projection: ProjectionLike): void;
    /**
     * Sets projection for all child spatial operators.
     *
     * @remarks Projection must be known.
     *
     * @param projection - Projection instance or code
     *
     * @returns Polygraph
     */
    projection(projection: ProjectionLike): PolygraphOl;
    /**
     * Evaluates featurething.
     *
     * @param obj - The featurething to evaluate
     *
     * @returns True if object passed all child operators
     */
    evaluate(obj: FeatureThing): boolean;
    /**
     * Returns true when object intersects value.
     *
     * @param value - The featurething to compare
     *
     * @returns Polygraph
     */
    intersects(value: FeatureThing): PolygraphOl;
    /**
     * Returns true when object do not intersects value.
     *
     * @param value - The featurething to compare
     *
     * @returns Polygraph
     */
    disjoint(value: FeatureThing): PolygraphOl;
    /**
     * Returns true when object completely contains value.
     *
     * @param value - The featurething to compare
     *
     * @returns Polygraph
     */
    contains(value: FeatureThing): PolygraphOl;
    /**
     * Returns true when object is completely within value.
     *
     * @param value - The featurething to compare
     *
     * @returns Polygraph
     */
    within(value: FeatureThing): PolygraphOl;
    /**
     * Returns true when object is no more than specified distance from value.
     *
     * @remarks Requires a correct projection.
     *
     * @param value - The featurething to compare
     * @param distance - Distance in meters
     * @param greatCircle - Optional. Calculate using great-circle distance.
     *
     * @returns Polygraph
     */
    distanceWithin(value: FeatureThing, distance: number, greatCircle?: boolean): PolygraphOl;
    /**
     * Returns true when object is more than specified distance from value.
     *
     * @remarks Requires a correct projection.
     *
     * @param value - The featurething to compare
     * @param distance - Distance in meters
     * @param greatCircle - Optional. Calculate using great-circle distance.
     *
     * @returns Polygraph
     */
    distanceBeyond(value: FeatureThing, distance: number, greatCircle?: boolean): PolygraphOl;
    /**
     * Returns operators as an OGC CQL query.
     *
     * @param opts - Optional serializer settings.
     *
     * @returns OGC CQL query
     */
    asOgcCql(opts?: ICqlFilterOpts): string;
    /**
     * Returns operators as an OGC XML query.
     *
     * @remarks
     * Wrap in encodeURI to avoid encoding issues
     *
     * @param opts - Optional serializer settings.
     *
     * @returns OGC XML query
     */
    asOgcXml(opts?: IFilterOpts): string;
}
