export type GitPaths = { repoDir: string; commonGitDir: string; headPath: string; }; /** * Find git metadata paths by walking up from cwd. * Handles both regular git repos (.git is a directory) and worktrees (.git is a file). */ export declare function findGitPaths(cwd: string): GitPaths | null; /** * Provides git branch and extension statuses - data not otherwise accessible to extensions. * Context usage is on ctx.getContextUsage(), token stats on ctx.sessionManager.getEntries(), and model info on ctx.model. */ export declare class FooterDataProvider { private cwd; private static readonly WATCH_DEBOUNCE_MS; private extensionStatuses; private cachedBranch; private gitPaths; private headWatcher; private headWatchFilePath; private headWatchFileListener; private reftableWatcher; private reftableTablesListWatcher; private reftableTablesListPath; private reftableTablesListFingerprint; private reftableTablesListWatchFileListener; private branchChangeCallbacks; private availableProviderCount; private refreshTimer; private gitWatcherRetryTimer; private refreshInFlight; private refreshPending; private disposed; private gitWatchersStarted; private cwdGeneration; private watcherGeneration; private readonly cwdBranches; constructor(cwd: string); /** Start post-frame git branch watching. Branch discovery remains lazy for first render. */ startGitWatcher(): void; /** Current git branch for the displayed session cwd, defaulting to this provider's cwd. */ getGitBranch(cwd?: string): string | null; /** Extension status texts set via ctx.ui.setStatus() */ getExtensionStatuses(): ReadonlyMap; /** Subscribe to branch changes. An explicit cwd retains its watcher until unsubscribe. */ onBranchChange(callback: () => void, cwd?: string): () => void; private createCwdProvider; /** Internal: set extension status */ setExtensionStatus(key: string, text: string | undefined): void; /** Internal: clear extension statuses */ clearExtensionStatuses(): void; /** Number of unique providers with available models (for footer display) */ getAvailableProviderCount(): number; /** Internal: update available provider count */ setAvailableProviderCount(count: number): void; setCwd(cwd: string): void; /** Internal: cleanup */ dispose(): void; private ensureGitPaths; private notifyBranchChange; private scheduleRefresh; private refreshGitBranchAsync; private resolveGitBranchSync; private resolveGitBranchAsync; private clearGitWatchers; private installHeadPollingFallback; private installReftableTablesListPolling; private scheduleGitWatcherRetry; private handleGitWatcherError; private readReftableTablesListFingerprint; private scheduleReftableRefresh; private handleReftableDirectoryEvent; private setupGitWatcher; } /** Read-only view for extensions - excludes setExtensionStatus, setAvailableProviderCount and dispose */ export type ReadonlyFooterDataProvider = Pick; //# sourceMappingURL=footer-data-provider.d.ts.map