import * as Effect from "effect/Effect"; import type * as Scope from "effect/Scope"; import type * as Terminal from "effect/Terminal"; import type { Doc } from "./doc.js"; import type { ScenePart } from "./scene.js"; /** The one scene/transcript surface shared by questions and waits. */ export interface InteractionSurface { readonly showInteraction: (part: ScenePart | undefined) => Effect.Effect; readonly transcript: (doc: Doc) => Effect.Effect; } /** One terminal key after platform input has been normalized. */ export interface InteractionKey { readonly name: string; readonly char?: string; readonly ctrl: boolean; } export declare const interactionKeyOf: (input: Terminal.UserInput) => InteractionKey; export declare const isQuitKey: (key: InteractionKey) => boolean; export declare const isSubmitKey: (key: InteractionKey) => boolean; /** * Acquire one terminal input queue and return its reusable normalized-key * reader. The queue belongs to the surrounding scope; every key for this * interaction must come through the same acquisition so raw-mode listeners * are installed and released exactly once. */ export declare const makeInteractionKeyReader: (terminal: Terminal.Terminal, onEnd: Effect.Effect) => Effect.Effect, never, Scope.Scope>; //# sourceMappingURL=interaction.d.ts.map