///
import { CircularString, CompoundCurve, Curve, CurvePolygon, Geometry, GeometryCollection, GeometryFilter, GeometryType, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon, PolyhedralSurface, TIN, Triangle } from "@ngageoint/simple-features-js";
import { ByteReader } from "./ByteReader";
import { GeometryTypeInfo } from "./GeometryTypeInfo";
/**
* Well Known Binary reader
*/
export declare class GeometryReader {
/**
* 2.5D bit
*/
private static readonly WKB25D;
/**
* Byte Reader
*/
private reader;
constructor(reader: ByteReader);
constructor(buffer: Buffer);
/**
* Get the byte reader
* @return byte reader
*/
getByteReader(): ByteReader;
/**
* Read a geometry from the byte reader
*
* @param filter geometry filter
* @param containingType containing geometry type
* @return geometry
*/
read(filter: GeometryFilter, containingType?: GeometryType): Geometry;
/**
* Read the geometry type info
* @return geometry type info
*/
readGeometryType(): GeometryTypeInfo;
/**
* Read a Point
* @param hasZ has z flag
* @param hasM has m flag
* @return point
*/
readPoint(hasZ: boolean, hasM: boolean): Point;
/**
* Read a Line String
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return line string
*/
readLineString(filter: GeometryFilter, hasZ: boolean, hasM: boolean): LineString;
/**
* Read a Polygon
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return polygon
*/
readPolygon(filter: GeometryFilter, hasZ: boolean, hasM: boolean): Polygon;
/**
* Read a Multi Point
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return multi point
*/
readMultiPoint(filter: GeometryFilter, hasZ: boolean, hasM: boolean): MultiPoint;
/**
* Read a Multi Line String
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return multi line string
*/
readMultiLineString(filter: GeometryFilter, hasZ: boolean, hasM: boolean): MultiLineString;
/**
* Read a Multi Polygon
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return multi polygon
*/
readMultiPolygon(filter: GeometryFilter, hasZ: boolean, hasM: boolean): MultiPolygon;
/**
* Read a Geometry Collection
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return geometry collection
*/
readGeometryCollection(filter: GeometryFilter, hasZ: boolean, hasM: boolean): GeometryCollection;
/**
* Read a Circular String
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return circular string
*/
readCircularString(filter: GeometryFilter, hasZ: boolean, hasM: boolean): CircularString;
/**
* Read a Compound Curve
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return compound curve
*/
readCompoundCurve(filter: GeometryFilter, hasZ: boolean, hasM: boolean): CompoundCurve;
/**
* Read a Curve Polygon
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return curve polygon
*/
readCurvePolygon(filter: GeometryFilter, hasZ: boolean, hasM: boolean): CurvePolygon;
/**
* Read a Polyhedral Surface
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return polyhedral surface
*/
readPolyhedralSurface(filter: GeometryFilter, hasZ: boolean, hasM: boolean): PolyhedralSurface;
/**
* Read a TIN
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return TIN
*/
readTIN(filter: GeometryFilter, hasZ: boolean, hasM: boolean): TIN;
/**
* Read a Triangle
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return triangle
*/
readTriangle(filter: GeometryFilter, hasZ: boolean, hasM: boolean): Triangle;
/**
* Read a geometry from the byte reader
* @param buffer buffer
* @param filter geometry filter
* @param containingType containing geometry type
* @return geometry
*/
static readGeometry(buffer: Buffer, filter?: GeometryFilter, containingType?: GeometryType): Geometry;
/**
* Read a geometry from the byte reader
* @param reader byte reader
* @param filter geometry filter
* @param containingType containing geometry type
* @return geometry
*/
static readGeometryWithByteReader(reader: ByteReader, filter?: GeometryFilter, containingType?: GeometryType): Geometry;
/**
* Read the geometry type info
* @param reader byte reader
* @return geometry type info
*/
static readGeometryType(reader: ByteReader): GeometryTypeInfo;
/**
* Read a Point
* @param reader byte reader
* @param hasZ has z flag
* @param hasM has m flag
* @return point
*/
static readPoint(reader: ByteReader, hasZ: boolean, hasM: boolean): Point;
/**
* Read a Line String
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return line string
*/
static readLineString(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): LineString;
/**
* Read a Polygon
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return polygon
*/
static readPolygon(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): Polygon;
/**
* Read a Multi Point
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return multi point
*/
static readMultiPoint(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): MultiPoint;
/**
* Read a Multi Line String
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return multi line string
*/
static readMultiLineString(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): MultiLineString;
/**
* Read a Multi Polygon
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return multi polygon
*/
static readMultiPolygon(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): MultiPolygon;
/**
* Read a Geometry Collection
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return geometry collection
*/
static readGeometryCollection(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): GeometryCollection;
/**
* Read a Circular String
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return circular string
*/
static readCircularString(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): CircularString;
/**
* Read a Compound Curve
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return compound curve
*/
static readCompoundCurve(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): CompoundCurve;
/**
* Read a Curve Polygon
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return curve polygon
*/
static readCurvePolygon(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): CurvePolygon;
/**
* Read a Polyhedral Surface
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return polyhedral surface
*/
static readPolyhedralSurface(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): PolyhedralSurface;
/**
* Read a TIN
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return TIN
*/
static readTIN(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): TIN;
/**
* Read a Triangle
* @param reader byte reader
* @param filter geometry filter
* @param hasZ has z flag
* @param hasM has m flag
* @return triangle
*/
static readTriangle(reader: ByteReader, filter: GeometryFilter, hasZ: boolean, hasM: boolean): Triangle;
/**
* Filter the geometry
*
* @param filter geometry filter or null
* @param containingType containing geometry type
* @param geometry geometry or null
* @return true if passes filter
*/
private static filter;
}