/**
 * Friend Hangout Events
 *
 * 12 friend-initiated events with real gameplay tradeoffs.
 * Friends feel like real people making demands on your time and resources.
 *
 * Realtime events (function-based, checked each hour):
 * - friendCoffeeInvite: Friend invites you for coffee (energy -10, money -$8, affinity +5)
 * - friendHelpMoving: Friend needs help moving (energy -30, affinity +8)
 * - friendToughTime: Friend going through tough time (energy -15, affinity +10)
 * - friendBirthday: Friend's birthday party (gift cost vs affinity)
 * - friendGossipChoice: Friend shares gossip about another friend
 * - friendDecayWarning: "Haven't hung out" affinity decay prevention
 * - friendConcertInvite: Friend invites you to a concert/event
 * - friendLendMoney: Friend asks to borrow money
 *
 * Fast mode events (class-based, for deep progression):
 * - BestFriendMilestone: Best friends milestone (affinity > 80)
 * - FriendBetrayal: Multi-stage betrayal (confront/forgive/distance → follow-up 1 week later)
 * - FriendInCrisis: Multi-stage crisis (support → follow-up 2 weeks later)
 * - GroupTrip: Multi-stage road trip (plan → trip events → return)
 * - FriendshipEnding: Friendship ending (affinity < -20)
 */
import { Player } from '../../models/Player.js';
import { BaseEvent, EventConfig, EventResult, AnswerOption } from '../base.js';
/**
 * Friend invites you for coffee
 * Accept: energy -10, money -$8, affinity +5, happiness +3
 * Decline: affinity -2
 */
export declare function friendCoffeeInvite(player: Player, _type?: string): EventResult;
/**
 * Friend needs help moving
 * Help: energy -30, affinity +8, happiness +2
 * Decline: affinity -5, happiness -2 (guilt)
 */
export declare function friendHelpMoving(player: Player, _type?: string): EventResult;
/**
 * Friend going through a tough time
 * Listen: energy -15 (emotional labor), affinity +10, social +3
 * "I'm busy": affinity -3
 */
export declare function friendToughTime(player: Player, _type?: string): EventResult;
/**
 * Friend's birthday - gift cost vs affinity
 * Great gift ($50): affinity +10 | Small gift ($15): affinity +5 | No gift: affinity +2 | Forget: affinity -8
 */
export declare function friendBirthday(player: Player, _type?: string): EventResult;
/**
 * Friend shares gossip about mutual acquaintance
 * Engage: social +2, 10% chance target finds out (affinity -5 with target)
 * Shut it down: social -1 but trustworthy reputation
 */
export declare function friendGossipChoice(player: Player, _type?: string): EventResult;
/**
 * "Haven't hung out" decay prevention
 * Triggers when a friend's affinity is decaying (10-30 range)
 * Plan something: choose activity | Acknowledge: affinity continues to decay
 */
export declare function friendDecayWarning(player: Player, _type?: string): EventResult;
/**
 * Friend invites you to a concert/event
 * Go: money -$30-100, energy -20, happiness +10, affinity +5, chance to meet new people
 * Skip: affinity -3, FOMO happiness -2
 */
export declare function friendConcertInvite(player: Player, _type?: string): EventResult;
/**
 * Friend asks to borrow money
 * Tests friendship boundaries with financial pressure
 */
export declare function friendLendMoney(player: Player, _type?: string): EventResult;
/**
 * Best Friends Milestone - triggered when affinity > 80
 * Unlock "bestfriend" relationship tag, +5% to positive outcomes when involved
 */
