/**
 * Relationship Events System
 *
 * Handles dynamic relationship events like arguments, anniversaries,
 * jealousy, proposals, and breakup threats. Events trigger based on
 * relationship conditions and offer resolution options with affinity
 * and diamond costs.
 */
import { Player } from '../../models/Player.js';
import { Person } from '../../models/Person.js';
export interface RelationshipEventOption {
    choice: string;
    label: string;
    affinityChange: number;
    diamondCost: number;
}
export interface RelationshipEventDefinition {
    type: string;
    trigger: string;
    description: string;
    options: RelationshipEventOption[];
}
export interface RelationshipEvent {
    type: string;
    trigger: string;
    description: string;
    options: RelationshipEventOption[];
    npcId: string;
    npcName: string;
}
export interface RelationshipEventRecord {
    playerId: string;
    npcId: string;
    eventType: string;
    resolutionChosen: string;
    affinityChange: number;
    diamondCost: number;
    occurredAt: Date;
}
export interface ProcessResolutionResult {
    success: boolean;
    message: string;
    affinityChange?: number;
    diamondCost?: number;
}
/**
 * Get affinity change in last 24 hours for a relationship
 */
export declare function getAffinityChange24h(playerId: string, npcId: string): number;
/**
 * Check if an event has occurred recently (within N days)
 */
export declare function hasRecentEvent(playerId: string, npcId: string, eventType: string, days?: number): boolean;
/**
 * Check if player has already met NPC's family
 */
export declare function hasMetFamily(playerId: string, npcId: string): boolean;
/**
 * Get event definition by type and format with NPC data
 */
export declare function getEventByType(eventType: string, npc: Person, extraParams?: Record<string, unknown>): RelationshipEvent | null;
/**
 * Check if any relationship events should trigger for a given NPC
 */
export declare function checkRelationshipTriggers(player: Player, npc: Person): RelationshipEvent | null;
/**
 * Create a question event structure for the relationship event
 */
export declare function createRelationshipQuestionEvent(event: RelationshipEvent): {
    id: string;
    message: string;
    type: 'relationshipEvent';
    npcId: string;
    eventType: string;
    answers: Array<{
        label: string;
        choice: string;
        energyCost: number;
        diamondCost: number;
        affinityChange: number;
    }>;
};
/**
 * Process the player's resolution choice for a relationship event
 */
export declare function processResolution(playerId: string, npc: Person, eventType: string, resolution: string, affinityChange: number, diamondCost: number, playerDiamonds: number): ProcessResolutionResult;
/**
 * Get relationship event history for a player
 */
export declare function getEventHistory(playerId: string, npcId?: string, limit?: number): RelationshipEventRecord[];
/**
 * Get relationship statistics between player and NPC
 */
export declare function getRelationshipStats(playerId: string, npcId: string): {
    totalEvents: number;
    totalAffinityChange: number;
    totalDiamondsSpent: number;
    firstEvent: Date | null;
    lastEvent: Date | null;
};
/**
 * Get all relationship event definitions
 */
export declare function getAllEventDefinitions(): RelationshipEventDefinition[];
/**
 * Clear event history (for testing)
 */
export declare function clearEventHistory(): void;
//# sourceMappingURL=relationshipEvents.d.ts.map