/** Callback that reads a repo-relative path, or returns null when it does not exist. */ export type ReadRepoFile = (repoRelativePath: string) => string | null; export interface DelegationTarget { /** Repo-relative file the implementation was handed off to. */ filePath: string; /** Method name on the far side (usually, but not always, the same name). */ symbol: string; } /** * If `symbol` in `filePath` is a one-line hand-off to a method on an imported * collaborator, return where that collaborator lives. `undefined` otherwise — * including every case this cannot read confidently. */ export declare function resolveDelegation(filePath: string, content: string, symbol: string, read: ReadRepoFile): DelegationTarget | undefined; /** * The 1-based line span of `symbol`'s declaration in a file, or `undefined` * when it is not declared there. * * This is what makes a delegation hop mean something. Landing in the right * FILE is not evidence: a service file typically holds several methods, and if * any unrelated one happens to start a timer, a file-level check would call the * loop verified while the method we actually followed does nothing of the kind * — the same false green this whole change exists to remove, reintroduced one * hop further out. Pairing the span with a fact's line pins the evidence to the * method the wrapper actually delegates to. */ export declare function symbolLineSpan(filePath: string, content: string, symbol: string): { start: number; end: number; } | undefined; //# sourceMappingURL=delegation.d.ts.map