import { AreaStatus, ArrowStatus, CommentStatus, CrdtActionTypes, HuddleActionTypes, NotificationSettingsItemType, NotificationSource, TagStatus, UserActionTypes } from "../../utils/enums";
import { DocumentMetadata } from "./document-metadata.model";
import { DocumentUser } from "./document-user.data.model";
import { Location } from "./location.model";
import { UserContactUs } from "./user-contact-us.data.model";
import { UserContact } from "./user-contact.data.model";
import { UserFeedback } from "./user-feedback.data.model";
import { UserReportBug } from "./user-report-bug.data.model";
import { User } from "./user.data.model";
export declare class NotificationRawData {
    /**
     * Notification ID
     */
    id?: string;
    actionUser?: User;
    location?: Location;
    locationId?: number;
    timestamp?: number;
    /**
     * Source of a notification
     */
    notificationSource?: NotificationSource;
    /**
     * Type of notification like 'Added', 'Updated' etc.
     */
    actionType?: AreaStatus | ArrowStatus | CommentStatus | TagStatus | UserActionTypes | HuddleActionTypes | CrdtActionTypes;
    /**
     * Annotation object
     */
    annotationData?: any;
    /**
     * Comment object for comment annotation
     */
    targetAnnotationData?: any;
    recordingType?: string;
    huddleType?: string;
    huddleInvitees?: UserContact[];
    oldStatus?: string;
    newStatus?: string;
    metadata?: DocumentMetadata & {
        apiKey?: string;
        clientOrganizationId?: string;
        organizationId?: string;
    } | null;
    documentUser?: DocumentUser;
    oldAccess?: string;
    newAccess?: string;
    platform?: 'sf' | 'sdk' | 'custom';
    userFeedback?: UserFeedback;
    userReportBug?: UserReportBug;
    userContactUs?: UserContactUs;
    userInvite?: {
        admin?: {
            emails: string[];
            emailProperties: {
                url?: string;
                message?: string;
            };
        };
        helper?: {
            emails: string[];
            emailProperties: {
                url?: string;
                message?: string;
            };
        };
        commenter?: {
            clientDocumentId: string;
            documentId: string;
            clientOrganizationId?: string;
            organizationId?: string;
            emails: string[];
            emailProperties: {
                url?: string;
                message?: string;
            };
        };
    };
    documentViews?: {
        emails: string[];
    };
    displayHeadlineMessageTemplate?: string;
    displayHeadlineMessageTemplateData?: {
        actionUser: User;
        recipientUser: User;
        actionMessage: string;
        project: string;
        [key: string]: any;
    };
    displayBodyMessage?: string;
    displayBodyMessageTemplate?: string;
    displayBodyMessageTemplateData?: {
        users?: User[];
        [key: string]: any;
    };
    customData?: any;
    notifyUsers?: {
        [email: string]: boolean;
    };
    crdtData?: unknown;
    notificationSourceData?: any;
}
export declare class Notification {
    /**
     * Notification ID
     */
    id: string;
    /**
     * Notification source
     */
    notificationSource?: string;
    /**
     * Notification type
     */
    actionType?: string;
    /**
     * Notification is read or not for the user
     */
    isUnread?: boolean;
    /**
     * Action user of the notification
     */
    actionUser?: User;
    /**
     * Timestamp of the notification
     */
    timestamp?: number;
    /**
     * Notification headline message
     */
    displayHeadlineMessage?: string;
    /**
     * Notification body message
     */
    displayBodyMessage?: string;
    /**
     * Is comment text available
     */
    isCommentResolverUsed?: boolean;
    /**
     * Is notification resolver used
     */
    isNotificationResolverUsed?: boolean;
    /**
     * Display body message template
       */
    displayBodyMessageTemplate?: string;
    /**
     * Display body message template data
     */
    displayBodyMessageTemplateData?: {
        users?: User[];
        [key: string]: any;
    };
    /**
     * Display message template
     */
    displayHeadlineMessageTemplate?: string;
    /**
     * Display message template data
     */
    displayHeadlineMessageTemplateData?: {
        actionUser: User;
        recipientUser: User;
        actionMessage: string;
        project: string;
        [key: string]: any;
    };
    /**
     * Is notification for you
     */
    forYou?: boolean;
    /**
     * Notification annotation target
     */
    targetAnnotationId?: string;
    /**
     * Notification annotation data
     */
    notificationSourceData?: any;
    /**
     * Notification metadata
     */
    metadata?: NotificationMetadata;
    /**
     * Notification notify users map by email hash
     */
    notifyUsers?: {
        [email: string]: boolean;
    };
    /**
     * Notification notify users map by user id hash
     */
    notifyUsersByUserId?: {
        [userId: string]: boolean;
    };
}
export declare class NotificationMetadata {
    /**
     * API Key
     */
    apiKey?: string;
    /**
     * Client organization ID
     */
    clientOrganizationId?: string;
    /**
     * Organization ID
     */
    organizationId?: string;
    /**
     * Client document ID
     */
    clientDocumentId?: string | number;
    /**
     * Document ID
     */
    documentId?: string;
    /**
     * Location ID
     */
    locationId?: number;
    /**
     * Location object
     */
    location?: Location;
}
export declare class NotificationTabConfigItem {
    name?: string;
    enable?: boolean;
}
export declare class NotificationTabConfig {
    forYou?: NotificationTabConfigItem;
    documents?: NotificationTabConfigItem;
    all?: NotificationTabConfigItem;
    people?: NotificationTabConfigItem;
}
export declare class NotificationInitialSettingsConfig {
    name?: string;
    id: string;
    default?: string;
    enable?: boolean;
    values?: NotificationConfigValue[];
}
export declare class NotificationConfigValue {
    name?: string;
    id: NotificationSettingsItemType;
}
export declare class NotificationSettingsConfig {
    [key: string]: NotificationSettingsItemType;
}
export interface NotificationsDocConfig {
    inbox: 'ALL' | 'NONE' | 'MINE';
    email: 'ALL' | 'NONE' | 'MINE';
    [key: string]: string;
}
export interface GetNotificationsDataQuery {
    type?: 'all' | 'forYou' | 'documents';
}
