import { type ComponentType, type ReactElement, type ReactNode } from "react";
import { type IErrorProps, type ILoadingProps } from "@gooddata/sdk-ui";
import { type CustomAlertingDialogComponent, type CustomAlertingManagementDialogComponent } from "../alerting/types.js";
import { type AttributeFilterComponentSet, type DashboardLayoutWidgetComponentSet, type DateFilterComponentSet, type InsightWidgetComponentSet, type RichTextWidgetComponentSet, type VisualizationSwitcherWidgetComponentSet } from "../componentDefinition/types.js";
import { type CustomSidebarComponent } from "../dashboard/DashboardSidebar/types.js";
import { type CustomDashboardSettingsDialogComponent } from "../dashboardSettingsDialog/types.js";
import { type CustomFilterBarComponent } from "../filterBar/filterBar/types.js";
import { type CustomEmptyLayoutDropZoneBodyComponent } from "../flexibleLayout/types.js";
import { type CustomSaveAsDialogComponent } from "../saveAs/types.js";
import { type CustomScheduledEmailDialogComponent, type CustomScheduledEmailManagementDialogComponent } from "../scheduledEmail/types.js";
import { type CustomShareDialogComponent } from "../shareDialog/types.js";
import { type CustomToolbarComponent } from "../toolbar/types.js";
import { type CustomSaveButtonComponent } from "../topBar/buttonBar/button/saveButton/types.js";
import { type CustomSettingButtonComponent } from "../topBar/buttonBar/button/settingButton/types.js";
import { type CustomButtonBarComponent } from "../topBar/buttonBar/types.js";
import { type CustomMenuButtonComponent } from "../topBar/menuButton/types.js";
import { type CustomTitleComponent } from "../topBar/title/types.js";
import { type CustomTopBarComponent } from "../topBar/topBar/types.js";
import { type CustomDashboardLayoutComponent } from "../widget/dashboardLayout/types.js";
import { type AttributeFilterComponentProvider, type DashboardContentComponentProvider, type DateFilterComponentProvider, type DrillDialogExportDropdownComponentProvider, type FilterGroupComponentProvider, type InsightBodyComponentProvider, type InsightComponentProvider, type InsightMenuButtonComponentProvider, type InsightMenuComponentProvider, type InsightMenuTitleComponentProvider, type MeasureValueFilterComponentProvider, type RichTextComponentProvider, type RichTextMenuComponentProvider, type RichTextMenuTitleComponentProvider, type ShowAsTableButtonComponentProvider, type VisualizationSwitcherComponentProvider, type VisualizationSwitcherToolbarComponentProvider, type WidgetComponentProvider } from "./types.js";
/**
 * @internal
 */
interface IDashboardComponentsContext {
    ErrorComponent: ComponentType<IErrorProps>;
    LoadingComponent: ComponentType<ILoadingProps>;
    LayoutComponent: CustomDashboardLayoutComponent;
    WidgetComponentProvider: WidgetComponentProvider;
    InsightComponentProvider: InsightComponentProvider;
    InsightBodyComponentProvider: InsightBodyComponentProvider;
    InsightMenuButtonComponentProvider: InsightMenuButtonComponentProvider;
    InsightMenuComponentProvider: InsightMenuComponentProvider;
    RichTextMenuComponentProvider: RichTextMenuComponentProvider;
    InsightMenuTitleComponentProvider: InsightMenuTitleComponentProvider;
    RichTextMenuTitleComponentProvider: RichTextMenuTitleComponentProvider;
    VisualizationSwitcherToolbarComponentProvider: VisualizationSwitcherToolbarComponentProvider;
    RichTextComponentProvider: RichTextComponentProvider;
    VisualizationSwitcherComponentProvider: VisualizationSwitcherComponentProvider;
    ButtonBarComponent: CustomButtonBarComponent;
    MenuButtonComponent: CustomMenuButtonComponent;
    TitleComponent: CustomTitleComponent;
    TopBarComponent: CustomTopBarComponent;
    ToolbarComponent: CustomToolbarComponent;
    ScheduledEmailDialogComponent: CustomScheduledEmailDialogComponent;
    ScheduledEmailManagementDialogComponent: CustomScheduledEmailManagementDialogComponent;
    AlertingManagementDialogComponent: CustomAlertingManagementDialogComponent;
    AlertingDialogComponent: CustomAlertingDialogComponent;
    ShareDialogComponent: CustomShareDialogComponent;
    SaveAsDialogComponent: CustomSaveAsDialogComponent;
    DashboardAttributeFilterComponentProvider: AttributeFilterComponentProvider;
    DashboardDateFilterComponentProvider: DateFilterComponentProvider;
    DashboardMeasureValueFilterComponentProvider: MeasureValueFilterComponentProvider;
    DashboardFilterGroupComponentProvider: FilterGroupComponentProvider;
    FilterBarComponent: CustomFilterBarComponent;
    SidebarComponent: CustomSidebarComponent;
    InsightWidgetComponentSet: InsightWidgetComponentSet;
    RichTextWidgetComponentSet: RichTextWidgetComponentSet;
    VisualizationSwitcherWidgetComponentSet: VisualizationSwitcherWidgetComponentSet;
    DashboardLayoutWidgetComponentSet: DashboardLayoutWidgetComponentSet;
    AttributeFilterComponentSet: AttributeFilterComponentSet;
    DateFilterComponentSet: DateFilterComponentSet;
    EmptyLayoutDropZoneBodyComponent: CustomEmptyLayoutDropZoneBodyComponent;
    SaveButtonComponent: CustomSaveButtonComponent;
    SettingButtonComponent: CustomSettingButtonComponent;
    DashboardContentComponentProvider: DashboardContentComponentProvider;
    DashboardSettingsDialogComponent: CustomDashboardSettingsDialogComponent;
    ShowAsTableButtonComponentProvider: ShowAsTableButtonComponentProvider;
    DrillDialogExportDropdownComponentProvider: DrillDialogExportDropdownComponentProvider;
}
/**
 * @internal
 */
export declare const useDashboardComponentsContext: (localComponentOverrides?: Partial<IDashboardComponentsContext> | undefined) => IDashboardComponentsContext;
/**
 * @internal
 */
export interface IDashboardComponentsProviderProps extends IDashboardComponentsContext {
    children: ReactNode;
}
/**
 * @internal
 */
export declare function DashboardComponentsProvider({ children, ...components }: IDashboardComponentsProviderProps): ReactElement;
export {};
//# sourceMappingURL=DashboardComponentsContext.d.ts.map