import { type ZmxManagedSessionProbe } from '../adapters/backend/zmx-backend.js'; type ManagedProbe = (name: string, sessionId: string) => ZmxManagedSessionProbe; type AttachProcess = (name: string) => { status: number | null; error?: Error; }; export interface ManagedZmxAttachDeps { probe?: ManagedProbe; attach?: AttachProcess; env?: NodeJS.ProcessEnv; } export type FrozenManagedZmxAttach = { ok: true; pid: number; } | { ok: false; message: string; }; export type ManagedZmxAttachResult = { ok: true; } | { ok: false; message: string; }; /** * Freeze the exact PTY-root PID after proving both Botmux ownership labels for * the complete UUID. probeManagedSession itself samples the PID on both sides * of its label reads, so this cannot bind labels from one same-name generation * to the PID of another. */ export declare function freezeManagedZmxAttachTarget(name: string, sessionId: string, deps?: ManagedZmxAttachDeps): FrozenManagedZmxAttach; /** * Re-prove both ownership labels and the frozen PID immediately before handing * the terminal to `zmx attach`. Any missing, unknown, mismatched, or replaced * target seen by this proof fails closed. ZMX's attach API remains name-based, * so an upstream-irreducible replacement race still exists after this proof * and before the attach process resolves the name. */ export declare function attachFrozenManagedZmxSession(name: string, sessionId: string, frozenPid: number, deps?: ManagedZmxAttachDeps): ManagedZmxAttachResult; export {}; //# sourceMappingURL=zmx-managed-attach.d.ts.map