/**
 * Input Material Contract Registry
 *
 * 外部材料摄取边界契约。
 * 将 zip、目录、PRD、日志、截图、Figma、接口文档等输入材料明确建模为
 * 只读输入、项目上下文、输出目标、证据引用或人工参考。
 * 区分信任等级、读取权限、解压隔离、证据化和 prompt 注入边界。
 */
export type MaterialKind = "project_file" | "external_file" | "archive" | "directory" | "document" | "log" | "image" | "figma" | "api_spec" | "db_schema" | "url" | "clipboard" | "user_text";
export type AccessMode = "read_only" | "read_write" | "forbidden";
export type TrustLevel = "authoritative" | "user_provided" | "project_context" | "external_unverified" | "ai_generated" | "derived";
export type ScopeRole = "input_only" | "project_scope" | "output_target" | "evidence_ref" | "manual_reference";
export type IngestionStatus = "auto_allowed" | "requires_confirmation" | "forbidden";
export interface InputMaterial {
    id: string;
    kind: MaterialKind;
    path_or_ref: string;
    access_mode: AccessMode;
    trust_level: TrustLevel;
    scope_role: ScopeRole;
    hash?: string;
    extracted_to?: string;
    cleanup_required: boolean;
    created_at?: string;
    size_bytes?: number;
}
export type IngestionEvidenceStatus = "pending" | "metadata_read" | "read" | "failed" | "forbidden";
export interface IngestionEvidence {
    evidence_id: string;
    material_id: string;
    source_ref: string;
    status: IngestionEvidenceStatus;
    hash?: string;
    size_bytes?: number;
    detected_kind: string;
    trust_level: TrustLevel;
    access_mode: AccessMode;
    extracted_to?: string;
    parsed_artifacts: string[];
    warnings: string[];
    created_at: string;
}
export interface InputMaterialGovernanceFinding {
    severity: "hard_fail" | "advisory";
    material_id?: string;
    rule: string;
    message: string;
}
/** derived 和 ai_generated 不能单独支撑强结论 */
/**
 * 判断指定信任等级是否可以支撑强结论。
 * @description derived 和 ai_generated 等级不能单独支撑强结论。
 * @param trustLevel - 信任等级
 * @returns 是否可以支撑强结论
 */
export declare function canSupportStrongConclusion(trustLevel: TrustLevel): boolean;
/** 提升信任等级需要 confirmation evidence */
/**
 * 判断是否可以提升信任等级。
 * @param from - 源信任等级
 * @param to - 目标信任等级
 * @param hasConfirmationEvidence - 是否有确认证据
 * @returns 是否可以提升
 */
export declare function canElevateTrust(from: TrustLevel, to: TrustLevel, hasConfirmationEvidence: boolean): boolean;
/** input_only 不得自动变成 project_scope 或 write scope */
/**
 * 判断是否可以更改作用域角色。
 * @description input_only 不得自动变为 project_scope 或 output_target。
 * @param from - 源作用域角色
 * @param to - 目标作用域角色
 * @returns 是否允许更改
 */
export declare function canChangeScopeRole(from: ScopeRole, to: ScopeRole): boolean;
/** access_mode 为 read_only 的材料不得写入 */
/**
 * 判断材料是否允许写入。
 * @description access_mode 为 read_only 的材料不得写入。
 * @param material - 输入材料
 * @returns 是否允许写入
 */
export declare function isWriteAllowed(material: InputMaterial): boolean;
/** 归档解压隔离基准路径 */
export declare const ARCHIVE_EXTRACTION_BASE = ".soloforge/tmp/ingest";
/**
 * 生成隔离解压路径。
 * @param materialId - 材料 ID
 * @returns 隔离解压路径
 */
export declare function getExtractionPath(materialId: string): string;
/** archive 不能直接解压到项目根 */
/**
 * 判断解压路径是否被隔离。
 * @description archive 不能直接解压到项目根。
 * @param extractedTo - 实际解压路径
 * @param projectRoot - 项目根目录
 * @returns 解压路径是否在隔离区域内
 */
