export interface HistoryFormatOptions {
    /** Optional H1 prepended to the transcript. */
    title?: string;
    /** Render assistant thinking blocks (default: elided). */
    includeThinking?: boolean;
    /** Render tool intent comment before tool call lines. */
    includeToolIntent?: boolean;
    /** Render watched-session roles as inline `**agent**:` / `**user**:` labels (collapsing consecutive same-role messages) instead of `## ` headings, so a primary transcript embedded inside an advisor turn stays visually distinct. */
    watchedRoles?: boolean;
    /**
     * Expand the primary agent's injected constraint context — plan mode's rules
     * (`plan-mode-context`) and the approved plan it implements
     * (`plan-mode-reference`) — verbatim instead of as a truncated one-liner,
     * wrapped in a `<primary-context>` tag so a reviewer reads it as the primary's
     * instructions, not its own. The advisor sets this: a truncated rule (plan
     * mode's "NEVER create files … except the plan file") makes it raise false
     * blockers. See {@link PRIMARY_CONTEXT_CUSTOM_TYPES}. Other custom messages
     * still collapse to a one-liner.
     */
    expandPrimaryContext?: boolean;
    /**
     * Append the full unified diff (from a tool result's `details.diff`) below
     * edit/apply_patch tool lines, instead of just the path. The advisor sets
     * this so it sees what changed without re-reading the file.
     */
    expandEditDiffs?: boolean;
}
/**
 * Hidden custom messages that inject the primary agent's operative *constraints*
 * — plan mode's rules and the approved plan it implements. A reviewer (the
 * advisor) must read these verbatim; truncating them hides load-bearing
 * exceptions (e.g. plan mode permits exactly one plan file). Every other custom
 * type stays a one-liner.
 *
 * Deliberately excludes `goal-mode-context`: its body carries live budget
 * counters (tokens/seconds used) that change every turn, so it can neither be
 * deduped against a prior copy nor expanded each turn without flooding the
 * reviewer — and its constraints don't drive the file-write misreads this
 * targets.
 */
export declare const PRIMARY_CONTEXT_CUSTOM_TYPES: ReadonlySet<string>;
/**
 * Format a session's message array as a concise markdown transcript.
 *
 * `messages` is the session's in-memory message array (or the read-only
 * equivalent loaded from a session file) — the same shapes
 * `session-dump-format.ts` consumes.
 */
export declare function formatSessionHistoryMarkdown(messages: unknown[], opts?: HistoryFormatOptions): string;
