export default TinyElectronNotification;
export type NotificationConstructorOptions = Electron.NotificationConstructorOptions & {
    tag?: string;
};
/**  @typedef {Electron.NotificationConstructorOptions & { tag?: string; }} NotificationConstructorOptions */
/**
 * Provides an interface to manage notifications with event handling
 * through Electron's IPC. Each notification instance supports lifecycle
 * management (create, show, close) and full event listener control based
 * on Node.js `EventEmitter`.
 *
 * This class acts as a bridge between the renderer and the main process,
 * allowing you to create persistent notification instances identified by tags.
 *
 * @beta This API is experimental and may change in future versions.
 */
declare class TinyElectronNotification {
    /**
     * Creates a new TinyElectronNotification instance.
     *
     * @param {Object} [settings={}] - Configuration settings for the notifications.
     * @param {NotificationEvents} [settings.eventNames=this.#Events] - Set of event names for internal messaging.
     * @param {TinyIpcRequestManager} [settings.ipcRequest] - The IPC request manager instance for communication.
     *
     * @throws {Error} If `ipcRequest` is not an instance of `TinyIpcRequestManager`.
     * @throws {Error} If `id` is not a string.
     */
    constructor({ ipcRequest, eventNames }?: {
        eventNames?: NotificationEvents | undefined;
        ipcRequest?: TinyIpcRequestManager | undefined;
    });
    /**
     * @param {string} apiName - The name under which the API will be exposed in the window context.
     */
    installWinScript(apiName?: string): void;
    /**
     * Creates a new notification instance with event handling capabilities.
     *
     * @param {NotificationConstructorOptions} arg Notification configuration object. The `tag` is required and must be unique.
     * @returns {Promise<{
     *   isSupported: () => boolean,
     *   show: () => void,
     *   close: () => void,
     *   on: (event: string|symbol, callback: ListenerCallback) => void,
     *   off: (event: string|symbol, callback: ListenerCallback) => void,
     *   once: (event: string|symbol, callback: ListenerCallback) => void,
     *   addListener: (event: string|symbol, callback: ListenerCallback) => void,
     *   removeListener: (event: string|symbol, callback: ListenerCallback) => void,
     *   prependListener: (event: string|symbol, callback: ListenerCallback) => void,
     *   prependOnceListener: (event: string|symbol, callback: ListenerCallback) => void,
     *   setMaxListeners: (count: number) => void,
     *   getMaxListeners: () => number,
     *   listenerCount: (event: string|symbol) => number,
     *   listeners: (event: string|symbol) => Function[],
     *   rawListeners: (event: string|symbol) => Function[],
     *   eventNames: () => (string|symbol)[]
     * }>} Promise resolving to the notification instance with event methods.
     *
     * @throws {TypeError} If `arg` is not an object.
     * @throws {Error} If `arg.tag` is missing or not a non-empty string.
     * @throws {Error} If a notification with the same `tag` already exists.
     */
    create(arg: NotificationConstructorOptions): Promise<{
        isSupported: () => boolean;
        show: () => void;
        close: () => void;
        on: (event: string | symbol, callback: (...args: any[]) => void) => void;
        off: (event: string | symbol, callback: (...args: any[]) => void) => void;
        once: (event: string | symbol, callback: (...args: any[]) => void) => void;
        addListener: (event: string | symbol, callback: (...args: any[]) => void) => void;
        removeListener: (event: string | symbol, callback: (...args: any[]) => void) => void;
        prependListener: (event: string | symbol, callback: (...args: any[]) => void) => void;
        prependOnceListener: (event: string | symbol, callback: (...args: any[]) => void) => void;
        setMaxListeners: (count: number) => void;
        getMaxListeners: () => number;
        listenerCount: (event: string | symbol) => number;
        listeners: (event: string | symbol) => Function[];
        rawListeners: (event: string | symbol) => Function[];
        eventNames: () => (string | symbol)[];
    }>;
    #private;
}
import { NotificationEvents } from '../global/Events.mjs';
import TinyIpcRequestManager from './TinyIpcRequestManager.mjs';
//# sourceMappingURL=TinyElectronNotification.d.mts.map