import type * as flatbuffers from 'flatbuffers';
import type { GeometryLayout } from 'ol/geom/Geometry.js';
import { Geometry } from '../flat-geobuf/geometry.js';
import { GeometryType } from '../flat-geobuf/geometry-type.js';
export interface IParsedGeometry {
    xy: number[];
    z?: number[];
    m?: number[];
    ends: number[];
    parts: IParsedGeometry[];
    type: GeometryType;
}
export interface ISimpleGeometry {
    getFlatCoordinates?(): number[];
    getType(): string;
    getLayout?: () => GeometryLayout;
}
export interface IPolygon extends ISimpleGeometry {
    getEnds(): number[];
}
export interface IMultiLineString extends ISimpleGeometry {
    getEnds(): number[];
}
export interface IMultiPolygon extends ISimpleGeometry {
    getEndss(): number[][];
    getPolygons(): IPolygon[];
}
export type ICreateGeometry = (geometry: Geometry | null, type: GeometryType) => ISimpleGeometry | undefined;
export declare function buildGeometry(builder: flatbuffers.Builder, parsedGeometry: IParsedGeometry): number;
export declare function flat(a: number[] | number[][], xy: number[], z: number[]): number[] | undefined;
export declare function parseGeometry(geometry: ISimpleGeometry, headerGeomType: GeometryType): IParsedGeometry;
export declare function pairFlatCoordinates(xy: Float64Array, z?: Float64Array): number[][];
export declare function toGeometryType(name?: string): GeometryType;
