/**
* Running a question against a real terminal.
*
* The reducer and the view are pure; this is the only part that reads keys and
* moves the scene. It puts the question beneath the operation's ledger, reads
* one key at a time from the terminal's own input, repaints, and on submission
* clears the question and appends its answer to the transcript. Raw mode
* belongs to `Terminal.readInput`, which restores it when this scope closes.
*/
import * as Effect from "effect/Effect";
import type * as Terminal from "effect/Terminal";
import type { Ask, AskKind } from "./ask.js";
import { type InteractionSurface } from "../interaction.js";
import { QuestionCancelled } from "./question-cancelled.js";
/** Where a running question paints, and where its answer lands. */
export type AskSurface = InteractionSurface;
/** One terminal key event as a reducer sees it. */
/** Hand a question's own kind to `use`, whatever state type that kind keeps. */
export declare const withAskKind: (ask: Ask, use: (kind: AskKind) => R) => R;
export declare const runAsk: (ask: Ask, terminal: Terminal.Terminal, surface: AskSurface) => Effect.Effect;
//# sourceMappingURL=run.d.ts.map