import { type EccProfile, type ResolvedEntry, type ResolvedSkill } from "./index.js"; import { type ClaudeRolePolicy, type SkillTransport, type WorkflowTransport } from "./projection-policy.js"; import { type ProjectionSourceTrust } from "./source-closure.js"; export { PROJECTED_SOURCE_LIMITS, type ProjectionSourceTrust } from "./source-closure.js"; type CapabilityOwner = ResolvedEntry["owner"]; type MergeStrategy = "replace" | "toml-merge"; type OutputMode = "100644" | "100755"; export interface ProjectedEntry extends ResolvedEntry { destination: string; } export interface ProjectedRole extends ProjectedEntry { policy: ClaudeRolePolicy; } export interface ProjectedSkill extends ResolvedSkill { destination: string; transport: SkillTransport; unavailableReason?: string; fallback?: string; } export interface ProjectedWorkflow extends ProjectedEntry { transport: WorkflowTransport; unavailableReason?: string; fallback?: string; } export interface ClientProjection { client: "claude" | "codex"; skills: ProjectedSkill[]; roles: ProjectedRole[]; workflows: ProjectedWorkflow[]; } interface PinnedFileProvenance { kind: "pinned-file"; sourcePin: string; path: string; rawSha256: string; fileType: "regular"; mode: OutputMode; } interface DerivedProvenance { kind: "derived"; sourcePin: string; derivation: "codex-agent-registry"; aggregateSha256: string; inputs: Array<{ path: string; rawSha256: string; }>; } export interface RenderedProjectionFile { provenance: PinnedFileProvenance | DerivedProvenance; normalizedSha256: string; destination: string; owner: "aih"; capabilityOwner: CapabilityOwner; mergeStrategy: MergeStrategy; previousHash: null; mode: OutputMode; content: string; } export interface EccProjection { version: 1; source: EccProfile["source"]; sourceClosure: { id: string; aggregateSha256: string; fileCount: number; totalBytes: number; }; clients: { claude: ClientProjection; codex: ClientProjection; }; files: RenderedProjectionFile[]; } export declare function renderEccProjection(profile: unknown, evidence: unknown, options: { sourceRoot: string; evidenceRoot: string; }): Promise; /** Internal hermetic-test seam. This module is not exported from the package or CLI. */ export declare function renderEccProjectionWithTrust(profile: unknown, evidence: unknown, options: { sourceRoot: string; evidenceRoot: string; }, trust: ProjectionSourceTrust): Promise; export declare function projectionFilesDigest(files: readonly RenderedProjectionFile[]): string; export declare function serializeEccProjection(projection: EccProjection): string;