/**
 * Spatial filtering utilities for History API
 * Supports bbox and radius filters for DuckDB Parquet queries and JavaScript buffer filtering
 */
import { BoundingBox, DataRecord } from '../types';
/**
 * Spatial filter configuration
 */
export interface SpatialFilter {
    type: 'bbox' | 'radius';
    bbox: BoundingBox;
    centerLat?: number;
    centerLon?: number;
    radiusMeters?: number;
}
/**
 * Parse bbox query parameter in "west,south,east,north" format
 * @param bboxStr - Comma-separated bbox string
 * @returns BoundingBox or null if invalid
 */
export declare function parseBboxParam(bboxStr: string): BoundingBox | null;
/**
 * Parse radius query parameter in "lon,lat,meters" format (GeoJSON convention)
 * @param radiusStr - Comma-separated radius string
 * @returns SpatialFilter with bbox approximation and precise radius info, or null if invalid
 */
export declare function parseRadiusParam(radiusStr: string): SpatialFilter | null;
/**
 * Parse bbox or radius query parameters into a SpatialFilter
 * @param bboxStr - Optional bbox parameter
 * @param radiusStr - Optional radius parameter
 * @returns SpatialFilter or null if no valid spatial params
 */
export declare function parseSpatialParams(bboxStr?: string, radiusStr?: string): SpatialFilter | null;
/**
 * Build DuckDB WHERE clause for spatial filtering on position data
 * Uses value_latitude and value_longitude columns
 * @param filter - Spatial filter configuration
 * @param latColumn - Column name for latitude (default: 'value_latitude')
 * @param lonColumn - Column name for longitude (default: 'value_longitude')
 * @returns SQL WHERE clause fragment (without leading AND)
 */
export declare function buildSpatialSqlClause(filter: SpatialFilter, latColumn?: string, lonColumn?: string): string;
/**
 * Filter buffer records spatially using JavaScript
 * @param records - DataRecord array from SQLite buffer
 * @param filter - Spatial filter configuration
 * @returns Filtered records
 */
export declare function filterBufferRecordsSpatially(records: DataRecord[], filter: SpatialFilter): DataRecord[];
/**
 * Check if a SignalK path supports spatial filtering
 * Only paths that contain position data can be spatially filtered
 * @param signalkPath - The SignalK path to check
 * @returns true if path contains position data
 */
export declare function isPositionPath(signalkPath: string): boolean;
//# sourceMappingURL=spatial-queries.d.ts.map