/**
 * NPC Interactions Module
 *
 * Handles location-based NPC meeting and interaction detection.
 * When the player and NPC are in the same location, interactions can trigger.
 *
 * Ported from Python ws/ functionality:
 * - Location-based NPC meeting/interaction triggers
 * - Interaction detection when player and NPC are in same location
 */
import { Player, Person } from '../../models/index.js';
import { EventResult } from '../../events/base.js';
export type InteractionType = 'greeting' | 'casual_chat' | 'deep_conversation' | 'activity_together' | 'request_help' | 'give_gift' | 'romantic';
export interface NPCInteraction {
    id: string;
    npcId: string;
    npcName: string;
    type: InteractionType;
    location: string;
    timestamp: number;
    message: string;
    affinityChange?: number;
    familiarityChange?: number;
}
export interface InteractionResult {
    interaction: NPCInteraction | null;
    event: EventResult | null;
    triggered: boolean;
}
export interface CoLocationInfo {
    npcId: string;
    npcName: string;
    location: string;
    locationType: string;
    npcActivity: string;
    playerActivity: string;
    relationship: string[];
    affinity: number;
    familiarity: number;
}
/**
 * Find all NPCs at the same location as the player
 * Returns list of NPCs sharing the player's current location
 */
export declare function findNPCsAtPlayerLocation(player: Player): CoLocationInfo[];
/**
 * Find NPCs at a specific location
 */
export declare function findNPCsAtLocation(player: Player, locationId: string): Person[];
/**
 * Check if player shares location with a specific NPC
 */
export declare function isPlayerWithNPC(player: Player, npcId: string): boolean;
/**
 * Check for and potentially trigger an NPC interaction
 * Called during game loop when player is at a location with NPCs
 *
 * @param player - The player object
 * @param interactionChance - Base chance (0-100) for interaction to occur
 * @returns Interaction result with potential event
 */
export declare function checkNPCInteraction(player: Player, interactionChance?: number): InteractionResult;
/**
 * Trigger a specific interaction with an NPC
 * Used when player initiates conversation or action
 */
export declare function triggerNPCInteraction(player: Player, npcId: string, type: InteractionType): InteractionResult;
/**
 * Get all possible interactions at current location
 * Returns list of NPCs player can interact with
 */
export declare function getAvailableInteractions(player: Player): Array<{
    npcId: string;
    npcName: string;
    relationship: string;
    availableTypes: InteractionType[];
}>;
/**
 * Process hourly NPC interactions
 * Called once per hour to check for random encounters
 */
export declare function processHourlyNPCInteractions(player: Player): InteractionResult[];
export declare const npcInteractions: {
    findNPCsAtPlayerLocation: typeof findNPCsAtPlayerLocation;
    findNPCsAtLocation: typeof findNPCsAtLocation;
    isPlayerWithNPC: typeof isPlayerWithNPC;
    checkNPCInteraction: typeof checkNPCInteraction;
    triggerNPCInteraction: typeof triggerNPCInteraction;
    getAvailableInteractions: typeof getAvailableInteractions;
    processHourlyNPCInteractions: typeof processHourlyNPCInteractions;
};
//# sourceMappingURL=npc_interactions.d.ts.map