import mongoose from 'mongoose';
import { GeoJSON as GeoJSON$1, Point as Point$1, MultiPoint as MultiPoint$1, LineString as LineString$1, MultiLineString as MultiLineString$1, Polygon as Polygon$1, MultiPolygon as MultiPolygon$1, Geometry as Geometry$1, GeometryCollection as GeometryCollection$1, Feature as Feature$1, FeatureCollection as FeatureCollection$1 } from 'geojson';

/**
 * GeoJSON Schemas for Mongoose
 *
 * rough GeoJSON schemas for use with mongoose schema creation
 *
 * Based on GeoJSON Spec @ http://geojson.org/geojson-spec.html
 *
 * Created by Ben Dalton (ben@rideamigos) on 3/27/14.
 * Copyright RideAmigos (http://rideamigos.com)
 * Updates and maintenance by Josh Kopecek (josh@echoes.xyz)
 *
 * */

declare class GeoJSON extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(geojson: any): GeoJSON$1;
}
declare class Point extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(point: any): Point$1;
}
declare class MultiPoint extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(multipoint: any): MultiPoint$1;
}
declare class LineString extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(linestring: any): LineString$1;
}
declare class MultiLineString extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(multilinestring: any): MultiLineString$1;
}
declare class Polygon extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(polygon: any): Polygon$1;
}
declare class MultiPolygon extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(multipolygon: any): MultiPolygon$1;
}
declare class Geometry extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(geometry: any): Geometry$1;
}
declare class GeometryCollection extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(geometrycollection: any): GeometryCollection$1;
}
declare class Feature extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(feature: any): Feature$1;
}
declare class FeatureCollection extends mongoose.SchemaType {
    static schemaName: string;
    constructor(key: string, options?: any);
    cast(featurecollection: any): FeatureCollection$1;
}

export { Feature, FeatureCollection, GeoJSON, Geometry, GeometryCollection, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon };
