import { ToastPassThrough, ToastPositionType, ToastModeType, ToastBreakpoints, ToastCloseEvent, ToastMessageTemplateContext, ToastHeadlessTemplateContext, ToastItemCloseEvent } from 'primeng/types/toast';
export * from 'primeng/types/toast';
import * as _angular_core from '@angular/core';
import { TemplateRef } from '@angular/core';
import { MotionOptions } from '@primeuix/motion';
import * as i2 from 'primeng/api';
import { ToastMessageOptions, MessageService } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { Subscription } from 'rxjs';
import { BaseStyle } from 'primeng/base';

/**
 *
 * Toast is used to display messages in an overlay.
 *
 * [Live Demo](https://www.primeng.org/toast/)
 *
 * @module toaststyle
 *
 */
declare enum ToastClasses {
    /**
     * Class name of the root element
     */
    root = "p-toast",
    /**
     * Class name of the message element
     */
    message = "p-toast-message",
    /**
     * Class name of the message content element
     */
    messageContent = "p-toast-message-content",
    /**
     * Class name of the message icon element
     */
    messageIcon = "p-toast-message-icon",
    /**
     * Class name of the message text element
     */
    messageText = "p-toast-message-text",
    /**
     * Class name of the summary element
     */
    summary = "p-toast-summary",
    /**
     * Class name of the detail element
     */
    detail = "p-toast-detail",
    /**
     * Class name of the close button element
     */
    closeButton = "p-toast-close-button",
    /**
     * Class name of the close icon element
     */
    closeIcon = "p-toast-close-icon"
}
declare class ToastStyle extends BaseStyle {
    name: string;
    style: string;
    classes: {
        root: ({ instance }: {
            instance: any;
        }) => string[];
        message: ({ instance }: {
            instance: any;
        }) => {
            'p-toast-message': boolean;
            'p-toast-message-normal': boolean;
            'p-toast-message-info': boolean;
            'p-toast-message-warn': boolean;
            'p-toast-message-error': boolean;
            'p-toast-message-success': boolean;
            'p-toast-message-secondary': boolean;
            'p-toast-message-contrast': boolean;
        };
        messageContent: string;
        messageIcon: ({ instance }: {
            instance: any;
        }) => {
            [x: string]: boolean;
            'p-toast-message-icon': boolean;
        };
        messageText: string;
        summary: string;
        detail: string;
        closeButton: string;
        closeIcon: ({ instance }: {
            instance: any;
        }) => {
            [x: string]: boolean;
            'p-toast-close-icon': boolean;
        };
    };
    inlineStyles: {
        root: ({ instance }: {
            instance: any;
        }) => {
            position: string;
            top: string | null;
            right: string | false;
            bottom: string | false;
            left: string | null;
        };
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastStyle, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<ToastStyle>;
}
interface ToastStyle extends BaseStyle {
}

/**
 * Toast is used to display messages in an overlay.
 * @group Components
 */
declare class Toast extends BaseComponent<ToastPassThrough> {
    componentName: string;
    $pcToast: Toast | undefined;
    bindDirectiveInstance: Bind;
    onAfterViewChecked(): void;
    /**
     * Key of the message in case message is targeted to a specific toast component.
     * @group Props
     */
    key: _angular_core.InputSignal<string | undefined>;
    /**
     * Whether to automatically manage layering.
     * @group Props
     */
    autoZIndex: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Base zIndex value to use in layering.
     * @group Props
     */
    baseZIndex: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * The default time to display messages for in milliseconds.
     * @group Props
     */
    life: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * Position of the toast in viewport.
     * @group Props
     */
    position: _angular_core.InputSignal<ToastPositionType>;
    /**
     * Layout mode of the toast. `stacked` collapses toasts into a stack that expands on hover/focus; `expanded` always renders every toast expanded.
     * @defaultValue 'stacked'
     * @group Props
     */
    mode: _angular_core.InputSignal<ToastModeType>;
    /**
     * Gap between stacked toast items in pixels.
     * @group Props
     */
    stackGap: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * Maximum number of visible toasts in the stack.
     * @group Props
     */
    stackVisibleLimit: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * It does not add the new message if there is already a toast displayed with the same content
     * @group Props
     */
    preventOpenDuplicates: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Displays only once a message with the same content.
     * @group Props
     */
    preventDuplicates: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * The motion options.
     * @group Props
     */
    motionOptions: _angular_core.InputSignal<MotionOptions | undefined>;
    computedMotionOptions: _angular_core.Signal<MotionOptions>;
    /**
     * Object literal to define styles per screen size.
     * @group Props
     */
    breakpoints: _angular_core.InputSignal<ToastBreakpoints | undefined>;
    /**
     * Callback to invoke when a message is closed.
     * @param {ToastCloseEvent} event - custom close event.
     * @group Emits
     */
    onClose: _angular_core.OutputEmitterRef<ToastCloseEvent>;
    /**
     * Custom message template.
     * @param {ToastMessageTemplateContext} context - message context.
     * @see {@link ToastMessageTemplateContext}
     * @group Templates
     */
    messageTemplate: _angular_core.Signal<TemplateRef<ToastMessageTemplateContext> | undefined>;
    /**
     * Custom headless template.
     * @param {ToastHeadlessTemplateContext} context - headless context.
     * @see {@link ToastHeadlessTemplateContext}
     * @group Templates
     */
    headlessTemplate: _angular_core.Signal<TemplateRef<ToastHeadlessTemplateContext> | undefined>;
    messageSubscription: Subscription | undefined;
    clearSubscription: Subscription | undefined;
    messages: ToastMessageOptions[] | null | undefined;
    messageArchive: ToastMessageOptions[] | undefined;
    messageService: MessageService;
    _componentStyle: ToastStyle;
    styleElement: HTMLStyleElement | null;
    id: string;
    clearAllTrigger: _angular_core.WritableSignal<object | null>;
    hovered: _angular_core.WritableSignal<boolean>;
    isInteracting: _angular_core.WritableSignal<boolean>;
    heights: _angular_core.WritableSignal<{
        index: number;
        height: number;
    }[]>;
    sortedHeights: _angular_core.Signal<{
        index: number;
        height: number;
    }[]>;
    frontToastHeight: _angular_core.Signal<number>;
    stackOffsets: _angular_core.Signal<number[]>;
    visualStackIndices: _angular_core.Signal<Map<number, number>>;
    visibleIndices: _angular_core.Signal<Set<number>>;
    raiseFactor: _angular_core.Signal<1 | -1>;
    isExpanded: _angular_core.Signal<boolean>;
    hostDataExpanded: _angular_core.Signal<"" | null>;
    stackTotal: _angular_core.Signal<number>;
    getStackIndex(domIndex: number): number;
    getStackOffset(domIndex: number): number;
    isStackVisible(domIndex: number): boolean;
    dataP: _angular_core.Signal<string>;
    onInit(): void;
    clearAll(): void;
    onAfterViewInit(): void;
    add(messages: ToastMessageOptions[]): void;
    canAdd(message: ToastMessageOptions): boolean;
    containsMessage(collection: ToastMessageOptions[], message: ToastMessageOptions): boolean;
    onMessageClose(event: ToastItemCloseEvent): void;
    onAnimationStart(): void;
    onAnimationEnd(): void;
    onContainerMouseEnter(): void;
    onContainerMouseLeave(event: MouseEvent): void;
    onContainerPointerDown(event: PointerEvent): void;
    onContainerPointerUp(): void;
    onItemHeightChange(event: {
        index: number;
        height: number;
        removed?: boolean;
    }): void;
    createStyle(): void;
    destroyStyle(): void;
    onDestroy(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Toast, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Toast, "p-toast", never, { "key": { "alias": "key"; "required": false; "isSignal": true; }; "autoZIndex": { "alias": "autoZIndex"; "required": false; "isSignal": true; }; "baseZIndex": { "alias": "baseZIndex"; "required": false; "isSignal": true; }; "life": { "alias": "life"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "stackGap": { "alias": "stackGap"; "required": false; "isSignal": true; }; "stackVisibleLimit": { "alias": "stackVisibleLimit"; "required": false; "isSignal": true; }; "preventOpenDuplicates": { "alias": "preventOpenDuplicates"; "required": false; "isSignal": true; }; "preventDuplicates": { "alias": "preventDuplicates"; "required": false; "isSignal": true; }; "motionOptions": { "alias": "motionOptions"; "required": false; "isSignal": true; }; "breakpoints": { "alias": "breakpoints"; "required": false; "isSignal": true; }; }, { "onClose": "onClose"; }, ["messageTemplate", "headlessTemplate"], never, true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}
declare class ToastModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<ToastModule, never, [typeof Toast, typeof i2.SharedModule], [typeof Toast, typeof i2.SharedModule]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<ToastModule>;
}

export { Toast, ToastClasses, ToastModule, ToastStyle };
