/**
 * Encode a project cwd into a filesystem-safe session-directory name.
 *
 * This is the single source of truth for the cwd → folder-name mapping used by
 * session persistence (`SessionManager`, legacy `session.ts`) and project
 * discovery. Previously three copies drifted; the bug was repeated three times.
 *
 * ## Windows extended-length paths
 *
 * Windows canonicalizes working directories to extended-length form:
 * `\\?\C:\Users\brams`. The `\\?\` prefix — and the `?` it introduces — are
 * illegal in Windows folder names, so `mkdir` throws ENOENT and the sidecar
 * dies on startup. We strip the prefix first so the encoded name is:
 *
 *   1. free of illegal characters, and
 *   2. identical to what the plain (non-canonicalized) path produces.
 *
 * The UNC variant `\\?\UNC\server\share` is normalized to `\\server\share`
 * so it matches a plain UNC path too.
 *
 * The encoding is intentionally one-way; display-time decoding
 * (e.g. `serve-mode`) is best-effort.
 */
export declare function encodeCwd(cwd: string): string;
/**
 * Normalize a Windows extended-length (`\\?\`) path back to its plain form.
 *
 *   `\\?\C:\Users\dev`        → `C:\Users\dev`
 *   `\\?\UNC\server\share`    → `\\server\share`
 *
 * Rust's `canonicalize()` ALWAYS produces the prefixed form, so it is what the
 * shell historically handed the sidecar and what old session headers still
 * record. Nothing else in the system produces it: discovery, the picker and
 * every UI label use the plain form, and Win32 shell APIs reject the prefix
 * outright. Both the folder-name encoding and the cwd read back out of a
 * session header must normalize it, or the same project shows up twice — once
 * as `C:\proj`, once as `\\?\C:\proj`.
 *
 * No-op for plain and POSIX paths.
 */
export declare function stripExtendedLengthPrefix(cwd: string): string;
//# sourceMappingURL=encode-cwd.d.ts.map