/**
 * Notification types
 */
import React from "react";
import { ViewMode, SelectionMode } from "./constants";
import { INotification, IMuteFilter, INotificationHistoryOptions, IFilter } from "../../../platform/services/notification/types";
import { SpawnParams } from "../../../platform/services/window/types";
export interface Control {
    action: string;
    label: string;
    run?: Function;
}
export interface NotificationCenterControlsProps {
    controls: Array<Control>;
    active?: Control["action"];
}
export interface INotificationCenterProps {
    controls?: NotificationCenterControlsProps;
    notificationCard?: React.ComponentType<any>;
    notificationHeaderRow?: React.ComponentType<any>;
    notificationListRow?: React.ComponentType<any>;
    title?: string;
}
export interface INotificationToastsProps {
    notificationCard?: React.ComponentType<any>;
    title?: string;
}
export interface INotificationDetailProps {
    notification: INotification;
}
export type NotificationListViewProps = {
    notifications: INotification[];
    notificationListRow?: React.ComponentType<INotificationDetailProps>;
    notificationHeaderRow?: React.ComponentType<any>;
};
export type NotificationCardViewProps = {
    notifications: INotification[];
    notificationCard?: React.ComponentType<any>;
};
export type NotificationsContextType = {
    viewMode: ViewMode;
    setViewMode: React.Dispatch<React.SetStateAction<ViewMode>>;
    selectionMode: SelectionMode;
    setSelectionMode: React.Dispatch<React.SetStateAction<SelectionMode>>;
    isSelectAll: boolean;
    setSelectAll: React.Dispatch<React.SetStateAction<boolean>>;
    drawerControlProps: NotificationCenterControlsProps;
    setDrawerControlProps: React.Dispatch<React.SetStateAction<NotificationCenterControlsProps>>;
    selectedNotification: INotification | null;
    setSelectedNotification: React.Dispatch<React.SetStateAction<INotification | null>>;
    searchString: string;
    setSearchString: React.Dispatch<React.SetStateAction<string>>;
    filteredNotifications: INotification[];
    checkedNotifications: INotification[];
    setCheckedNotifications: React.Dispatch<React.SetStateAction<INotification[]>>;
    setFilteredNotifications: React.Dispatch<React.SetStateAction<INotification[]>>;
    muteFilters: IMuteFilter[];
    setMuteFilters: React.Dispatch<React.SetStateAction<IMuteFilter[]>>;
};
export interface NotificationsConfig {
    filter?: {
        include?: [];
        exclude?: [];
    };
    position?: {};
    animation?: {
        displayDuration: number;
        animateIn: string;
        animateOut: string;
    };
    isTransparent?: boolean;
    notificationsHistory?: {
        since?: string;
        filter?: IFilter;
        options?: INotificationHistoryOptions;
    } | boolean;
    applyMuteFilters?: boolean;
    windowName: string;
}
export interface WindowConfig {
    window: SpawnParams & NotificationsConfig;
}
export type ContextMenuAction = {
    id?: string;
    name: string;
    icon: React.ReactElement;
    action?: (name: any) => void;
    label: string;
    display: boolean;
};
//# sourceMappingURL=types.d.ts.map