export type Coord = typeof Number | typeof String | (new (arg: any) => any);
export type CoordArg<T extends Coord> = T extends typeof Number | typeof String ? Parameters<T>[0] : T extends new (arg: infer A) => any ? A : never;
export type CoordValue<T extends Coord> = T extends typeof Number | typeof String ? ReturnType<T> : T extends new (arg: any) => infer B ? B : never;
type GeoJsonType = "Point" | "LineString" | "Polygon" | "MultiPoint" | "MultiLineString" | "MultiPolygon" | "GeometryCollection";
export interface Geometry {
    readonly type: GeoJsonType;
}
export declare function coord<T extends Coord>(Coord: T, argOrValue: CoordArg<T> | CoordValue<T>): CoordValue<T>;
export declare function map<T extends readonly unknown[], U>(list: T, func: (item: T[number]) => U): {
    -readonly [K in keyof T]: U;
};
export declare function isGeometryCollection<T = any>(o: unknown): o is T;
export declare function isGeometryLine<T = any>(o: unknown): o is T;
export declare function isGeometryMultiLine<T = any>(o: unknown): o is T;
export declare function isGeometryMultiPoint<T = any>(o: unknown): o is T;
export declare function isGeometryMultiPolygon<T = any>(o: unknown): o is T;
export declare function isGeometryPoint<T = any>(o: unknown): o is T;
export declare function isGeometryPolygon<T = any>(o: unknown): o is T;
export {};
//# sourceMappingURL=geometry.d.ts.map