import { type ComponentType } from "react";
import { type INotification } from "@gooddata/sdk-model";
import { type GoodDataSdkError, type UseCancelablePromiseStatus } from "@gooddata/sdk-ui";
import { type INotificationsListEmptyStateComponentProps } from "./DefaultNotificationsListEmptyState.js";
import { type INotificationsListErrorStateComponentProps } from "./DefaultNotificationsListErrorState.js";
import { type INotificationSkeletonItemComponentProps } from "./DefaultSkeletonItem.js";
import { type INotificationComponentProps } from "../Notification/DefaultNotification.js";
import { type INotificationsPanelView } from "../types.js";
/**
 * Props for the NotificationsList component.
 *
 * @public
 */
export interface INotificationsListComponentProps {
    /**
     * Component to render when the notifications list is empty.
     */
    NotificationsListEmptyState: ComponentType<INotificationsListEmptyStateComponentProps>;
    /**
     * Component to render when the notifications list is in error state.
     */
    NotificationsListErrorState: ComponentType<INotificationsListErrorStateComponentProps>;
    /**
     * Component to render each notification.
     */
    Notification: ComponentType<INotificationComponentProps>;
    /**
     * Component to render each skeleton item.
     */
    NotificationSkeletonItem: ComponentType<INotificationSkeletonItemComponentProps>;
    /**
     * Active view of the notifications list.
     */
    activeView: INotificationsPanelView;
    /**
     * Status of the notifications list.
     */
    status: UseCancelablePromiseStatus;
    /**
     * Error to display.
     */
    error?: GoodDataSdkError;
    /**
     * Loaded notifications relevant to the active view.
     */
    activeNotifications?: INotification[];
    /**
     * Callback function to mark notification as read.
     */
    markNotificationAsRead: (notificationId: string) => Promise<void>;
    /**
     * Callback function to handle notification click.
     */
    onNotificationClick?: (notification: INotification) => void;
    /**
     * Whether there is a next page of notifications.
     */
    hasNextPage: boolean;
    /**
     * Load next page of notifications.
     */
    loadNextPage: () => void;
    /**
     * Height of the notification item in pixels.
     */
    itemHeight: number;
    /**
     * Gap between notification items in pixels.
     */
    itemsGap: number;
    /**
     * Padding of the notification item (from left/right) in pixels.
     */
    itemPadding: number;
    /**
     * Number of skeleton items to render when loading notifications.
     */
    skeletonItemsCount: number;
    /**
     * Maximum height of the notifications list in pixels.
     */
    maxListHeight?: number;
    /**
     * Callback function to close the notifications panel.
     */
    closeNotificationsPanel: () => void;
}
/**
 * Default implementation of the NotificationsList component.
 *
 * @public
 */
export declare function DefaultNotificationsList({ Notification, NotificationsListEmptyState, NotificationsListErrorState, NotificationSkeletonItem, activeView, status, error, activeNotifications, markNotificationAsRead, onNotificationClick, hasNextPage, loadNextPage, itemHeight, itemsGap, itemPadding, skeletonItemsCount, maxListHeight, closeNotificationsPanel, }: INotificationsListComponentProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=DefaultNotificationsList.d.ts.map