package click.kamil.springstatemachineexporter.analysis.service;

import click.kamil.springstatemachineexporter.analysis.model.CallChain;
import click.kamil.springstatemachineexporter.analysis.model.EntryPoint;
import click.kamil.springstatemachineexporter.analysis.model.TriggerPoint;

import java.util.List;
import java.util.Map;

public interface CodebaseIntelligenceProvider {
    /**
     * Discovers all locations where events are triggered.
     */
    List<TriggerPoint> findTriggerPoints();

    /**
     * Discovers all entry points (REST, Kafka, etc.).
     */
    List<EntryPoint> findEntryPoints();

    /**
     * Links Entry Points to Trigger Points.
     */
    List<CallChain> findCallChains(List<EntryPoint> entryPoints, List<TriggerPoint> triggers);

    /**
     * Resolves configuration properties per profile.
     */
    Map<String, Map<String, String>> resolveProperties();
}
