import { type HandoffLevel } from './handoff-level.js';
/**
 * The per-repo session defaults persisted in `the-framework.yml`: the prompt switches and how far
 * a finished session publishes itself, so a repo's config travels with the code instead of being
 * chosen again every session.
 */
export interface FrameworkFileConfig {
    /**
     * Remove the built-in #326 system prompt, keeping the session controls. Default `false`.
     *
     * One name for one concept (C3). This key used to be `antiLazyPill` — the historical name of
     * the prompt's ancestor (#301) — spelled the other way round from the `vanilla` it mapped to
     * everywhere else, so the file, the preference and the agent option each said the same thing in a
     * different direction and three comments apologised for it.
     */
    vanilla?: boolean;
    /**
     * Transparent mode (#625): make every agent in this project a raw `claude -p` — no framework
     * system prompt, no emit protocols, no consumption guard, no dashboard, no TODO loop. The
     * coarse "only-pick-what-you-need" master off-switch, at the per-project tier. Default `false`.
     */
    transparent?: boolean;
    /**
     * How far a finished session publishes itself (#1102/#1173/#1216/B5): `local`, `push`, `pr` or
     * `merge`. Default `pr`. Whether a session publishes itself is a fact about the repo, so it
     * belongs in the file that travels with it.
     *
     * `merge` has to be asked for out loud: publishing a branch is reversible, landing it on the
     * default branch is not. Meant for work whose review already happened before the session — the
     * quick-win and consensual routines merge what a plan the human could veto already settled.
     */
    handoff?: HandoffLevel;
}
/** Config file names read from the workspace root, in precedence order. */
export declare const FRAMEWORK_CONFIG_FILES: readonly ["the-framework.yml", "the-framework.yaml"];
/**
 * The boolean-valued mode keys. This is the canonical mode list: parsing, the config-layer copy,
 * resolution, and the resolved-config summary all iterate it, so a new mode is added here once and
 * flows through them (only its default and any renamed output field are declared per key).
 */
export declare const BOOLEAN_CONFIG_KEYS: readonly ["vanilla", "transparent"];
/** Every config key, enum then boolean, in declaration order. */
export declare const CONFIG_KEYS: readonly ["handoff", "vanilla", "transparent"];
/**
 * Read `the-framework.yml` (or `.yaml`) from a directory. A missing file yields
 * `{}`. Best-effort: a malformed file is reported via `onWarn` and treated as
 * empty, never a failed agent. CLI flags override whatever this returns.
 */
export declare function loadFrameworkConfig(dir: string, onWarn?: (message: string) => void): Promise<FrameworkFileConfig>;
/**
 * Parse and validate a `the-framework.yml` body into a {@link FrameworkFileConfig}.
 * An empty document is `{}`. Throws on a non-map document or a mistyped field so
 * {@link loadFrameworkConfig} can surface it as a warning.
 */
export declare function parseFrameworkConfig(raw: string, source?: string): FrameworkFileConfig;
//# sourceMappingURL=config.d.ts.map