import type { NavMeshData } from "../nav/navMesh.js"; import type { Vec3 } from "../world/geometry.js"; /** * Returns boundary locations that are hidden from a threat. * @capability tactical-cover-points derive cover candidates from navigation-mesh boundaries */ export declare function coverPoints(mesh: NavMeshData, threatPos: Vec3, losBlocked: (a: Vec3, b: Vec3) => boolean): Vec3[]; /** Functions that score one candidate position; higher values are preferred. */ export interface TacticalPositionEvaluators { distanceTo?: (point: Vec3) => number; flankOf?: (point: Vec3) => number; retreatFrom?: (point: Vec3) => number; } /** Weights and a hard bound for tactical candidate scoring. */ export interface TacticalPositionWeights { distanceTo?: number; flankOf?: number; retreatFrom?: number; maxCandidates?: number; } /** A candidate position with its deterministic weighted tactical score. */ export interface ScoredPosition { point: Vec3; score: number; } /** * Score positions and retain at most `maxCandidates`, ordered highest score first. * @capability tactical-position-score rank bounded tactical positions with caller-defined weights */ export declare function scorePositions(points: readonly Vec3[], evaluators: TacticalPositionEvaluators, weights?: TacticalPositionWeights): ScoredPosition[];