import type { TaskContextManager } from "../../task_context.js"; import type { ArtifactResolutionResult, QuickVerificationRequest, ResolvedQuickInput } from "../types.js"; import { type DomainName, type ArtifactDeclaration } from "../../types.js"; export declare class ArtifactResolver { private readonly projectRoot; private readonly taskContext?; constructor(projectRoot: string, taskContext?: TaskContextManager | undefined); private contracts; private findArtifact; private resolutionMatches; private findArtifactByPath; private resolvedPaths; private readFirst; private readDeclaredArtifact; private readProjectFile; private prototypePaths; private canonicalizeCompanionOverrides; resolveFull(taskId: string, artifact: string, domain?: DomainName): Promise; resolveQuick(request: QuickVerificationRequest): Promise; } /** companion/reference overrides 规范化(纯函数,verify 侧 resolveFull 与 hash 计算侧共用): * 多候选数组过滤为唯一存在文件、glob 改写为具体路径。双侧同源,消除 * "豁免创建时摘要(computeArtifactCurrentHash) ≠ 验证时摘要(snapshot.contentDigest)"的 * canonicalize 差异(该差异会让 scope=exact 豁免对多候选 override 配置创建即失效)。 */ export declare function canonicalizeCompanionOverrides(projectRoot: string, artifact: ArtifactDeclaration, overrides?: Record): { success: true; overrides?: Record; } | { success: false; error: string; };