import * as react_jsx_runtime from 'react/jsx-runtime'; import { WorkbenchDockPlacement, WorkbenchHostDockEntry } from '@tutti-os/workbench-surface'; import { ReactNode } from 'react'; declare const workbenchLaunchpadDockActionId = "open-launchpad"; declare const workbenchLaunchpadDockEntryId = "workspace-launchpad"; interface WorkbenchLaunchpadAppDescriptor { appId: string; disabledReason?: string; iconUrl?: string | null; id?: string; label: string; launchEnabled: boolean; } interface WorkbenchLaunchpadNodeDescriptor { dockEntryId: string; disabledReason?: string; iconUrl: string; id: string; label: string; launchEnabled?: boolean; typeId: string; } interface WorkbenchLaunchpadAgentDescriptor { action?: string | null; actions?: readonly WorkbenchLaunchpadAgentAction[]; comingSoon?: boolean; disabledReason?: string; iconUrl: string; id?: string; label: string; launchEnabled: boolean; provider: TProvider; reason?: string | null; } interface WorkbenchLaunchpadAgentAction { id: string; } type WorkbenchLaunchpadItem = { appId: string; disabledReason?: string; iconUrl?: string | null; id: string; kind: "app"; label: string; launchEnabled: boolean; } | { dockEntryId: string; disabledReason?: string; iconUrl: string; id: string; kind: "node"; label: string; launchEnabled: boolean; typeId: string; } | { action?: string | null; actions?: readonly WorkbenchLaunchpadAgentAction[]; comingSoon?: boolean; disabledReason?: string; iconUrl: string; id: string; kind: "agent"; label: string; launchEnabled: boolean; provider: TProvider; reason?: string | null; }; interface WorkbenchLaunchpadGridMetrics { columns: number; pageSize: number; rows: number; } interface WorkbenchLaunchpadPage { currentPage: number; pageCount: number; pageItems: readonly TItem[]; } declare function buildWorkbenchLaunchpadItems(input: { agentDescriptors?: readonly WorkbenchLaunchpadAgentDescriptor[]; apps?: readonly WorkbenchLaunchpadAppDescriptor[]; nodeDescriptors?: readonly WorkbenchLaunchpadNodeDescriptor[]; }): WorkbenchLaunchpadItem[]; declare function filterWorkbenchLaunchpadItems(items: readonly TItem[], query: string): TItem[]; declare function paginateWorkbenchLaunchpadItems(items: readonly TItem[], input: { page: number; pageSize: number; }): WorkbenchLaunchpadPage; declare function resolveWorkbenchLaunchpadGrid(input: { height: number; width: number; }): WorkbenchLaunchpadGridMetrics; declare function resolveWorkbenchLaunchpadPreviewIconUrls(input: { agentIcons?: readonly string[]; appIcons?: readonly (string | null | undefined)[]; fallbackIconUrl: string; nodeIconUrls?: readonly string[]; }): string[]; interface WorkbenchLaunchpadOverlayCopy { clearSearch: string; empty: string; installAction?: string; installingAction?: string; label: string; pageDot?: (input: { page: number; pageCount: number; }) => string; pages?: string; refreshAction?: string; searchPlaceholder: string; syncAction?: string; unavailableItem?: (input: { reason: string; title: string; }) => string; } interface WorkbenchLaunchpadOverlayProps { copy: WorkbenchLaunchpadOverlayCopy; dockPlacement?: WorkbenchDockPlacement; getAgentActionPending?: (item: Extract, { kind: "agent"; }>, actionId: string) => boolean; getAgentActionLabel?: (actionId: string) => string; getAgentReason?: (item: Extract, { kind: "agent"; }>) => string | null; items: readonly WorkbenchLaunchpadItem[]; onClose: () => void; onLaunchItem: (item: WorkbenchLaunchpadItem) => void; onPageChange?: (input: { pageIndex: number; totalPages: number; }) => void; onRunAgentAction?: (item: Extract, { kind: "agent"; }>, actionId: string) => void; onSearch?: (input: { queryLength: number; resultCount: number; }) => void; open: boolean; } declare function WorkbenchLaunchpadOverlay({ copy, dockPlacement, getAgentActionLabel, getAgentActionPending, getAgentReason, items, onClose, onLaunchItem, onPageChange, onRunAgentAction, onSearch, open }: WorkbenchLaunchpadOverlayProps): react_jsx_runtime.JSX.Element | null; interface WorkbenchLaunchpadWheelNavigationState { accumulatedDeltaX: number; lastNavigationAt: number; } interface WorkbenchLaunchpadWheelNavigationResult { nextPageIndex: number | null; shouldPreventDefault: boolean; state: WorkbenchLaunchpadWheelNavigationState; } declare function createWorkbenchLaunchpadWheelNavigationState(): WorkbenchLaunchpadWheelNavigationState; declare function resolveWorkbenchLaunchpadWheelNavigation(input: { currentPage: number; deltaMode?: number; deltaX: number; deltaY: number; pageCount: number; state: WorkbenchLaunchpadWheelNavigationState; timestamp: number; }): WorkbenchLaunchpadWheelNavigationResult; declare function createWorkbenchLaunchpadDockIcon(_input: { tileIconUrls: readonly string[]; }): ReactNode; declare function createWorkbenchLaunchpadDockEntry(input: { label: string; order?: number; tileIconUrls: readonly string[]; }): WorkbenchHostDockEntry; export { type WorkbenchLaunchpadAgentDescriptor, type WorkbenchLaunchpadAppDescriptor, type WorkbenchLaunchpadGridMetrics, type WorkbenchLaunchpadItem, type WorkbenchLaunchpadNodeDescriptor, WorkbenchLaunchpadOverlay, type WorkbenchLaunchpadOverlayCopy, type WorkbenchLaunchpadOverlayProps, type WorkbenchLaunchpadPage, type WorkbenchLaunchpadWheelNavigationResult, type WorkbenchLaunchpadWheelNavigationState, buildWorkbenchLaunchpadItems, createWorkbenchLaunchpadDockEntry, createWorkbenchLaunchpadDockIcon, createWorkbenchLaunchpadWheelNavigationState, filterWorkbenchLaunchpadItems, paginateWorkbenchLaunchpadItems, resolveWorkbenchLaunchpadGrid, resolveWorkbenchLaunchpadPreviewIconUrls, resolveWorkbenchLaunchpadWheelNavigation, workbenchLaunchpadDockActionId, workbenchLaunchpadDockEntryId };