import * as i0 from '@angular/core';
import { ApplicationRef, Injector } from '@angular/core';
import { Observable } from 'rxjs';

type AlertType = 'info' | 'success' | 'error' | 'warning';

declare class Alert {
    text: string;
    type: string;
    state: string;
    dismissTimeInMillis: number;
    constructor(text: string, type: string, dismissTime: number);
}

declare class AlertsStore {
    private alertsSubject;
    alerts$: Observable<Alert[]>;
    private dismissAllSubject;
    dismissAll$: Observable<void>;
    dismissAll(): void;
    addAlert(text: string, type: AlertType, dismissTime: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AlertsStore, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AlertsStore>;
}

declare class AlertsService {
    private alertsStore;
    private applicationRef;
    private injector;
    private alertsComponentRef;
    constructor(alertsStore: AlertsStore, applicationRef: ApplicationRef, injector: Injector);
    private initializeAlertsComponent;
    showInfo(text: string, dismissTimeInMillis?: number): void;
    showSuccess(text: string, dismissTimeInMillis?: number): void;
    showWarning(text: string, dismissTimeInMillis?: number): void;
    showError(text: string, dismissTimeInMillis?: number): void;
    clear(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AlertsService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AlertsService>;
}

declare class MockAlertsService {
    showInfo(text: string, dismissTimeInMillis?: number): void;
    showSuccess(text: string, dismissTimeInMillis?: number): void;
    showWarning(text: string, dismissTimeInMillis?: number): void;
    showError(text: string, dismissTimeInMillis?: number): void;
    clear(): void;
}

export { AlertsService, MockAlertsService };
