/**
 * A2ACheckInSummarizer — Layer 4 summarizer core (THREADLINE-A2A-COHERENCE-SPEC).
 *
 * Turns an ongoing agent-to-agent conversation into a short, conversational check-in for the
 * operator ("here's how the conversation with Dawn is going"). The peer's words are UNTRUSTED
 * content (a peer could try to poison the summary or inject instructions), so this module:
 *
 *   1. REDACTS credentials/secrets out of the conversation before it ever reaches the LLM
 *      (reuses sanitizeTmuxOutput's credential patterns — the same the PresenceProxy uses).
 *   2. FRAMES the peer content as untrusted data to be SUMMARIZED, never instructions to follow.
 *   3. Requires ATTRIBUTION — the summary says "Dawn says X", never asserts the peer's claims
 *      as fact (so a peer can't manufacture false operator pressure).
 *   4. GUARDS the generated summary (guardProxyOutput) — no URLs / commands / credential-request
 *      phrasing leaks into the operator's topic.
 *
 * The prompt build + output guard here are pure + tested; the I/O shell (the LlmQueue call on a
 * background lane, the CollaborationSurfacer routing, the cadence) wraps these.
 */
export type SummaryKind = 'salience' | 'heartbeat';
export interface SummaryPromptInput {
    /** The peer agent's display name (what the operator sees: "Dawn"). */
    peerName: string;
    /** Recent a2a conversation turns, raw. Redacted + framed as untrusted before the LLM sees it. */
    historyText: string;
    /** salience = something happened worth surfacing; heartbeat = silence-breaker "still talking". */
    kind: SummaryKind;
    /** Optional extra credential patterns (agent-configured), forwarded to the redactor. */
    extraCredentialPatterns?: string[];
    /** Cap on how much conversation text to feed the summarizer (bytes). Default 8 KB. */
    maxHistoryBytes?: number;
}
/**
 * Build the LLM prompt for an a2a check-in summary. Pure (no I/O, no randomness).
 * Redacts the conversation, frames it as untrusted data, and asks for an attributed, brief gist.
 */
export declare function buildSummaryPrompt(input: SummaryPromptInput): string;
export interface SummaryGuardResult {
    safe: boolean;
    reason?: string;
    /** The summary, trimmed, when safe. */
    text?: string;
}
/**
 * Guard a generated summary before it surfaces to the operator's topic. Pure.
 * Rejects empty output and anything guardProxyOutput flags (URLs / commands / credential-asks).
 */
export declare function guardSummary(summary: string | null | undefined): SummaryGuardResult;
//# sourceMappingURL=A2ACheckInSummarizer.d.ts.map