import { type CelSegment, type LoadedGraph, type LoadedModule } from "@telorun/analyzer"; import type { DefinitionResult } from "../types.js"; /** Resolve the CEL identifier under the cursor to where it is declared. * * `variables` / `secrets` / `ports` navigate to their block on the module doc, * and their member to that block's entry. `resources` navigates through the * same instance lookup a `!ref` uses. Anything else (a step result, a handler * scope like `request`, a member of a resolved value) has no manifest * declaration to jump to and resolves to nothing. * * A body the author is still writing may not parse; that means there is no * chain to hit-test, not an error to surface from a navigation request — the * analyzer reports the syntax error itself. Only that failure is tolerated: a * defect in the CEL wrapper propagates rather than reading as "nothing to * navigate to". */ export interface CelTargetResolvers { /** Where a step of the CURRENT resource is declared. Supplied by the caller * because finding one needs the declaring kind's step-body annotation, which * the graph alone does not carry. */ locateStep?(stepName: string): DefinitionResult | undefined; /** Where a context binding (`request.query`, `self.`, * `result.`) was declared. Same reason: the site is derived by an * `x-telo-context-*` annotation, which only the scope query can read. */ locateContextBinding?(parts: string[]): DefinitionResult | undefined; } export declare function resolveCelTarget(graph: LoadedGraph, currentModule: LoadedModule, segment: CelSegment, offset: number, resolvers?: CelTargetResolvers): DefinitionResult | undefined; //# sourceMappingURL=resolve-cel-target.d.ts.map