import type { AgentSession } from "../../../core/agent-session.ts";
import type { ReadonlyFooterDataProvider } from "../../../core/footer-data-provider.ts";
import type { Component, EditorComponent, MarkdownTheme, TUI } from "@earendil-works/pi-tui";
import { LiveChatEntriesController } from "./chat-message-renderer.ts";
import { ChatTranscriptComponent, ScrollableComponentViewport, type ChatTranscriptEntryLike } from "./chat-transcript.ts";
import type { ChatSessionHostCommands, ChatSessionHostEntry, ChatSessionHostOpts, ChatSessionHostStyle } from "./chat-session-host-types.ts";
export interface ChatSessionHostStateCallbacks<TExtraEntry extends ChatTranscriptEntryLike> {
    renderEntry: (state: ChatSessionHostState<TExtraEntry>, entry: ChatSessionHostEntry<TExtraEntry>) => Component;
    transcriptCacheKey: (state: ChatSessionHostState<TExtraEntry>, entry: ChatSessionHostEntry<TExtraEntry>, index: number) => string;
}
export declare class ChatSessionHostState<TExtraEntry extends ChatTranscriptEntryLike = never> {
    readonly style: ChatSessionHostStyle;
    readonly commands: ChatSessionHostCommands;
    readonly requestRender: (() => void) | undefined;
    readonly getAgentSession: (() => AgentSession | undefined) | undefined;
    readonly isStreamingOverride: (() => boolean) | undefined;
    readonly isPaused: (() => boolean) | undefined;
    readonly isDisabled: (() => boolean) | undefined;
    readonly isBashRunningOverride: (() => boolean) | undefined;
    readonly showWarning: ((message: string) => void) | undefined;
    readonly showStatus: ((message: string) => void) | undefined;
    readonly actions: Record<string, () => void | Promise<void>> | undefined;
    readonly getActionKeyDisplay: ((action: string) => string) | undefined;
    readonly getMarkdownTheme: (() => MarkdownTheme) | undefined;
    readonly getChatRenderSettings: ChatSessionHostOpts<TExtraEntry>["getChatRenderSettings"];
    readonly getCwd: (() => string) | undefined;
    readonly footerData: ReadonlyFooterDataProvider | undefined;
    readonly renderExtraEntry: ((entry: TExtraEntry) => Component) | undefined;
    readonly tui: TUI | undefined;
    inputBuffer: string;
    transcript: ChatSessionHostEntry<TExtraEntry>[];
    statusMessage: string;
    isBashMode: boolean;
    localBashRunning: boolean;
    sdkBusy: boolean;
    workingMessage: string | undefined;
    pendingSteeringMessages: readonly string[];
    pendingFollowUpMessages: readonly string[];
    compactionQueuedMessages: readonly string[];
    compacting: boolean;
    animationTimer: ReturnType<typeof setInterval> | undefined;
    renderThrottleTimer: ReturnType<typeof setTimeout> | undefined;
    bodyViewport: ScrollableComponentViewport;
    transcriptComponent: ChatTranscriptComponent<ChatSessionHostEntry<TExtraEntry>>;
    transcriptRenderSettingsKey: string;
    renderIdentityIds: WeakMap<object, number>;
    nextRenderIdentityId: number;
    liveChat: LiveChatEntriesController;
    editor: EditorComponent | undefined;
    optimisticUserSignatureCounts: Map<string, number>;
    constructor(opts: ChatSessionHostOpts<TExtraEntry>, callbacks: ChatSessionHostStateCallbacks<TExtraEntry>);
}
//# sourceMappingURL=chat-session-host-state.d.ts.map