/**
 * Social Events
 * Ported from Python ws/events/activities/social.py
 *
 * Events:
 * - communityEvent: Attend or help organize community events (ages 8-100)
 * - gamingGroup: Join regular gaming nights (ages 10-100)
 * - joinClub: Join a club for one of your interests (ages 12-100)
 * - volunteerWork: Volunteer for a local organization (ages 14-100)
 *
 * All events follow the BaseEvent pattern and include:
 * - Age restrictions
 * - Schedule entries for recurring activities
 * - Social stat effects and relationship building
 */
import { BaseEvent, EventResult, AnswerOption, EventConfig } from '../base.js';
import type { Player } from '../../models/Player.js';
import type { Person, Schedule } from '../../models/Person.js';
import type { ActivityRecordData } from '../../models/ActivityRecord.js';
export type FocusType = 'Work Hard' | 'Balanced' | 'Slack Off' | 'Socialize';
interface SocialActivityData {
    id: string;
    title: string;
    type: string;
    description: string;
    energyModifier: number;
}
/**
 * Check if a person already has an activity with a given title
 */
declare function hasActivity(person: Person, activityTitle: string): boolean;
/**
 * Add a social activity to a person with tracking
 */
declare function addSocialActivity(person: Person, activityTitle: string, focus: FocusType, description: string, date: string, performanceTracking?: boolean): {
    activity: SocialActivityData;
    record: ActivityRecordData;
};
/**
 * Create a schedule for an activity
 */
declare function createActivitySchedule(person: Person, title: string, frequency: string[], location: string, durationWeeks: number): Schedule;
/**
 * Build relationships with people who share a social activity
 */
declare function buildRelationshipsAtActivity(player: Player, activityName: string, affinityBoost?: number): number;
/**
 * Ensure community location exists for a player
 */
declare function ensureCommunityLocation(player: Player): string;
/**
 * Ensure friend location exists for a player
 */
declare function ensureFriendLocation(player: Player): string;
/**
 * Community Event - Attend or help organize community events
 */
export declare class CommunityEvent extends BaseEvent {
    readonly id = "communityEvent";
    private eventName;
    private getRandomEventType;
    getConfig(): EventConfig;
    checkConditions(player: Player): boolean;
    getQuestion(player?: Player): string;
    getAnswerOptions(): AnswerOption[];
    processAnswer(player: Player, selectedOption: number): EventResult;
}
/**
 * Gaming Group - Join regular gaming nights
 */
export declare class GamingGroup extends BaseEvent {
    readonly id = "gamingGroup";
    private gamingType;
    private getRandomGamingType;
    getConfig(): EventConfig;
    checkConditions(player: Player): boolean;
    getQuestion(player?: Player): string;
    getAnswerOptions(): AnswerOption[];
    processAnswer(player: Player, selectedOption: number): EventResult;
}
/**
 * Join Club - Join a club for one of your interests
 */
export declare class JoinClub extends BaseEvent {
    readonly id = "joinClub";
    private clubType;
    private getRandomClubType;
    getConfig(): EventConfig;
    checkConditions(player: Player): boolean;
    getQuestion(player?: Player): string;
    getAnswerOptions(): AnswerOption[];
    processAnswer(player: Player, selectedOption: number): EventResult;
}
/**
 * Volunteer Work - Volunteer for a local organization
 */
export declare class VolunteerWork extends BaseEvent {
    readonly id = "volunteerWork";
    private volunteerType;
    private getRandomVolunteerType;
    getConfig(): EventConfig;
    checkConditions(player: Player): boolean;
    getQuestion(player?: Player): string;
    getAnswerOptions(): AnswerOption[];
    processAnswer(player: Player, selectedOption: number): EventResult;
}
export declare const communityEventInstance: CommunityEvent;
export declare const gamingGroupInstance: GamingGroup;
export declare const joinClubInstance: JoinClub;
export declare const volunteerWorkInstance: VolunteerWork;
export declare const socialEvents: (CommunityEvent | GamingGroup | JoinClub | VolunteerWork)[];
export { hasActivity, addSocialActivity, createActivitySchedule, buildRelationshipsAtActivity, ensureCommunityLocation, ensureFriendLocation, };
//# sourceMappingURL=socialEvents.d.ts.map