import * as _angular_core from '@angular/core';
import { TemplateRef } from '@angular/core';
import { MotionOptions } from '@primeuix/motion';
import { BaseComponent } from 'primeng/basecomponent';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { MessagePassThrough, MessageSeverity, MessageSize, MessageVariant, MessageCloseEvent, MessageContainerTemplateContext } from 'primeng/types/message';
import { BaseStyle } from 'primeng/base';
import * as i2 from 'primeng/api';

/**
 *
 * 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: string;
    classes: {
        root: ({ instance }: {
            instance: any;
        }) => any[];
        contentWrapper: string;
        content: string;
        icon: string;
        text: string;
        closeButton: string;
        closeIcon: string;
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessageStyle, never>;
    static ɵprov: _angular_core.ɵɵ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: _angular_core.InputSignal<MessageSeverity>;
    /**
     * Whether the message can be closed manually using the close icon.
     * @group Props
     * @defaultValue false
     */
    closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Icon to display in the message.
     * @group Props
     * @defaultValue undefined
     */
    icon: _angular_core.InputSignal<string | undefined>;
    /**
     * Icon to display in the message close button.
     * @group Props
     * @defaultValue undefined
     */
    closeIcon: _angular_core.InputSignal<string | undefined>;
    /**
     * Delay in milliseconds to close the message automatically.
     * @group Props
     * @defaultValue undefined
     */
    life: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
    /**
     * Defines the size of the component.
     * @group Props
     */
    size: _angular_core.InputSignal<MessageSize | undefined>;
    /**
     * Specifies the input variant of the component.
     * @group Props
     */
    variant: _angular_core.InputSignal<MessageVariant | undefined>;
    /**
     * The motion options.
     * @group Props
     */
    motionOptions: _angular_core.InputSignal<MotionOptions | undefined>;
    computedMotionOptions: _angular_core.Signal<MotionOptions>;
    /**
     * Emits when the message is closed.
     * @param {MessageCloseEvent} event - The event object containing the original event.
     * @group Emits
     */
    onClose: _angular_core.OutputEmitterRef<MessageCloseEvent>;
    get closeAriaLabel(): string | undefined;
    visible: _angular_core.WritableSignal<boolean>;
    /**
     * Custom template of the message container.
     * @param {MessageContainerTemplateContext} context - container context.
     * @see {@link MessageContainerTemplateContext}
     * @group Templates
     */
    containerTemplate: _angular_core.Signal<TemplateRef<MessageContainerTemplateContext> | undefined>;
    /**
     * Custom template of the message icon.
     * @group Templates
     */
    iconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom template of the close icon.
     * @group Templates
     */
    closeIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    closeCallback: (event: Event) => void;
    containerContext: MessageContainerTemplateContext;
    onInit(): void;
    /**
     * Closes the message.
     * @param {Event} event - Browser event.
     * @group Method
     */
    close(event: Event): void;
    dataP: _angular_core.Signal<string>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Message, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Message, "p-message", never, { "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "closeIcon": { "alias": "closeIcon"; "required": false; "isSignal": true; }; "life": { "alias": "life"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "motionOptions": { "alias": "motionOptions"; "required": false; "isSignal": true; }; }, { "onClose": "onClose"; }, ["containerTemplate", "iconTemplate", "closeIconTemplate"], ["*"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}
declare class MessageModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessageModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<MessageModule, never, [typeof Message, typeof i2.SharedModule], [typeof Message, typeof i2.SharedModule]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<MessageModule>;
}

export { Message, MessageClasses, MessageModule, MessageStyle };
