import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as ServiceMap from "effect/Context";
import { type LivePlan } from "./live-ledger.js";
import { type Glyphs } from "./glyphs.js";
import { type ProgressState } from "./progress.js";
import { type ScenePart } from "./scene.js";
import { OutputStreams } from "./streams.js";
declare const Frame_base: ServiceMap.ServiceClass Effect.Effect;
readonly stderr: (content: string) => Effect.Effect;
/** Present the latest progress state; the frame diffs it against the previous one. */
readonly present: (operationId: string, state: ProgressState) => Effect.Effect;
/** Whether an interaction can paint on the terminal-owned stream. */
readonly canInteract: Effect.Effect;
/**
* Give the live ledger the plan its rows come from; `undefined` leaves it
* to synthesize rows from the units the operation reports.
*/
readonly showPlan: (operationId: string, plan: LivePlan | undefined) => Effect.Effect;
/** Replace the interaction beneath the ledger — a prompt or a wait; `undefined` clears it. */
readonly showInteraction: (part: ScenePart | undefined) => Effect.Effect;
readonly settle: Effect.Effect;
}>;
/**
* The single terminal owner's live region and transcript. Transcript writes
* insert above the live region; the region shows one scene — the operation's
* ledger with at most one interaction beneath it — and clears at settlement,
* where the result ledger takes over.
*/
export declare class Frame extends Frame_base {
}
export interface FrameOptions {
readonly animate: boolean;
readonly quiet: boolean;
/** ANSI styling for the stderr live region and transcript transitions. */
readonly colors: boolean;
readonly glyphs?: Glyphs;
}
export declare const FrameLive: (options: FrameOptions) => Layer.Layer;
export {};
//# sourceMappingURL=frame.d.ts.map