/**
 * Super Fight — Multiplayer ASCII fighting game engine.
 *
 * Headless game logic: state, physics, hit detection, sprite rendering,
 * frame composition, and network message encoding. Zero TUI dependencies.
 */
export declare const VIEWPORT_W = 80;
export declare const VIEWPORT_H = 40;
export declare const GROUND_Y = 34;
export declare const GRAVITY = 0.8;
export declare const JUMP_VY = -8;
export declare const MOVE_SPEED = 2;
export declare const PUNCH_RANGE = 2;
export declare const KICK_RANGE = 3;
export declare const DAMAGE = 10;
export declare const MAX_HEALTH = 100;
export declare const RESPAWN_TIME = 3000;
export declare const TICK_MS = 66;
export declare const SPRITE_W = 5;
export declare const SPRITE_H = 5;
export declare const GAME_MSG_PREFIX = "\u0001GAME:";
/** 8 bright ANSI colors for up to 8 players (wraps if more) */
export declare const PLAYER_COLORS: readonly ["\u001B[91m", "\u001B[92m", "\u001B[93m", "\u001B[94m", "\u001B[95m", "\u001B[96m", "\u001B[97m", "\u001B[33m"];
export declare const RESET = "\u001B[0m";
export type GameAction = 'idle' | 'walk-left' | 'walk-right' | 'jump' | 'crouch' | 'punch' | 'kick' | 'hit' | 'dead';
export type Facing = 'left' | 'right';
export interface PlayerState {
    x: number;
    y: number;
    vy: number;
    action: GameAction;
    facing: Facing;
    health: number;
    kills: number;
    respawnTimer: number;
    color: string;
    displayName: string;
    /** Tick counter for action animation (punch/kick last a few ticks) */
    actionTimer: number;
}
export type GameState = Map<string, PlayerState>;
export type GameMessage = {
    type: 'start';
} | {
    type: 'state';
    peerId: string;
    x: number;
    y: number;
    vy: number;
    action: GameAction;
    facing: Facing;
    health: number;
    kills: number;
} | {
    type: 'hit';
    targetId: string;
    damage: number;
} | {
    type: 'quit';
};
export declare function encodeGameMsg(msg: GameMessage): string;
export declare function decodeGameMsg(text: string): GameMessage | null;
export declare function createPlayer(displayName: string, colorIndex: number, x?: number): PlayerState;
/**
 * Returns a 5-line array of the ASCII fighter sprite for the given pose.
 * All sprites are exactly SPRITE_W (5) chars wide.
 * `facing` flips the sprite horizontally.
 */
export declare function renderSprite(action: GameAction, facing: Facing): string[];
/**
 * Renders a complete game frame as an array of VIEWPORT_H strings,
 * each exactly VIEWPORT_W chars. No ANSI colors — caller wraps with color.
 * Returns { lines, colors } where colors[row][col] is the ANSI color code.
 */
export declare function renderFrame(state: GameState, viewportW?: number, viewportH?: number): string[];
/**
 * Update a single player's physics for one tick.
 * `dt` is the number of ticks elapsed (usually 1).
 */
export declare function tickPlayer(player: PlayerState, dt?: number): void;
/**
 * Check whether `attacker` is currently hitting `target`.
 * Returns true if the attacker is punching/kicking and the target is in range.
 */
export declare function checkHit(attacker: PlayerState, target: PlayerState): boolean;
/**
 * Apply damage to a target. Returns true if the hit killed them.
 */
export declare function applyDamage(target: PlayerState, amount: number): boolean;
//# sourceMappingURL=super-fight.d.ts.map