import { AXLocation, AXStyleColorType, MXBaseComponent, AXComponentCloseEvent } from '@acorex/cdk/common';
import * as i0 from '@angular/core';
import { OnInit, InjectionToken } from '@angular/core';
import * as i2 from '@acorex/components/button';
import { AXButtonItem } from '@acorex/components/button';
import * as i5 from '@angular/cdk/dialog';
import { DialogRef } from '@angular/cdk/dialog';
import { ScrollStrategy } from '@angular/cdk/overlay';
import * as i1 from '@angular/common';
import * as i3 from '@acorex/components/decorators';
import * as i4 from '@acorex/components/loading';
import * as i6 from '@acorex/core/translation';

interface AXToastDisplayConfig {
    icon?: string;
    title?: string;
    content?: string;
    closeButton?: boolean;
    location?: AXLocation;
    color: AXStyleColorType;
    timeOut?: number;
    timeOutProgress?: boolean;
    pauseOnHover?: boolean;
}
interface AXToastData {
    icon?: string;
    title?: string;
    content?: string;
    location: AXLocation;
    closeButton: boolean;
    color: AXStyleColorType;
    timeOut?: number;
    timeOutProgress: boolean;
    closeAllButton?: boolean;
    pauseOnHover?: boolean;
}
interface AXToastRef {
    close(): void;
}

declare class AXToastService {
    private readonly scrollStrategyOptions;
    private dialog;
    private defaultConfig;
    private translationService;
    private reserveCounter;
    private activeToasts;
    private reservedToasts;
    private toastCounterElement;
    private moreToastsConfig;
    scrollStrategy: ScrollStrategy;
    constructor();
    /**
     * Shows a primary toast notification.
     *
     * @param content - The message content to display.
     */
    primary(content: string): void;
    /**
     * Shows a secondary toast notification.
     *
     * @param content - The message content to display.
     */
    secondary(content: string): void;
    /**
     * Shows a success toast notification.
     *
     * @param content - The message content to display.
     */
    success(content: string): void;
    /**
     * Shows a warning toast notification.
     *
     * @param content - The message content to display.
     */
    warning(content: string): void;
    /**
     * Shows a danger toast notification.
     *
     * @param content - The message content to display.
     */
    danger(content: string): void;
    /**
     * Shows a default toast notification.
     *
     * @param content - The message content to display.
     */
    default(content: string): void;
    /**
     * Shows a toast notification with the specified configuration.
     *
     * @param config - The toast display configuration.
     * @returns AXToastRef - Reference to the created toast for programmatic control.
     */
    show(config: AXToastDisplayConfig): AXToastRef;
    private displayToast;
    /**
     * Hides all active toast notifications.
     */
    hideAll(): void;
    private handleShowReservedToast;
    private handleReservedToastCounter;
    private createReservedCounterToast;
    private reposition;
    private getRepositionPosition;
    private getPosition;
    private getPositionStrategy;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXToastService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXToastService>;
}

/**
 * The Button is a component which detects user interaction and triggers a corresponding event
 *
 * @category Components
 */
declare class AXToastComponent extends MXBaseComponent implements OnInit {
    config: AXToastData;
    dialogRef: DialogRef<AXComponentCloseEvent, unknown>;
    toastService: AXToastService;
    createdDate: i0.WritableSignal<number>;
    private intervalId;
    private isPaused;
    protected remainingTime: i0.WritableSignal<number>;
    protected transitionDuration: i0.WritableSignal<number>;
    /** @ignore */
    protected _toastWidth: number;
    /** @ignore */
    protected _icon: string;
    /** @ignore */
    ngOnInit(): void;
    private pauseAnimation;
    private _handleTimeOut;
    private _initIcon;
    /** @ignore */
    _handleButtonClick(button: AXButtonItem): void;
    /** @ignore */
    private get __hostClass();
    /**
     * Closes the toast notification.
     */
    close(): void;
    /**
     * Closes all toast notifications.
     */
    closeAll(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXToastComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXToastComponent, "ax-toast", never, {}, {}, never, never, true, never>;
}

interface AXToastConfig {
    gap: number;
    timeOut: number;
    timeOutProgress: boolean;
    location: AXLocation;
    limit: number;
    pauseOnHover: boolean;
}
declare const AX_TOAST_CONFIG: InjectionToken<AXToastConfig>;
declare const AXToastDefaultConfig: AXToastConfig;
type PartialToastConfig = Partial<AXToastConfig>;
declare function toastConfig(config?: PartialToastConfig): AXToastConfig;

declare class AXToastModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXToastModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AXToastModule, never, [typeof i1.CommonModule, typeof i2.AXButtonModule, typeof i3.AXDecoratorModule, typeof i4.AXLoadingModule, typeof i5.DialogModule, typeof i6.AXTranslationModule, typeof AXToastComponent], [typeof AXToastComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXToastModule>;
}

export { AXToastComponent, AXToastDefaultConfig, AXToastModule, AXToastService, AX_TOAST_CONFIG, toastConfig };
export type { AXToastConfig, AXToastData, AXToastDisplayConfig, AXToastRef, PartialToastConfig };
