/** * Managed .gitignore block for team setups: keep .memoire/ workspace state * local while tracking the shared baseline. Idempotent via fence markers — * re-running init never duplicates the block, and edits inside the fence are * reconciled back to the canonical body. * * Honesty note: a pre-existing `.memoire/` ignore line OUTSIDE the fence * defeats the negation (git cannot re-include files inside an ignored * directory), so we detect and report it instead of silently "succeeding". */ export declare const GITIGNORE_FENCE_START = "# >>> memi (managed) >>>"; export declare const GITIGNORE_FENCE_END = "# <<< memi (managed) <<<"; export interface GitignorePolicyResult { path: string; action: "created" | "updated" | "unchanged"; /** A `.memoire/` ignore line outside the managed block that defeats the baseline negation. */ conflictingLine?: string; } export declare function renderGitignoreBlock(): string; /** * Ensure the managed block exists and matches the canonical body. * Creates .gitignore when missing; appends or reconciles otherwise. */ export declare function ensureGitignorePolicy(projectRoot: string): Promise; /** Read-only variant for `memi doctor` — reports state without writing. */ export declare function checkGitignorePolicy(projectRoot: string): Promise<{ present: boolean; upToDate: boolean; conflictingLine?: string; }>;