///
import { EventEmitter } from "events";
import { Envelope, IEnvelope, Geometry } from 'ginkgoch-geom';
import Shx from '../shx/Shx';
import ShpHeader from './ShpHeader';
import Optional from '../base/Optional';
import ShpIterator from './ShpIterator';
import OpenerSync from '../base/OpenerSync';
import GeomParser from './parser/GeomParser';
import { FileStream } from 'ginkgoch-filestream';
import IQueryFilter from '../shared/IQueryFilter';
import { ShapefileType } from "../shared";
export default class Shp extends OpenerSync {
filePath: string;
_flag: string;
_fd: number | undefined;
_header: undefined | ShpHeader;
_shxHeader: undefined | ShpHeader;
_shpParser: Optional;
_shx: Optional;
_eventEmitter: EventEmitter | undefined;
_stream: FileStream | undefined;
constructor(filePath: string, flag?: string);
/**
* @override
*/
_open(): void;
/**
* @override
*/
_close(): void;
_readHeader(): ShpHeader;
envelope(): Envelope;
count(): number;
shapeType(): ShapefileType;
iterator(filter?: IQueryFilter): ShpIterator;
/**
* Gets shp record by id.
* @param id The record id. Starts from 1.
*/
get(id: number): Geometry | null;
records(filter?: IQueryFilter): Array;
static _matchFilter(filter: IQueryFilter | null | undefined, recordEnvelope: IEnvelope): boolean;
/**
* Remove record by a specific id.
* @param {number} id The shp record id. Starts from 1.
*/
remove(id: number): void;
/**
* Update geometry by a specific record id.
* @param id The record id to update. Starts from 1.
* @param geometry The geometry to update.
*/
update(id: number, geometry: Geometry): void;
push(geometry: Geometry): void;
_push(geometry: Geometry, id?: number): {
geomBuff: Buffer;
offset: number;
};
_invalidCache(): void;
static createEmpty(filePath: string, fileType: ShapefileType): Shp;
private _updateHeader;
private _updateShxHeader;
private get __fd();
private get __header();
private get __shpParser();
private get __shx();
private get __reader();
}
//# sourceMappingURL=Shp.d.ts.map