/** * Persistent project binding — which Project should this machine's CLI output * belong to? * * Stored at ~/.config/remixmate/projects.json, NOT in credentials.json: that * file is a 0600 secret store keyed by API base URL, with different lifetime * and different blast radius on corruption. * * Two layers, because host cwd semantics are not uniform: * - `byPath` — keyed by absolute cwd. Hosts that run inside the user's real * repo (Codex, Claude Code) get per-repo bindings. * - `default` — a single fallback. Hosts that spawn a throwaway working * directory per conversation (WorkBuddy uses * ~/WorkBuddy/) would never hit a byPath entry, so a * cwd-only design silently degrades to nothing for them. * * See docs/cli-project-binding-design.md §3. */ export declare const CONFIG_DIR: string; export declare const PROJECTS_FILE: string; export interface StoredBinding { projectId: string; /** Which layer matched — surfaced by `project show` / `doctor`. */ scope: 'path' | 'default'; } /** Look up the binding for a cwd: exact byPath match first, then the default. */ export declare function readBinding(apiBaseUrl: string, cwd?: string): Promise; /** Bind a project to this cwd (`scope: 'path'`) or as the fallback (`'default'`). */ export declare function writeBinding(apiBaseUrl: string, projectId: string, scope: 'path' | 'default', cwd?: string): Promise; /** Drop a binding. Returns true when something was actually removed. */ export declare function clearBinding(apiBaseUrl: string, scope: 'path' | 'default', cwd?: string): Promise;