export declare function isExtractionPathConfined(extractedTo: string, projectRoot: string): boolean;
/**
 * 对指定路径或引用进行摄取状态分类。
 * @description 优先检查隐私契约，再检查本地禁止/确认模式，默认为 auto_allowed。
 * @param pathOrRef - 路径或引用字符串
 * @returns 摄取状态（auto_allowed / requires_confirmation / forbidden）
 */
export declare function classifyIngestionStatus(pathOrRef: string): IngestionStatus;
/**
 * 根据路径或引用检测材料类型。
 * @param pathOrRef - 路径或引用字符串
 * @returns 检测到的材料类型
 */
export declare function detectMaterialKind(pathOrRef: string): MaterialKind;
/**
 * 检测材料的摄取警告。
 * @param material - 输入材料
 * @returns 警告信息列表
 */
export declare function detectIngestionWarnings(material: InputMaterial): string[];
export interface PromptInjectionPlan {
    required_summary: string[];
    evidence_refs: string[];
    selected_excerpts: string[];
    forbidden_notes: string[];
    manual_confirm_list: string[];
    allowed_sources: string[];
    forbidden_sources: string[];
}
/** 禁止注入 prompt 的材料类型（全量大文件） */
export declare const FORBIDDEN_SOURCE_KINDS: MaterialKind[];
/** 禁止注入 prompt 的来源前缀列表 */
export declare const FORBIDDEN_SOURCE_PREFIXES: string[];
/** 额外禁止注入 prompt 的来源名称列表 */
export declare const EXTRA_FORBIDDEN_SOURCES: string[];
/**
 * 判断指定来源是否为禁止注入的来源。
 * @description prompt 注入不得包含全量大文件。
 * @param pathOrRef - 路径或引用
 * @param kind - 材料类型
 * @returns 是否为禁止来源
 */
export declare function isForbiddenSource(pathOrRef: string, kind: MaterialKind): boolean;
/**
 * 构建 prompt 注入计划。
 * @description 遍历所有材料，分类为允许/禁止来源，生成摘要和确认列表。
 * @param materials - 输入材料列表
 * @param evidences - 可选的摄取证据列表
 * @returns prompt 注入计划
 */
export declare function buildPromptInjectionPlan(materials: InputMaterial[], evidences?: IngestionEvidence[]): PromptInjectionPlan;
/**
 * 创建输入材料实例。
 * @description 自动推断材料类型、摄取状态、信任等级和作用域角色。
 * @param params - 材料参数（kind 可选，将自动推断）
 * @returns 创建的输入材料
 */
export declare function createInputMaterial(params: {
    kind?: MaterialKind;
    path_or_ref: string;
    access_mode?: AccessMode;
    trust_level?: TrustLevel;
    scope_role?: ScopeRole;
    hash?: string;
    size_bytes?: number;
}): InputMaterial;
/**
 * 为指定材料创建摄取证据。
 * @description 读取文件元数据/内容，计算 hash，检测摄取警告。
 * @param material - 输入材料
 * @returns 摄取证据
 */
export declare function createIngestionEvidence(material: InputMaterial, projectPath?: string): IngestionEvidence;
/**
 * 校验输入材料契约的合规性。
 * @description 检查 scope、解压路径、cleanup、信任等级、摄取状态等 8 条规则。
 * @param materials - 待校验的材料列表
 * @returns 治理发现列表（hard_fail 为硬性错误，advisory 为建议项）
 */
export declare function validateInputMaterialContracts(materials: InputMaterial[]): InputMaterialGovernanceFinding[];
/**
 * 验证 IngestionEvidence 完整性。
 * @param evidence - 摄取证据
 * @returns 治理发现列表
 */
export declare function validateIngestionEvidence(evidence: IngestionEvidence): InputMaterialGovernanceFinding[];
//# sourceMappingURL=input_material_contract_registry.d.ts.map