import { SeededRandom } from '../utils/random'; import { ITimeSystem } from '../interfaces'; export interface TimeSystemState { currentDay: number; currentSeason: string; gameYear: number; timeBasedEvents: Map; } export interface TimeBasedChain { definition: string; stage: number; startDay: number; completedStages: Set; nextEventTime?: number; nextEventTemplate?: string; } export interface SeasonalData { templates: string[]; modifiers: { health?: number; morale?: number; trade?: number; travel?: number; }; } export interface TimeInfo { day: number; season: string; year: number; seasonalModifiers: { [key: string]: any; }; } export interface TimeEvent { type: 'seasonal_change' | 'time_based_chain' | 'seasonal_random'; chainId?: string; season?: string; day: number; template?: any; stage?: number; stageDay?: number; chainStage?: number; } export declare class TimeSystem implements ITimeSystem { private state; private seasonalEvents; private timeBasedEventChains; private rng; constructor(rng?: SeededRandom); /** * Initialize seasonal event data */ private initializeSeasonalEvents; /** * Initialize time-based chain definitions */ private initializeTimeBasedChains; /** * Get current time information */ getCurrentTime(): TimeInfo; /** * Advance game time by one day */ advanceDay(): TimeEvent[]; /** * Advance game time by multiple days */ advanceDays(days: number): TimeEvent[]; /** * Update season if needed */ private updateSeason; /** * Check for time-based chain events */ private checkTimeBasedEvents; /** * Check for random seasonal events */ private checkSeasonalRandomEvents; /** * Start a time-based event chain */ startTimeBasedChain(chainName: string): boolean; /** * Get all active time-based chains */ getActiveTimeChains(): any[]; /** * End a time-based chain */ endTimeBasedChain(chainId: string): void; /** * Set the current time (for loading saved games) */ setTime(day: number, season: string): void; /** * Get time system state for saving */ getState(): TimeSystemState; /** * Load time system state */ loadState(state: Partial): void; /** * Add custom seasonal event data */ addSeasonalData(season: string, data: SeasonalData): void; /** * Add custom time-based chain */ addTimeBasedChain(name: string, chain: any): void; /** * Get seasonal data for a specific season */ getSeasonalData(season: string): SeasonalData | null; /** * Get time system statistics */ getStats(): { currentDay: number; currentSeason: string; activeChains: number; availableChains: number; seasonsConfigured: number; }; } //# sourceMappingURL=TimeSystem.d.ts.map