import type { Destination } from "../../../core/domain/facts/fact.js"; import type { ValueIr } from "../../../core/domain/facts/value-ir.js"; import type { Selector, SelectorStep } from "../../../core/ports/config.port.js"; import type { SyntaxNode } from "../../../infrastructure/parser/ts-utils.js"; export type DestinationBinding = "instance" | "owner_construction" | "owner_declaration"; export type DestinationRequest = { readonly selector: Selector | null; /** The construction the receiver resolves to, when it resolves to one. */ readonly instance: SyntaxNode | null; /** Whether the receiver is the enclosing declaration's own instance. */ readonly isOwnInstance: boolean; /** Every construction of the enclosing type found inside the unit. */ readonly ownConstructions: readonly SyntaxNode[]; /** Declaration-level bindings of each ancestor, most derived first. */ readonly declaredBindings: readonly ReadonlyMap[]; /** Whether any ancestor's declaration lies inside the analysis unit. */ readonly readable: boolean; readonly fold: (node: SyntaxNode | null) => ValueIr; readonly argumentOf: (construction: SyntaxNode, step: SelectorStep) => SyntaxNode | null; }; /** * The ladder of project-map:BEH-011. The first applicable step that yields a * value wins and is recorded as evidence; a step that is inapplicable consumes * no budget, so an exhausted ladder is typed by why it ran out rather than by * how far it got. */ export declare function resolveDestinations(request: DestinationRequest): readonly Destination[];