/**
 * Digest route — the "Cloudflare email" moment.
 *
 * Surfaces what ShieldCortex actually did for the user in the last N hours,
 * with a top moments feed and a delta vs the previous equivalent window.
 *
 * Without this, the product is invisible. With it, the user has a one-glance
 * answer to "is ShieldCortex earning its keep?" every time they open the
 * dashboard.
 */
import type { Express } from 'express';
export type DigestWindow = '24h' | '7d' | '30d';
interface DigestCounts {
    scanned: number;
    allowed: number;
    blocked: number;
    quarantined: number;
    memoriesCaptured: number;
    memoriesRecalled: number;
    highSalienceCaptures: number;
}
interface DigestMoment {
    kind: 'block' | 'quarantine' | 'capture' | 'recall' | 'pattern';
    title: string;
    detail: string;
    timestamp: string;
    memoryId?: number;
    auditId?: number;
}
export interface DigestResponse {
    window: DigestWindow;
    windowLabel: string;
    since: string;
    current: DigestCounts;
    previous: DigestCounts;
    delta: Partial<Record<keyof DigestCounts, number>>;
    topMoments: DigestMoment[];
    topThreatPatterns: Array<{
        pattern: string;
        count: number;
    }>;
    generatedAt: string;
}
export declare function buildDigest(window: DigestWindow, project?: string): DigestResponse;
export interface TimelineDay {
    date: string;
    scanned: number;
    blocked: number;
    quarantined: number;
    captured: number;
    recalled: number;
}
/**
 * Returns one row per day for the last `days` days, oldest first.
 * Days with zero activity are still included (gives a clean sparkline shape).
 */
export declare function buildTimeline(days: number, project?: string): TimelineDay[];
export declare function registerDigestRoutes(app: Express): void;
export {};
