import type { Check } from "../internals/verify.js"; import { type TrustSource } from "../trust/fetch.js"; import { type TrustLock } from "../trust/lock.js"; export declare const PROMOTION_SNAPSHOT_LIMITS: Readonly<{ maxDepth: 64; maxFiles: 4096; maxFileBytes: number; maxTotalBytes: number; maxInputNodes: 100000; }>; export interface PromotionSnapshotSourceBinding { id: string; kind: "local" | "github"; source: string; ref?: string; pinnedSha?: string; } export interface SkillPromotionSnapshotInput { contextDir: string; source: TrustSource; sourceBinding: PromotionSnapshotSourceBinding; selectedSkills?: ReadonlySet; workingTrustLock: TrustLock; promotedAt: string; analyzersRun: readonly string[]; findings: readonly Check[]; } export interface SkillPromotionSnapshotFile { sourceRel: string; targetRel: string; contents: Buffer; sha256: string; } export interface SkillPromotionSnapshot { files: SkillPromotionSnapshotFile[]; promotedSkills: string[]; artifactHashes: Array<{ path: string; sha256: string; }>; nextTrustLock: TrustLock; nextTrustLockBytes: Buffer; } export interface SkillPromotionSnapshotDeps { beforeFileRead?: (path: string) => void; afterFileResolve?: (path: string) => void; } export declare function serializeTrustLockBytes(lock: TrustLock): Buffer; /** Read and derive one repo-local skill promotion snapshot without performing effects. */ export declare function snapshotSkillPromotion(input: unknown, deps?: SkillPromotionSnapshotDeps): SkillPromotionSnapshot;