/** * EVENT INBOX REPOSITORY * * Manages the event queue for "autonomous" NPC actions. * Events are pushed by internal systems and polled by the frontend. */ import Database from 'better-sqlite3'; export type EventType = 'npc_action' | 'combat_update' | 'world_change' | 'quest_update' | 'time_passage' | 'environmental' | 'system'; export type SourceType = 'npc' | 'combat' | 'world' | 'system' | 'scheduler'; export interface GameEvent { id?: number; eventType: EventType; payload: Record; sourceType?: SourceType; sourceId?: string; priority?: number; createdAt?: string; consumedAt?: string | null; expiresAt?: string | null; } export declare class EventInboxRepository { private db; constructor(db: Database.Database); /** * Push an event to the inbox */ push(event: Omit): number; /** * Poll for unread events, ordered by priority then time */ poll(limit?: number): GameEvent[]; /** * Mark events as consumed (read) */ markConsumed(ids: number[]): number; /** * Poll and immediately mark as consumed (atomic) */ pollAndConsume(limit?: number): GameEvent[]; /** * Get recent event history (including consumed) */ getHistory(options?: { limit?: number; eventType?: EventType; sourceType?: SourceType; includeConsumed?: boolean; }): GameEvent[]; /** * Clean up old consumed events */ cleanup(olderThanDays?: number): number; /** * Get count of pending (unconsumed) events */ getPendingCount(): number; private rowToEvent; } //# sourceMappingURL=event-inbox.repo.d.ts.map