import { SymbolRegistry } from '@agorapulse/ui-symbol';
import { Router } from '@angular/router';
import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
import { BehaviorSubject } from 'rxjs';
import * as i0 from '@angular/core';

/**
 * Info - 0
 * Success - 1
 * Warning - 2
 * Error - 3
 */
type externalSnackbarTypeAllowed = 'info' | 'success' | 'warning' | 'error';
type internalSnackbarTypeAllowed = 0 | 1 | 2 | 3;
/**
 * We use enum to avoid problem with isolatedModules when export const enum
 * https://ncjamieson.com/dont-export-const-enums/
 */
declare enum SnackbarTypeValues {
    INFO = "info",
    SUCCESS = "success",
    WARNING = "warning",
    ERROR = "error"
}
interface SnackbarsThreadBase {
    actionName?: string;
    navigateInternalUrl?: string;
    snackbarType: internalSnackbarTypeAllowed;
    snackbarText: string | SafeHtml;
    openUrlInNewTab?: boolean;
    callback?: () => void;
}
interface SnackbarsThreadComplete extends SnackbarsThreadBase {
    id: string;
}
declare abstract class CodeStatus {
    snackbarText: string;
    snackbarType: internalSnackbarTypeAllowed;
    protected constructor(snackbarText: string, snackbarType: internalSnackbarTypeAllowed);
}
declare function generateCodeStatus(text: string, type: externalSnackbarTypeAllowed): CodeStatus;

declare class SnackbarsThreadService {
    private domSanitizer;
    private _list;
    snackbarList: BehaviorSubject<SnackbarsThreadComplete[]>;
    constructor(domSanitizer: DomSanitizer);
    private _emit;
    add(elem: SnackbarsThreadBase, timeout?: number): void;
    addWithId(elem: SnackbarsThreadBase, id: string, timeout?: number): void;
    /**
     * Adds the snackbar and return its ID so it can be closed further
     */
    addSnackbar(elem: SnackbarsThreadBase, timeout?: number): string;
    remove(id: string | undefined): void;
    private generateId;
    static ɵfac: i0.ɵɵFactoryDeclaration<SnackbarsThreadService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SnackbarsThreadService>;
}

declare class SnackbarsThreadComponent {
    snackbarsThreadService: SnackbarsThreadService;
    symbolRegistry: SymbolRegistry;
    private readonly router;
    SnackbarTypesMap: {
        0: string;
        1: string;
        2: string;
        3: string;
    };
    SnackbarIconsMap: {
        [k: number]: string;
    };
    constructor(snackbarsThreadService: SnackbarsThreadService, symbolRegistry: SymbolRegistry, router: Router);
    remove(id: string): void;
    onActionClick(snackbar: SnackbarsThreadBase, id: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SnackbarsThreadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SnackbarsThreadComponent, "ap-snackbars-thread", never, {}, {}, never, never, true, never>;
}

export { CodeStatus, SnackbarTypeValues, SnackbarsThreadComponent, SnackbarsThreadService, generateCodeStatus };
export type { SnackbarsThreadBase, externalSnackbarTypeAllowed };
