import { type ConfigResult } from "./config.js"; /** Load exactly one config file. A missing file is an empty config. For a * project directory, use readConfig below. */ export declare function loadConfigSafe(configPath: string): ConfigResult; export declare const CONFIG_FILE = "agency.json"; /** Per-developer overrides, kept out of git. Merged over CONFIG_FILE. */ export declare const LOCAL_CONFIG_FILE = "agency.local.json"; /** Where config comes from: one named file, or a project directory's * agency.json with agency.local.json merged over it. */ export type ConfigTarget = { kind: "file"; path: string; } | { kind: "project"; dir: string; }; export declare function fileTarget(filePath: string): ConfigTarget; export declare function projectTarget(dir: string): ConfigTarget; export declare function configTarget(cliConfig: string | undefined, fallback: ConfigTarget): ConfigTarget; /** Every file the target could read, base file first. */ export declare function targetPaths(target: ConfigTarget): string[]; export declare function configFiles(target: ConfigTarget): string[]; export declare function hasProjectConfig(dir: string): boolean; /** The single file a writer reads and writes. Never agency.local.json. */ export declare function writeTarget(target: ConfigTarget): string; /** * The config to use. A project's merged result is validated again. That * checks rules that span both files, and puts keys in schema order, which * deriveConfigKey depends on. */ export declare function readConfig(target: ConfigTarget): ConfigResult; /** The nearest directory at or above `startPath` that has a config file. */ export declare function findProjectRoot(startPath: string): string | null;