/** Root-level candidates, in precedence order within one directory. */ export declare const CONFIG_BASENAMES: string[]; /** The directory holding lookout's working state, and the config's old home. */ export declare const LOOKOUT_DIR = ".lookout"; /** Pre-root candidates, still loadable and migrated on sight. */ export declare const LEGACY_BASENAMES: string[]; /** The canonical file lookout writes and maintains. */ export declare const CONFIG_FILENAME: string; export interface LocatedConfig { /** Absolute path of the config file. */ path: string; /** The project root it implies: evidence and the backlog hang off this. */ projectDir: string; /** True when it was found in the pre-root `.lookout/` home. */ legacy: boolean; } /** The nearest config at or above `start`, or null when there is none. */ export declare function locateConfig(start: string): LocatedConfig | null; /** True when a config path sits in the pre-root `.lookout/` home. */ export declare function isLegacyConfigPath(path: string): boolean; /** * The project root a config path implies, for `--config` as much as for * discovery: a file inside `.lookout/` roots at that directory's parent, and a * file anywhere else roots where it sits. */ export declare function projectDirFor(path: string): string; /** * Where a config lookout writes itself should go. * * A repository root or a package root is a place someone meant to keep files; * a directory that is neither is somewhere they happened to be standing, and * writing a config file into it would be litter. Returning null is how the * caller learns to stay zero-config. * * The home directory is never a project root, whatever it has in it. Plenty of * people keep their dotfiles in a git repository, and a run made from some * unrelated folder underneath it must not be answered by writing a config file * into their home. */ export declare function nearestProjectRoot(start: string): string | null;