/**
 * Activity Learning Progress System
 * Ported from Python ws/events/activities/learning.py, physical.py, social.py
 *
 * This module provides:
 * 1. Progress tracking events for learning activities (online courses, languages, bootcamps, music, cooking)
 * 2. Progress tracking events for physical activities (soccer, martial arts, running, gym, yoga)
 * 3. Helper functions for activity management
 * 4. Game loop integration for continuous progress updates
 */
import type { Player } from '../../models/Player.js';
import type { Person, Schedule } from '../../models/Person.js';
import { type ActivityRecordData } from '../../models/ActivityRecord.js';
import { type FocusType } from '../../constants/focus.js';
export type { FocusType };
export interface ProgressResult {
    message: string;
    statChanges?: {
        intelligence?: number;
        happiness?: number;
        social?: number;
        stress?: number;
        prestige?: number;
        health?: number;
        money?: number;
        energy?: number;
    };
    achievement?: string;
    completed?: boolean;
    scheduleNextCheck?: {
        daysFromNow: number;
        title: string;
        message: string;
    };
}
declare const FOCUS_MODIFIERS: Record<FocusType, number>;
declare const LEARNING_FOCUS_MAP: Record<FocusType, number>;
declare const PHYSICAL_FOCUS_MAP: Record<FocusType, number>;
/**
 * Check if a person has a specific activity by title
 */
export declare function hasActivity(person: Person, activityTitle: string): boolean;
/**
 * Get an activity record by ID from a person
 */
export declare function getActivityRecordById(person: Person, activityId: string): ActivityRecordData | undefined;
/**
 * Get an activity record by type from a person
 */
export declare function getActivityRecordByType(person: Person, activityType: string): ActivityRecordData | undefined;
/**
 * Increment activity performance for a specific record
 */
export declare function incrementActivityPerformance(person: Person, activityId: string, amount?: number): void;
/**
 * Add a social activity to a person with tracking
 */
export declare function addSocialActivity(person: Person, activityTitle: string, focus: FocusType, description: string, date: string, performanceTracking?: boolean): {
    activity: {
        id: string;
        title: string;
        type: string;
    };
    record: ActivityRecordData;
};
/**
 * Build relationships with people who share an activity
 * Boosts affinity with relationship characters who have the same activity
 */
export declare function buildRelationshipsAtActivity(player: Player, activityName: string, affinityBoost?: number): number;
/**
 * Schedule a one-time progress check event
 */
export declare function scheduleProgressCheck(person: Person, title: string, message: string, daysFromNow: number, completionFunc: string, completionArgs?: Record<string, unknown>): void;
/**
 * Create an activity record for a learning activity
 */
export declare function createLearningActivityRecord(person: Person, id: string, type: string, topic: string, startingPerformance?: number, focus?: FocusType): ActivityRecordData;
/**
 * Create a schedule for an activity
 */
export declare function createActivitySchedule(person: Person, title: string, frequency: string[], location: string, duration: number): Schedule;
/**
 * Process online course progress
 */
export declare function onlineCourseProgress(player: Player, courseRecordId: string): ProgressResult | null;
/**
 * Process language learning progress
 */
export declare function languageLearningProgress(player: Player, languageRecordId: string): ProgressResult | null;
/**
 * Process coding bootcamp progress
 */
export declare function codingBootcampProgress(player: Player, bootcampRecordId: string, stage?: 'midpoint' | 'completion'): ProgressResult | null;
/**
 * Process music lessons progress
 */
export declare function musicLessonsProgress(player: Player, musicRecordId: string): ProgressResult | null;
/**
 * Process cooking class progress
 */
export declare function cookingClassProgress(player: Player, cookingRecordId: string): ProgressResult | null;
/**
 * Process soccer team progress
 */
export declare function soccerProgress(player: Player, activityRecordId: string): ProgressResult | null;
/**
 * Process martial arts progress
 */
export declare function martialArtsProgress(player: Player, activityRecordId: string): ProgressResult | null;
/**
 * Process running progress
 */
export declare function runningProgress(player: Player, activityRecordId: string): ProgressResult | null;
/**
 * Process gym progress
 */
export declare function gymProgress(player: Player, activityRecordId: string): ProgressResult | null;
/**
 * Process yoga progress
 */
export declare function yogaProgress(player: Player, activityRecordId: string): ProgressResult | null;
/**
 * Learning activity types for continuous progress updates
 */
declare const LEARNING_ACTIVITY_TYPES: string[];
/**
 * Physical activity types for continuous progress updates
 */
declare const PHYSICAL_ACTIVITY_TYPES: string[];
/**
 * Handle learning activities during game loop
 * Updates performance based on focus level
 *
 * Performance modifiers by focus:
 * - Work Hard: +1 per tick (faster learning)
 * - Balanced: +0.5 per tick (steady learning)
 * - Slack Off: +0.1 per tick (minimal learning)
 * - Socialize: +0.3 per tick (some learning, but distracted)
 */
export declare function handleLearningActivities(player: Player, person: Person): void;
/**
 * Handle physical activities during game loop
 * Updates performance based on focus level
 */
export declare function handlePhysicalActivities(player: Player, person: Person): void;
/**
 * Handle all activity progress during game loop
 * Called periodically to update all activity records
 */
export declare function handleAllActivityProgress(player: Player): void;
/**
 * Map of progress function names to their implementations
 * Used by OneTimeEvent completionFunc resolution
 */
export declare const progressEventRegistry: Record<string, (player: Player, ...args: unknown[]) => ProgressResult | null>;
/**
 * Execute a progress event by name
 */
export declare function executeProgressEvent(player: Player, eventName: string, args: Record<string, unknown>): ProgressResult | null;
export { LEARNING_ACTIVITY_TYPES, PHYSICAL_ACTIVITY_TYPES, FOCUS_MODIFIERS, LEARNING_FOCUS_MAP, PHYSICAL_FOCUS_MAP, };
//# sourceMappingURL=progress.d.ts.map