/**
 * Interfaces for the game engine
 */
import { WorldModel, GameState } from './world-model';
import { ActionResponse, NarrativeResponse } from './llm';
export interface ActionResult {
    success: boolean;
    message: string;
    stateChanged: boolean;
    newState?: GameState;
}
export interface GameEngine {
    loadWorld(worldModelPath: string): Promise<void>;
    getCurrentState(): GameState;
    getWorldModel(): WorldModel;
    processAction(action: ActionResponse): ActionResult;
    saveGame(filename: string): Promise<void>;
    loadGame(filename: string): Promise<void>;
    getAvailableActions(): string[];
    getVisibleObjects(): string[];
    getVisibleCharacters(): string[];
    getCurrentRoomDescription(): string;
    start(): Promise<string>;
    end(): void;
}
export interface GameSession {
    engine: GameEngine;
    history: {
        playerInput: string;
        actionResponse: ActionResponse;
        actionResult: ActionResult;
        narrativeResponse: NarrativeResponse;
    }[];
    startTime: Date;
    lastInteractionTime: Date;
}
export interface ActionHandler {
    execute(gameState: GameState, worldModel: WorldModel, action: ActionResponse): ActionResult;
}
