/**
 * Event Registry with condition-based indexing
 * Replaces O(n) event scanning with O(1) filtered lookups
 * Ported from Python event_registry.py
 *
 * @deprecated Active event runtime is events/v2 registry + engine.
 * This file remains for compatibility paths and characterization coverage.
 */
import { Player } from '../../models/index.js';
import { EventResult, type EventMode } from '../../events/base.js';
/**
 * Event function signature
 */
export type RegisteredEventFunction = (player: Player, type?: 'message' | 'question' | 'answer' | 'check') => EventResult;
/**
 * Event registration info
 */
export interface EventInfo {
    id: string;
    func: RegisteredEventFunction;
    ageRange?: [number, number];
    requiresRelationship?: boolean;
    requiresJob?: boolean;
    dayOfYear?: number;
    mode?: EventMode;
}
/**
 * Event Registry - manages events with efficient filtering
 *
 * Events can be registered with conditions:
 * - ageRange: [minAge, maxAge]
 * - requiresRelationship: needs relationships to trigger
 * - requiresJob: needs player to have a job
 * - dayOfYear: specific day of year (1-365)
 */
export declare class EventRegistry {
    private _events;
    private _byAge;
    private _noConditions;
    /**
     * Register an event with optional conditions
     */
    register(eventId: string, func: RegisteredEventFunction, options?: {
        ageRange?: [number, number];
        requiresRelationship?: boolean;
        requiresJob?: boolean;
        dayOfYear?: number;
        mode?: EventMode;
    }): void;
    /**
     * Get events applicable to player's current state
     */
    getApplicableEvents(player: Player): EventInfo[];
    /**
     * Get number of registered events
     */
    count(): number;
    /**
     * List all registered event IDs
     */
    listEvents(): string[];
    /**
     * Clear all registered events
     */
    clear(): void;
}
/**
 * Register an event in the global registry
 */
export declare function registerEvent(eventId: string, func: RegisteredEventFunction, options?: {
    ageRange?: [number, number];
    requiresRelationship?: boolean;
    requiresJob?: boolean;
    dayOfYear?: number;
    mode?: EventMode;
}): void;
/**
 * Get applicable events from global registry
 */
export declare function getApplicableEvents(player: Player): EventInfo[];
/**
 * Get total registered event count
 */
export declare function eventCount(): number;
/**
 * Get the global registry instance
 */
export declare function getEventRegistry(): EventRegistry;
//# sourceMappingURL=EventRegistry.d.ts.map