export declare class BestFriendMilestone extends BaseEvent {
    readonly id = "bestFriendMilestone";
    getConfig(): EventConfig;
    checkConditions(player: Player): boolean;
    getQuestion(player?: Player): string;
    getAnswerOptions(): AnswerOption[];
    processAnswer(player: Player, selectedOption: number): EventResult;
}
/**
 * Friend Betrayal - Multi-stage event over 1 week
 *
 * Stage 1: "{name} told others about something you shared in confidence"
 *   → confront, forgive, or distance
 *
 * Stage 2 (1 week later, scheduled via oneTimeEvents):
 *   - Confronted: They apologize (affinity recovers to -10) or double down (friendship ends)
 *   - Forgave: Trust partially restored (affinity -15), but lingering doubt
 *   - Distanced: They notice and reach out OR accept distance (friendship slowly dies)
 */
export declare class FriendBetrayal extends BaseEvent {
    readonly id = "friendBetrayal";
    getConfig(): EventConfig;
    checkConditions(player: Player): boolean;
    getQuestion(player?: Player): string;
    getAnswerOptions(): AnswerOption[];
    processAnswer(player: Player, selectedOption: number): EventResult;
}
/**
 * Friend in Crisis - Multi-stage support event
 *
 * Stage 1: "{name} is going through something serious and needs support"
 *   → Visit them / Call / Send text / Give space
 *
 * Stage 2 (2 weeks later, scheduled via oneTimeEvents):
 *   - Visited: They thank you deeply, friendship strengthened
 *   - Called: They appreciated it, moderate gratitude
 *   - Texted: They say thanks, still struggling
 *   - Space: They're still struggling and felt alone
 */
export declare class FriendInCrisis extends BaseEvent {
    readonly id = "friendInCrisis";
    getConfig(): EventConfig;
    checkConditions(player: Player): boolean;
    getQuestion(player?: Player): string;
    getAnswerOptions(): AnswerOption[];
    processAnswer(player: Player, selectedOption: number): EventResult;
}
/**
 * Group Trip - Multi-stage road trip event
 *
 * Stage 1: "Your friend group wants to go on a road trip this weekend"
 *   → Join ($200, 2 days of energy drain) or skip
 *
 * Stage 2 (if joined, 1 day later): Trip events — bonding, drama, adventure
 * Stage 3 (2 days later): Return home — exhausted but happy, or drama fallout
 */
export declare class GroupTrip extends BaseEvent {
    readonly id = "groupTrip";
    getConfig(): EventConfig;
    checkConditions(player: Player): boolean;
    getQuestion(_player?: Player): string;
    getAnswerOptions(): AnswerOption[];
    processAnswer(player: Player, selectedOption: number): EventResult;
}
/**
 * Friendship Ending - triggers when affinity drops below -20
 * Try to reconcile (energy -20, 50% chance of recovery) or accept it (clean break, social -3)
 */
export declare class FriendshipEnding extends BaseEvent {
    readonly id = "friendshipEnding";
    getConfig(): EventConfig;
    checkConditions(player: Player): boolean;
    getQuestion(player?: Player): string;
    getAnswerOptions(): AnswerOption[];
    processAnswer(player: Player, selectedOption: number): EventResult;
}
export declare const bestFriendMilestoneInstance: BestFriendMilestone;
export declare const friendBetrayalInstance: FriendBetrayal;
export declare const friendInCrisisInstance: FriendInCrisis;
export declare const groupTripInstance: GroupTrip;
export declare const friendshipEndingInstance: FriendshipEnding;
export declare const friendshipClassEvents: (BestFriendMilestone | FriendBetrayal | FriendInCrisis | GroupTrip | FriendshipEnding)[];
export declare const friendshipEvents: {
    friendCoffeeInvite: typeof friendCoffeeInvite;
    friendHelpMoving: typeof friendHelpMoving;
    friendToughTime: typeof friendToughTime;
    friendBirthday: typeof friendBirthday;
    friendGossipChoice: typeof friendGossipChoice;
    friendDecayWarning: typeof friendDecayWarning;
    friendConcertInvite: typeof friendConcertInvite;
    friendLendMoney: typeof friendLendMoney;
};
//# sourceMappingURL=friendships.d.ts.map