/** * Dependency graph over the provided sources — migration sequencing input. * * Three honest edge tiers, each labeled with how it was derived: * - AST object references (DB tables / function modules) from the engine's * extractor, annotated with the released-API state of the target. * - Structural inheritance/implementation edges from the outline * (superclass, interfaces). * - Textual name references between the provided objects (word-boundary * token match) — deliberately labeled "textual" because without the full * dependency closure abaplint cannot resolve them semantically. * * Only ever sees the text passed in: an edge to an object you didn't provide * is marked provided:false, and absence of an edge is not proof of * independence — the scopeNote says so. */ import type { AbapSource, AbapVersion } from "./engine.js"; export interface DependencyNode { /** Object name, upper-cased (class, interface, program, table, function module). */ name: string; /** "class" | "interface" | "program" | "table" | "function-module" | "unknown". */ type: string; /** True when the object's source was part of this call's input. */ provided: boolean; /** Released-API state for non-provided DDIC/API targets, from the bundled snapshot. */ releasedState?: "released" | "deprecated" | "not-released"; /** Curated released CDS successor, when known for a classic table. */ successor?: string; } export interface DependencyEdge { from: string; to: string; /** "db-access" | "call-function" | "inherits" | "implements" | "references-textual". */ kind: string; } export interface DependencyGraph { nodes: DependencyNode[]; edges: DependencyEdge[]; /** Mermaid flowchart of the graph (when requested). */ mermaid?: string; releasedApiSnapshotDate: string; scopeNote: string; } export declare function getObjectDependencies(files: AbapSource[], abapVersion?: AbapVersion, mermaid?: boolean): DependencyGraph;