import type { Component, ComponentType, Snippet, SvelteComponent } from "svelte"; export interface ExtensionVisibilityContext { userId?: string; pathname?: string; capabilities?: Readonly>; permissions?: Readonly>; } export type ExtensionVisibility = (context: ExtensionVisibilityContext) => boolean; export type ExtensionIcon = ComponentType; export interface DocTabPanelProps { documentId: string; content: string; contentJson: object | undefined; } export interface DocTabDefinition { id: string; label: string; component: Component; order?: number; icon?: ExtensionIcon; disabled?: boolean; } export interface NavigationExtension { id: string; label: string; href?: string; icon?: ExtensionIcon; order?: number; badge?: string | number; disabled?: boolean; visible?: ExtensionVisibility; } export interface SidebarTopExtension { id: string; component: Component<{ collapsed: boolean }>; order?: number; visible?: ExtensionVisibility; } export interface SidebarFooterActionExtension { id: string; component: Component<{ collapsed: boolean }>; order?: number; visible?: ExtensionVisibility; } export interface DashboardWidgetProps { userId?: string; } export interface DashboardWidgetExtension { id: string; title?: string; component: Component; order?: number; colSpan?: 1 | 2 | 3 | 4 | 6 | 12; chrome?: boolean; visible?: ExtensionVisibility; } export interface SearchWidgetProps { query: string; loading: boolean; total?: number; } export interface SearchWidgetExtension { id: string; title?: string; component: Component; order?: number; visible?: ExtensionVisibility; } export interface EditorActionContext { documentId: string; content: string; contentJson: object | undefined; selection?: unknown; commands?: Readonly unknown>>; } export type ExtensionAction = (context: EditorActionContext) => void | Promise; export interface EditorActionExtension { id: string; label: string; icon?: ExtensionIcon; order?: number; disabled?: boolean | ((context: EditorActionContext) => boolean); visible?: ExtensionVisibility; run: ExtensionAction; } export interface DocumentMenuActionContext extends EditorActionContext { title?: string; } export type DocumentMenuAction = (context: DocumentMenuActionContext) => void | Promise; export interface DocumentMenuActionExtension { id: string; label: string; icon?: ExtensionIcon; order?: number; destructive?: boolean; disabled?: boolean | ((context: DocumentMenuActionContext) => boolean); visible?: ExtensionVisibility; run: DocumentMenuAction; } export interface SettingsSectionProps { userId?: string; } export interface SettingsSectionExtension { id: string; label: string; component: Component; order?: number; description?: string; visible?: ExtensionVisibility; } export interface CommandPaletteActionContext { query?: string; } export type CommandPaletteAction = (context: CommandPaletteActionContext) => void | Promise; export interface CommandPaletteActionExtension { id: string; label: string; keywords?: readonly string[]; group?: string; shortcut?: string; icon?: ExtensionIcon; order?: number; disabled?: boolean; visible?: ExtensionVisibility; run: CommandPaletteAction; } export interface SharedDocumentExtensionCapability { id: string; expiresAt: string; } export interface SharedDocumentExtensionContext { documentId: string; title: string; content: string; contentJson?: object; role: "viewer" | "commenter" | "editor"; capability: SharedDocumentExtensionCapability; permissions: { read: true; annotate: boolean; edit: boolean; export: boolean; }; } export interface SharedDocumentExtension { id: string; label: string; icon?: ExtensionIcon; order?: number; permission: "annotate" | "edit"; visible?: (context: SharedDocumentExtensionContext) => boolean; component: Component<{ context: SharedDocumentExtensionContext }>; } export interface DocsmintFrontendExtensions { sidebarTop: readonly SidebarTopExtension[]; sidebarFooterActions: readonly SidebarFooterActionExtension[]; navigation: readonly NavigationExtension[]; dashboardWidgets: readonly DashboardWidgetExtension[]; searchWidgets: readonly SearchWidgetExtension[]; documentTabs: readonly DocTabDefinition[]; editorActions: readonly EditorActionExtension[]; documentMenuActions: readonly DocumentMenuActionExtension[]; settingsSections: readonly SettingsSectionExtension[]; profileActions: readonly SettingsSectionExtension[]; commandPaletteActions: readonly CommandPaletteActionExtension[]; sharedDocumentHeaderActions: readonly SharedDocumentExtension[]; sharedDocumentTabs: readonly SharedDocumentExtension[]; sharedDocumentNotesModes: readonly SharedDocumentExtension[]; sharedDocumentEditorModes: readonly SharedDocumentExtension[]; } /** @deprecated Use DocsmintFrontendExtensions. */ export type HiaiDocsFrontendExtensions = DocsmintFrontendExtensions; export type FrontendExtensions = DocsmintFrontendExtensions; export interface DocsmintExtensionProviderProps { extensions?: Partial; children: Snippet; } export declare const DocsmintExtensionProvider: Component;