/**
 * Research manifest CRUD operations.
 * Ports lib/skills/research-manifest.sh.
 *
 * Manages MANIFEST.jsonl (append-only JSONL format) for agent outputs.
 * Supports read, append, find, filter, archive, and rotation.
 *
 * @epic T4454
 * @task T4520
 */
import type { ManifestEntry } from '../types.js';
/**
 * Ensure agent outputs directory and manifest file exist.
 * @task T4520
 */
export declare function ensureOutputs(cwd?: string): {
    created: string[];
};
/**
 * Read all manifest entries.
 * @task T4520
 */
export declare function readManifest(cwd?: string): ManifestEntry[];
/**
 * Append a manifest entry (atomic JSONL append).
 * @task T4520
 */
export declare function appendManifest(entry: ManifestEntry, cwd?: string): void;
/**
 * Find a manifest entry by ID.
 * @task T4520
 */
export declare function findEntry(id: string, cwd?: string): ManifestEntry | null;
/**
 * Filter manifest entries by criteria.
 * @task T4520
 */
export declare function filterEntries(criteria: {
    status?: string;
    agentType?: string;
    topic?: string;
    linkedTask?: string;
    actionable?: boolean;
}, cwd?: string): ManifestEntry[];
/**
 * Get entries with pending follow-ups.
 * @task T4520
 */
export declare function getPendingFollowup(cwd?: string): ManifestEntry[];
/**
 * Get unique follow-up task IDs from all manifest entries.
 * @task T4520
 */
export declare function getFollowupTaskIds(cwd?: string): string[];
/**
 * Check if a task has linked research.
 * @task T4520
 */
export declare function taskHasResearch(taskId: string, cwd?: string): {
    hasResearch: boolean;
    count: number;
};
/**
 * Archive a manifest entry (move to archive status).
 * @task T4520
 */
export declare function archiveEntry(entryId: string, cwd?: string): boolean;
/**
 * Rotate manifest by archiving old entries.
 * @task T4520
 */
export declare function rotateManifest(maxEntries?: number, cwd?: string): number;
//# sourceMappingURL=research.d.ts.map