/**
 * Conversation Types for BaoLife
 * Ported from Python conversationEvents.py
 */
import type { Person } from '../../models/Person.js';
/**
 * Conversation message - individual message in a conversation
 */
export interface ConversationMessageData {
    id: string;
    message: string;
    answerOptions?: string[];
    sender?: string;
    datetime: string;
    date?: string;
    time?: string;
    sentiment?: 'positive' | 'negative' | 'neutral' | 'unknown';
    affinityDelta?: number;
    tempId?: string;
    data?: unknown;
}
/**
 * Conversation message class
 */
export declare class ConversationMessage implements ConversationMessageData {
    id: string;
    message: string;
    answerOptions?: string[];
    sender?: string;
    datetime: string;
    date?: string;
    time?: string;
    sentiment?: 'positive' | 'negative' | 'neutral' | 'unknown';
    affinityDelta?: number;
    tempId?: string;
    data?: unknown;
    constructor(message: string, options?: {
        answerOptions?: string[];
        sender?: string;
        sentiment?: 'positive' | 'negative' | 'neutral' | 'unknown';
        affinityDelta?: number;
        date?: string;
        time?: string;
        tempId?: string;
    });
    addAnswerOption(option: string): void;
}
/**
 * Conversation object - represents a conversation thread
 */
export interface ConversationObjData {
    id: string;
    type: 'conversationEvent';
    cType?: string;
    character?: string | Person;
    conversation: ConversationMessage[];
    question: number;
    unread: boolean;
    summary?: string;
    summary_message_count?: number;
    /** Index of last message included in fact extraction (for full-batch extraction) */
    last_fact_extraction_index?: number;
}
/**
 * Conversation object class
 */
export declare class ConversationObj implements ConversationObjData {
    id: string;
    type: 'conversationEvent';
    cType?: string;
    character?: string | Person;
    conversation: ConversationMessage[];
    question: number;
    unread: boolean;
    summary?: string;
    summary_message_count?: number;
    last_fact_extraction_index?: number;
    constructor(character?: string | Person, cType?: string);
    /**
     * Convert to JSON matching Python's __dict__ serialization
     */
    toJSON(): Record<string, unknown>;
    addMessage(message: string, sender?: string, options?: {
        data?: unknown;
        sentiment?: 'positive' | 'negative' | 'neutral' | 'unknown';
        affinityDelta?: number;
        date?: string;
        time?: string;
        tempId?: string;
    }): void;
    getConversation(): ConversationMessage[];
    addAnswerOption(option: string): void;
    setAnswerOptions(options: string[]): void;
    getAnswerOptions(): string[] | undefined;
    /**
     * Create a ConversationObj from plain data (e.g., loaded from database)
     */
    static fromData(data: Record<string, unknown>, character?: {
        id: string;
    }): ConversationObj;
}
/**
 * Conversation event check result
 */
export interface ConversationCheckResult {
    button: string;
    fname: string;
}
/**
 * Conversation event function type
 */
export type ConversationEventFunction = (player: unknown, character: Person, response?: string | false, check?: boolean) => Promise<ConversationObj | ConversationCheckResult | false>;
//# sourceMappingURL=types.d.ts.map