/**
 * Game Types — Generalized
 *
 * Core type definitions for tactical game state.
 * Extracted from Trait Wars and generalized for any game project.
 */
export interface Position {
    x: number;
    y: number;
}
export interface GameUnit {
    id: string;
    name: string;
    characterType: string;
    team: 'player' | 'enemy';
    position: Position;
    health: number;
    maxHealth: number;
    movement: number;
    attack: number;
    defense: number;
    traits: UnitTrait[];
}
export interface UnitTrait {
    name: string;
    currentState: string;
    states: string[];
    cooldown: number;
}
export interface BoardTile {
    terrain: string;
    unitId?: string;
    isBlocked?: boolean;
}
export type GamePhase = 'observation' | 'planning' | 'execution' | 'tick';
export interface GameState {
    board: BoardTile[][];
    units: Record<string, GameUnit>;
    currentPhase: GamePhase;
    currentTurn: number;
    activeTeam: 'player' | 'enemy';
    selectedUnitId?: string;
    validMoves: Position[];
    attackTargets: Position[];
}
export type GameAction = {
    type: 'SELECT_UNIT';
    unitId: string;
} | {
    type: 'MOVE_UNIT';
    from: Position;
    to: Position;
} | {
    type: 'ATTACK';
    attackerId: string;
    targetId: string;
} | {
    type: 'END_TURN';
} | {
    type: 'EXECUTE_TRAITS';
};
/**
 * Create the initial game state with board and units.
 *
 * @param {number} width - Board width in tiles
 * @param {number} height - Board height in tiles
 * @param {GameUnit[]} units - Initial units to place on the board
 * @param {string} [defaultTerrain] - Default terrain type for empty tiles
 * @returns {GameState} The initialized game state
 */
export declare function createInitialGameState(width: number, height: number, units: GameUnit[], defaultTerrain?: string): GameState;
/**
 * Calculate valid movement positions for a unit.
 *
 * Returns all tiles within the unit's movement range that are
 * not blocked and don't contain other units.
 *
 * @param {GameState} state - Current game state
 * @param {string} unitId - ID of the unit to calculate moves for
 * @returns {Position[]} Array of valid move positions
 */
export declare function calculateValidMoves(state: GameState, unitId: string): Position[];
/**
 * Calculate valid attack targets for a unit.
 *
 * Returns adjacent positions containing enemy units that can be attacked.
 *
 * @param {GameState} state - Current game state
 * @param {string} unitId - ID of the unit to calculate targets for
 * @returns {Position[]} Array of valid attack target positions
 */
export declare function calculateAttackTargets(state: GameState, unitId: string): Position[];
