import type { UserChoices } from "./prompts.js"; import type { LocalePlan } from "./locale-plan.js"; /** * Programmatically generate the ONE `zfb.config.ts` a scaffolded project * ships (epic zudolab/zudo-doc#2651, minimal-scaffold Wave 6 #2660). * * Replaces the former `settings-gen.ts` + `zfb-config-gen.ts` pair: there is * no more `src/config/settings.ts` — every user choice becomes a field * passed straight into `zudoDoc({ ... })` (`@takazudo/zudo-doc/config`), * which merges it over the package's own documented defaults and returns a * complete `ZfbConfig`. * * DIFF-FROM-DEFAULTS (locked, #2653 Decision 2): only fields whose resolved * value differs from the matching `ZudoDocConfig` `@default` are emitted — * `siteName` is the one field always emitted. `DEFAULT_MIRROR` below is a * hand-kept copy of `packages/zudo-doc/src/config.ts`'s `DEFAULT_SETTINGS` * for exactly the fields this generator ever sets. It has to be a local * mirror (not an import) because `create-zudo-doc` does not depend on * `@takazudo/zudo-doc` at generator-build time — the package is only ever a * runtime dependency of the SCAFFOLDED project, never of the generator * itself. Keep this mirror in sync by hand whenever `DEFAULT_SETTINGS` * changes for one of the fields listed here. */ export declare const DEFAULT_MIRROR: Record; /** * Deterministic emission order for the keys of a `desired` config object: * the keys present in `FIELD_ORDER` first (cosmetic reference order), then any * leftover keys NOT in `FIELD_ORDER` appended in ALPHABETICAL order. The * leftover branch exists so a key `buildDesiredConfig()` produces but nobody * added to `FIELD_ORDER` is still emitted (deterministically) rather than * silently dropped — matching what the `FIELD_ORDER` comment promises. */ export declare function orderDesiredKeys(desiredKeys: readonly string[]): string[]; /** * Generate the full `zfb.config.ts` source: `defineConfig(zudoDoc({ ... }))` * with only the diff-from-defaults fields. */ export declare function generateZfbConfig(choices: UserChoices, localePlan?: LocalePlan): string;