/**
 * Core interfaces for the interactive fiction world model
 */
export interface Room {
    id: string;
    name: string;
    description: string;
    exits: Exit[];
    objects: string[];
    characters: string[];
}
export interface Exit {
    direction: string;
    targetRoomId: string;
    description?: string;
    isLocked?: boolean;
    keyId?: string;
}
export interface GameObject {
    id: string;
    name: string;
    description: string;
    traits: string[];
    states: Record<string, boolean>;
    containedObjects?: string[];
    allowedActions: string[];
}
export interface Character {
    id: string;
    name: string;
    description: string;
    dialogue: Record<string, string>;
    inventory: string[];
    defaultResponse: string;
    mood?: string;
}
export interface Action {
    name: string;
    patterns: string[];
    requiresObject?: boolean;
    requiresTarget?: boolean;
    handler: string;
}
export interface GameState {
    currentRoomId: string;
    inventory: string[];
    visitedRooms: string[];
    flags: Record<string, boolean>;
    counters: Record<string, number>;
}
export interface WorldModel {
    title: string;
    author: string;
    version: string;
    introduction: string;
    rooms: Record<string, Room>;
    objects: Record<string, GameObject>;
    characters: Record<string, Character>;
    actions: Record<string, Action>;
    initialState: GameState;
}
