import { Key, useRef } from 'react';
import type { DismissReason, InternalNotification, OverlayNotificationOptions, PersistentNotificationItem } from './types';
import type { OverlayTimers } from './use-overlay-timers';
export interface PersistentCallbacks {
    addPersistentItem: (item: PersistentNotificationItem) => void;
}
export interface NotificationState {
    notifications: InternalNotification[];
    notificationsRef: ReturnType<typeof useRef<InternalNotification[]>>;
    addNotification: (options: OverlayNotificationOptions, ownerId?: string) => Key;
    removeNotification: (id: Key, reason?: DismissReason) => void;
    updateNotification: (id: Key, options: Partial<OverlayNotificationOptions>) => void;
    finalizeNotificationRemoval: (internalId: string) => void;
    removeByOwner: (ownerId: string) => void;
}
/**
 * @param timersRef - Ref to the shared OverlayTimers instance. Accessed only
 *   inside callbacks (never during render), so it is guaranteed to be populated.
 */
export declare function useNotificationState(timersRef: ReturnType<typeof useRef<OverlayTimers>>, persistent: PersistentCallbacks): NotificationState;
