import React from 'react';
import type { Application } from '../../application';
import type { IEntityTag, IEntityTags } from '../../domain';
import type { Placement } from '../../presentation';
import './notifications.less';
import './notifications.popover.less';
export declare type NotificationType = 'alerts' | 'notices';
/** A UI notification. */
export interface INotification {
    /** the notification message, category, etc */
    entityTag: IEntityTag;
    /** the enclosing IEntityTags that the notification lives on */
    entityTags: IEntityTags;
}
export interface INotificationsPopoverProps {
    /** The entity that "owns" the tags */
    entity?: any;
    /** The entity tags which contain the notifications */
    tags: IEntityTags[];
    /** The type of notifications (which is also the JS property to use) */
    type?: NotificationType;
    /** The global application object */
    application: Application;
    /**
     * Group identical messages from multiple server groups together
     * When grouped, the edit/delete controls do not render.
     */
    grouped?: boolean;
    /** Show categories */
    categorized?: boolean;
    /** Tooltip placement */
    placement?: Placement;
    /** e.g. '25%' */
    hOffsetPercent?: string;
    /** class for the popover span */
    className?: string;
    /** A function that returns the google analytics event string */
    gaLabelFn?(props: INotificationsPopoverProps): string;
    /** Callback after a tag has been updated */
    onUpdate?(): void;
}
export interface INotificationsPopoverState {
    notifications: INotification[];
    count: number;
    severity: number;
}
/**
 * A configurable popover which renders notifications
 */
export declare class NotificationsPopover extends React.Component<INotificationsPopoverProps, INotificationsPopoverState> {
    static defaultProps: Partial<INotificationsPopoverProps>;
    constructor(props: INotificationsPopoverProps);
    private getState;
    componentWillReceiveProps(nextProps: INotificationsPopoverProps): void;
    handleEditNotification(notification: INotification): void;
    handleDeleteNotification(notification: INotification): void;
    fireGAEvent: () => void;
    private PopoverContent;
    render(): JSX.Element;
}
