import { CustomWidgetComponent, CustomWidgetComponentProps } from './types';
/**
 * Hook that provides API for configuring custom widgets.
 *
 * @example
 * Example of registering a custom widget in a dashboard:
 * ```tsx
 * import { useEffect } from 'react';
 * import { useCustomWidgets, DashboardById } from '@sisense/sdk-ui';
 * import CustomHistogramWidget from './custom-histogram-widget';
 *
 * const Example = () => {
 *   const { registerCustomWidget, unregisterCustomWidget } = useCustomWidgets();
 *
 *   useEffect(() => {
 *     registerCustomWidget('histogramwidget', CustomHistogramWidget);
 *     // Optionally unregister on unmount (e.g. if the widget should only be available within this component)
 *     return () => unregisterCustomWidget('histogramwidget');
 *   }, [registerCustomWidget, unregisterCustomWidget]);
 *
 *   return <DashboardById dashboardOid="your-dashboard-oid" />;
 * }
 * ```
 * @group Dashboards
 */
export declare const useCustomWidgets: () => UseCustomWidgetsResult;
/**
 * Result of the `useCustomWidgets` hook.
 */
export type UseCustomWidgetsResult = {
    /** Registers a custom widget. */
    registerCustomWidget: <T = CustomWidgetComponentProps>(customWidgetType: string, customWidget: CustomWidgetComponent<T>) => void;
    /** Unregisters a legacy custom widget for the given type name. */
    unregisterCustomWidget: (customWidgetType: string) => void;
    /** Checks if a custom widget is registered. */
    hasCustomWidget: (customWidgetType: string) => boolean;
    /** Gets a custom widget. */
    getCustomWidget: (customWidgetType: string) => CustomWidgetComponent | undefined;
};
