import type { DoccupineConfig, NormalizedOpenApiSpec } from "./types.js"; export declare function validateConfig(value: unknown, rootDir?: string): DoccupineConfig; /** * Collapses every accepted `openapi` config shape (a single path, a list of * paths, or named-spec objects) into a uniform `NormalizedOpenApiSpec[]`. Names * default to the file basename and are de-duplicated with a numeric suffix so * two specs never share a route namespace. */ export declare function normalizeOpenApiConfig(openapi: DoccupineConfig["openapi"]): NormalizedOpenApiSpec[]; /** * Rewrites a path as project-relative so `doccupine.json` stays portable * across machines, CI and containers (an absolute `/Users/you/...` breaks for * every other contributor and leaks the local directory layout). * * Paths outside the project root have no portable form, so they are kept * absolute - reads go through `path.resolve()`, which accepts both. */ export declare function toProjectRelativePath(targetPath: string, rootDir?: string): string; /** * Migrates configs written by older versions, which stored absolute paths. * Returns the normalized config plus whether anything actually changed, so * callers only rewrite the file when needed. */ export declare function normalizeConfigPaths(config: DoccupineConfig, rootDir?: string): { config: DoccupineConfig; changed: boolean; }; export declare class ConfigManager { private configPath; private projectRoot; constructor(configPath?: string); loadConfig(): Promise; saveConfig(config: DoccupineConfig): Promise; promptForConfig(existingConfig?: Partial): Promise; getConfig(options?: { reset?: boolean; port?: string; }): Promise; }