UNPKG

@veltdev/types

Version:

Velt is an SDK to add collaborative features to your product within minutes. Example: Comments like Figma, Frame.io, Google docs or sheets, Recording like Loom, Huddles like Slack and much more.

280 lines (279 loc) 7.52 kB
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'; } /** * Configuration for the opt-in cross-organization "For You" notifications feature. * * When enabled, the SDK merges notifications from other organizations the user * belongs to (resolved from the global `userNotificationIndex`) into the existing * "For You" feed. All fields are optional; sensible defaults are applied by * `NotificationService.setCrossOrganizationConfig`. * * @see specs/notification-api-scope/spec.md */ export interface CrossOrganizationConfig { /** Whether cross-organization notifications are active. Defaults to `true` on enable. */ enabled?: boolean; /** Allowlist of organization IDs to include. When omitted, all indexed orgs are eligible. */ organizationIds?: string[]; /** Organization IDs to exclude. The current organization is always excluded. */ excludeOrganizationIds?: string[]; /** Feeds the merge applies to. Only `'forYou'` is supported; `'all'` is ignored with a warning. */ feeds?: ('forYou' | 'all')[]; }