/**
 * Player model - represents a player session in the game
 * Ported from Python Player class
 */
import { Person, RelationshipPerson } from './Person.js';
export type GameStatus = 'creating' | 'playing' | 'paused' | 'dead';
export type Controller = 'active' | 'inactive' | 'paused';
export type Connection = 'connected' | 'disconnected';
export type Season = 'spring' | 'summer' | 'autumn' | 'winter';
export interface ConversationObjLike {
    id: string;
    character?: string | Person;
    cType?: string | null;
    conversation: unknown[];
    question: number;
    unread: boolean;
    summary?: string;
    summary_message_count?: number;
    addMessage?: (...args: any[]) => void;
    getAnswerOptions?: () => string[] | undefined;
    setAnswerOptions?: (options: string[]) => void;
    getRecentMessages?: (count: number) => unknown[];
    getMessageCount?: () => number;
    toJSON?: () => Record<string, unknown>;
}
export interface MessagingModifiers {
    verbosity?: number;
    inquisitiveness?: number;
    expressiveness?: number;
    responsiveness?: number;
    openness?: number;
    emoji_usage?: number;
    formality?: number;
    response_timing?: number;
    mood_state?: 'great' | 'bad' | 'stressed' | 'neutral';
    current_topic_engagement?: number;
}
export interface RelationshipData {
    id?: string;
    person1?: string;
    person2?: string;
    startDate?: string;
    anniversaryDate?: string;
    relationshipStatus?: string;
    description?: string;
    relationshipNotes?: string;
    relationshipScore?: number;
    eventsLog?: string[];
    commonInterests?: string[];
    challenges?: string[];
    futurePlans?: string[];
}
export interface MessagingModifierData {
    characterId: string;
    messaging_modifiers?: MessagingModifiers;
}
export interface OfflineStats {
    minutesOffline: number;
    lastOnline?: Date;
}
export type PendingEventType = 'activity_invite' | 'date_request' | 'emotional_moment' | 'favor_request' | 'gift_received' | 'confession' | 'relationship_upgrade' | 'relationship_accepted' | 'date_accepted' | 'activity_accepted' | 'confession_accepted' | 'breakup_initiated' | 'breakup_accepted';
export interface PendingConversationEvent {
    id: string;
    type: PendingEventType;
    characterId: string;
    characterName: string;
    data: Record<string, unknown>;
    createdAt: string;
    expiresAt?: string;
    triggersAt?: number;
    priority: 'low' | 'medium' | 'high';
}
export type ToolCooldowns = Record<string, Record<string, number>>;
export interface PendingAnnouncement {
    id: string;
    characterId: string;
    characterName: string;
    title: string;
    message: string;
    image?: string;
    category?: 'social' | 'romantic' | 'gift' | 'activity' | 'emotional';
    createdAt: string;
}
export interface GameLocation {
    id: string;
    type: string;
    name?: string;
    image?: string;
    description?: string;
    people?: string[];
}
export interface PlayerData {
    userId: string;
    character: Person;
    status?: GameStatus;
    controller?: Controller;
    connection?: Connection;
    date?: string;
    time?: string;
    hourOfDay?: number;
    minuteOfHour?: number;
    dayOfYear?: number;
    dayOfWeek?: number;
    monthOfYear?: number;
    season?: Season;
    gameSpeed?: number;
    previousGameSpeed?: number;
    money?: number;
    diamonds?: number;
    relationships?: RelationshipPerson[];
    r?: Person[];
    relData?: RelationshipData[];
    messagingModifiers?: MessagingModifierData[];
    conversations?: ConversationObjLike[];
    events?: Set<string> | string[];
    askedQuestions?: Set<string> | string[];
    deviceToken?: string;
    tutorialStep?: number;
    onboardingComplete?: boolean;
    messageQueue?: string[];
    messageLog?: string[];
    lifecycleQueue?: Array<{
        type: string;
        data?: Record<string, unknown>;
    }>;
    activeDilemmas?: unknown[];
    ticks?: number;
    weekDayText?: string;
    dayEvent?: string | boolean;
    summerVacation?: boolean;
    daysUntilSchoolEnds?: number;
    daysSinceSchoolStarted?: number;
    updateClient?: boolean;
    offlineStats?: OfflineStats;
    weekend?: boolean;
    weather?: 'sunny' | 'cloudy' | 'rainy' | 'snowy' | 'stormy' | 'windy' | 'foggy';
    l?: GameLocation[];
    pendingConversationEvents?: PendingConversationEvent[];
    toolCooldowns?: ToolCooldowns;
    pendingAnnouncements?: PendingAnnouncement[];
}
export declare class Player {
    userId: string;
    character: Person;
    status: GameStatus;
    controller: Controller;
    connection: Connection;
    date: string;
    time: string;
    hourOfDay: number;
    minuteOfHour: number;
    dayOfYear: number;
    dayOfWeek: number;
    monthOfYear: number;
    season: Season;
    gameSpeed: number;
    previousGameSpeed: number;
    money: number;
    diamonds: number;
    relationships: RelationshipPerson[];
    r: Person[];
    relData: RelationshipData[];
    messagingModifiers: MessagingModifierData[];
    conversations: ConversationObjLike[];
    events: Set<string>;
    askedQuestions: Set<string>;
    deviceToken: string;
    tutorialStep: number;
    onboardingComplete: boolean;
    messageQueue: string[];
    messageLog: string[];
    lifecycleQueue: Array<{
        type: string;
        data?: Record<string, unknown>;
    }>;
    activeDilemmas: unknown[];
    ticks: number;
    weekDayText: string;
    dayEvent: string | boolean;
    summerVacation: boolean;
    daysUntilSchoolEnds: number;
    daysSinceSchoolStarted: number;
    updateClient: boolean;
    offlineStats: OfflineStats;
    weekend: boolean;
    weather: 'sunny' | 'cloudy' | 'rainy' | 'snowy' | 'stormy' | 'windy' | 'foggy';
    l: GameLocation[];
    pendingConversationEvents: PendingConversationEvent[];
    toolCooldowns: ToolCooldowns;
    pendingAnnouncements: PendingAnnouncement[];
    _needsSave: boolean;
    get c(): Person;
    set c(value: Person);
    constructor(data: PlayerData);
    get isActive(): boolean;
    getTicksForSpeed(): number;
    toJSON(): Record<string, unknown>;
}
//# sourceMappingURL=Player.d.ts.map