/**
 * Session-summarizer configuration (PHNX-3939).
 *
 * Resolves the three knobs behind the daemon summarizer — enabled / base URL /
 * model — from `agents config` (`summarizer.*`, user-scope in the central
 * agents.yaml) with a per-process env override
 * (`AGENTS_SUMMARIZER_ENABLED` / `AGENTS_SUMMARIZER_BASEURL` /
 * `AGENTS_SUMMARIZER_MODEL`). Off by default: with no config and no env, the
 * summarizer is disabled and makes zero model calls.
 *
 * `isSummarizerReady()` is memoized on a short TTL because the display merge
 * (the watch-stream projections) calls it once per session row — a fresh
 * agents.yaml read per row would defeat the "blazing fast" requirement.
 */
export interface SummarizerConfig {
    enabled: boolean;
    /** Anthropic-wire base URL (Ollama/vLLM/LiteLLM), or undefined when unconfigured. */
    baseUrl?: string;
    /** Model id to request, or undefined when unconfigured. */
    model?: string;
}
/**
 * Resolve the full summarizer config. Env overrides the stored config key by key;
 * an unset env var falls through to `agents config`, then to the built-in
 * default (disabled). Never throws — a missing/corrupt config reads as unset.
 */
export declare function resolveSummarizerConfig(env?: NodeJS.ProcessEnv): SummarizerConfig;
/**
 * True only when the summarizer is enabled AND has a base URL + model to call.
 * A configuration that is `enabled` but missing an endpoint cannot produce a
 * summary, so it is treated as unconfigured (the service no-ops, the merge marks
 * `skipped`) rather than erroring on every tick.
 */
export declare function isSummarizerRunnable(config: SummarizerConfig): boolean;
/**
 * Memoized "will a summary actually be produced?" check for the hot merge path.
 * Reflects {@link isSummarizerRunnable} — enabled AND a base URL AND a model —
 * NOT just `enabled`, because an enabled-but-unconfigured summarizer computes
 * nothing, so a row with no cached summary must read `skipped`, not a `pending`
 * that never resolves (the exact case: `summarizer.enabled on` set before the
 * endpoint). TTL keeps a config change visible within a few seconds without a
 * per-row agents.yaml read.
 */
export declare function isSummarizerReady(nowMs?: number): boolean;
/** Test seam: drop the memoized ready flag so the next read re-resolves. */
export declare function resetSummarizerReadyCacheForTest(): void;
