import type { ArtifactIntent } from '../platform-adapters/types.js'; import { type CatalogAsset } from './snapshot.js'; export type ProjectionSurface = 'platform:claude' | 'platform:agents'; export declare const PROJECTION_SURFACES: readonly ProjectionSurface[]; export interface ProjectedPackage { id: string; sha256: string; paths: string[]; } export interface ProjectionRemoval { id: string; /** Package directory relative to the surface's skill root. */ dir: string; marker: string; /** Files of a re-projected package to leave alone; only the rest are removed. */ keep?: string[]; } export interface ProjectionPlan { surface: ProjectionSurface; intents: ArtifactIntent[]; packages: ProjectedPackage[]; removals: ProjectionRemoval[]; diagnostics: string[]; } export interface ProjectionResult extends ProjectionPlan { dryRun: boolean; changed: string[]; skipped: string[]; /** Where each changed file's previous content was backed up. */ backupDir: string; /** The skill registry rebuilt after the apply, when there was one to rebuild. */ registry?: string; } export interface ProjectionOptions { /** Plan only the removal of this id's package; project nothing. */ unproject?: string; } export declare const catalogMarker: (name: string) => string; /** The first body line of a projected SKILL.md; `jev:` is read by build-skill-registry.cjs. */ export declare const catalogMarkerLine: (a: Pick) => string; /** * Surfaces that still hold a projected copy of catalog skill `id` (a marked * package dir reached without following a link). Read-only; disable/revoke use * it to point at the `project --apply` that removes the copy. */ export declare function projectedSurfaces(root: string, id: string): ProjectionSurface[]; /** Read-only plan: what `applyProjection` would write and remove. */ export declare function planProjection(root: string, surface: ProjectionSurface, opts?: ProjectionOptions): Promise; /** * Plans and applies in one transaction under the platform mutation lock. A dry * run takes the same path with `dryRun` set (no lock, no writes), so its * `changed` list is the prediction. */ export declare function applyProjection(root: string, surface: ProjectionSurface, opts: ProjectionOptions & { dryRun: boolean; }): Promise; //# sourceMappingURL=projection.d.ts.map