/**
 * Content addressing for session nodes.
 *
 * A node's identity is derived purely from its content: the parent hash it
 * chains onto, the turn it carries, and its creation time. Two nodes built from
 * identical lineage and content collapse to the same id, which is what makes the
 * session history a content-addressed DAG rather than a mutable list.
 */
import type { Turn } from "../../llmgateway/contract";
/**
 * Compute the content hash that serves as a node's id.
 *
 * The hash is a SHA-256 over a canonical encoding of the parent id, the turn,
 * and the creation timestamp, rendered as hex and truncated to {@link
 * HASH_WIDTH} characters. A `null` parent (a root) is encoded distinctly from
 * any real hash so roots never collide with chained nodes.
 */
export declare function hashNode(parent: string | null, turn: Turn, createdAt: number): string;
