import { InjectionToken } from '@angular/core';
import { SafeHtml } from '@angular/platform-browser';
import { Observable } from 'rxjs';
import { ComponentType } from './portal/portal';
import { ToastrRef } from './toastr-injector';
export declare type ProgressAnimationType = 'increasing' | 'decreasing';
export declare enum ToastrPosition {
    CENTER_CENTER = 0,
    TOP_CENTER = 1,
    BOTTOM_CENTER = 2,
    TOP_FULL_WIDTH = 3,
    BOTTOM_FULL_WIDTH = 4,
    TOP_LEFT = 5,
    TOP_RIGHT = 6,
    BOTTOM_LEFT = 7,
    BOTTOM_RIGHT = 8
}
/**
 * Configuration for an individual toast.
 */
export interface IndividualConfig {
    /**
     * disable both timeOut and extendedTimeOut
     * default: false
     */
    disableTimeOut: boolean;
    /**
     * toast time to live in milliseconds
     * default: 5000
     */
    timeOut: number;
    /**
     * toast show close button
     * default: false
     */
    closeButton: boolean;
    /**
     * time to close after a user hovers over toast
     * default: 1000
     */
    extendedTimeOut: number;
    /**
     * show toast progress bar
     * default: false
     */
    progressBar: boolean;
    /**
     * changes toast progress bar animation
     * default: decreasing
     */
    progressAnimation: ProgressAnimationType;
    /**
     * render html in toast message (possibly unsafe)
     * default: false
     */
    enableHtml: boolean;
    /**
     * css class on toast component
     * default: toast
     */
    toastClass: string;
    /**
     * Position of toastr container
     * default: ToastrPosition.TOP_RIGHT
     */
    position: ToastrPosition;
    /**
     * css class on toast title
     * default: toast-title
     */
    titleClass: string;
    /**
     * css class on toast message
     * default: toast-message
     */
    messageClass: string;
    /**
     * animation easing on toast
     * default: ease-in
     */
    easing: string;
    /**
     * animation ease time on toast
     * default: 300
     */
    easeTime: string | number;
    /**
     * clicking on toast dismisses it
     * default: true
     */
    tapToDismiss: boolean;
    /**
     * Angular toast component to be shown
     * default: Toast
     */
    toastComponent?: ComponentType<any>;
    /**
     * Helps show toast from a websocket or from event outside Angular
     * default: false
     */
    onActivateTick: boolean;
}
export interface ToastrIconClasses {
    none: string;
    error: string;
    info: string;
    success: string;
    warning: string;
}
/**
 * Global Toast configuration
 * Includes all IndividualConfig
 */
export interface GlobalConfig extends IndividualConfig {
    /**
     * max toasts opened. Toasts will be queued
     * Zero is unlimited
     * default: 0
     */
    maxOpened: number;
    /**
     * dismiss current toast when max is reached
     * default: false
     */
    autoDismiss: boolean;
    iconClasses: Partial<ToastrIconClasses>;
    /**
     * New toast placement
     * default: true
     */
    newestOnTop: boolean;
    /**
     * block duplicate messages
     * default: false
     */
    preventDuplicates: boolean;
    /**
     * Reset toast timeout when there's a duplicate (preventDuplicates needs to be set to true)
     * default: false
     */
    resetTimeoutOnDuplicate: boolean;
}
/**
 * Everything a toast needs to launch
 */
export declare class ToastPackage {
    toastId: number;
    config: IndividualConfig;
    message: string | SafeHtml | null | undefined;
    title: string | undefined;
    toastType: string;
    toastRef: ToastrRef<any>;
    private _onTap;
    private _onAction;
    constructor(toastId: number, config: IndividualConfig, message: string | SafeHtml | null | undefined, title: string | undefined, toastType: string, toastRef: ToastrRef<any>);
    /** Fired on click */
    triggerTap(): void;
    onTap(): Observable<any>;
    /** available for use in custom toast */
    triggerAction(action?: any): void;
    onAction(): Observable<any>;
}
/** @deprecated use GlobalConfig */
export interface GlobalToastrConfig extends GlobalConfig {
}
/** @deprecated use IndividualConfig */
export interface IndividualToastrConfig extends IndividualConfig {
}
/** @deprecated use IndividualConfig */
export interface ToastrConfig extends IndividualConfig {
}
export declare const DefaultNoComponentGlobalConfig: GlobalConfig;
export interface ToastrToken {
    default: GlobalConfig;
    config: Partial<GlobalConfig>;
}
export declare const TOAST_CONFIG: InjectionToken<ToastrToken>;
