import { m as IObstacleVertex, b as IObstacle } from './CollisionResolver-CSgWsegP.js';
export { C as CollisionResolver, j as DEFAULT_AGENT_PARAMS, k as DEFAULT_COLLISION_CONFIG, D as DEFAULT_ORCA_CONFIG, E as EMPTY_COLLISION, a as IAvoidanceAgent, i as ICollisionResolverConfig, h as ICollisionResult, f as INeighborResult, I as IORCALine, d as IORCAResult, e as IORCASolver, c as IORCASolverConfig, g as ISpatialIndex, l as createCollisionResolver } from './CollisionResolver-CSgWsegP.js';
export { K as KDTree, O as ORCASolver, a as createKDTree, c as createORCASolver, l as linearProgram2, b as linearProgram3, s as solveORCALinearProgram } from './KDTree-BRpn7O8K.js';
import { IVector2 } from '@esengine/ecs-framework-math';
export { IVector2 } from '@esengine/ecs-framework-math';

/**
 * @zh 障碍物构建器
 * @en Obstacle Builder
 */

/**
 * @zh 从顶点数组创建障碍物链表
 * @en Create obstacle linked list from vertex array
 *
 * @param vertices - @zh 顶点数组（CCW 顺序）@en Vertex array (CCW order)
 * @param startId - @zh 起始顶点 ID @en Starting vertex ID
 */
declare function createObstacleVertices(vertices: readonly IVector2[], startId?: number): IObstacleVertex[];
/**
 * @zh 构建障碍物顶点的选项
 * @en Options for building obstacle vertices
 */
interface IBuildObstacleOptions {
    /**
     * @zh 是否使用 Y 轴向下的坐标系（如 Canvas/屏幕坐标）
     * @en Whether using Y-axis down coordinate system (like Canvas/screen coords)
     *
     * @zh 这会影响障碍物顶点顺序的判断
     * @en This affects obstacle vertex order detection
     *
     * @default false
     */
    yAxisDown?: boolean;
}
/**
 * @zh 从障碍物数组创建所有障碍物顶点
 * @en Create all obstacle vertices from obstacle array
 *
 * @zh 自动检测并纠正顶点顺序为 CCW（逆时针）
 * @en Automatically detects and corrects vertex order to CCW (counter-clockwise)
 *
 * @param obstacles - @zh 障碍物数组 @en Array of obstacles
 * @param options - @zh 构建选项 @en Build options
 */
declare function buildObstacleVertices(obstacles: readonly IObstacle[], options?: IBuildObstacleOptions): IObstacleVertex[];
/**
 * @zh 确保顶点按逆时针顺序排列
 * @en Ensure vertices are in counter-clockwise order
 */
declare function ensureCCW(vertices: IVector2[], yAxisDown?: boolean): IVector2[];

export { IObstacle, IObstacleVertex, buildObstacleVertices, createObstacleVertices, ensureCCW };
