import type { BasePlugin } from '../BasePlugin';
import * as THREE from 'three';
/** 插件数据 */
export type PluginData = {
    points: THREE.Vector3[];
};
/** 服务端数据 */
export type ServerData = {
    points: Array<{
        x: number;
        y: number;
        z: number;
    }>;
};
/** 插件配置 */
export interface Config {
    /** 线条数量 */
    lineCount?: number;
    /** 线条间距 */
    spacing?: number;
    /** 曲线分段数 */
    divisions?: number;
    /** 线宽 */
    lineWidth?: number;
    /** 线条颜色 */
    color?: number;
    /** 流光速度（单位距离/秒，值越大速度越快） */
    speed?: number;
    /** 流光过渡范围 */
    range?: number;
    /** 波动幅度 */
    waveAmp?: number;
    /** 波动频率 */
    waveFreq?: number;
    /** 粒子数量 */
    particleCount?: number;
    /** 粒子最大飘散距离 */
    maxDistance?: number;
    /** 子网格 Y 轴偏移 */
    subMeshYOffset?: number;
    /** 子网格宽度 */
    subMeshWidth?: number;
    /** 子网格底色 */
    subMeshColor?: number;
    /** 子网格基础透明度 */
    subMeshOpacity?: number;
}
/** 插件初始化参数 */
export interface Params {
    config?: Partial<Config>;
    initialState?: Partial<State>;
    /** 初始路径点 */
    points?: THREE.Vector3[];
}
/** 插件状态 */
export interface State extends BasePlugin.State {
    /** 插件是否启用 */
    enabled: boolean;
    /** 插件整体是否可见 */
    visible: boolean;
    /** 动画是否正在播放 */
    playing: boolean;
}
/** 插件事件 */
export interface EventMap extends BasePlugin.EventMap<State, PluginData> {
    /** 动画开始播放 */
    animationStart: () => void;
    /** 动画停止播放 */
    animationStop: () => void;
    /** 路径点更新 */
    pointsUpdate: (points: THREE.Vector3[]) => void;
}
