/**
 * Person model - represents a character in the game
 * Ported from Python personClass
 */
export type Sex = 'Male' | 'Female';
export type PersonStatus = 'alive' | 'dead' | 'unknown';
export interface Item {
    id: string;
    name: string;
    type?: string;
    value?: number;
}
export interface Activity {
    id: string;
    title: string;
    type: string;
    energyModifier?: number;
}
/**
 * Schedule interface for person activities
 * Most fields are optional to support different schedule types
 */
export interface Schedule {
    id?: string;
    title?: string;
    location?: string;
    duration?: number;
    executions?: number;
    days?: {
        daysOfWeek?: string[];
        hour?: number;
    };
    type?: string;
    energyModifier?: number;
}
export interface ChildPerson {
    id: string;
    firstname: string;
    lastname?: string;
    ageDays: number;
    ageYears: number;
    sex: Sex;
    image?: string;
}
export interface RelationshipPerson {
    id: string;
    firstname: string;
    lastname?: string;
    ageYears?: number;
    sex?: Sex;
    image?: string;
    title?: string;
    affinity?: number;
    familyLevel?: number;
    relationships?: string[];
}
export interface PersonData {
    id: string;
    firstname: string;
    lastname: string;
    sex: Sex;
    image?: string;
    status?: PersonStatus;
    relationships?: string[];
    familiarity?: number;
    ageDays?: number;
    ageYears?: number;
    ageHours?: number;
    birthday?: string;
    mood?: string;
    affinity?: number;
    money?: number;
    diamonds?: number;
    prestige?: number;
    happiness?: number;
    health?: number;
    energy?: number;
    intelligence?: number;
    social?: number;
    stress?: number;
    creativity?: number;
    hunger?: number;
    thirst?: number;
    weight?: number;
    weightType?: string;
    pronoun?: string;
    location?: string;
    occupation?: string;
    education?: string;
    job?: any;
    ownsBusiness?: boolean;
    braces?: boolean;
    glasses?: boolean;
    canDrive?: boolean;
    partner?: string;
    firstCrush?: string;
    sexualOrientation?: string;
    children?: ChildPerson[];
    tryingForChild?: boolean;
    pregnant?: boolean;
    engaged?: boolean;
    activities?: any[];
    activityRecords?: any[];
    items?: Item[];
    hasSocialMedia?: boolean;
    hasBankAccount?: boolean;
    actScore?: number;
    satScore?: number;
    major?: string;
    college?: any;
    elementary_school?: any;
    high_school?: any;
    current_education?: any;
    bio?: string;
    interests?: string[];
    traits?: string[];
    compatibilityScore?: number;
    immunizations?: boolean;
    likes?: string[];
    dislikes?: string[];
    calcEnergy?: number;
    peakEnergy?: number;
    salary?: number;
    schedules?: Schedule[];
    intraDayMessage?: string;
    lastIntraDayMessage?: string;
    dailyPlan?: Schedule[];
    deathChance?: number;
    familyLevel?: number;
    spendingHabits?: 'frugal' | 'normal' | 'extravagant';
    habits?: Array<{
        id: string;
        name: string;
        status: 'active' | 'quitting';
        daysQuit?: number;
    }>;
    oneTimeEvents?: Array<{
        id: string;
        date: string;
        hour: number;
        message: string;
        completionFunc?: string;
        runFunc?: (player: unknown) => void;
    }>;
    messaging_traits?: {
        verbosity: number;
        inquisitiveness: number;
        expressiveness: number;
        responsiveness: number;
        openness: number;
        emoji_usage: number;
        formality: number;
        response_timing: number;
    };
    messaging_patterns?: {
        time_of_day_preference: 'morning' | 'night' | 'neutral';
        weekend_availability: number;
        typing_style: 'proper' | 'casual' | 'chaotic';
    };
}
export declare class Person implements PersonData {
    id: string;
    firstname: string;
    lastname: string;
    sex: Sex;
    image: string;
    status: PersonStatus;
    relationships: string[];
    familiarity: number;
    ageDays: number;
    ageYears: number;
    ageHours: number;
    birthday: string;
    mood: string;
    affinity: number;
    money: number;
    diamonds: number;
    prestige: number;
    happiness: number;
    health: number;
    energy: number;
    intelligence: number;
    social: number;
    stress: number;
    creativity: number;
    hunger: number;
    thirst: number;
    weight: number;
    weightType: string;
    pronoun: string;
    location: string;
    occupation: string;
    education: string;
    job?: any;
    ownsBusiness: boolean;
    braces: boolean;
    glasses: boolean;
    canDrive: boolean;
    partner?: string;
    firstCrush?: string;
    sexualOrientation: string;
    children: ChildPerson[];
    tryingForChild?: boolean;
    pregnant?: boolean;
    engaged?: boolean;
    activities: any[];
    activityRecords: any[];
    items: Item[];
    hasSocialMedia: boolean;
    hasBankAccount: boolean;
    actScore?: number;
    satScore?: number;
    major?: string;
    college?: any;
    elementary_school?: any;
    high_school?: any;
    current_education?: any;
    bio: string;
    interests: string[];
    traits: string[];
    compatibilityScore: number;
    immunizations?: boolean;
    likes: string[];
    dislikes: string[];
    calcEnergy: number;
    peakEnergy: number;
    salary: number;
    schedules: Schedule[];
    intraDayMessage: string;
    lastIntraDayMessage: string;
    dailyPlan: Schedule[];
    deathChance: number;
    familyLevel: number;
    spendingHabits: 'frugal' | 'normal' | 'extravagant';
    habits: Array<{
        id: string;
        name: string;
        status: 'active' | 'quitting';
        daysQuit?: number;
    }>;
    oneTimeEvents: Array<{
        id: string;
        date: string;
        hour: number;
        message: string;
        completionFunc?: string;
        runFunc?: (player: unknown) => void;
    }>;
    messaging_traits?: {
        verbosity: number;
        inquisitiveness: number;
        expressiveness: number;
        responsiveness: number;
        openness: number;
        emoji_usage: number;
        formality: number;
        response_timing: number;
    };
    messaging_patterns?: {
        time_of_day_preference: 'morning' | 'night' | 'neutral';
        weekend_availability: number;
        typing_style: 'proper' | 'casual' | 'chaotic';
    };
    constructor(data: PersonData);
    get fullName(): string;
    get healthPercentage(): number;
    toJSON(): PersonData;
}
//# sourceMappingURL=Person.d.ts.map