/**
 * Super Fight UI — Terminal takeover for the multiplayer ASCII fighting game.
 *
 * Clears and takes over the outer TUI's alternate screen, intercepts all
 * keyboard input, runs the game loop, and bridges the headless game engine
 * with terminal rendering and network I/O.
 */
import type { CollabClient } from '../../app/collab/collab-client.js';
import type { PeerInfo } from '../../app/collab/types.js';
interface TUILike {
    addInputListener(listener: (data: string) => {
        consume: boolean;
    } | undefined): () => void;
    removeInputListener(listener: (data: string) => {
        consume: boolean;
    } | undefined): void;
    requestRender(force?: boolean): void;
    /** Suppress TUI rendering while a fullscreen takeover is active */
    renderSuspended: boolean;
    terminal: {
        columns: number;
        rows: number;
        write(data: string): void;
    };
}
export interface SuperFightUIOptions {
    ui: TUILike;
    client: CollabClient;
    localPeerId: string;
    localDisplayName: string;
    peers: Map<string, PeerInfo>;
}
export declare class SuperFightUI {
    private ui;
    private client;
    private localPeerId;
    private localDisplayName;
    private gameState;
    private gameLoop;
    private removeInputListener;
    private inputListener;
    private resizeHandler;
    private running;
    private paused;
    private localAction;
    /** Set of target IDs we've already registered a hit for this attack */
    private hitTargets;
    private titleScreenTimeout;
    private showingTitle;
    private killFeed;
    /** Tick counter for respawn invincibility flash */
    private invincibilityTicks;
    /** Callback fired when game stops (for cleanup by InteractiveMode) */
    onStop?: () => void;
    constructor(opts: SuperFightUIOptions);
    start(): void;
    stop(): void;
    private showTitleAndStart;
    private startGameLoop;
    private tick;
    private handleInput;
    private applyLocalInput;
    /** Called by the chat handler when a game message arrives */
    handleGameMessage(peerId: string, text: string): void;
    private handleRemoteState;
    /** Add a peer that joined the collab room during the game */
    addPeer(peerId: string, displayName: string): void;
    /** Remove a peer that left the collab room during the game */
    removePeer(peerId: string): void;
    private addKillFeedEntry;
    private tickCount;
    private renderGameFrame;
    private renderTitleScreen;
    private checkSize;
    private handleResize;
    private renderSizeWarning;
    get isRunning(): boolean;
}
export {};
//# sourceMappingURL=super-fight-ui.d.ts.map