import type { Component, KeybindingsManager, TUI } from '@earendil-works/pi-tui'; import type { TuiBackend, TuiBranchSummary, TuiModelChoice } from './tui-backend.js'; import type { TuiSettings } from './tui-settings.js'; import type { TuiState } from './tui-types.js'; import type { ThinkLevel } from '../agent/transcript/thinking-types.js'; import type { ProjectTrustStore } from '../project-trust/trust-store.js'; export type PickerServices = { tui: TUI; editor: Component; openOverlay: (c: Component) => void; closeOverlay: () => void; chatLog: { addSystem: (t: string) => void; addBranchSummary: (summary: TuiBranchSummary) => void; getTimelineViewportState: () => { mode: 'latest'; } | { mode: 'history'; displayIndex: number; }; jumpToDisplayIndex: (displayIndex: number) => boolean; jumpToLatest: () => void; }; client: TuiBackend; sendMessage: (text: string) => void; switchModel: (modelRef: string) => void | Promise; openEditorSelector: (component: Component, focus?: Component) => () => void; refreshSessionInfo: () => Promise; updateHeader: () => void; state: Pick; setSessionKey: (key: string) => void; switchAgentSession?: (sessionKey: string, agentId: string) => void | Promise; clearChatForSessionSwitch: () => void; loadSessionHistory: () => Promise; loadHistoryWindow: (opts: { rowNumber: number; before?: number; after?: number; }) => Promise; setEditorText: (text: string) => void; setModelChoices: (models: TuiModelChoice[]) => void; getScopedModelRefs: () => string[] | null; setScopedModelRefs: (refs: string[] | null) => void; refreshCycleModels: () => void; getTuiSettings: () => TuiSettings; applyTuiSettings: (settings: TuiSettings) => void; previewTheme: (themeId: string) => void; reloadKeybindings: () => void; setThinkingLevel: (level: ThinkLevel) => Promise; getProjectTrustStore: () => ProjectTrustStore; getProjectTrustSessionDecision: () => boolean | null; setProjectTrustSessionDecision: (decision: boolean | null) => void; onProjectTrustChanged: () => void; keybindings: KeybindingsManager; };