import { type Theme } from "../../../../modes/interactive/theme/theme.js";
import { Input } from "@earendil-works/pi-tui";
import type { QuestionData } from "../tool/types.js";
import type { WrappingSelectItem } from "../view/components/wrapping-select.js";
import { QuestionnairePropsAdapter } from "../view/props-adapter.js";
import type { QuestionnaireState } from "./state.js";
export interface QuestionnaireBuildConfig {
    tui: {
        terminal: {
            columns: number;
        };
        requestRender(): void;
    };
    theme: Theme;
    questions: readonly QuestionData[];
    itemsByTab: ReadonlyArray<readonly WrappingSelectItem[]>;
    isMulti: boolean;
    initialState: QuestionnaireState;
    getCurrentTab: () => number;
}
export interface QuestionnaireBuilt {
    adapter: QuestionnairePropsAdapter;
    notesInput: Input;
    inlineInput: Input;
    render: (width: number) => string[];
    invalidate: () => void;
}
/**
 * Pure factory: assembles every TUI component, the props adapter, and a
 * lifecycle handle. Session-state dependencies arrive via `getCurrentTab` and
 * the `inputBuffer` cell. Initial paint is delegated to
 * `adapter.apply(initialState)` (called by the session at construction-end);
 * no selector is invoked here.
 */
export declare function buildQuestionnaire(config: QuestionnaireBuildConfig): QuestionnaireBuilt;
//# sourceMappingURL=build-questionnaire.d.ts.map