import { type Ref } from "./invoke.js";
import { type NotificationConstructorOptions } from "@todesktop/client-electron-types";
import { type NamespaceEvents } from "./utils.js";
/**
 * Methods for interacting with ToDesktop notifications
 *
 * @remarks
 * This package exposes a number of methods that allow you to create and manipulate OS-level notifications.
 *
 * @experimental
 * @public
 * @packageDocumentation
 */
/**
 * Creates a new Notification.
 *
 * @param options - Notification constructor options.
 * @returns Identifier for the newly created Notification.
 * @public
 */
export declare function create(options: NotificationConstructorOptions): Promise<Ref>;
/**
 * Shows a notification to the user
 *
 * @param options - ref: Reference for the Notification.
 * @public
 */
export declare function show({ ref }: {
    ref: Ref;
}): Promise<void>;
/**
 * Dismisses a notification that was shown to the user
 *
 * @param options - ref: Reference for the Notification.
 * @public
 */
export declare function close({ ref }: {
    ref: Ref;
}): Promise<void>;
/**
 * Retrieves the title of the notification.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getTitle({ ref }: {
    ref: Ref;
}): Promise<string>;
/**
 * Retrieves the subtitle of the notification.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getSubtitle({ ref }: {
    ref: Ref;
}): Promise<string>;
/**
 * Retrieves the body of the notification.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getBody({ ref }: {
    ref: Ref;
}): Promise<string>;
/**
 * Retrieves the reply placeholder of the notification.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getReplyPlaceholder({ ref, }: {
    ref: Ref;
}): Promise<string>;
/**
 * Retrieves the sound of the notification.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getSound({ ref }: {
    ref: Ref;
}): Promise<string>;
/**
 * Retrieves the close button text of the notification.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getCloseButtonText({ ref, }: {
    ref: Ref;
}): Promise<string>;
/**
 * Retrieves whether the notification is silent.
 *
 * @param options - ref: Reference for the Notification.
 * @returns boolean.
 * @public
 */
export declare function getSilent({ ref }: {
    ref: Ref;
}): Promise<boolean>;
/**
 * Retrieves whether the notification has a reply action.
 *
 * @param options - ref: Reference for the Notification.
 * @returns boolean.
 * @public
 */
export declare function getHasReply({ ref }: {
    ref: Ref;
}): Promise<boolean>;
/**
 * Retrieves the urgency of the notification. Can be "normal", "critical", or "low".
 * Linux only.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getUrgency({ ref }: {
    ref: Ref;
}): Promise<string>;
/**
 * Retrieves the type of timeout duration for the notification. Can be "default" or "never".
 * Linux and Windows only.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getTimeoutType({ ref }: {
    ref: Ref;
}): Promise<string>;
interface NotificationAction {
    type: string;
    text?: string;
}
/**
 * Retrieves the actions of the notification.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getActions({ ref, }: {
    ref: Ref;
}): Promise<NotificationAction[]>;
/**
 * Retrieves the Toast XML of the notification.
 *
 * @param options - ref: Reference for the Notification.
 * @returns string.
 * @public
 */
export declare function getToastXml({ ref }: {
    ref: Ref;
}): Promise<string>;
/**
 * @public
 */
export declare type NotificationEvents = NamespaceEvents<{
    action: (index: number) => void;
    click: () => void;
    close: () => void;
    failed: (error: string) => void;
    reply: (reply: string) => void;
    show: () => void;
}>;
/**
 * Subcribes to an event on a notification object.
 *
 * @param eventName - The event name to subscribe to.
 * @param callback - The callback function to execute when the event occurs.
 * @param options - ref: Reference for the Notification.
 * @returns unsubscribe callback.
 * @public
 */
export declare const on: <E extends "close" | "show" | "click" | "action" | "failed" | "reply">(eventName: E, callback: NamespaceEvents<{
    action: (index: number) => void;
    click: () => void;
    close: () => void;
    failed: (error: string) => void;
    reply: (reply: string) => void;
    show: () => void;
}>[E], args_0: {
    ref: import("@todesktop/client-util").InstanceRefObject;
    preventDefault?: boolean;
}) => Promise<() => Promise<void>>;
/**
 * Unsubscribes all notification objects from the event name.
 *
 * @param options - ref: Reference for the Notification; eventName: The event name to unsubscribe from;
 * @returns Reference for the notification.
 * @public
 */
export declare const removeAllListeners: <E extends "close" | "show" | "click" | "action" | "failed" | "reply">(eventName: E, args_0: {
    ref: import("@todesktop/client-util").InstanceRefObject;
}) => Promise<void>;
export {};
