/** * QuestManager.ts * * Quest lifecycle: creation, objectives, prerequisites, * state tracking, and completion logic. * * @module gameplay */ export type QuestStatus = 'locked' | 'available' | 'active' | 'completed' | 'failed'; export type ObjectiveType = 'collect' | 'kill' | 'reach' | 'interact' | 'escort' | 'custom'; export interface QuestObjective { id: string; type: ObjectiveType; description: string; target: string; required: number; current: number; completed: boolean; optional: boolean; } export interface QuestDef { id: string; name: string; description: string; category: string; status: QuestStatus; objectives: QuestObjective[]; prerequisites: string[]; level: number; timeLimit: number; elapsed: number; repeatable: boolean; completionCount: number; } export declare class QuestManager { private quests; private listeners; addQuest(config: Omit & { status?: QuestStatus; }): QuestDef; getQuest(id: string): QuestDef | undefined; removeQuest(id: string): boolean; activate(id: string): boolean; abandon(id: string): boolean; updateObjective(questId: string, objectiveId: string, progress: number): boolean; update(dt: number): void; private checkAvailability; recheckAll(): void; onEvent(listener: (event: string, quest: QuestDef) => void): void; private emit; getByStatus(status: QuestStatus): QuestDef[]; getByCategory(category: string): QuestDef[]; getQuestCount(): number; getActiveCount(): number; getCompletedCount(): number; getProgress(id: string): number; } //# sourceMappingURL=QuestManager.d.ts.map