/**
 * Tool Processor for AI Conversation Tools
 *
 * Processes tool calls from AI responses and converts them into:
 * - Immediate effects (affinity changes, mood updates)
 * - Pending game events (activities, dates, emotional moments)
 * - Stat changes for player/character
 *
 * Extensibility:
 * - Add new tool handlers by creating a process* function
 * - Register in the processToolCall switch statement
 * - Define effects in ToolCallResult interface
 */
import { Player, Person, PendingConversationEvent, PendingEventType } from '../../models/index.js';
import { MoodType, ActivityType } from './tools.js';
export type { PendingConversationEvent, PendingEventType };
/**
 * Announcement to show as an official game popup
 */
export interface ToolAnnouncement {
    /** Title for the announcement popup */
    title: string;
    /** Message body */
    message: string;
    /** Optional image URL */
    image?: string;
    /** Optional category for styling */
    category?: 'social' | 'romantic' | 'gift' | 'activity' | 'emotional';
}
/**
 * Result of processing a tool call
 */
export interface ToolCallResult {
    /** The message text to display */
    message: string;
    /** Sentiment for affinity calculation */
    sentiment: 'positive' | 'negative' | 'neutral';
    /** Character's mood during this message */
    mood?: MoodType;
    /** Direct affinity change (applied immediately) */
    affinityChange?: number;
    /** Direct familiarity change */
    familiarityChange?: number;
    /** Stat changes for player character */
    playerStatChanges?: Partial<{
        social: number;
        happiness: number;
        stress: number;
        energy: number;
        money: number;
    }>;
    /** Event to queue for game loop processing */
    pendingEvent?: PendingConversationEvent;
    /** Additional data to store on the message */
    messageData?: Record<string, unknown>;
    /** Whether this tool use should be recorded for cooldown */
    recordForCooldown?: boolean;
    /** Announcement to show as an official game popup/notification */
    announcement?: ToolAnnouncement;
}
/**
 * Process a tool call from the AI and return the result
 */
export declare function processToolCall(toolName: string, args: Record<string, unknown>, character: Person, player: Player): ToolCallResult;
/**
 * Get costs for an activity type
 */
declare function getActivityCosts(activityType: ActivityType): {
    energy: number;
    money?: number;
};
/**
 * Calculate game hour for cooldown tracking
 */
declare function calculateGameHour(player: Player): number;
export { calculateGameHour, getActivityCosts, };
//# sourceMappingURL=tool_processor.d.ts.map