/** * Where .faf data came from: the file readFaf read it from (its real path) and * the text it read. writeFaf checks a write of that data against it — when the * file changed on disk after the read, the write is refused instead of being * made over the newer edit. Kept apart from interop/faf.ts so the pure parts * of detection (updateExistingFaf) can carry it without importing a module * that runs git. */ /** The file a data object was read from, and the text read. */ export interface FafSource { real: string; text: string; } /** The source recorded for `data`, if any. */ export declare function fafSourceOf(data: unknown): FafSource | undefined; /** Record that `data` holds what `source.text` (read from `source.real`) says. */ export declare function setFafSource(data: object, source: FafSource): void; /** Let `to` — data made from `from` (a copy with empty slots filled, say) — * carry the file `from` was read from. Returns `to`. */ export declare function carryFafSource(from: unknown, to: T): T; /** Mark `data` as a fill of the file it was read from — what `faf auto` * (updateExistingFaf) makes: detected values in the file's empty slots. * writeFaf leaves a node with an anchor that an alias reads as written in * such data, since filling it would change every alias. Returns `data`. */ export declare function markAsFill(data: T): T; /** True when `data` was marked with {@link markAsFill}. */ export declare function isFill(data: unknown): boolean;