import { PolygonGeometry } from "../types";
import { Context } from "../context/context";
import { BufferGeometry, LineBasicMaterial, LineSegments, Mesh, MeshBasicMaterial, Object3D, Vector3 } from "three";
import { LineSegments2 } from "three/examples/jsm/lines/LineSegments2.js";
export interface LaneOptions {
    id: string;
    airHeight: number;
    fillColor: string;
    fillOpacity: number;
    secondColor: string;
    secondWidth: number;
    strokeColor: string;
    strokeOpacity: number;
    geometry: PolygonGeometry;
    double: boolean;
    dashed: boolean;
    deltaHeight?: number;
    userData: Record<string, any>;
}
export declare class Lane extends Object3D {
    private context;
    options: LaneOptions[];
    geometry?: BufferGeometry;
    material?: MeshBasicMaterial;
    lineMaterial?: LineBasicMaterial;
    lineGeometry?: BufferGeometry;
    Mesh?: Mesh;
    LineMesh?: LineSegments;
    doubleLines: LineSegments2[];
    constructor(context: Context, options: LaneOptions[]);
    initGeometry(): Promise<void>;
    initMaterial(): MeshBasicMaterial;
    initLineMaterial(): LineBasicMaterial;
    getBorderPoints(option: LaneOptions): Vector3[];
    initDoubleLine(): void;
    initLineGeometry(): void;
    createBorder(): LineSegments<BufferGeometry<import("three").NormalBufferAttributes>, LineBasicMaterial, import("three").Object3DEventMap>;
    init(): Promise<void>;
    dispose(): void;
}
