export declare const CLAUDE_PROJECTS_DIR: string;
/**
 * Default ignored project-dir prefixes.
 *
 * Project dirs under ~/.claude/projects/ are slugified absolute paths
 * (each `/` becomes `-`). Any project dir whose name starts with one
 * of these prefixes is hidden from chat listings.
 *
 * - "-tmp" — `/tmp/...` throwaway transcripts (created by quick-completion,
 *   sdk-info, and other SDK callers that pass `cwd: tmpdir()`).
 * - "-private-" — macOS resolves `/tmp` to `/private/tmp`; the SDK
 *   sometimes records the realpath, slugifying as `-private-tmp...`.
 *   The same prefix also covers anything else under `/private/`.
 */
export declare const DEFAULT_IGNORED_PROJECT_DIR_PREFIXES: readonly string[];
/**
 * Read the user-configured ignored project-dir prefixes from disk.
 * Falls back to defaults if no config file exists or it's malformed.
 * Results are cached in-memory and invalidated by saveIgnoredProjectDirPrefixes().
 */
export declare function getIgnoredProjectDirPrefixes(): string[];
/**
 * Persist the user's configured ignored project-dir prefixes.
 * Writes to ~/.callboard/ignored-project-dirs.json and refreshes the cache.
 */
export declare function saveIgnoredProjectDirPrefixes(prefixes: string[]): string[];
/**
 * True if the given project-dir name (e.g. "-tmp-xyz" or "-Users-foo-repo")
 * matches any configured ignore prefix.
 */
export declare function isIgnoredProjectDir(dirName: string): boolean;
/**
 * Read ~/.claude/projects/ and return the project dir names that aren't
 * on the ignore list. Safe to call when the dir doesn't exist.
 */
export declare function listClaudeProjectDirs(): string[];
/**
 * Resolve the absolute path to the `claude` CLI binary.
 *
 * Resolution order:
 * 1. `CLAUDE_BINARY` environment variable (explicit override)
 * 2. `which claude` (respects the user's PATH)
 * 3. Well-known install locations (handles non-login shells, daemons, etc.)
 * 4. Falls back to the bare name `"claude"` so execSync still gets a
 *    chance to find it through its own PATH lookup.
 *
 * The result is cached for the lifetime of the process.
 */
export declare function getClaudeBinaryPath(): string;
/**
 * Absolute path to the Callboard data directory.
 * Defaults to ~/.callboard; override with CALLBOARD_DATA_DIR env var
 * (e.g. ~/.callboard-dev for development).
 */
export declare const DATA_DIR: string;
/** Path to the primary .env file inside the data directory. */
export declare const ENV_FILE: string;
/**
 * Base directory for agent workspaces (~/.callboard/agent-workspaces by default).
 * Override via CALLBOARD_WORKSPACES_DIR (or legacy CCUI_AGENTS_DIR).
 */
export declare const WORKSPACES_DIR: string;
/** Default MCP config directory for local proxy mode. */
export declare const DEFAULT_MCP_LOCAL_DIR: string;
/** Default MCP config directory for remote proxy mode. */
export declare const DEFAULT_MCP_REMOTE_DIR: string;
/** @deprecated Old local directory name, kept for migration only. */
export declare const LEGACY_MCP_LOCAL_DIR: string;
/** @deprecated Old remote directory name, kept for migration only. */
export declare const LEGACY_MCP_REMOTE_DIR: string;
/** Ensure the data directory exists (idempotent, safe to call multiple times). */
export declare function ensureDataDir(): void;
/**
 * Scaffold a default ~/.callboard/.env if one does not exist.
 * Returns true if a new file was created (first run), false otherwise.
 */
export declare function ensureEnvFile(): boolean;
export declare function generateInstanceName(): string;
/**
 * Ensure INSTANCE_NAME is set in the .env file.
 * If not present, generates a random name and appends it.
 */
export declare function ensureInstanceName(): string;
/** Get the current instance name. */
export declare function getInstanceName(): string;
/** Update the instance name in the .env file and process.env. */
export declare function saveInstanceName(name: string): void;
/**
 * Convert a project directory name back to a folder path.
 * The SDK encodes paths by replacing ALL non-alphanumeric chars with -, so
 * "-home-cybil-my-app" is ambiguous (could be /home/cybil/my-app or
 * /home/cybil/my/app, or even /home/cybil/my.app).
 *
 * The encoding regex is: replace(/[^a-zA-Z0-9]/g, "-")
 * This means /, ., _, spaces, etc. all become dashes.
 *
 * Uses a greedy left-to-right algorithm: at each dash boundary, check if
 * treating it as a "/" yields an existing directory. If so, commit the split.
 * If not, check if treating it as a "." yields a valid directory prefix
 * (handles periods in intermediate folder names like /path/.callboard/src
 * or /path/v2.0/src). Otherwise, keep it as a "-" in the current segment.
 *
 * After the initial greedy pass, if the final resolved path doesn't exist,
 * we try replacing dashes with dots in each segment since dots in folder names
 * (e.g. worktree names like "repo.branch-name") are the most common source
 * of ambiguity. We also try merging incorrectly-split segments back together
 * with dots for cases where the greedy algorithm split at a directory that
 * happened to exist by coincidence.
 */
export declare function projectDirToFolder(dirName: string): string;
//# sourceMappingURL=paths.d.ts.map