/**
 * Notification Types
 *
 * Defines the types for the notification system.
 *
 * @module core/notifications/notification-types
 */
/**
 * Generate a unique notification ID
 *
 * @returns Unique ID string
 */
export function generateNotificationId() {
    const timestamp = Date.now().toString(36);
    const random = Math.random().toString(36).substring(2, 8);
    return `notif-${timestamp}-${random}`;
}
/**
 * Create a notification from input
 *
 * @param input - Notification input
 * @returns Full notification object
 */
export function createNotification(input) {
    return {
        id: generateNotificationId(),
        type: input.type,
        severity: input.severity,
        title: input.title,
        message: input.message,
        data: input.data,
        createdAt: new Date().toISOString(),
    };
}
/**
 * Check if notification should be shown (not dismissed)
 *
 * @param notification - Notification to check
 * @returns true if notification should be shown
 */
export function isPendingNotification(notification) {
    return !notification.dismissedAt;
}
/**
 * Check if notification has been read
 *
 * @param notification - Notification to check
 * @returns true if notification has been read
 */
export function isReadNotification(notification) {
    return !!notification.readAt;
}
/**
 * Get severity emoji for display
 *
 * @param severity - Severity level
 * @returns Emoji string
 */
export function getSeverityEmoji(severity) {
    switch (severity) {
        case 'critical':
            return '❗';
        case 'warning':
            return '⚠️';
        case 'info':
            return 'ℹ️';
        default:
            return '📬';
    }
}
/**
 * Get notification type label for display
 *
 * @param type - Notification type
 * @returns Human-readable label
 */
export function getNotificationTypeLabel(type) {
    switch (type) {
        case 'import-complete':
            return 'Import Complete';
        case 'discrepancy':
            return 'Discrepancy';
        case 'sync-failure':
            return 'Sync Failure';
        case 'drift':
            return 'Drift Detected';
        case 'job-complete':
            return 'Job Complete';
        case 'cost-alert':
            return 'Cost Alert';
        default:
            return 'Notification';
    }
}
//# sourceMappingURL=notification-types.js.map