import { C3NotificationsProps } from "../components/c3-navigation/c3-navigation.types";
import { RequestResponse } from "./api";
export interface Notification {
    uuid: string;
    userId?: string;
    orgId?: string;
    timestamp: number;
    source: string;
    type: string;
    title: string;
    description: string;
    state: string;
    meta?: {
        identifier?: string;
        href?: string;
        label?: string;
        entity?: {
            id: string;
            type: string;
        };
        parentEntity?: {
            id: string;
            type: string;
        };
    };
}
export type AnalyticsEvent = "notification-panel-opened" | "notification-clicked-cta";
export declare class NotificationService {
    static getNotifications(options: C3NotificationsProps): Promise<RequestResponse<Notification[]>>;
    static sendAnalyticsEvent(options: C3NotificationsProps, eventOptions: {
        event: AnalyticsEvent;
        id?: string;
    }): void;
    static changeState(options: C3NotificationsProps, notificationId: string, operation: "read" | "dismiss"): void;
    static markManyAsRead(options: C3NotificationsProps, notificationIds: string[]): void;
    static dismissAll(options: C3NotificationsProps, orgId: string): void;
    static notificationsStream(options: C3NotificationsProps, handler: (notification: Notification) => void): void;
    static updateNotifications(allNotifications: Notification[], newNotification: Notification): Notification[];
    static updateNotificationState(allNotifications: Notification[], notificationId: string, newState: "read" | "dismiss"): Notification[];
    static updateNotificationStates(allNotifications: Notification[], notificationIds: string[], newState: "read" | "dismiss"): Notification[];
}
