import { type ComponentType } from "react";
import { type IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
import { type INotification } from "@gooddata/sdk-model";
import { type ILocale } from "@gooddata/sdk-ui";
import { type INotificationsPanelComponentProps } from "./DefaultNotificationsPanel.js";
import { type INotificationsPanelButtonComponentProps } from "./DefaultNotificationsPanelButton.js";
import { type INotificationsPanelHeaderComponentProps } from "./DefaultNotificationsPanelHeader.js";
import { type INotificationComponentProps } from "../Notification/DefaultNotification.js";
import { type INotificationsListComponentProps } from "../NotificationsList/DefaultNotificationsList.js";
import { type INotificationsListEmptyStateComponentProps } from "../NotificationsList/DefaultNotificationsListEmptyState.js";
import { type INotificationsListErrorStateComponentProps } from "../NotificationsList/DefaultNotificationsListErrorState.js";
import { type INotificationSkeletonItemComponentProps } from "../NotificationsList/DefaultSkeletonItem.js";
/**
 * @public
 */
export interface INotificationsPanelCustomComponentsProps {
    /**
     * Custom open notifications panel button component.
     *
     * - Required if renderInline is not enabled.
     */
    NotificationsPanelButton?: ComponentType<INotificationsPanelButtonComponentProps>;
    /**
     * Custom notifications panel component.
     */
    NotificationsPanel?: ComponentType<INotificationsPanelComponentProps>;
    /**
     * Custom notifications panel header component.
     */
    NotificationsPanelHeader?: ComponentType<INotificationsPanelHeaderComponentProps>;
    /**
     * Custom notifications list component.
     */
    NotificationsList?: ComponentType<INotificationsListComponentProps>;
    /**
     * Custom notifications list empty state component.
     */
    NotificationsListEmptyState?: ComponentType<INotificationsListEmptyStateComponentProps>;
    /**
     * Custom notifications list error state component.
     */
    NotificationsListErrorState?: ComponentType<INotificationsListErrorStateComponentProps>;
    /**
     * Custom notification component.
     */
    Notification?: ComponentType<INotificationComponentProps>;
    /**
     * Custom notification skeleton item component.
     */
    NotificationSkeletonItem?: ComponentType<INotificationSkeletonItemComponentProps>;
}
/**
 * @public
 */
export interface INotificationsPanelProps extends INotificationsPanelCustomComponentsProps {
    /**
     * Locale to use.
     */
    locale?: ILocale;
    /**
     * Backend to use.
     *
     * - If not defined, the backend from the BackendProvider context will be used.
     */
    backend?: IAnalyticalBackend;
    /**
     * Workspace ID to use.
     *
     * - If not defined, the workspace ID from the WorkspaceProvider context will be used.
     * - If workspace is not defined and there is no WorkspaceProvider, notifications will be loaded from all workspaces.
     */
    workspace?: string;
    /**
     * Enable inline rendering of the notifications panel
     *
     * - Default: false
     * - If enabled, NotificationsPanelButton won't be rendered, and NotificationsPanel won't be rendered inside modal
     * - This is useful when you want to render notifications panel in a custom modal.
     */
    renderInline?: boolean;
    /**
     * Refresh interval in milliseconds.
     *
     * - Default: 600000 (10 minutes)
     * - If set to 0, notifications won't be refreshed automatically.
     */
    refreshInterval?: number;
    /**
     * Number of notifications to load per page.
     *
     * - Default: 50
     */
    itemsPerPage?: number;
    /**
     * Number of skeleton items to render when loading notifications.
     *
     * - Default: 5
     */
    skeletonItemsCount?: number;
    /**
     * Height of the item in notifications list in pixels.
     *
     * - Default: 52
     */
    itemHeight?: number;
    /**
     * Optionally override max width of the notifications panel.
     *
     * - Does not have effect when renderInline is true - inline rendering always fills the parent container.
     */
    maxWidth?: number | string;
    /**
     * Maximum height of the notifications list in pixels.
     *
     * - Default: 527
     * - Does not have effect when renderInline is true - inline rendering always fills the parent container.
     */
    maxListHeight?: number;
    /**
     * Gap between notification items in the list in pixels.
     *
     * - Default: 10
     */
    itemsGap?: number;
    /**
     * Padding of the notification item (from left and right) in pixels.
     *
     * - Default: 15
     */
    itemPadding?: number;
    /**
     * Callback for notification click.
     */
    onNotificationClick?: (notification: INotification) => void;
    /**
     * Enable export to document storage.
     *
     * - Default: false
     */
    enableScheduleNotifications?: boolean;
}
/**
 * @public
 */
export declare function NotificationsPanel(props: INotificationsPanelProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=NotificationsPanel.d.ts.map