import { ElementDeclarationNode } from '../../../../core/types/nodes'; import { Filepath } from '../../../../core/types/filepath'; import { default as Compiler } from '../../../index'; import { DepIdentifier } from '../types'; export interface InlineDepDefinition { kind: 'inline'; op: string; fullStart: number; fullEnd: number; } export interface BlockDepDefinition { kind: 'block'; declaration: ElementDeclarationNode; } export type DepDefinition = InlineDepDefinition | BlockDepDefinition; /** * Finds the `Dep` block or inline `[dep: …]` setting that carries the edge `target` names. * * Matching runs on resolved table and column symbols, the way {@link findRefDefinition} does. * The endpoints' source text cannot be compared instead: `a.b` is `schema.table` or * `table.field` depending on what `a` resolves to, so a mixed-level edge such as * `a.x -> b` is not describable without the symbol table. * * A target with no field names matches only an edge with no columns on that side. */ export declare function findDepDefinition(compiler: Compiler, filepath: Filepath, target: DepIdentifier): DepDefinition | undefined;