import type { TrackerConfig } from './types.js'; /** * Name of the per-project state directory holding tracker config and data * (`//tracker-config.json`, database, …). Defaults to * `.volter`; hosts that need a different directory set VOLTER_STATE_DIR. * Every path in this package must go through these helpers, never the * literal. */ export declare function stateDirName(): string; export declare function trackerConfigPath(projectRoot: string): string; export declare function gitCommonDir(projectRoot: string): string | null; /** Is this tracker linked to an external provider? Linked issue data is the provider's truth; * locally it's a per-clone cache, not committed (vs. a local tracker, whose store is committed). */ export declare function isLinkedTracker(projectRoot: string): boolean; /** Board scope for a LOCAL tracker (see TrackerConfig.board). `shared` only takes effect for an * unlinked tracker inside a git repo (linked already has one central store; no git → nothing to share). */ export declare function boardScope(projectRoot: string): 'branch' | 'shared'; /** The central board INDEX dir — a folder of symlinks, one per issue, each pointing at the real * committed md in whatever worktree currently owns it. Shared mode only; in branch mode it equals the * committed store, so the index layer is a transparent no-op. Lives inside `.git`, so never committed. */ export declare function boardIndexDir(projectRoot: string): string; /** The MAIN (trunk) worktree's committed issue store — the read fallback when an index symlink dangles * (its worktree was removed: the truth is now on trunk post-merge, or the issue is gone). Null without git. */ export declare function mainWorktreeMarkdownDir(projectRoot: string): string | null; /** Root for machine-local cache (linked issue store, sync state, blobs, evidence staging). * - Linked: `/ztrack` — ONE cache shared by every worktree of the clone, never * pushed (it's inside `.git`). A fresh worktree sees the same issues with no per-worktree sync. * - Local (or no git available): the per-worktree `` — the issue store there is * committed and branch-scoped on purpose (work + proof + issue-state merge with the code). */ export declare function cacheRoot(projectRoot: string): string; /** The markdown issue store — committed `/tracker/markdown` when local, the shared * per-clone `/ztrack/tracker/markdown` when linked. Every reader/writer of the * issue store MUST go through this, never the literal path. */ export declare function markdownStoreDir(projectRoot: string): string; /** Sync bookkeeping (reconcile base, conflicts, identity bindings) — under the linked cache root. */ export declare function syncStateDir(projectRoot: string): string; /** Provider connector cache (poll cursors, twin event log) — under the linked cache root. */ export declare function providerCacheDir(projectRoot: string): string; /** The effective evidence store mode (resolves `auto`). `commit` for a local tracker, `attach` * for a linked one — overridable via `config.evidence.store`. */ export declare function evidenceStore(projectRoot: string): 'commit' | 'attach' | 'external'; /** Relevance-anchor enforcement (`config.relevance`). Default `optional` (anchors opt-in, the * non-breaking default everywhere). `required` makes a preset enforce that every passed AC * declares its `paths` anchor — read by the default preset's loadContext and surfaced on the * validation context so its rules can mandate the anchor without re-reading disk. */ export declare function relevanceMode(projectRoot: string): 'optional' | 'required'; /** Directory for evidence files (relative paths cited as `image=`). Default `.volter/evidence`; * committed (not gitignored) when the store mode is `commit`, so it travels and verifies at the * cited commit. */ export declare function evidenceDir(projectRoot: string): string; export declare function ensureTrackerGitignore(root: string): void; export declare function projectRootFrom(start?: string): string; export declare function loadTrackerConfig(projectRoot?: string): TrackerConfig; /** * Canonical resolution of the local tracker SQLite path. Every reader * (tracker loader/exporter, sync relay, drift audit) must use this — copies * with diverging defaults read an empty store and silently stall instead of * failing. */ export declare function trackerDatabasePath(projectRoot?: string): string; export declare function loadEnvFiles(projectRoot: string): void;