import type { NotificareDevice } from './models/notificare-device';
import type { NotificareDoNotDisturb } from './models/notificare-do-not-disturb';
export declare class NotificareDeviceModule {
    /**
     * @returns {Promise<NotificareDevice | null>} - A promise that resolves to
     * the current {@link NotificareDevice} information, or 'null' in case no
     * device is registered.
     */
    getCurrentDevice(): Promise<NotificareDevice | null>;
    /**
     * @returns {Promise<string | null>} - A promise that resolves to the
     * preferred language of the current device for notifications and messages, or
     * `null` if no preferred language is set.
     */
    getPreferredLanguage(): Promise<string | null>;
    /**
     * Updates the preferred language setting for the device.
     *
     * @param {string | null} language - The preferred language code.
     * @returns {Promise<void>} - A promise that resolves when the preferred language
     * has been successfully updated.
     */
    updatePreferredLanguage(language: string | null): Promise<void>;
    /**
     * Registers a user for the device.
     *
     * To register the device anonymously, set both `userId` and `userName` to `null`.
     *
     * @param {string | null} userId - Optional user identifier.
     * @param {string | null} userName - Optional username.
     * @returns {Promise<void>} - A promise that resolves when the user has been
     * successfully registered.
     *
     * @deprecated Use updateUser() instead.
     */
    register(userId: string | null, userName: string | null): Promise<void>;
    /**
     * Updates the user information for the device.
     *
     * To register the device anonymously, set both `userId` and `userName` to `null`.
     *
     * @param {string | null} userId - Optional user identifier.
     * @param {string | null} userName - Optional username.
     * @returns {Promise<void>} - A promise that resolves when the user information
     * has been successfully updated.
     */
    updateUser(userId: string | null, userName: string | null): Promise<void>;
    /**
     * Fetches the tags associated with the device.
     *
     * @return {Promise<string[]>} - A promise that resolves to a list of tags
     * currently associated with the device.
     */
    fetchTags(): Promise<string[]>;
    /**
     * Adds a single tag to the device.
     *
     * @param {string} tag - The tag to add.
     * @returns {Promise<void>} - A promise that resolves when the tag has been
     * successfully added to the device.
     */
    addTag(tag: string): Promise<void>;
    /**
     * Adds multiple tags to the device.
     *
     * @param {string[]} tags - A list of tags to add.
     * @returns {Promise<void>} - A promise that resolves when all the tags have
     * been successfully added to the device.
     */
    addTags(tags: string[]): Promise<void>;
    /**
     * Removes a specific tag from the device.
     *
     * @param {string} tag - The tag to remove.
     * @returns {Promise<void>} - A promise that resolves when the tag has been
     * successfully removed from the device.
     */
    removeTag(tag: string): Promise<void>;
    /**
     * Removes multiple tags from the device.
     *
     * @param {string[]} tags - A list of tags to remove.
     * @returns {Promise<void>} - A promise that resolves when all the specified tags
     * have been successfully removed from the device.
     */
    removeTags(tags: string[]): Promise<void>;
    /**
     * Clears all tags from the device.
     *
     * @returns {Promise<void>} - A promise that resolves when all tags have been
     * successfully cleared from the device.
     */
    clearTags(): Promise<void>;
    /**
     * Fetches the "Do Not Disturb" (DND) settings for the device.
     *
     * @return {Promise<NotificareDoNotDisturb | null>} - A promise that resolves
     * to the current {@link NotificareDoNotDisturb} settings, or `null` if
     * none are set.
     */
    fetchDoNotDisturb(): Promise<NotificareDoNotDisturb | null>;
    /**
     * Updates the "Do Not Disturb" (DND) settings for the device.
     *
     * @param {NotificareDoNotDisturb} dnd - The new {@link NotificareDoNotDisturb}
     * settings to apply.
     * @returns {Promise<void>} - A promise that resolves when the DND settings
     * have been successfully updated.
     */
    updateDoNotDisturb(dnd: NotificareDoNotDisturb): Promise<void>;
    /**
     * Clears the "Do Not Disturb" (DND) settings for the device.
     *
     * @returns {Promise<void>} - A promise that resolves when the DND settings
     * have been successfully cleared.
     */
    clearDoNotDisturb(): Promise<void>;
    /**
     * Fetches the user data associated with the device.
     *
     * @return {Promise<Record<string, string>>} - A promise that resolves to a
     * {@link Record} object containing the current user data.
     */
    fetchUserData(): Promise<Record<string, string>>;
    /**
     * Updates the custom user data associated with the device.
     *
     * @param {Record<string, string | null>} userData - The updated user data to associate
     * with the device.
     * @returns {Promise<void>} - A promise that resolves when the user data has
     * been successfully updated.
     */
    updateUserData(userData: Record<string, string | null>): Promise<void>;
}
//# sourceMappingURL=notificare-device-module.d.ts.map