export type PasteContentType = 'markdown' | 'plain';
export interface PasteRow {
    id: string;
    content: string;
    content_type: PasteContentType;
    title: string | null;
    source: string | null;
    job_id: number | null;
    created_at: number;
    view_count: number;
}
export interface SavePasteOpts {
    content: string;
    content_type?: PasteContentType;
    title?: string;
    source?: string;
    job_id?: number;
}
/**
 * Save a paste. Returns the new row's id (uuidv4). Returns null if the
 * underlying DB is broken (caller should fall back to truncation).
 */
export declare function savePaste(opts: SavePasteOpts): string | null;
export declare function getPaste(id: string): PasteRow | null;
export declare function bumpViewCount(id: string): void;
export interface ListOpts {
    limit?: number;
    offset?: number;
}
export declare function listPastes(opts?: ListOpts): PasteRow[];
export declare function deletePaste(id: string): boolean;
export declare function countPastes(): number;
/** Public retention API — used by tests + manual /api/viewer/prune. */
export declare function pruneExpiredPastes(): number;
/** Stop the periodic retention sweep (tests + graceful shutdown). */
export declare function stopViewerRetentionSweep(): void;
export declare function closeViewerDb(): void;
//# sourceMappingURL=viewer-local.d.ts.map