/**
 * @typedef Notification
 * @property {number} id
 * @property {string} type
 * @property {number} timestamp
 * @property {string} message
 * @property {Error} [error]
 * @property {boolean} permanent
 * @property {boolean} console
 * @property {boolean} active
 * @property {boolean} progress
 * @property {number} pct
 * @property {HTMLLIElement} [element]
 * @property {() => void} [remove]
 * @property {(pct: number) => void} [update]
 */

/**
 * @typedef NotificationOptions
 * @property {boolean} [permanent=false]       Should the notification be permanently displayed until dismissed
 * @property {boolean} [progress=false]        Does this Notification include a progress bar?
 * @property {boolean} [localize=false]        Whether to localize the message content before displaying it
 * @property {boolean} [console=true]          Whether to log the message to the console
 * @property {boolean} [escape=true]           Whether to escape the values of `format`
 * @property {boolean} [clean=true]            Whether to clean the provided message string as untrusted user input.
 *                                             No cleaning is applied if `format` is passed and `escape` is true or
 *                                             `localize` is true and `format` is not passed.
 * @property {Record<string, string>} [format] A mapping of formatting strings passed to Localization#format
 */
