/**
 * Versioned prompt registry.
 *
 * Every prompt used in an eval run is registered with an explicit version.
 * Reports include the content hash so A/B compares are rigorous: if the
 * hash changes between two reports, the prompt actually changed; if it
 * matches, the variance is elsewhere.
 *
 * Hash is SHA-256(content), truncated to 12 hex chars for readability.
 * Uses the Web Crypto API (works in Workers, Node 22+, browsers).
 */
export interface PromptHandle {
    /** Stable human-readable id, e.g. 'browser.system' */
    id: string;
    /** Caller-chosen version string, e.g. 'v3' or '2026-04-20' */
    version: string;
    /** SHA-256 of content, 12-hex-char prefix */
    hash: string;
    /** Full prompt body */
    content: string;
}
export declare class PromptRegistry {
    private readonly entries;
    /**
     * Register a prompt. Re-registering the same id+version with DIFFERENT
     * content throws — versions are immutable. Re-registering with the SAME
     * content is a no-op (idempotent).
     */
    register(id: string, version: string, content: string): Promise<PromptHandle>;
    /** Look up a registered prompt. Throws if unknown — no implicit defaults. */
    get(id: string, version: string): PromptHandle;
    /** Return all versions of an id, newest-first (lex-descending on version). */
    listVersions(id: string): PromptHandle[];
    /** Snapshot the whole registry — useful for including in reports. */
    list(): PromptHandle[];
    /** Verify a hash against registered content. Returns null if not found. */
    verifyHash(id: string, version: string, expectedHash: string): boolean | null;
}
/** SHA-256(content) → first 12 hex chars. Stable across runtimes. */
export declare function hashContent(content: string): Promise<string>;
//# sourceMappingURL=prompt-registry.d.ts.map