import { type GeoJsonLineString, GeometryLineBase as Base, type GeometryLineSource as GeometryLineSourceBase, type GeometryLineTypes as GeometryLineTypesBase } from "@tai-kun/surrealdb/encodable-datatypes";
import { type Coord } from "../_internals/geometry";
import { GeometryPoint, type GeometryPointBase, type GeometryPointTypes } from "./geometry-point";
type PointBase = new (source: any) => GeometryPointBase<GeometryPointTypes<Coord>>;
export type GeometryLineTypes<TPoint extends PointBase = PointBase> = GeometryLineTypesBase<TPoint>;
export type GeometryLineSource<TTypes extends GeometryLineTypes = GeometryLineTypes> = GeometryLineSourceBase<TTypes>;
export type { GeoJsonLineString };
export declare class GeometryLineBase<TTypes extends GeometryLineTypes> extends Base<TTypes> {
    line: [
        InstanceType<TTypes["Point"]>,
        InstanceType<TTypes["Point"]>,
        ...InstanceType<TTypes["Point"]>[]
    ];
    get coordinates(): [
        InstanceType<TTypes["Point"]>["coordinates"],
        InstanceType<TTypes["Point"]>["coordinates"],
        ...InstanceType<TTypes["Point"]>["coordinates"][]
    ];
    set coordinates(source: GeometryLineSource<TTypes>);
    clone(): this;
    equals(other: unknown): boolean;
    isClosed(): boolean;
    toClosed(): this;
    close(): void;
}
/**
 * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/data/geometry-line)
 */
export declare class GeometryLine extends GeometryLineBase<GeometryLineTypes<typeof GeometryPoint>> {
    static readonly Point: typeof GeometryPoint;
    constructor(source: GeometryLineSource<typeof GeometryLine>);
}
//# sourceMappingURL=geometry-line.d.ts.map