import { GeometryMultiLineBase as Base, type GeometryMultiLineSource as GeometryMultiLineSourceBase, type GeometryMultiLineTypes as GeometryMultiLineTypesBase } from "@tai-kun/surrealdb/decodeonly-datatypes";
import { type Coord } from "../_internals/geometry";
import { type GeoJsonLineString, GeometryLine, type GeometryLineBase, type GeometryLineTypes } from "./geometry-line";
import type { GeometryPointBase, GeometryPointTypes } from "./geometry-point";
import { CBOR_TAG_GEOMETRY_MULTILINE, type Encodable } from "./spec";
type PointBase = new (source: any) => GeometryPointBase<GeometryPointTypes<Coord>>;
type LineBase = new (source: any) => GeometryLineBase<GeometryLineTypes<PointBase>>;
export type GeometryMultiLineTypes<TLine extends LineBase = LineBase> = GeometryMultiLineTypesBase<TLine>;
export type GeometryMultiLineSource<TTypes extends GeometryMultiLineTypes = GeometryMultiLineTypes> = GeometryMultiLineSourceBase<TTypes>;
export type GeoJsonMultiLineString = {
    type: "MultiLineString";
    coordinates: GeoJsonLineString["coordinates"][];
};
export declare class GeometryMultiLineBase<TTypes extends GeometryMultiLineTypes = GeometryMultiLineTypes> extends Base<TTypes> implements Encodable {
    get coordinates(): InstanceType<TTypes["Line"]>["coordinates"][];
    toCBOR(): [tag: typeof CBOR_TAG_GEOMETRY_MULTILINE, value: this["lines"]];
    toJSON(): GeoJsonMultiLineString;
    toSurql(): string;
    toPlainObject(): {
        type: "MultiLineString";
        lines: readonly InstanceType<TTypes["Line"]>[];
    };
}
/**
 * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/data/geometry-multi-line)
 */
export declare class GeometryMultiLine extends GeometryMultiLineBase<GeometryMultiLineTypes<typeof GeometryLine>> {
    static readonly Line: typeof GeometryLine;
    constructor(source: GeometryMultiLineSource<typeof GeometryMultiLine>);
}
export {};
//# sourceMappingURL=geometry-multiline.d.ts.map