/**
 * Centralized Stat Utilities
 *
 * All stat modifications should use these functions to ensure proper clamping.
 * Stats are bounded 0-100 unless otherwise specified.
 */
import { Person } from '../models/Person.js';
import { Player } from '../models/Player.js';
/**
 * Deduct energy from a person, clamping to [0, 100].
 * Use this instead of `person.energy -= X` to prevent negative energy.
 */
export declare function deductEnergy(person: {
    energy?: number;
}, amount: number): void;
export declare const STAT_BOUNDS: {
    readonly energy: {
        readonly min: 0;
        readonly max: 100;
        readonly default: 100;
    };
    readonly happiness: {
        readonly min: 0;
        readonly max: 100;
        readonly default: 50;
    };
    readonly health: {
        readonly min: 0;
        readonly max: 100;
        readonly default: 100;
    };
    readonly social: {
        readonly min: 0;
        readonly max: 100;
        readonly default: 50;
    };
    readonly stress: {
        readonly min: 0;
        readonly max: 100;
        readonly default: 0;
    };
    readonly hunger: {
        readonly min: 0;
        readonly max: 100;
        readonly default: 0;
    };
    readonly thirst: {
        readonly min: 0;
        readonly max: 100;
        readonly default: 0;
    };
    readonly affinity: {
        readonly min: 0;
        readonly max: 100;
        readonly default: 50;
    };
    readonly money: {
        readonly min: 0;
        readonly max: number;
        readonly default: 0;
    };
};
type StatName = keyof typeof STAT_BOUNDS;
/**
 * Clamp a value to the specified bounds
 */
export declare function clamp(value: number, min: number, max: number): number;
/**
 * Safely modify a stat, clamping to valid range
 */
export declare function modifyStat(currentValue: number | undefined, delta: number, statName?: StatName): number;
/**
 * Safely set a stat, clamping to valid range
 */
export declare function setStat(value: number, statName?: StatName): number;
/**
 * Clamp all stats on a character to valid ranges
 * Use this to fix corrupted data
 */
export declare function clampAllStats(person: Person): void;
/**
 * Clamp all stats on the player character and all relationships
 */
export declare function clampPlayerStats(player: Player): void;
/**
 * Enforce romantic relationship exclusivity
 * Removes all romantic relationships except the most recent one
 */
export declare function enforceRelationshipExclusivity(player: Player): {
    removed: string[];
    kept: string | null;
};
/**
 * Clean up stale pending events
 */
export declare function cleanStalePendingEvents(player: Player): number;
export {};
//# sourceMappingURL=statUtils.d.ts.map