import { ActionBattleAoeMask, ActionBattleSoftTargetingOptions } from './types'; import { ActionBattleResolvedDirection } from './attack-input'; export interface ParsedAoeMask { width: number; height: number; centerX: number; centerY: number; cells: Array<{ dx: number; dy: number; }>; } export interface ActionBattleTilePoint { x: number; y: number; } export interface ActionBattleTileSize { width: number; height: number; } export declare const parseAoeMask: (mask: ActionBattleAoeMask | undefined) => ParsedAoeMask; export declare const manhattanDistance: (a: { x: number; y: number; }, b: { x: number; y: number; }) => number; export declare const getActionBattleTileSize: (map: any) => ActionBattleTileSize; export declare const getActionBattleEntityTile: (entity: any, tileSize: ActionBattleTileSize) => ActionBattleTilePoint; export declare const resolveActionBattleAoeCells: (targetTile: ActionBattleTilePoint, mask: ActionBattleAoeMask | undefined) => ActionBattleTilePoint[]; /** * Find a legal cast center whose area mask covers the desired target tile. * Prefer centering the mask on the target, then the closest legal center. */ export declare const resolveActionBattleAoeTarget: (origin: ActionBattleTilePoint, desiredTarget: ActionBattleTilePoint, range: number, mask: ActionBattleAoeMask | undefined) => ActionBattleTilePoint | null; type SoftTargetEntity = { id?: string; x: () => number; y: () => number; hitbox?: () => { w?: number; h?: number; }; battleAi?: { getTarget?: () => SoftTargetEntity | null; }; }; export interface ActionBattleSoftTargetResult { target: T; direction: ActionBattleResolvedDirection; score: number; distance: number; } export declare const directionToActionBattleTarget: (source: SoftTargetEntity, target: SoftTargetEntity) => ActionBattleResolvedDirection; /** * Pick a contextual melee target without moving the player. * * Manual facing remains the strongest signal. Distance and enemies currently * focused on the player break ties so crowded fights remain readable. */ export declare const resolveActionBattleSoftTarget: (source: SoftTargetEntity, candidates: T[], direction: ActionBattleResolvedDirection, options?: ActionBattleSoftTargetingOptions) => ActionBattleSoftTargetResult | null; export {};