import type { ReasoningSetting } from "../core/reasoning.js";
import type { AgentMode } from "./types.js";
/**
 * First-run preferences collected at the end of onboarding. These map directly
 * to the runtime defaults the agent loop reads, and are persisted through
 * `savePatchPilotEnvValues` so the next launch starts in the chosen state.
 */
export type OnboardingPreferences = {
    mode: AgentMode;
    reasoning: ReasoningSetting | "adaptive";
    thinking: "fixed" | "adaptive";
    subagents: boolean;
};
export declare const defaultOnboardingPreferences: OnboardingPreferences;
/** A single tunable row in the preferences step. */
export type PreferenceRow = {
    key: keyof OnboardingPreferences;
    label: string;
    /** Cycle of selectable values for this row, in display order. */
    values: string[];
};
export declare const preferenceRows: PreferenceRow[];
/** Human-friendly one-liner for the currently selected value of a row. */
export declare function describePreferenceValue(key: keyof OnboardingPreferences, value: string): string;
/** Current displayed value for a preference row given the working prefs. */
export declare function preferenceValueString(prefs: OnboardingPreferences, key: keyof OnboardingPreferences): string;
/** Cycle a row's value forward (+1) or backward (-1), wrapping around. */
export declare function cyclePreference(prefs: OnboardingPreferences, key: keyof OnboardingPreferences, direction: 1 | -1): OnboardingPreferences;
/** Env payload for `savePatchPilotEnvValues` derived from the chosen prefs. */
export declare function preferencesEnvValues(prefs: OnboardingPreferences): Record<string, string>;
/** Read persisted preferences back into a typed shape, falling back safely. */
export declare function readOnboardingPreferences(env?: NodeJS.ProcessEnv): OnboardingPreferences;
/** Mode string maps to runtime write/shell permissions for the agent loop. */
export declare function modePermissions(mode: AgentMode): {
    allowWrite: boolean;
    allowShell: boolean;
};
