import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as ServiceMap from "effect/Context";
import { type Glyphs } from "./glyphs.js";
import { type ScenePart } from "./scene.js";
import { OutputStreams, type OutputWriteFailed } from "./streams.js";
/** Screen selects one foreground owner; Frame knows nothing about operations. */
export interface ActiveView {
readonly owner: symbol;
readonly kind: "activity" | "interaction";
readonly part: ScenePart;
}
declare const Frame_base: ServiceMap.ServiceClass Effect.Effect;
readonly stderr: (content: string) => Effect.Effect;
/** Append a milestone and replace the foreground under one write permit. */
readonly updateActive: (active: ActiveView | undefined, content?: string, immediate?: boolean) => Effect.Effect;
/** A stale owner cannot finish or clear a newer interaction. */
readonly finishActive: (owner: symbol, content: string, next?: ActiveView) => Effect.Effect;
readonly canInteract: Effect.Effect;
readonly settle: Effect.Effect;
}>;
export declare class Frame extends Frame_base {
}
interface FrameOptions {
readonly animate: boolean;
readonly quiet: boolean;
readonly colors: boolean;
readonly glyphs?: Glyphs;
}
/** Serializes writes and owns only the transient tail, never the transcript. */
export declare const FrameLive: (options: FrameOptions) => Layer.Layer;
export {};
//# sourceMappingURL=frame.d.ts.map