package click.kamil.springstatemachineexporter.analysis.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Builder;
import lombok.Data;
import lombok.extern.jackson.Jacksonized;

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

@Data
@Builder(toBuilder = true)
@Jacksonized
@JsonIgnoreProperties(ignoreUnknown = true)
public class CallChain {
    private final EntryPoint entryPoint;
    private final List<String> methodChain; // e.g., ["Controller.submit", "Service.process", "Service.send"]
    private final TriggerPoint triggerPoint;
    private final String contextMachineId;
    private final List<MatchedTransition> matchedTransitions;
    /** How this chain's trigger was linked; derived from trigger flags and matchedTransitions. */
    private final LinkResolution linkResolution;
    @JsonIgnore
    private final Map<String, String> pathBindings;
}
