import type { ObjectId } from "./object-types.js"; export interface ManagedPointGeometry { type: "Point"; /** GeoJSON order: [lng, lat]. */ coordinates: [number, number]; } export interface ManagedLineStringGeometry { type: "LineString"; /** GeoJSON order: [lng, lat][]. */ coordinates: Array<[number, number]>; } export interface ManagedPolygonGeometry { type: "Polygon"; /** GeoJSON rings: outer + holes, each [lng, lat][]. */ coordinates: Array>; } export type ManagedGeometry = ManagedPointGeometry | ManagedLineStringGeometry | ManagedPolygonGeometry; export interface NormalizedPoint { kind: "Point"; lat: number; lng: number; bbox: readonly [number, number, number, number]; } export interface NormalizedLineString { kind: "LineString"; /** Packed lat/lng pairs. */ coords: Float64Array; pointCount: number; lengthMetersApprox: number; /** Cumulative distance along line (meters), length = pointCount. */ distances: Float64Array; bbox: readonly [number, number, number, number]; } export interface NormalizedPolygon { kind: "Polygon"; rings: Float64Array[]; ringCounts: number[]; bbox: readonly [number, number, number, number]; } export type NormalizedGeometry = NormalizedPoint | NormalizedLineString | NormalizedPolygon; /** Reject LineString/Polygon larger than this (availability). `0` = unlimited. */ export declare const DEFAULT_MAX_VERTICES_PER_GEOMETRY = 65536; export interface NormalizeGeometryOptions { maxVertices?: number; } export interface GeometryInputObject { id?: ObjectId; coordinates?: unknown; geometry?: unknown; properties?: Record; [key: string]: unknown; } /** Reject removed tuple syntax before callers mutate a store or index. */ export declare function assertManagedCoordinateFormat(input: GeometryInputObject): void; /** Approx haversine meters — good enough for dash/gradient progress. */ export declare function approxHaversineMeters(lat1: number, lng1: number, lat2: number, lng2: number): number; /** * Normalize ManagedObject geometry. * Named `{ coordinates: {lat, lng} }` becomes a Point. * Also accepts GeoJSON `geometry.coordinates` for Point ([lng, lat]). */ export declare function normalizeManagedGeometry(input: GeometryInputObject, options?: NormalizeGeometryOptions): NormalizedGeometry; export declare function pointInRing(lat: number, lng: number, ring: Float64Array): boolean; /** * Cheap point read for mass ingest — no NormalizedPoint / bbox allocation. * Returns null for non-points and invalid coordinates. */ export declare function readManagedPoint(input: GeometryInputObject): { lat: number; lng: number; } | null; /** * Soft normalize for ingest: returns null for invalid legacy points (kept in store, not indexed). * Strict GeoJSON geometries still throw on structural errors. */ export declare function tryNormalizeManagedGeometry(input: GeometryInputObject, options?: NormalizeGeometryOptions): NormalizedGeometry | null; //# sourceMappingURL=object-geometry.d.ts.map