/**
 * T-AUTO-HANDOFF — the four surface writers.
 *
 * (a) handover doc: atomic tmp+rename at a STABLE per-session path (idempotent
 *     rewrites — re-running a handoff updates, never accumulates).
 * (b) MEMORY.md: marker-delimited managed region ONLY (the settings-writer
 *     `@opensquid` marker contract applied to a doc) — bytes outside the
 *     markers are never touched; absent file → surface skipped.
 * (c) work-graph: upsert one `handoff-<sid8>` issue (stable title key).
 * (d) chat: best-effort daemon `send` — a down daemon NEVER fails the handoff.
 *
 * Imports from: node:fs/promises, node:os, node:path, ./collect.js,
 *   ./render.js, ../paths.js, ../../workgraph/store.js,
 *   ../../chat_daemon/client.js.
 * Imported by: handoff/index.ts.
 */
import { type HandoffState } from './collect.js';
export declare const HANDOFF_BEGIN = "<!-- opensquid:handoff:begin -->";
export declare const HANDOFF_END = "<!-- opensquid:handoff:end -->";
export interface SurfaceOutcome {
    surface: 'doc' | 'memory' | 'workgraph' | 'chat';
    ok: boolean;
    detail: string;
}
/** `/`→`-` — the EXISTING auto-memory dir naming convention (doctor.ts:36-38;
 *  deliberately a duplicated one-liner there too — no cli↔runtime import edge). */
export declare function encodeProjectPath(projectPath: string): string;
export declare function memoryMdPathFor(umbrellaRoot: string): string;
/** Replace the managed region; insert after the first H1 when absent; prepend
 *  when no H1. Bytes outside the markers are NEVER touched. */
export declare function spliceResumeBlock(memoryMd: string, block: string): string;
export interface WriteHandoffResult {
    docPath: string;
    outcomes: SurfaceOutcome[];
}
export declare function writeHandoffSurfaces(state: HandoffState, opts?: {
    narrative?: string;
}): Promise<WriteHandoffResult>;
//# sourceMappingURL=write.d.ts.map