/**
 * Messaging Style System
 *
 * This module provides dynamic, personality-driven messaging styles for NPC conversations.
 * Characters have base messaging traits that are modified per-relationship and by mood states.
 * Ported from Python messaging_style.py
 *
 * See docs/plans/2025-11-13-dynamic-messaging-styles-design.md for full design documentation.
 */
import { Person } from '../../models/Person.js';
import { MessagingModifierData, Player } from '../../models/Player.js';
export interface MessagingTraits {
    verbosity: number;
    inquisitiveness: number;
    expressiveness: number;
    responsiveness: number;
    openness: number;
    emoji_usage: number;
    formality: number;
    response_timing: number;
}
export interface MessagingPatterns {
    time_of_day_preference: 'morning' | 'night' | 'neutral';
    weekend_availability: number;
    typing_style: 'proper' | 'casual' | 'chaotic';
}
export type MoodState = 'great' | 'bad' | 'stressed' | 'neutral';
export declare const VALID_MOODS: readonly MoodState[];
/**
 * Messaging modifiers for a relationship.
 * These are applied on top of the character's base traits.
 * All trait modifiers are optional and default to 0 if not set.
 */
export interface MessagingModifiers {
    verbosity?: number;
    inquisitiveness?: number;
    expressiveness?: number;
    responsiveness?: number;
    openness?: number;
    emoji_usage?: number;
    formality?: number;
    response_timing?: number;
    mood_state?: MoodState;
    current_topic_engagement?: number;
}
export interface Relationship {
    messaging_modifiers?: MessagingModifiers;
    characterId?: string;
}
/**
 * Get relationship data for a character by their ID.
 * Returns the messaging modifiers object for that character.
 */
export declare function getRelationshipData(player: Player, characterId: string): MessagingModifierData | null;
/**
 * Ensure a character has relationship data initialized.
 * Creates new relationship data with messaging modifiers if it doesn't exist.
 */
export declare function ensureRelationshipData(player: Player, character: Person): MessagingModifierData;
/**
 * Generate random base messaging traits for a new character.
 */
export declare function initializeMessagingTraits(): MessagingTraits;
/**
 * Generate random messaging patterns for a new character.
 */
export declare function initializeMessagingPatterns(): MessagingPatterns;
/**
 * Initialize messaging modifiers for a new relationship.
 * Can apply relationship-type-specific starting modifiers.
 */
export declare function initializeRelationshipModifiers(character?: Person): MessagingModifiers;
/**
 * Get temporary mood-based adjustment for a specific trait.
 */
export declare function getMoodModifier(moodState: MoodState, trait: string): number;
/**
 * Calculate final trait values: base + relationship modifier + mood modifier.
 */
export declare function calculateEffectiveTraits(character: Person & {
    messaging_traits?: MessagingTraits;
}, relationship?: Relationship): MessagingTraits;
/**
 * Generate natural language style instructions for AI prompt based on calculated traits.
 */
export declare function getMessagingStylePrompt(character: Person & {
    messaging_traits?: MessagingTraits;
}, relationship?: Relationship): string;
/**
 * Update messaging modifiers based on conversation dynamics.
 * Called after each AI response to evolve the relationship's messaging style.
 */
export declare function updateConversationMessagingModifiers(relationship: Relationship, sentiment: 'positive' | 'negative' | 'neutral', conversationLength: number, topicEngagement?: number): void;
/**
 * Set character's mood state across all their relationships.
 * Mood affects all conversations with this character.
 */
export declare function setMoodState(character: Person, player: Player, mood: MoodState): void;
/**
 * Gradually return messaging modifiers toward neutral (0).
 * Called periodically (weekly recommended) to prevent permanent extremes.
 */
export declare function decayMessagingModifiers(relationship: Relationship, decayRate?: number): void;
type EventType = 'start_dating' | 'breakup' | 'become_best_friends' | 'major_fight' | 'got_promoted' | 'lost_job' | 'parent_died' | 'had_baby';
/**
 * Apply messaging modifier changes for major relationship/life events.
 */
export declare function applyEventModifiers(relationship: Relationship, eventType: EventType): void;
export interface DebugMessagingInfo {
    character_name: string;
    base_traits: MessagingTraits | undefined;
    relationship_modifiers: MessagingModifiers | undefined;
    effective_traits: MessagingTraits;
    mood_state: MoodState;
    prompt_instructions: string;
}
/**
 * Get detailed debug information about a character's messaging style.
 * Useful for testing and debugging.
 */
export declare function getDebugMessagingInfo(character: Person & {
    messaging_traits?: MessagingTraits;
}, relationship?: Relationship): DebugMessagingInfo;
/**
 * Update a character's mood based on their current life situation.
 * Called daily to reflect changes in stress and happiness.
 */
export declare function updateCharacterMood(character: Person, player: Player): MoodState;
/**
 * Update mood states for all characters based on their life situations.
 * Should be called daily during the game loop.
 */
export declare function updateDailyMoods(player: Player): void;
/**
 * Ensure a character has messaging traits initialized.
 * If they don't have traits, initialize them with random values.
 */
export declare function ensureMessagingTraits(character: Person & {
    messaging_traits?: MessagingTraits;
    messaging_patterns?: MessagingPatterns;
}): void;
/**
 * Get messaging traits for a character, initializing if needed.
 */
export declare function getMessagingTraits(character: Person & {
    messaging_traits?: MessagingTraits;
}): MessagingTraits;
export {};
//# sourceMappingURL=messagingStyle.d.ts.map