import { MutableRefObject, RefObject } from 'react'; import { StoreApi } from 'zustand'; import { DashboardConfig, DashboardFilterMapping, DashboardGridSettings, DashboardLayoutMode, PortletConfig, RowLayout, ThumbnailFeatureConfig } from '../../types.js'; import { DashboardStore, DashboardStoreActions } from '../../stores/dashboardStore.js'; interface UseDashboardControllerOptions { allowedModes: DashboardLayoutMode[]; canChangeLayoutMode: boolean; isResponsiveEditable: boolean; layoutMode: DashboardLayoutMode; resolvedRows: RowLayout[]; gridSettings: DashboardGridSettings; thumbnailConfig?: ThumbnailFeatureConfig; dashboardRef?: RefObject; storeApi: StoreApi; storeActions: Pick; configRef: MutableRefObject; onConfigChangeRef: MutableRefObject<((config: DashboardConfig) => void) | undefined>; onSaveRef: MutableRefObject<((config: DashboardConfig) => Promise | void) | undefined>; onSaveThumbnailRef: MutableRefObject<((thumbnailData: string) => Promise) | undefined>; updateRowLayout: (rows: RowLayout[], save?: boolean, portletsOverride?: PortletConfig[]) => Promise; portletComponentRefs?: MutableRefObject void; } | null>>; onPortletRefresh?: (portletId: string, options?: { bustCache?: boolean; }) => void; } export declare function useDashboardController({ allowedModes, canChangeLayoutMode, isResponsiveEditable, layoutMode, resolvedRows, gridSettings, thumbnailConfig, dashboardRef, storeApi, storeActions, configRef, onConfigChangeRef, onSaveRef, onSaveThumbnailRef, updateRowLayout, portletComponentRefs, onPortletRefresh, }: UseDashboardControllerOptions): { enterEditMode: () => void; exitEditMode: () => void; toggleEditMode: () => void; selectFilter: (filterId: string | null) => void; openAddPortlet: () => void; openEditPortlet: (portlet: PortletConfig) => void; openAddText: () => void; openEditText: (portlet: PortletConfig) => void; openFilterConfig: (portlet: PortletConfig) => void; handleLayoutModeChange: (mode: DashboardLayoutMode) => Promise; savePortlet: (portletData: PortletConfig | Omit) => Promise; deletePortlet: (portletId: string) => Promise; confirmDelete: () => Promise; duplicatePortlet: (portletId: string) => Promise; refreshPortlet: (portletId: string, options?: { bustCache?: boolean; }) => void; toggleFilterForPortlet: (portletId: string, filterId: string) => Promise; selectAllForFilter: (filterId: string) => Promise; saveFilterConfig: (mapping: DashboardFilterMapping) => Promise; handlePaletteChange: (paletteName: string) => Promise; }; export {};