/**
 * Tutorial Events System for BaoLife
 * Provides gentle guided events for first-time players during their first 24 in-game hours
 * Ported from Python events/tutorial/onboarding.py
 *
 * This module contains the tutorial event generators that create events during
 * the player's first 24 in-game hours. It works in conjunction with:
 * - services/retention/tutorial.ts - Tutorial state management and triggers
 */
import { Player } from '../../models/index.js';
import { EventResult } from '../base.js';
/**
 * Tutorial event data structure
 */
export interface TutorialEvent {
    type: string;
    eventId: string;
    message: string;
    npcId?: string;
    npcName?: string;
    guaranteedSuccess?: boolean;
    affinityBonus?: number;
    rewardDiamonds?: number;
    tutorialHint?: string;
    simplifiedChoices?: boolean;
    choices?: Array<{
        name: string;
        energy: number;
        benefit: string;
    }>;
    guaranteedGoodGrade?: boolean;
    grade?: string;
    dismissible?: boolean;
    tutorialMode?: boolean;
}
/**
 * Check if player is still in tutorial mode (first 24 in-game hours)
 * Re-exported from tutorial service for convenience
 */
export declare function isTutorialMode(player: Player, gameHours?: number): boolean;
/**
 * Generate welcome message for new player
 */
export declare function getWelcomeMessage(player: Player): TutorialEvent;
/**
 * Generate special gentle events for tutorial mode
 */
export declare function generateTutorialEvent(player: Player, eventType: 'first_friend' | 'first_activity' | 'first_purchase' | 'first_class'): TutorialEvent | null;
/**
 * Get helpful hint based on event type
 */
export declare function getContextualHint(eventType: string): string;
/**
 * Apply tutorial mode modifiers to regular events
 */
export declare function applyTutorialModifiers(player: Player, eventData: Record<string, unknown>): Record<string, unknown>;
/**
 * Modify any generated event if player is in tutorial mode
 * Called by main event generator
 * Ported from Python modify_event_for_tutorial()
 *
 * @param player - Player object
 * @param event - Event object or data
 * @returns Modified event (potentially with tutorial modifications)
 */
export declare function modifyEventForTutorial<T extends Record<string, unknown>>(player: Player, event: T): T;
/**
 * First Conversation Tutorial Event
 * Guaranteed positive outcome to encourage social interaction
 */
export declare function firstConversation(player: Player, type?: 'message' | 'question' | 'answer', response?: {
    option?: string;
}): EventResult;
/**
 * First Activity Choice Tutorial Event
 * Simplified choices with clear benefits
 */
export declare function firstActivityChoice(player: Player, type?: 'message' | 'question' | 'answer', response?: {
    option?: string;
}): EventResult;
/**
 * Tutorial Complete Event
 * Triggered when player completes tutorial (24 hours)
 */
export declare function tutorialComplete(player: Player): EventResult;
/**
 * Check which tutorial events should be triggered based on player state
 */
export declare function checkTutorialTriggers(player: Player): Array<(player: Player, type?: 'message' | 'question' | 'answer') => EventResult>;
/**
 * Tutorial Energy Explained
 * Trigger: First time energy < 20
 */
export declare function tutorialEnergyExplained(player: Player): EventResult;
/**
 * Tutorial Money Explained
 * Trigger: First question with moneyCost
 */
export declare function tutorialMoneyExplained(player: Player): EventResult;
/**
 * Tutorial Relationship Explained
 * Trigger: First NPC interaction
 */
export declare function tutorialRelationshipExplained(player: Player): EventResult;
/**
 * Tutorial Stats Explained
 * Trigger: After first stat change (ageHours >= 2)
 */
export declare function tutorialStatsExplained(player: Player): EventResult;
/**
 * Tutorial Diamonds Earned
 * Trigger: First time earning diamonds
 */
export declare function tutorialDiamondsEarned(player: Player): EventResult;
/**
 * Tutorial Game Speed Explained
 * Trigger: After 1 hour of game time
 */
export declare function tutorialGameSpeedExplained(player: Player): EventResult;
/**
 * Tutorial Schedules Intro
 * Trigger: First schedule added
 */
export declare function tutorialSchedulesIntro(player: Player): EventResult;
/**
 * Tutorial Events Intro
 * Trigger: After 3rd event
 */
export declare function tutorialEventsIntro(player: Player): EventResult;
/**
 * Tutorial One Time Events
 * Trigger: First oneTimeEvent scheduled
 */
export declare function tutorialOneTimeEvents(player: Player): EventResult;
/**
 * Tutorial First Milestone
 * Trigger: First major milestone completed
 * Awards 5 diamonds
 */
export declare function tutorialFirstMilestone(player: Player): EventResult;
/**
 * Extended check for tutorial triggers
 * Includes all new tutorial events
 */
export declare function checkAllTutorialTriggers(player: Player): Array<(player: Player) => EventResult>;
/**
 * All tutorial event functions
 */
export declare const tutorialEvents: {
    firstConversation: typeof firstConversation;
    firstActivityChoice: typeof firstActivityChoice;
    tutorialComplete: typeof tutorialComplete;
    tutorialEnergyExplained: typeof tutorialEnergyExplained;
    tutorialMoneyExplained: typeof tutorialMoneyExplained;
    tutorialRelationshipExplained: typeof tutorialRelationshipExplained;
    tutorialStatsExplained: typeof tutorialStatsExplained;
    tutorialDiamondsEarned: typeof tutorialDiamondsEarned;
    tutorialGameSpeedExplained: typeof tutorialGameSpeedExplained;
    tutorialSchedulesIntro: typeof tutorialSchedulesIntro;
    tutorialEventsIntro: typeof tutorialEventsIntro;
    tutorialOneTimeEvents: typeof tutorialOneTimeEvents;
    tutorialFirstMilestone: typeof tutorialFirstMilestone;
};
//# sourceMappingURL=onboarding.d.ts.map