export type ArtifactKind = "analysis" | "deliverable" | "review" | "verification";
export type ArtifactFormat = "markdown" | "html" | "diff" | "command";
export interface ArtifactSpec {
    /** Unique identifier — lowercase alphanumeric + hyphens, immutable after creation */
    id: string;
    /** Human-readable display label */
    name: string;
    /** What this artifact is and why it matters */
    description: string;
    /** Nature of the work */
    kind: ArtifactKind;
    /** Output format the agent produces */
    format: ArtifactFormat;
    /** Non-negotiable requirements */
    mustHave: string[];
    /** Strongly recommended */
    shouldHave: string[];
    /** Disqualifying traits */
    mustNotHave: string[];
    /** Other artifact spec IDs that must have artifacts first */
    requires?: string[];
    /** Role best suited to produce this */
    suggestedRole?: string;
    createdAt: number;
    updatedAt: number;
}
/**
 * File-backed artifact spec store. Each spec is a YAML file in
 * artifact-specs/<id>.yaml at the repo root. Version controlled —
 * edits via the UI write back to the same files so they can be committed.
 */
export declare class ArtifactSpecStore {
    private specs;
    constructor();
    private specFilePath;
    private loadAll;
    private saveOne;
    private seedDefaults;
    put(spec: ArtifactSpec): void;
    get(id: string): ArtifactSpec | undefined;
    remove(id: string): void;
    /** Re-read all YAML files from disk, picking up external changes */
    reload(): void;
    getAll(): ArtifactSpec[];
    update(id: string, updates: Partial<Omit<ArtifactSpec, "id" | "createdAt">>): boolean;
}
//# sourceMappingURL=artifact-spec-store.d.ts.map