import { type EditorComponent, type EditorTheme, type TUI } from "@earendil-works/pi-tui";
import type { ChatTranscriptEntryLike } from "./chat-transcript.ts";
import type { ChatSessionHostState } from "./chat-session-host-state.ts";
import type { ChatSessionHostOpts } from "./chat-session-host-types.ts";
export interface ChatSessionEditorCallbacks {
    submit: (mode: "auto" | "followUp", submittedText?: string) => void | Promise<void>;
    restoreQueuedMessagesToEditor: () => boolean;
    abortCompaction: () => void | Promise<void>;
    interrupt: () => void | Promise<void>;
    abortBash: () => void | Promise<void>;
}
export declare function createChatSessionEditor<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>, tui: TUI | undefined, keybindings: unknown, editorTheme: EditorTheme, editorFactory: ChatSessionHostOpts<TExtraEntry>["editorFactory"], callbacks: ChatSessionEditorCallbacks): EditorComponent | undefined;
export declare function handleChatSessionInput<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>, data: string, callbacks: ChatSessionEditorCallbacks): boolean;
export declare function setChatSessionEditorText<TExtraEntry extends ChatTranscriptEntryLike>(state: ChatSessionHostState<TExtraEntry>, text: string): void;
export declare function setEditorPlaceholder(editor: EditorComponent, placeholder: string | undefined): void;
export declare function setEditorBorderColor(editor: EditorComponent, borderColor: (text: string) => string): void;
export declare function setEditorFocused(editor: EditorComponent, focused: boolean): void;
//# sourceMappingURL=chat-session-host-editor.d.ts.map