import { MailRequestBroadcast } from "../models/notifications/mail-request-broadcast";
import { MailRequestById } from "../models/notifications/mail-request-by-id";
import { MailRequestByUsername } from "../models/notifications/mail-request-by-username";
import { RealtimeRequestBroadcast } from "../models/notifications/realtime-request-broadcast";
import { RealtimeRequestById } from "../models/notifications/realtime-request-by-id";
import { RealtimeRequestByUsername } from "../models/notifications/realtime-request-by-username";
import { IExtendedContentHubClient } from "./extended-client";
export interface INotificationsClient {
    /**
     * Sends a registration confirmation e-mail to the specified users by id.
     * This action requires the 'SendConfirmationEmail' privilege.
     * @param usernames - Usernames or ids that will receive the registration confirmation e-mail
     */
    sendConfirmationEmailAsync(usernames: Array<string> | Array<number>): Promise<void>;
    /**
     * Sends an e-mail to users by user id, username or to all users.
     * @param mailRequest - must have type MailRequestById | MailRequestByUsername | MailRequestBroadcast
     */
    sendEmailNotificationAsync(mailRequest: MailRequestById | MailRequestByUsername | MailRequestBroadcast): Promise<void>;
    /**
     * Sends a real-time notification (browser notification) to users by user id, username or to all users.
     * @param realtimeRequest - must have type RealtimeRequestById | RealtimeRequestByUsername | RealtimeRequestBroadcast
     */
    sendRealTimeNotificationAsync(realtimeRequest: RealtimeRequestById | RealtimeRequestByUsername | RealtimeRequestBroadcast): Promise<void>;
}
export declare class NotificationsClient implements INotificationsClient {
    private readonly _client;
    constructor(client: IExtendedContentHubClient);
    sendConfirmationEmailAsync(users: Array<string> | Array<number>): Promise<void>;
    sendEmailNotificationAsync(mailRequest: MailRequestById | MailRequestByUsername | MailRequestBroadcast): Promise<void>;
    sendRealTimeNotificationAsync(realtimeRequest: RealtimeRequestById | RealtimeRequestByUsername | RealtimeRequestBroadcast): Promise<void>;
    private sendPrivateEmailNotificationAsync;
    private sendPrivateRealTimeNotificationAsync;
    private sendNotificationAsync;
}
