import type { FindingCitation } from "./citation.js";
export interface CitationFreshness {
    state: "current" | "changed" | "unknown";
    checkedAt: string;
    head?: string;
    lastCommit?: {
        sha: string;
        summary: string;
        authoredAt: string;
    } | null;
}
export interface CitationFreshnessOptions {
    phrenPath?: string;
    projectRemote?: string | null;
}
export type FreshnessCitation = FindingCitation & {
    projectRemote?: string | null;
};
/** Reads persisted resolutions and checks only; never runs git or accesses the network. Changed evidence survives refresh failures for seven days. */
export declare function cachedCitationFreshness(citation: FreshnessCitation, opts?: CitationFreshnessOptions): CitationFreshness | undefined;
interface RefreshOptions extends CitationFreshnessOptions {
    budgetMs: number;
    signal?: AbortSignal;
    fetchImpl?: typeof fetch;
}
/** Best effort, bounded, and deduplicated per cache key, including background Hook polls. */
export declare function refreshCitationFreshness(citations: readonly FreshnessCitation[], opts: RefreshOptions): Promise<Map<FreshnessCitation, CitationFreshness>>;
export declare function citationFreshnessAnnotation(citation: FindingCitation, value?: CitationFreshness): string;
export {};
