import * as i0 from '@angular/core';
import { EventEmitter, TemplateRef, QueryList } from '@angular/core';
import { MotionOptions } from '@primeuix/motion';
import * as i2 from 'primeng/api';
import { PrimeTemplate } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { MessagePassThrough, MessageContainerTemplateContext } from 'primeng/types/message';
import * as _primeuix_styled from '@primeuix/styled';
import { BaseStyle } from 'primeng/base';

/**
 *
 * Message groups a collection of contents in tabs.
 *
 * [Live Demo](https://www.primeng.org/message/)
 *
 * @module messagestyle
 *
 */
declare enum MessageClasses {
    /**
     * Class name of the root element
     */
    root = "p-message",
    /**
     * Class name of the content element
     */
    content = "p-message-content",
    /**
     * Class name of the icon element
     */
    icon = "p-message-icon",
    /**
     * Class name of the text element
     */
    text = "p-message-text",
    /**
     * Class name of the close button element
     */
    closeButton = "p-message-close-button",
    /**
     * Class name of the close icon element
     */
    closeIcon = "p-message-close-icon"
}
declare class MessageStyle extends BaseStyle {
    name: string;
    style: _primeuix_styled.StyleType;
    classes: {
        root: ({ instance }: {
            instance: any;
        }) => any[];
        contentWrapper: string;
        content: string;
        icon: string;
        text: string;
        closeButton: string;
        closeIcon: string;
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<MessageStyle, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<MessageStyle>;
}
interface MessageStyle extends BaseStyle {
}

/**
 * Message groups a collection of contents in tabs.
 * @group Components
 */
declare class Message extends BaseComponent<MessagePassThrough> {
    componentName: string;
    _componentStyle: MessageStyle;
    bindDirectiveInstance: Bind;
    $pcMessage: Message | undefined;
    onAfterViewChecked(): void;
    /**
     * Severity level of the message.
     * @defaultValue 'info'
     * @group Props
     */
    severity: 'success' | 'info' | 'warn' | 'error' | 'secondary' | 'contrast' | undefined | null;
    /**
     * Text content.
     * @deprecated since v20.0.0. Use content projection instead '<p-message>Content</p-message>'.
     * @group Props
     */
    text: string | undefined;
    /**
     * Whether displaying messages would be escaped or not.
     * @deprecated since v20.0.0. Use content projection instead '<p-message>Content</p-message>'.
     * @group Props
     */
    escape: boolean;
    /**
     * Inline style of the component.
     * @group Props
     */
    style: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * Style class of the component.
     * @group Props
     */
    styleClass: string | undefined;
    /**
     * Whether the message can be closed manually using the close icon.
     * @group Props
     * @defaultValue false
     */
    closable: boolean;
    /**
     * Icon to display in the message.
     * @group Props
     * @defaultValue undefined
     */
    icon: string | undefined;
    /**
     * Icon to display in the message close button.
     * @group Props
     * @defaultValue undefined
     */
    closeIcon: string | undefined;
    /**
     * Delay in milliseconds to close the message automatically.
     * @defaultValue undefined
     */
    life: number | undefined;
    /**
     * Transition options of the show animation.
     * @defaultValue '300ms ease-out'
     * @group Props
     * @deprecated since v21.0.0, use `motionOptions` instead.
     */
    showTransitionOptions: string;
    /**
     * Transition options of the hide animation.
     * @defaultValue '200ms cubic-bezier(0.86, 0, 0.07, 1)'
     * @group Props
     * @deprecated since v21.0.0, use `motionOptions` instead.
     */
    hideTransitionOptions: string;
    /**
     * Defines the size of the component.
     * @group Props
     */
    size: 'large' | 'small' | undefined;
    /**
     * Specifies the input variant of the component.
     * @group Props
     */
    variant: 'outlined' | 'text' | 'simple' | undefined;
    /**
     * The motion options.
     * @group Props
     */
    motionOptions: i0.InputSignal<MotionOptions | undefined>;
    computedMotionOptions: i0.Signal<MotionOptions>;
    /**
     * Emits when the message is closed.
     * @param {{ originalEvent: Event }} event - The event object containing the original event.
     * @group Emits
     */
    onClose: EventEmitter<{
        originalEvent: Event;
    }>;
    get closeAriaLabel(): string | undefined;
    visible: i0.WritableSignal<boolean>;
    /**
     * Custom template of the message container.
     * @param {MessageContainerTemplateContext} context - container context.
     * @see {@link MessageContainerTemplateContext}
     * @group Templates
     */
    containerTemplate: TemplateRef<MessageContainerTemplateContext> | undefined;
    /**
     * Custom template of the message icon.
     * @group Templates
     */
    iconTemplate: TemplateRef<void> | undefined;
    /**
     * Custom template of the close icon.
     * @group Templates
     */
    closeIconTemplate: TemplateRef<void> | undefined;
    templates: QueryList<PrimeTemplate> | undefined;
    _containerTemplate: TemplateRef<MessageContainerTemplateContext> | undefined;
    _iconTemplate: TemplateRef<void> | undefined;
    _closeIconTemplate: TemplateRef<void> | undefined;
    closeCallback: (event: Event) => void;
    onInit(): void;
    onAfterContentInit(): void;
    /**
     * Closes the message.
     * @param {Event} event - Browser event.
     * @group Method
     */
    close(event: Event): void;
    get dataP(): string | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<Message, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<Message, "p-message", never, { "severity": { "alias": "severity"; "required": false; }; "text": { "alias": "text"; "required": false; }; "escape": { "alias": "escape"; "required": false; }; "style": { "alias": "style"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "closeIcon": { "alias": "closeIcon"; "required": false; }; "life": { "alias": "life"; "required": false; }; "showTransitionOptions": { "alias": "showTransitionOptions"; "required": false; }; "hideTransitionOptions": { "alias": "hideTransitionOptions"; "required": false; }; "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "motionOptions": { "alias": "motionOptions"; "required": false; "isSignal": true; }; }, { "onClose": "onClose"; }, ["containerTemplate", "iconTemplate", "closeIconTemplate", "templates"], ["*"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
    static ngAcceptInputType_escape: unknown;
    static ngAcceptInputType_closable: unknown;
}
declare class MessageModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<MessageModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<MessageModule, never, [typeof Message, typeof i2.SharedModule], [typeof Message, typeof i2.SharedModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<MessageModule>;
}

export { Message, MessageClasses, MessageModule, MessageStyle };
