import { type Asker } from "../ask.js";
import type { SetupMode, SetupState } from "../state.js";
import type { SetupBox } from "../step.js";
export interface SelectSetupModeOptions {
    /** Resolves the mode question; the composed stack decides how. */
    asker: Asker;
    /**
     * Skip the mode question and use this value. Stays a factory option (not a
     * `withAnswers` rung) so it short-circuits before any ask, which is what
     * lets a headless `--one-shot` run resolve without a terminal.
     */
    presetMode?: SetupMode;
    /**
     * Model baked into a one-shot scaffold instead of {@link DEFAULT_MODEL_ID}.
     * Threaded from the same `--model` preset the model box consumes, so the
     * flag keeps working when the model box is skipped.
     */
    presetModel?: string;
}
/** The mode plus the model a one-shot run pins, since the model box is skipped. */
export interface SelectSetupModePayload {
    mode: SetupMode;
    modelId?: string;
}
/**
 * THE SETUP-MODE BOX: decide whether the run is the complete onboarding flow
 * or a one-shot scaffold. One-shot pins the default model here because every
 * later interview box (including the model picker) is gated off. The question
 * is skippable, so a headless stack without a preset resolves to "complete"
 * and current headless behavior is unchanged.
 */
export declare function selectSetupMode(options: SelectSetupModeOptions): SetupBox<SetupState, SetupMode, SelectSetupModePayload>;
