import type { TaskSpec } from "../types.js";
import type { WriteFamily } from "./turn-attachments.js";
import type { Prepared, RunState } from "./contracts.js";
export interface RunToolMountFactsInput {
    /** borrowed-readonly — the task spec: the config overrides the manifest frame reports. */
    spec: TaskSpec;
    /** borrowed-mutable — the leg's prepared seat: `turnSnapshot.onChange` is installed; the roster, the model and the
     *  prompt manifest are read. */
    prepared: Prepared;
    /** borrowed-readonly — the run's mutable state: the attachment state's presence gates the mount facts; the
     *  telemetry is read for the frames. */
    rs: RunState;
}
export interface RunToolMountFactsResult {
    /** Whether TodoWrite is mounted (and the attachment state exists) — the todo reminder's gate. */
    todoToolMounted: boolean;
    /** Whether TaskCreate is mounted (and the attachment state exists) — the task reminder's gate. */
    taskToolsMounted: boolean;
    /** task #51 F2: the alias-aware write-family resolver (mounted name + aliases → canonical family). */
    writeFamilyOf: (name: string) => WriteFamily | undefined;
    /** Per tool-call id: the execution start time (for the tool_end duration). */
    toolStartAt: Map<string, number>;
    /** Every tool-call id whose start was observed this run and whose result has not been committed yet. */
    startedToolCallIds: Set<string>;
}
export declare function runToolMountFacts(input: RunToolMountFactsInput): RunToolMountFactsResult;
