package click.kamil.springstatemachineexporter.analysis.resolver;

import click.kamil.springstatemachineexporter.analysis.model.TriggerPoint;
import click.kamil.springstatemachineexporter.ast.common.CodebaseContext;

import java.util.List;

public interface PolymorphicEventResolver {
    
    /**
     * Attempts to resolve a dynamically passed event variable into a set of 
     * concrete polymorphic event names.
     * 
     * @param triggerPoint The original trigger point to resolve.
     * @param resolvedValue The current String expression (e.g., "event.getType()" or "event")
     * @param path The call path trace leading up to this variable.
     * @param context The codebase context for deep type resolution.
     * @return The updated TriggerPoint with polymorphic events set, or the original if unable to resolve.
     */
    TriggerPoint resolvePolymorphicEvents(TriggerPoint triggerPoint, String resolvedValue, List<String> path, CodebaseContext context);
    
}
