import type React from 'react'; import { type ReactNode } from 'react'; import { type PageDisposer } from './react-mount.js'; import type { BotRow, InstallSkillCandidate, SkillRemovalReference, SkillRow, StatusMessage } from './skills/types.js'; export declare function SkillSegmented(props: { value: T; options: Array<{ value: T; label: ReactNode; help?: ReactNode; }>; disabled?: boolean; onChange(value: T): void; }): React.JSX.Element; interface SkillsInstallPanelProps { showTitle?: boolean; installSource: string; installPath: string; installRef: string; installFullDepth: boolean; installTargetSkill?: string | null; installStatus: StatusMessage; installBusy: boolean; installDiscovering?: boolean; installSelectionOpen?: boolean; installCandidates?: InstallSkillCandidate[]; selectedInstallSkills?: Set; onInstallSourceChange: (value: string) => void; onInstallPathChange: (value: string) => void; onInstallRefChange: (value: string) => void; onInstallFullDepthChange: (value: boolean) => void; onClearInstallTarget?: () => void; onToggleInstallSkill?: (name: string) => void; onSelectAllInstallSkills?: (selected: boolean) => void; onConfirmInstallSelection?: () => void; onCloseInstallSelection?: () => void; onInstall: () => void; onOpenNativeDiscovery: () => void; } export declare function SkillsInstallPanel(props: SkillsInstallPanelProps): React.JSX.Element; export declare function InstalledSkillsLibrary(props: { skills: SkillRow[]; busySkill: string | null; removingNames: Set; status: StatusMessage; onUpdate(name: string): void; onRequestRemove(names: string[]): void; /** search prefill arriving from a cross-tab navigation */ externalQuery?: string | null; /** exact-name filter arriving from a cross-tab navigation (clearable) */ externalFilterNames?: string[] | null; /** false = pack data never loaded; pack usage counts are unknown, not 0 */ packsKnown?: boolean; /** open the install wizard prefilled for a filtered-but-missing skill */ onInstallMissing?: (name: string) => void; graph?: import('./skills/shared.js').SkillGraph; packNames?: Array<{ id: string; name: string; }>; onShowSkillPacks?: (name: string) => void; onShowSkillBots?: (name: string) => void; }): React.JSX.Element; export declare function RemoveSkillsDialog(props: { names: string[] | null; references: SkillRemovalReference[]; busy: boolean; error: string | null; onCancel(): void; onConfirm(force: boolean): void; }): React.JSX.Element; /** Exported for tests (cross-tab navigation integration). Mounted in the app * via renderSkillsPage below. */ export declare function SkillsPage(): React.JSX.Element; export declare function SkillMultiPicker(props: { botId: string; names: string[]; installedNames: Set; skills: SkillRow[]; busy: boolean; onSave(names: string[]): Promise; }): React.JSX.Element; export declare function BotPolicyCard(props: { bot: BotRow; installedNames: Set; skills: SkillRow[]; status: StatusMessage; busyKey: string | null; onSave(appId: string, names: string[]): Promise; }): React.JSX.Element; export declare function renderSkillsPage(root: HTMLElement): PageDisposer; export {}; //# sourceMappingURL=skills-page.d.ts.map