import { DTVector3 } from "../../interface/model";
import { WebglCreator } from "../../webgl";
import { Mesh, MeshBasicMaterial, Vector3 } from "three";
import poiPlugin from "./poi";
import { CSS3DObject, CSS3DSprite } from "three/examples/jsm/renderers/CSS3DRenderer";
export type PathOptions = {
    speed: number;
    radius: number;
    tubularSegments: number;
    radialSegments: number;
    closed: boolean;
    texture: string;
    color: string;
    indent: number;
    repeatY: number;
    offsetX: number;
    offsetY: number;
    transparent: boolean;
    curveType: "centripetal" | "chordal" | "catmullrom";
    tension: number;
    depthTest: boolean;
};
export type EditOptions = PathOptions & {
    point?: string | ((position: DTVector3, poiInstance: ReturnType<ReturnType<typeof poiPlugin>>) => CSS3DObject | CSS3DSprite);
};
export type TransitionOptions = {
    speed: number;
    duration: number;
    easing: (amount: number) => number;
    process: (type: "to" | "back", position: DTVector3) => void;
};
declare const _default: import("../../interface/meta").DefinedPlugin<undefined, {
    readonly list: Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>[];
    readonly defaultPathData: (PathOptions & {
        data: DTVector3[];
    })[];
    create: (points: DTVector3[], options?: Partial<PathOptions>) => Mesh<{
        type: string;
        parameters: {
            path: import("three").Curve<any>;
            tubularSegments: number;
            radius: number;
            radialSegments: number;
            closed: boolean;
        };
        tangents: Vector3[];
        normals: Vector3[];
        binormals: Vector3[];
    } & import("three").BufferGeometry<import("three").NormalBufferAttributes>, MeshBasicMaterial, import("three").Object3DEventMap>;
    transition: (points: DTVector3[], defaultOptions?: Partial<TransitionOptions & EditOptions>) => {
        readonly points: DTVector3[];
        readonly line: Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap> | undefined;
        to: (points: DTVector3[] | DTVector3, options?: Partial<TransitionOptions>) => Promise<void>;
        back: (step: number, options?: Partial<TransitionOptions>) => Promise<void>;
    };
    hide: (line: Mesh | DTVector3[]) => void;
    show: (line: Mesh | DTVector3[]) => void;
    remove: (line: Mesh | DTVector3[]) => void;
    edit: (points: DTVector3[], options?: Partial<EditOptions>) => {
        readonly points: DTVector3[];
        readonly line: Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>;
        end: () => void;
        remove: (index: number) => void;
        insert: (index: number, position: DTVector3) => void;
        add: (position: DTVector3) => void;
    };
    clear: () => void;
}, WebglCreator>;
export default _default;
