/**
 * AI Conversation Tools for BaoLife
 *
 * Defines function calling tools that allow AI characters to take
 * meaningful actions during conversations, triggering game events.
 *
 * Architecture:
 * - Tools are defined as OpenAI-compatible function schemas
 * - Each tool maps to a handler in tool_processor.ts
 * - Tools can trigger pending events processed by the game loop
 *
 * Extensibility:
 * - Add new tools by: 1) defining schema here, 2) adding handler in tool_processor.ts
 * - Tool categories help organize related functionality
 */
import type { ChatCompletionTool } from 'openai/resources/chat/completions';
export type ToolCategory = 'communication' | 'social' | 'romantic' | 'emotional' | 'informational';
export interface ToolMetadata {
    name: string;
    category: ToolCategory;
    description: string;
    /** Minimum affinity required to use this tool */
    minAffinity?: number;
    /** Relationship types that can use this tool */
    allowedRelationships?: string[];
    /** Whether this tool can trigger a game event */
    canTriggerEvent: boolean;
    /** Cooldown in game hours before character uses this again */
    cooldownHours?: number;
}
export declare const toolMetadata: Record<string, ToolMetadata>;
export declare const MOOD_OPTIONS: readonly ["happy", "flirty", "playful", "excited", "nervous", "sad", "angry", "tired", "worried", "neutral"];
export declare const FEELING_TYPES: readonly ["love", "gratitude", "concern", "hurt", "excitement", "fear", "jealousy", "longing", "pride", "disappointment"];
export declare const ACTIVITY_TYPES: readonly ["coffee", "movie", "walk", "dinner", "study", "workout", "shopping", "gaming", "cooking", "concert", "museum", "picnic", "beach", "hiking", "clubbing"];
export declare const DATE_TYPES: readonly ["casual", "romantic", "adventurous", "cozy", "fancy"];
export declare const NEWS_TYPES: readonly ["achievement", "problem", "change", "gossip", "random", "career", "health"];
export type MoodType = typeof MOOD_OPTIONS[number];
export type FeelingType = typeof FEELING_TYPES[number];
export type ActivityType = typeof ACTIVITY_TYPES[number];
export type DateType = typeof DATE_TYPES[number];
export type NewsType = typeof NEWS_TYPES[number];
export declare const conversationTools: ChatCompletionTool[];
/**
 * Get tools available for a specific relationship type and affinity level
 */
export declare function getAvailableTools(relationshipTypes: string[], affinity: number): ChatCompletionTool[];
/**
 * Check if a character can use a specific tool (considering cooldowns)
 */
export declare function canUseTool(toolName: string, characterId: string, lastToolUse: Record<string, Record<string, number>> | undefined, currentGameHour: number): boolean;
/**
 * Record that a tool was used (for cooldown tracking)
 */
export declare function recordToolUse(toolName: string, characterId: string, lastToolUse: Record<string, Record<string, number>>, currentGameHour: number): void;
//# sourceMappingURL=tools.d.ts.map