/** * Folded spelling as a case-insensitive, normalization-insensitive volume sees * it. `toLowerCase()` alone is not Unicode case folding: final sigma `ς` * stays `ς` while `Σ` lowers to `σ`, yet APFS and NTFS treat all three as one * name. Mapping each code point through its single-code-point upper case * first (simple case folding) closes those gaps. Expanding upper cases such * as `ß` -> `SS` are left alone: filesystems use simple, not full, folding. */ export declare function foldVaultKey(key: string): string; export interface CaseAliasTracker { /** Record a key the remote LIST holds (a live object). */ observeRemote(remoteKey: string): void; /** * Stop observing and return the aliased keys. Drops the candidate map and * the membership callback so they are not retained through the transfer * phase; the plan keeps only this (normally tiny) set. */ finish(): ReadonlySet; } /** * @param candidateKeys keys the executors may delete (journal rows, tombstoned keys) * @param hasCandidate exact-membership test over the same keys, used for a * remote key's folded spelling so all-lower-case * candidates need no map entry */ export declare function createCaseAliasTracker(candidateKeys: Iterable, hasCandidate: (key: string) => boolean): CaseAliasTracker; /** * Return the on-disk spelling when a live path differs from `key` only by * filesystem case folding. This also supports injected folding behavior in * tests on case-sensitive hosts. */ export declare function findCaseFoldedLocalKey(root: string, key: string): string | null; /** * Whether lookups inside `dir` fold case. Takes an existing child whose name * has letters and checks that its case-flipped spelling, looked up in the same * directory, resolves to the same inode. Probing inside `dir` (not `dir` in * its parent) measures the filesystem that stores the synced files even when * `dir` is itself a mount point. An empty directory, a directory with no * letter-bearing names, or any error reads as "does not fold", which keeps * today's delete behaviour; with no children there is nothing to delete. */ export declare function directoryFoldsCase(dir: string): boolean; //# sourceMappingURL=case-alias.d.ts.map