import type { ConfigSetting, GoodVibesConfig } from './schema.js'; /** * Cloned ONCE at module load, then cloned again per manager. * * The snapshot exists so a manager that mutates its own config can never reach * back into the exported `DEFAULT_CONFIG` object and change what the next * manager in this process starts from. */ export declare const DEFAULT_CONFIG_SNAPSHOT: GoodVibesConfig; /** A fresh, fully-owned copy of the defaults. */ export declare function cloneDefaultConfig(): GoodVibesConfig; /** * Drop permission-tool entries the current schema does not define. * * A settings file written by an older build can carry a tool key that no longer * exists; left in place it would show up in every listing and in `getAll()` as * a permission for a tool nothing can run. */ export declare function sanitizeConfigShape(config: GoodVibesConfig): GoodVibesConfig; /** An absolute, resolved path, or `undefined` when the caller supplied none. */ export declare function requireAbsoluteOwnedPath(path: string | undefined, name: string): string | undefined; /** Ensure the shared ~/.goodvibes/.json exists (empty object if not). */ export declare function ensureSharedConfig(sharedPath: string): void; /** * Normalize an incoming value against what the SCHEMA says the key holds, * before validation runs. * * Today that is money: an amount key accepts the number the owner would say out * loud and tolerates the ordinary ways a person writes one, a leading currency * symbol, thousands grouping. Coercing here rather than at each caller means * `config set`, a settings screen, and a programmatic `set()` all reach the same * stored number, and a value that is not a number is refused with an example * before anything is written. * * Keyed off `setting.unit`, never off the shape of the key's NAME, a naming * scheme is what tied every consumer of these keys to one spelling. * * The refusal is raised as a ConfigError so it reads like every other rejected * setting rather than surfacing as an unhandled parser error. */ export declare function coerceSchemaValue(key: string, schema: ConfigSetting | undefined, value: unknown): unknown; //# sourceMappingURL=manager-bootstrap.d.ts.map