import type { App, Component, Ref } from "vue"; import type { WidthProvider } from "./core/buffer/width.js"; import type { PathPickerProvider } from "./core/path-provider-types.js"; import type { Style, Terminal } from "./core/types.js"; import type { CliEventManager } from "./events/index.js"; import type { ClipboardApi } from "./runtime/index.js"; import type { TerminalLinkOpenerLike } from "./vue/components/link/host.js"; import type { SelectionTextProvider, TerminalSelectionConfig, TerminalSelectionCopyPayload, TerminalSelectionRefreshOptions } from "./selection/terminal-selection.js"; import type { TInputPlugin } from "./vue/components/input/plugins/types.js"; import type { ImeAnchor, TerminalScheduler } from "./vue/context.js"; export type TerminalSelectionContext = Readonly<{ registerTextProvider(provider: SelectionTextProvider): () => void; onCopy(handler: (payload: TerminalSelectionCopyPayload) => void): () => void; refresh(options?: TerminalSelectionRefreshOptions): void; clear(): void; /** * Update the selection copy strategy at runtime. Only `autoCopy`, * `copyOnMouseUp`, and `style` take effect dynamically — `enabled` is * resolved at app creation time (it gates overlay node registration and * the pointer-event selection path) and cannot be toggled afterwards. * Triggers a refresh so the new options apply immediately. * * This does NOT toggle mouse capture — that is owned by the stdin driver * layer. To let the terminal perform native selection, disable mouse * capture at stdin-driver startup time, or rely on the terminal's * Shift+drag escape hatch. */ setConfig(config: TerminalSelectionConfig): void; }>; export type TerminalApp = Readonly<{ app: App; terminal: Terminal; events: CliEventManager; scheduler: TerminalScheduler; defaultStyle: Ref