/** * 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