import { Group, Vector3 } from "three";
import type { ViralViewerApi } from "../../../viral-viewer-api";
export interface LinePlacementResult {
    points: Vector3[];
    positions: Vector3[];
    spacing: number;
    groupId: string;
}
export declare class LinePlacementTool {
    private _viralViewerApi;
    private _editorGroup;
    active: boolean;
    spacing: number;
    onFinish: ((result: LinePlacementResult) => void) | null;
    private _catalogItemId;
    private _terrainMesh;
    private _points;
    private _previewGroup;
    private _previewLine;
    private _pointMarkers;
    private _previewObjects;
    private _cursorMarker;
    private _nextGroupId;
    private _onMouseDown;
    private _onMouseMove;
    private _onKeyDown;
    constructor(_viralViewerApi: ViralViewerApi, _editorGroup: Group);
    start(catalogItemId: string, spacing?: number): Promise<void>;
    startWithProfile(catalogItemId: string, points: Vector3[], spacing: number): Promise<void>;
    cancel(): void;
    finish(): LinePlacementResult | null;
    setSpacing(spacing: number): void;
    private _computePositionsAlongPath;
    private _bindListeners;
    private _unbindListeners;
    private _updatePreview;
    private _updateCursor;
    private _clearPreview;
    private _clearAll;
}
