import { PropertyValueMap } from 'lit';
import { ThemeController } from './controllers/theme-controller';
import { WeavyComponent } from './classes/weavy-component';
import { ComponentType } from './types/app.types';
import { FormattedNotificationType, NotificationType, NotificationTypes } from './types/notifications.types';
import { getMarkNotificationMutation } from './data/notifications';
import { RealtimeNotificationEventType } from './types/realtime.types';
export declare const WY_NOTIFICATION_TOASTS_TAGNAME = "wy-notification-toasts";
declare global {
    interface HTMLElementTagNameMap {
        [WY_NOTIFICATION_TOASTS_TAGNAME]: WyNotificationToasts;
    }
}
/**
 * Weavy component to show notification toast in realtime. May show rendered notifications, native browser notifications or just provide notification events.
 *
 * @element wy-notification-toasts
 * @class WyNotificationToasts
 * @extends {WeavyComponent}
 * @fires {WyAppEventType} wy-app - Fired whenever the app property changes.
 * @fires {WyNotificationEventType} wy-notification - Fired when a notification should be shown.
 * @fires {WyLinkEventType} wy-link  - Fired when a notification is clicked.
 */
export declare class WyNotificationToasts extends WeavyComponent {
    #private;
    static styles: import('lit').CSSResult[];
    componentType: ComponentType;
    protected theme: ThemeController;
    /**
     * What type of notifications to display.
     *
     * @type "" | "activity" | "mention" | "reaction"
     */
    typeFilter: NotificationTypes;
    /**
     * Sets the kind of notifications to use.
     * - "internal" - Use HTML notifications.
     * - "native" - Use browser notifications.
     * - "none" - Only use notification events.
     */
    appearance: "internal" | "native" | "none";
    /**
     * Require the user to consent to notifications.
     * This in only affective with appearance =  "internal", since "native" always requires user consent.
     *
     * @type Boolean
     */
    requestUserPermission: boolean;
    /**
     * Sets the duration in ms of the *internal* notification toasts. Defaults to 5000.
     */
    duration: number;
    protected _notifications: NotificationType[];
    _nativeNotifications: Notification[];
    protected markNotificationMutation?: ReturnType<typeof getMarkNotificationMutation>;
    protected handleEvent: (e: RealtimeNotificationEventType) => Promise<void>;
    addOrUpdateNotification(notification: NotificationType): Promise<void>;
    updateNotification(notification: NotificationType): Promise<void>;
    removeNotification(notificationId: number): void;
    addOrUpdateNativeNotification(formattedNotification: FormattedNotificationType): Promise<void>;
    removeNativeNotification(notificationId: number): boolean;
    closeNativeNotification(notificationId: number): boolean;
    hasUserPermission(): Promise<boolean>;
    clearNotifications(): void;
    private handleMark;
    protected willUpdate(changedProperties: PropertyValueMap<this>): Promise<void>;
    render(): import('../node_modules/lit-html/node/lit-html.js').TemplateResult<1>;
    disconnectedCallback(): void;
}
//# sourceMappingURL=wy-notification-toasts.d.ts.map