import { StatusType } from '@siemens/element-ng/common';
import { Link } from '@siemens/element-ng/link';
import { TranslatableString } from '@siemens/element-translate-ng/translate';
import { Subject } from 'rxjs';
import * as i0 from '@angular/core';
import { OnDestroy } from '@angular/core';

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

interface SiToast {
    state: StatusType;
    title: TranslatableString;
    message: TranslatableString;
    disableManualClose?: boolean;
    disableAutoClose?: boolean;
    timeout?: number;
    action?: Link;
    close?: () => void;
    translationParams?: {
        [key: string]: any;
    };
    hidden?: Subject<void>;
    closeAriaLabel?: TranslatableString;
}
declare const SI_TOAST_AUTO_HIDE_DELAY = 6000;

declare class SiToastNotificationService implements OnDestroy {
    /**
     * List of currently active toasts to see details or close them.
     *
     * @defaultValue []
     */
    activeToasts: SiToast[];
    private activeToastsSubject;
    private queuedToastSubject;
    private readonly maxToasts;
    private componentRef?;
    private overlayRef?;
    private injector;
    private overlay;
    private toastTimeoutMap;
    private toastTimerDefaults;
    constructor();
    ngOnDestroy(): void;
    /**
     * Queue a new toast to be shown.
     * @param action - Passing a Link object will optionally add a clickable link to the toast which can contain an action.
     * @returns the toast object
     */
    queueToastNotification(state: StatusType, title: string, message: string, disableAutoClose?: boolean, disableManualClose?: boolean, action?: Link): SiToast;
    /**
     * Show a toast notification
     * @param toast - The toast object of the toast to be shown, can also be constructed while calling this.
     */
    showToastNotification(toast: SiToast): SiToast;
    /**
     * Hide a toast notification
     * @param toast - The toast object of the toast to be hidden, can be retrieved from {@link activeToasts} and is returned by {@link queueToastNotification}.
     */
    hideToastNotification(toast?: SiToast): void;
    private pauseToastNotification;
    private resumeToastNotification;
    private addToastDrawer;
    private buildInjector;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiToastNotificationService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SiToastNotificationService>;
}

export { SI_TOAST_AUTO_HIDE_DELAY, SiToastNotificationService };
export type { SiToast };
