/**
 * NPC-Initiated Messages
 *
 * NPCs can text the player first based on realistic triggers:
 * - Birthday: close NPCs wish happy birthday
 * - Time gap: high-affinity NPCs check in after days without contact
 * - Morning text: romantic partners send morning messages
 *
 * Constraints:
 * - Max 1 NPC-initiated message per game day
 * - Only during appropriate hours (7am-10pm)
 * - Per-character cooldown of 7 days between initiatives
 * - Skip if the character has unanswered messages (player hasn't replied)
 */
import type { Player } from '../../models/Player.js';
import type { Person } from '../../models/Person.js';
import type { PlayerSession } from '../../game/PlayerSession.js';
export interface NPCTrigger {
    type: 'birthday' | 'time_gap' | 'morning_text';
    character: Person;
    prompt: string;
    priority: number;
}
/**
 * Check if an hour is appropriate for NPC-initiated messages.
 * NPCs should only text during reasonable hours: 7am to 10pm.
 */
export declare function isAppropriateHour(hour: number): boolean;
/**
 * Detect triggers that would cause an NPC to initiate a message.
 * Returns an array of triggers sorted by priority (highest first).
 */
export declare function detectNPCTriggers(player: Player, character: Person): NPCTrigger[];
/**
 * Check and fire NPC-initiated messages during the hour tick.
 *
 * Constraints:
 * - Max 1 NPC-initiated message per game day
 * - Only during appropriate hours (7am-10pm)
 * - Per-character cooldown: at least 7 days between initiatives from same NPC
 * - Skip if the character's last message is unanswered by the player
 * - Dead characters are skipped
 */
export declare function checkNPCInitiatedMessages(player: Player, session: PlayerSession): Promise<void>;
/**
 * Clear NPC initiative state for a player (e.g., on disconnect).
 */
export declare function clearNPCInitiativeState(playerId: string): void;
//# sourceMappingURL=npc_initiative.d.ts.map