// @ts-nocheck

import { GetNotificationsDataQuery, Notification, NotificationInitialSettingsConfig, NotificationSettingsConfig, NotificationTabConfig } from "../data/notification.model";
import { CrossOrganizationConfig } from "./cross-organization-config.model";

export declare class NotificationElement {
    /**
     * To open notification history panel
     */
    openHistoryPanel: () => void;

    /**
     * To close notification history panel
     */
    closeHistoryPanel: () => void;

    /**
     * To toggle notification history panel
     */
    toggleHistoryPanel: () => void;

    /**
     * To get notifications data
     */
    getNotificationsData: (query?: GetNotificationsDataQuery) => Observable<Notification[] | null>;

    /**
     * To set max days for notification history
     */
    setMaxDays: (days: number) => void;

    /**
     * To set tab configuration
     */
    setTabConfig: (tabConfig: NotificationTabConfig) => void;

    /**
     * To enable read notifications on for you tab
     */
    enableReadNotificationsOnForYouTab: () => void;

    /**
     * To disable read notifications on for you tab
     */
    disableReadNotificationsOnForYouTab: () => void;

    /**
     * To set all notifications as read
     */
    setAllNotificationsAsRead: (config?: { tabId: 'for-you' | 'all' | 'document' | 'people' }) => void;

    /**
     * To get unread notifications count
     */
    getUnreadNotificationsCount: () => Observable<{ forYou: number | null, all: number | null }>;

    /**
     * To mark notification as read by id
     */
    markNotificationAsReadById: (notificationId: string) => void;

    /**
     * To set settings
     */
    setSettings: (config: NotificationSettingsConfig) => void;

    /**
     * To get settings
     */
    getSettings: () => Observable<NotificationSettingsConfig | null>;

    /**
     * To enable settings config by organization
     */
    enableSettingsAtOrganizationLevel: () => void;

    /**
     * To disable settings config by organization
     */
    disableSettingsAtOrganizationLevel: () => void;

    /**
     * To mute all notifications
     */
    muteAllNotifications: () => void;

    /**
     * To enable settings
     */
    enableSettings: () => void;

    /**
     * To disable settings
     */
    disableSettings: () => void;

    /**
     * To enable self notifications
     */
    enableSelfNotifications: () => void;

    /**
     * To disable self notifications
     */
    disableSelfNotifications: () => void;

    /**
     * To set settings initial config
     */
    setSettingsInitialConfig: (settings: NotificationInitialSettingsConfig[]) => void;

    /**
     * To open notifications panel
     */
    openNotificationsPanel: () => void;

    /**
     * To close notifications panel
     */
    closeNotificationsPanel: () => void;

    /**
     * To enable current document only
     */
    enableCurrentDocumentOnly: () => void;

    /**
     * To disable current document only
     */
    disableCurrentDocumentOnly: () => void;

    /**
     * Opt in to cross-organization "For You" notifications.
     */
    enableCrossOrganization: (config?: CrossOrganizationConfig | null) => void;

    /**
     * Opt out of cross-organization "For You" notifications.
     */
    disableCrossOrganization: () => void;

    constructor();

    /**
     * To open notification history panel
     */
    private _openHistoryPanel;

    /**
     * To close notification history panel
     */
    private _closeHistoryPanel;

    /**
     * To toggle notification history panel
     */
    private _toggleHistoryPanel;

    /**
     * To get notifications data
     */
    private _getNotificationsData;

    /**
     * To set max days for notification history
     */
    private _setMaxDays;

    /**
     * To set tab configuration
     */
    private _setTabConfig;

    /**
     * To enable read notifications on for you tab
     */
    private _enableReadNotificationsOnForYouTab;

    /**
     * To disable read notifications on for you tab
     */
    private _disableReadNotificationsOnForYouTab;

    /**
     * To set all notifications as read
     */
    private _setAllNotificationsAsRead;

    /**
     * To get unread notifications count
     */
    private _getUnreadNotificationsCount;

    /**
     * To mark notification as read by id
     */
    private _markNotificationAsReadById;

    /**
     * To set settings
     */
    private _setSettings;

    /**
     * To get settings
     */
    private _getSettings;

    /**
     * To mute all notifications
     */
    private _muteAllNotifications;

    /**
     * To enable settings
     */
    private _enableSettings;

    /**
     * To disable settings
     */
    private _disableSettings;

    /**
     * To enable settings config by organization
     */
    private _enableSettingsAtOrganizationLevel;

    /**
     * To disable settings config by organization
     */
    private _disableSettingsAtOrganizationLevel;

    /**
     * To enable self notifications
     */
    private _enableSelfNotifications;

    /**
     * To disable self notifications
     */
    private _disableSelfNotifications;

    /**
     * To set settings initial config
     */
    private _setSettingsInitialConfig;

    /**
     * To open notifications panel
     */
    private _openNotificationsPanel;

    /**
     * To close notifications panel
     */
    private _closeNotificationsPanel;

    /**
     * To enable current document only
     */
    private _enableCurrentDocumentOnly;

    /**
     * To disable current document only
     */
    private _disableCurrentDocumentOnly;

    private _enableCrossOrganization;

    private _disableCrossOrganization;
}
