/** * Which strategy answered. The `matched` flag is the part callers care about: * strategies 1-5 and an explicit default all identify the project the caller * meant; 6 and 7 substitute a different one. */ export type ResolutionStrategy = 'exact_id' | 'alias' | 'env_root_exact' | 'absolute_path' | 'cwd_exact' | 'env_root_fallback' | 'cwd_fallback' | 'default_project'; export interface ResolutionRecord { /** What the caller asked for. Undefined when the call omitted a project id. */ requested?: string; /** The id of the project actually served. */ resolvedId: string; /** The path actually served — the field strategy 6 substitutes silently. */ resolvedPath: string; strategy: ResolutionStrategy; /** False when the resolver substituted a project the caller did not ask for. */ matched: boolean; } /** * Run `fn` with resolution tracking active. Nested calls share the outermost * slot, so a tool that resolves several projects reports the last one — good * enough for the single-project calls this exists to protect, and honest about * it rather than silently reporting the first. */ export declare function withResolutionTracking(fn: () => Promise): Promise; /** Called by the resolver at each of its exits. A no-op outside a tracked scope. */ export declare function recordResolution(requested: string | undefined, resolvedId: string, resolvedPath: string, strategy: ResolutionStrategy): void; /** The resolution that happened during this dispatch, if any. */ export declare function currentResolution(): ResolutionRecord | undefined; //# sourceMappingURL=projectResolution.d.ts.map