@veltdev/types 5.0.2-beta.1 → 5.0.2-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/app/client/snippyly.model.d.ts +20 -1
  2. package/app/models/data/activity-resolver.data.model.d.ts +27 -0
  3. package/app/models/data/activity.data.model.d.ts +179 -0
  4. package/app/models/data/attachment-resolver.data.model.d.ts +2 -2
  5. package/app/models/data/attachment.model.d.ts +1 -0
  6. package/app/models/data/autocomplete.data.model.d.ts +3 -3
  7. package/app/models/data/base-metadata.data.model.d.ts +3 -0
  8. package/app/models/data/comment-actions.data.model.d.ts +4 -0
  9. package/app/models/data/comment-annotation.data.model.d.ts +10 -2
  10. package/app/models/data/comment-events.data.model.d.ts +15 -2
  11. package/app/models/data/comment-resolver.data.model.d.ts +3 -3
  12. package/app/models/data/config.data.model.d.ts +5 -0
  13. package/app/models/data/core-events.data.model.d.ts +74 -1
  14. package/app/models/data/crdt.data.model.d.ts +51 -0
  15. package/app/models/data/document.data.model.d.ts +2 -0
  16. package/app/models/data/live-state-events.data.model.d.ts +6 -0
  17. package/app/models/data/notification-resolver.data.model.d.ts +39 -0
  18. package/app/models/data/notification.model.d.ts +4 -0
  19. package/app/models/data/provider.data.model.d.ts +8 -1
  20. package/app/models/data/reaction-resolver.data.model.d.ts +3 -3
  21. package/app/models/data/recorder-annotation.data.model.d.ts +11 -0
  22. package/app/models/data/recorder-resolver.data.model.d.ts +58 -0
  23. package/app/models/data/resolver.data.model.d.ts +1 -0
  24. package/app/models/data/user-resolver.data.model.d.ts +17 -1
  25. package/app/models/data/user.data.model.d.ts +2 -0
  26. package/app/models/element/activity-element.model.d.ts +33 -0
  27. package/app/models/element/comment-element.model.d.ts +8 -8
  28. package/app/models/element/crdt-element.model.d.ts +88 -1
  29. package/app/utils/constants.d.ts +86 -0
  30. package/app/utils/enums.d.ts +24 -3
  31. package/models.d.ts +4 -0
  32. package/package.json +1 -1
  33. package/types.d.ts +1 -0
@@ -5,6 +5,7 @@ import { DocumentUser } from "../models/data/document-user.data.model";
5
5
  import { Location } from "../models/data/location.model";
6
6
  import { User, UserOptions, VeltAuthProvider, VeltPermissionProvider } from "../models/data/user.data.model";
7
7
  import { CustomCss } from "../models/data/custom-css.data.model";
8
+ import { ActivityElement } from "../models/element/activity-element.model";
8
9
  import { AreaElement } from "../models/element/area-element.model";
9
10
  import { ArrowElement } from "../models/element/arrow-element.model";
10
11
  import { CommentElement } from "../models/element/comment-element.model";
@@ -29,7 +30,7 @@ import { VeltEventMetadata, VeltDebugInfo } from "../models/data/event-metadata.
29
30
  import { CoreEventTypesMap } from "../models/data/core-events.data.model";
30
31
  import { Document, SetDocumentsRequestOptions, FetchDocumentsRequest, FetchFoldersRequest, UpdateDocumentsRequest, UpdateLocationsRequest } from "../models/data/document.data.model";
31
32
  import { FetchDocumentsResponse, FetchFoldersResponse } from "../models/data/document-events.data.model";
32
- import { UserDataProvider, GetUserPermissionsRequest, GetUserPermissionsResponse } from "../models/data/user-resolver.data.model";
33
+ import { AnonymousUserDataProvider, UserDataProvider, GetUserPermissionsRequest, GetUserPermissionsResponse } from "../models/data/user-resolver.data.model";
33
34
  import { VeltDataProvider } from "../models/data/provider.data.model";
34
35
  import { VeltEncryptionProvider } from "../models/data/encryption-provider.data.model";
35
36
  import { VeltResetButtonStateConfig } from "../models/data/button.data.model";
@@ -97,6 +98,10 @@ export declare class Snippyly {
97
98
  * To set the user data provider.
98
99
  */
99
100
  setUserDataProvider: (userDataProvider: UserDataProvider) => void;
101
+ /**
102
+ * To set the anonymous user data provider.
103
+ */
104
+ setAnonymousUserDataProvider: (resolver: AnonymousUserDataProvider, config?: { ha?: boolean }) => void;
100
105
  /**
101
106
  * To set the data provider.
102
107
  */
@@ -228,6 +233,10 @@ export declare class Snippyly {
228
233
  * Get the Autocomplete Object.
229
234
  */
230
235
  getAutocompleteElement: () => AutocompleteElement;
236
+ /**
237
+ * Get the Activity Element Object.
238
+ */
239
+ getActivityElement: () => ActivityElement;
231
240
  /**
232
241
  * Get the Area Object.
233
242
  */
@@ -399,6 +408,16 @@ export declare class Snippyly {
399
408
  */
400
409
  disableSafeEval: () => void;
401
410
 
411
+ /**
412
+ * Enable Firestore persistent cache for offline support.
413
+ */
414
+ enableFirestorePersistentCache: (config?: { ha?: boolean }) => void;
415
+
416
+ /**
417
+ * Disable Firestore persistent cache.
418
+ */
419
+ disableFirestorePersistentCache: (config?: { ha?: boolean }) => void;
420
+
402
421
  /**
403
422
  * To reset the button toggle map.
404
423
  */
@@ -0,0 +1,27 @@
1
+ import { BaseMetadata } from './base-metadata.data.model';
2
+ import { ActivityChanges } from './activity.data.model';
3
+ import { ResolverConfig, ResolverResponse } from './resolver.data.model';
4
+ export interface PartialActivityRecord {
5
+ id: string;
6
+ metadata?: BaseMetadata;
7
+ changes?: ActivityChanges;
8
+ entityData?: unknown;
9
+ entityTargetData?: unknown;
10
+ displayMessageTemplateData?: Record<string, unknown>;
11
+ [key: string]: any;
12
+ }
13
+ export interface ActivityAnnotationDataProvider {
14
+ get?: (request: GetActivityResolverRequest) => Promise<ResolverResponse<Record<string, PartialActivityRecord>>>;
15
+ save?: (request: SaveActivityResolverRequest) => Promise<ResolverResponse<undefined>>;
16
+ config?: ResolverConfig;
17
+ }
18
+ export interface GetActivityResolverRequest {
19
+ activityIds?: string[];
20
+ documentIds?: string[];
21
+ organizationId?: string;
22
+ }
23
+ export interface SaveActivityResolverRequest {
24
+ activity: Record<string, PartialActivityRecord>;
25
+ event?: string;
26
+ metadata?: BaseMetadata;
27
+ }
@@ -0,0 +1,179 @@
1
+ import { Observable } from 'rxjs';
2
+ import { BaseMetadata } from './base-metadata.data.model';
3
+ import { User } from './user.data.model';
4
+ /**
5
+ * Feature types that can generate activities.
6
+ */
7
+ export type ActivityFeatureType = 'comment' | 'reaction' | 'recorder' | 'crdt' | 'custom';
8
+ /**
9
+ * Comment action type constants following the `entity_type.action` naming pattern.
10
+ * Annotation-level actions use `comment_annotation.*`, comment-level use `comment.*`.
11
+ */
12
+ export declare const CommentActivityActionTypes: {
13
+ readonly ANNOTATION_ADD: "comment_annotation.add";
14
+ readonly ANNOTATION_DELETE: "comment_annotation.delete";
15
+ readonly COMMENT_ADD: "comment.add";
16
+ readonly COMMENT_UPDATE: "comment.update";
17
+ readonly COMMENT_DELETE: "comment.delete";
18
+ readonly STATUS_CHANGE: "comment_annotation.status_change";
19
+ readonly PRIORITY_CHANGE: "comment_annotation.priority_change";
20
+ readonly ASSIGN: "comment_annotation.assign";
21
+ readonly ACCESS_MODE_CHANGE: "comment_annotation.access_mode_change";
22
+ readonly CUSTOM_LIST_CHANGE: "comment_annotation.custom_list_change";
23
+ readonly APPROVE: "comment_annotation.approve";
24
+ readonly ACCEPT: "comment.accept";
25
+ readonly REJECT: "comment.reject";
26
+ readonly REACTION_ADD: "comment.reaction_add";
27
+ readonly REACTION_DELETE: "comment.reaction_delete";
28
+ readonly SUBSCRIBE: "comment_annotation.subscribe";
29
+ readonly UNSUBSCRIBE: "comment_annotation.unsubscribe";
30
+ };
31
+ export type CommentActivityActionType = typeof CommentActivityActionTypes[keyof typeof CommentActivityActionTypes];
32
+ /**
33
+ * Recorder action type constants following the `recording.*` naming pattern.
34
+ */
35
+ export declare const RecorderActivityActionTypes: {
36
+ readonly RECORDING_ADD: "recording.add";
37
+ readonly RECORDING_DELETE: "recording.delete";
38
+ };
39
+ export type RecorderActivityActionType = typeof RecorderActivityActionTypes[keyof typeof RecorderActivityActionTypes];
40
+ /**
41
+ * Reaction action type constants following the `reaction.*` naming pattern.
42
+ */
43
+ export declare const ReactionActivityActionTypes: {
44
+ readonly REACTION_ADD: "reaction.add";
45
+ readonly REACTION_DELETE: "reaction.delete";
46
+ };
47
+ export type ReactionActivityActionType = typeof ReactionActivityActionTypes[keyof typeof ReactionActivityActionTypes];
48
+ /**
49
+ * CRDT action type constants following the `crdt.*` naming pattern.
50
+ */
51
+ export declare const CrdtActivityActionTypes: {
52
+ readonly EDITOR_EDIT: "crdt.editor_edit";
53
+ };
54
+ export type CrdtActivityActionType = typeof CrdtActivityActionTypes[keyof typeof CrdtActivityActionTypes];
55
+ /**
56
+ * Represents a single from/to change pair.
57
+ * `from` is always present (null for 'added' events) for uniform structure.
58
+ */
59
+ export interface ActivityChange<T = unknown> {
60
+ from?: T | null;
61
+ to?: T | null;
62
+ }
63
+ /**
64
+ * Dynamic change tracking. Keys are domain-specific (e.g., 'status', 'commentText', 'assignedTo').
65
+ * No fixed keys — activities span multiple features.
66
+ */
67
+ export interface ActivityChanges {
68
+ [key: string]: ActivityChange | undefined;
69
+ }
70
+ /**
71
+ * Metadata for activity records. Extends BaseMetadata with denormalized IDs
72
+ * for efficient querying at the organization level.
73
+ */
74
+ export declare class ActivityMetadata extends BaseMetadata {
75
+ [key: string]: any;
76
+ }
77
+ /**
78
+ * Core activity record representing a single activity event.
79
+ *
80
+ * @typeParam TEntity - Type of the parent entity snapshot (e.g., CommentAnnotation)
81
+ * @typeParam TTarget - Type of the sub-entity snapshot (e.g., Comment)
82
+ */
83
+ export declare class ActivityRecord<TEntity = unknown, TTarget = unknown> {
84
+ /** Auto-generated unique ID */
85
+ id: string;
86
+ /** Feature that generated this activity */
87
+ featureType: ActivityFeatureType;
88
+ /** Action that occurred, following `entity_type.action` pattern */
89
+ actionType: string;
90
+ /** Event type that occurred */
91
+ eventType?: string;
92
+ /** User who performed the action */
93
+ actionUser: User;
94
+ /** Server timestamp (set by backend) */
95
+ timestamp: number;
96
+ /** Denormalized IDs for querying */
97
+ metadata: ActivityMetadata;
98
+ /** ID of the parent entity (annotationId, recordingId, etc.) */
99
+ targetEntityId: string;
100
+ /** ID of the sub-entity acted on (commentId within annotation, null for entity-level actions) */
101
+ targetSubEntityId?: string | null;
102
+ /** Linear-style from/to change pairs */
103
+ changes?: ActivityChanges;
104
+ /** Full parent entity snapshot at time of action */
105
+ entityData?: TEntity;
106
+ /** Sub-entity snapshot (or user-provided data for custom activities) */
107
+ entityTargetData?: TTarget;
108
+ /** Display message template — ONLY for custom activities */
109
+ displayMessageTemplate?: string;
110
+ /** Template variable values — ONLY for custom activities */
111
+ displayMessageTemplateData?: Record<string, unknown>;
112
+ /** Computed display message (generated client-side, never stored in Firestore) */
113
+ displayMessage?: string;
114
+ /** Icon URL or identifier for display */
115
+ actionIcon?: string;
116
+ /** If true, this activity cannot be updated or deleted via REST API */
117
+ immutable?: boolean;
118
+ /** If true, this activity was stripped by the activity resolver (for UI loading states) */
119
+ isActivityResolverUsed?: boolean;
120
+ }
121
+ /**
122
+ * Configuration for subscribing to activities.
123
+ * Behavior is determined by the props passed:
124
+ * - No config → org-wide
125
+ * - documentIds → specific documents
126
+ * - currentDocumentOnly → current document only
127
+ */
128
+ export interface ActivitySubscribeConfig {
129
+ /** Subscribe to activities for a specific organization (defaults to current org) */
130
+ organizationId?: string;
131
+ /** Subscribe to activities for specific document IDs */
132
+ documentIds?: string[];
133
+ /** Subscribe to activities for the current document only (auto-switches on setDocument) */
134
+ currentDocumentOnly?: boolean;
135
+ /** Only fetch activities from the last N days (default: 30) */
136
+ maxDays?: number;
137
+ /** Allowlist: only include activities with these feature types */
138
+ featureTypes?: ActivityFeatureType[];
139
+ /** Disallowlist: exclude activities with these feature types (ignored if featureTypes is set) */
140
+ excludeFeatureTypes?: ActivityFeatureType[];
141
+ /** Allowlist: only include activities with these action types */
142
+ actionTypes?: string[];
143
+ /** Disallowlist: exclude activities with these action types (ignored if actionTypes is set) */
144
+ excludeActionTypes?: string[];
145
+ /** Allowlist: only include activities by these user IDs */
146
+ userIds?: string[];
147
+ /** Disallowlist: exclude activities by these user IDs (ignored if userIds is set) */
148
+ excludeUserIds?: string[];
149
+ }
150
+ /**
151
+ * Represents an active activity subscription.
152
+ * Returned by `activityService.subscribe()`.
153
+ */
154
+ export interface ActivitySubscription {
155
+ /** Observable stream of activities for this subscription's scope. null = not yet loaded. */
156
+ getActivities$(): Observable<ActivityRecord[] | null>;
157
+ /** Unsubscribe and clean up this subscription */
158
+ unsubscribe(): void;
159
+ }
160
+ /**
161
+ * Data required to create an activity.
162
+ * Used for all activity types: comment, reaction, recorder, custom, etc.
163
+ */
164
+ export interface CreateActivityData<TEntity = unknown, TTarget = unknown> {
165
+ featureType: ActivityFeatureType;
166
+ actionType: string;
167
+ eventType?: string;
168
+ targetEntityId: string;
169
+ targetSubEntityId?: string | null;
170
+ changes?: ActivityChanges;
171
+ entityData?: TEntity;
172
+ entityTargetData?: TTarget;
173
+ /** Icon URL or identifier — typically used for custom activities */
174
+ actionIcon?: string;
175
+ /** Display message template — only for custom activities */
176
+ displayMessageTemplate?: string;
177
+ /** Template variable values — only for custom activities */
178
+ displayMessageTemplateData?: Record<string, unknown>;
179
+ }
@@ -1,8 +1,8 @@
1
1
  import { ResolverActions } from "../../utils/enums";
2
2
  import { ResolverConfig, ResolverResponse } from "./resolver.data.model";
3
3
  export interface AttachmentDataProvider {
4
- save: (request: SaveAttachmentResolverRequest) => Promise<ResolverResponse<SaveAttachmentResolverData>>;
5
- delete: (request: DeleteAttachmentResolverRequest) => Promise<ResolverResponse<undefined>>;
4
+ save?: (request: SaveAttachmentResolverRequest) => Promise<ResolverResponse<SaveAttachmentResolverData>>;
5
+ delete?: (request: DeleteAttachmentResolverRequest) => Promise<ResolverResponse<undefined>>;
6
6
  config?: ResolverConfig;
7
7
  }
8
8
  export interface DeleteAttachmentResolverRequest {
@@ -53,6 +53,7 @@ export interface UploadFileOptions {
53
53
  file: File;
54
54
  useAttachmentResolver?: boolean;
55
55
  metadata?: any;
56
+ attachmentScope?: string;
56
57
  }
57
58
  export interface UploadFileData {
58
59
  files: File[];
@@ -22,17 +22,17 @@ export declare class AutocompleteItem {
22
22
  groupId?: string;
23
23
  }
24
24
  export declare class AutocompleteReplaceData {
25
- text: string;
25
+ text?: string;
26
26
  custom: AutocompleteItem;
27
27
  }
28
28
  export declare class AutocompleteGroupReplaceData {
29
- text: string;
29
+ text?: string;
30
30
  groupId: string;
31
31
  clientGroupId: string;
32
32
  group?: OrganizationUserGroup;
33
33
  }
34
34
  export declare class AutocompleteUserContactReplaceData {
35
- text: string;
35
+ text?: string;
36
36
  userId: string;
37
37
  contact?: UserContact;
38
38
  }
@@ -1,3 +1,4 @@
1
+ import { DocumentMetadata } from './document-metadata.model';
1
2
  export declare class BaseMetadata {
2
3
  apiKey?: string;
3
4
  documentId?: string;
@@ -6,4 +7,6 @@ export declare class BaseMetadata {
6
7
  clientOrganizationId?: string;
7
8
  folderId?: string;
8
9
  veltFolderId?: string;
10
+ documentMetadata?: DocumentMetadata;
11
+ sdkVersion?: string | null;
9
12
  }
@@ -121,6 +121,8 @@ export interface CommentRequestQuery {
121
121
  batchedPerDocument?: boolean;
122
122
  /** Debounce time in ms for batchedPerDocument mode (default: 5000). */
123
123
  debounceMs?: number;
124
+ /** Filter annotations by agent fields. Matches annotations where `agent.agentFields` array contains any of the provided values. */
125
+ agentFields?: string[];
124
126
  }
125
127
  export interface SubscribeCommentAnnotationRequest {
126
128
  annotationId: string;
@@ -141,6 +143,8 @@ export interface AddCommentRequest {
141
143
  assignedTo?: User;
142
144
  assigned?: boolean;
143
145
  options?: RequestOptions;
146
+ /** Optional visibility configuration for the comment */
147
+ visibility?: CommentVisibilityConfig;
144
148
  }
145
149
  export interface UpdateCommentRequest {
146
150
  annotationId: string;
@@ -1,5 +1,6 @@
1
- import { CommentAccessMode } from "../../utils/enums";
1
+ import { CommentAccessMode, CommentVisibilityOptionType } from "../../utils/enums";
2
2
  import { BaseMetadata } from "./base-metadata.data.model";
3
+ import { CommentVisibilityType } from "./comment-actions.data.model";
3
4
  import { Comment } from "./comment.data.model";
4
5
  import { CursorPosition } from "./cursor-position.data.model";
5
6
  import { CustomAnnotationDropdownItem } from "./custom-chip-dropdown.data.model";
@@ -10,6 +11,11 @@ import { TargetElement } from "./target-element.data.model";
10
11
  import { TargetTextRange } from "./target-text-range.data.model";
11
12
  import { User } from "./user.data.model";
12
13
  import { CommentAnnotationViews } from "./views.data.model";
14
+ export interface CommentAnnotationVisibilityConfig {
15
+ type: CommentVisibilityType;
16
+ organizationId?: string;
17
+ userIds?: string[];
18
+ }
13
19
  export declare class CommentAnnotation {
14
20
  /**
15
21
  * Unique identifier for the comment pin annotation.
@@ -23,6 +29,7 @@ export declare class CommentAnnotation {
23
29
  * Auto generated.
24
30
  */
25
31
  annotationNumber?: number;
32
+ visibilityConfig?: CommentAnnotationVisibilityConfig;
26
33
  /**
27
34
  * This is the list of all comments part of this annotation.
28
35
  *
@@ -234,7 +241,8 @@ export declare class CommentSelectionChangeData {
234
241
  }
235
242
  export declare class VisibilityOptionClickedData {
236
243
  annotationId: string;
237
- visibility: 'public' | 'private';
244
+ visibility: CommentVisibilityOptionType;
245
+ users?: any[];
238
246
  }
239
247
  export declare class InlineCommentSectionConfig {
240
248
  id: string;
@@ -1,4 +1,4 @@
1
- import { AssignToType, CommentAccessMode, CommentEventTypes, CommentStatus } from "../../utils/enums";
1
+ import { AssignToType, CommentAccessMode, CommentEventTypes, CommentStatus, CommentVisibilityOptionType } from "../../utils/enums";
2
2
  import { Attachment } from "./attachment.model";
3
3
  import { VeltButtonClickEvent } from "./button.data.model";
4
4
  import { AddAttachmentResponse } from "./comment-actions.data.model";
@@ -85,9 +85,12 @@ export type CommentEventTypesMap = {
85
85
  [CommentEventTypes.COMMENT_PIN_CLICKED]: CommentPinClickedEvent;
86
86
  [CommentEventTypes.COMMENT_BUBBLE_CLICKED]: CommentBubbleClickedEvent;
87
87
  [CommentEventTypes.COMMENT_TOOL_CLICK]: CommentToolClickEvent;
88
+ [CommentEventTypes.COMMENT_TOOL_CLICKED]: CommentToolClickedEvent;
88
89
  [CommentEventTypes.SIDEBAR_BUTTON_CLICK]: SidebarButtonClickEvent;
90
+ [CommentEventTypes.SIDEBAR_BUTTON_CLICKED]: SidebarButtonClickedEvent;
89
91
  [CommentEventTypes.ATTACHMENT_DOWNLOAD_CLICKED]: AttachmentDownloadClickedEvent;
90
92
  [CommentEventTypes.COMMENT_SAVED]: CommentSavedEvent;
93
+ [CommentEventTypes.COMMENT_SAVE_TRIGGERED]: CommentSaveTriggeredEvent;
91
94
  [CommentEventTypes.VISIBILITY_OPTION_CLICKED]: VisibilityOptionClickedEvent;
92
95
  };
93
96
  export interface AddAttachmentEvent {
@@ -183,6 +186,11 @@ export interface CommentSavedEvent {
183
186
  commentAnnotation: CommentAnnotation;
184
187
  metadata: VeltEventMetadata;
185
188
  }
189
+ export interface CommentSaveTriggeredEvent {
190
+ annotationId: string;
191
+ commentAnnotation: CommentAnnotation;
192
+ metadata: VeltEventMetadata;
193
+ }
186
194
  export interface UpdateCommentEvent {
187
195
  annotationId: string;
188
196
  commentAnnotation: CommentAnnotation;
@@ -309,9 +317,13 @@ export interface CommentToolClickEvent {
309
317
  targetElementId?: string | null;
310
318
  metadata?: VeltEventMetadata;
311
319
  }
320
+ export interface CommentToolClickedEvent extends CommentToolClickEvent {
321
+ }
312
322
  export interface SidebarButtonClickEvent {
313
323
  metadata?: VeltEventMetadata;
314
324
  }
325
+ export interface SidebarButtonClickedEvent extends SidebarButtonClickEvent {
326
+ }
315
327
  export interface AttachmentDownloadClickedEvent {
316
328
  annotationId: string;
317
329
  commentAnnotation: CommentAnnotation;
@@ -321,6 +333,7 @@ export interface AttachmentDownloadClickedEvent {
321
333
  export interface VisibilityOptionClickedEvent {
322
334
  annotationId: string;
323
335
  commentAnnotation: CommentAnnotation;
324
- visibility: 'public' | 'private';
336
+ visibility: CommentVisibilityOptionType;
337
+ users?: any[];
325
338
  metadata?: VeltEventMetadata;
326
339
  }
@@ -4,9 +4,9 @@ import { BaseMetadata } from "./base-metadata.data.model";
4
4
  import { CommentAnnotation } from "./comment-annotation.data.model";
5
5
  import { ResolverConfig, ResolverResponse } from "./resolver.data.model";
6
6
  export interface CommentAnnotationDataProvider {
7
- get: (request: GetCommentResolverRequest) => Promise<ResolverResponse<Record<string, PartialCommentAnnotation>>>;
8
- save: (request: SaveCommentResolverRequest) => Promise<ResolverResponse<undefined>>;
9
- delete: (request: DeleteCommentResolverRequest) => Promise<ResolverResponse<undefined>>;
7
+ get?: (request: GetCommentResolverRequest) => Promise<ResolverResponse<Record<string, PartialCommentAnnotation>>>;
8
+ save?: (request: SaveCommentResolverRequest) => Promise<ResolverResponse<undefined>>;
9
+ delete?: (request: DeleteCommentResolverRequest) => Promise<ResolverResponse<undefined>>;
10
10
  config?: ResolverConfig;
11
11
  }
12
12
  export interface GetCommentResolverRequest {
@@ -76,4 +76,9 @@ export interface DisableLogsConfig {
76
76
  }
77
77
  export interface GetProjectConfigResponse {
78
78
  isPrivateCommentsEnabled: boolean;
79
+ activityConfig?: ActivityConfig;
80
+ }
81
+ export interface ActivityConfig {
82
+ immutable: boolean;
83
+ isEnabled: boolean;
79
84
  }
@@ -7,6 +7,9 @@ export type CoreEventTypesMap = {
7
7
  [CoreEventTypes.COMMENT_RESOLVER]: CommentResolverEvent;
8
8
  [CoreEventTypes.ATTACHMENT_RESOLVER]: AttachmentResolverEvent;
9
9
  [CoreEventTypes.REACTION_RESOLVER]: ReactionResolverEvent;
10
+ [CoreEventTypes.RECORDER_RESOLVER]: RecorderResolverEvent;
11
+ [CoreEventTypes.NOTIFICATION_RESOLVER]: NotificationResolverEvent;
12
+ [CoreEventTypes.ACTIVITY_RESOLVER]: ActivityResolverEvent;
10
13
  [CoreEventTypes.VELT_BUTTON_CLICK]: VeltButtonClickEvent;
11
14
  [CoreEventTypes.USER_UPDATE]: UserUpdateEvent;
12
15
  [CoreEventTypes.DOCUMENT_INIT]: DocumentInitEvent;
@@ -23,7 +26,8 @@ export declare enum UserResolverSource {
23
26
  SET_SINGLE_EDITOR_MODE_LIVE_STATE_DATA_FOR_DIFFERENT_USER_PRESENT_ON_TAB = "setSingleEditorModeLiveStateDataForDifferentUserPresentOnTab",
24
27
  RESOLVE_AND_MERGE_SINGLE_EDITOR_LIVE_STATE_DATA_WITH_USER = "resolveAndMergeSingleEditorLiveStateDataWithUser",
25
28
  GET_SINGLE_EDITOR_MODE_DATA = "getSingleEditorModeData",
26
- RESOLVE_USERS_FROM_HUDDLE_MESSAGES = "resolveUsersFromHuddleMessages"
29
+ RESOLVE_USERS_FROM_HUDDLE_MESSAGES = "resolveUsersFromHuddleMessages",
30
+ RESOLVE_USER_IDS_BY_EMAIL = "resolveUserIdsByEmail"
27
31
  }
28
32
  export declare enum UserResolverModuleName {
29
33
  IDENTIFY = "identify/authProvider",
@@ -146,6 +150,75 @@ export type ReactionResolverEventType = {
146
150
  REACTION_DELETE_RESULT: 'reactionDeleteResult';
147
151
  REACTION_DELETE_ERROR: 'reactionDeleteError';
148
152
  };
153
+ export declare enum RecorderResolverSource {
154
+ RESOLVE_RECORDER_ANNOTATIONS = "resolveRecorderAnnotations",
155
+ SAVE_RECORDER_ANNOTATION = "saveRecorderAnnotation",
156
+ DELETE_RECORDER_ANNOTATION = "deleteRecorderAnnotation",
157
+ FORMAT_RESPONSE = "formatResponse",
158
+ INIT_DOCUMENTS = "initDocuments",
159
+ SET_DATA = "setData",
160
+ UPDATE_DATA = "updateData",
161
+ DELETE_DATA = "deleteData"
162
+ }
163
+ export declare enum RecorderResolverModuleName {
164
+ GET_RECORDER_ANNOTATIONS = "getRecorderAnnotations"
165
+ }
166
+ export type RecorderResolverEvent = BaseResolverEvent<RecorderResolverEventType, RecorderResolverSource, RecorderResolverModuleName>;
167
+ export type RecorderResolverEventType = {
168
+ RECORDER_RESOLUTION_REQUEST_FORMED: 'recorderResolutionRequestFormed';
169
+ RECORDER_RESOLUTION_REQUEST_TRIGGERED: 'recorderResolutionRequestTriggered';
170
+ RECORDER_RESOLUTION_RESULT: 'recorderResolutionResult';
171
+ RECORDER_RESOLUTION_ERROR: 'recorderResolutionError';
172
+ RECORDER_RESOLUTION_RESULT_FROM_CACHE: 'recorderResolutionResultFromCache';
173
+ RECORDER_SAVE_REQUEST_FORMED: 'recorderSaveRequestFormed';
174
+ RECORDER_SAVE_REQUEST_TRIGGERED: 'recorderSaveRequestTriggered';
175
+ RECORDER_SAVE_RESULT: 'recorderSaveResult';
176
+ RECORDER_SAVE_ERROR: 'recorderSaveError';
177
+ RECORDER_DELETE_REQUEST_FORMED: 'recorderDeleteRequestFormed';
178
+ RECORDER_DELETE_REQUEST_TRIGGERED: 'recorderDeleteRequestTriggered';
179
+ RECORDER_DELETE_RESULT: 'recorderDeleteResult';
180
+ RECORDER_DELETE_ERROR: 'recorderDeleteError';
181
+ };
182
+ export declare enum NotificationResolverSource {
183
+ RESOLVE_NOTIFICATIONS = "resolveNotifications",
184
+ DELETE_NOTIFICATION = "deleteNotification",
185
+ DELETE_DATA = "deleteData",
186
+ FORMAT_RESPONSE = "formatResponse"
187
+ }
188
+ export declare enum NotificationResolverModuleName {
189
+ GET_NOTIFICATIONS = "getNotifications"
190
+ }
191
+ export type NotificationResolverEventType = {
192
+ NOTIFICATION_RESOLUTION_REQUEST_FORMED: 'notificationResolutionRequestFormed';
193
+ NOTIFICATION_RESOLUTION_REQUEST_TRIGGERED: 'notificationResolutionRequestTriggered';
194
+ NOTIFICATION_RESOLUTION_RESULT: 'notificationResolutionResult';
195
+ NOTIFICATION_RESOLUTION_ERROR: 'notificationResolutionError';
196
+ NOTIFICATION_DELETE_REQUEST_FORMED: 'notificationDeleteRequestFormed';
197
+ NOTIFICATION_DELETE_REQUEST_TRIGGERED: 'notificationDeleteRequestTriggered';
198
+ NOTIFICATION_DELETE_RESULT: 'notificationDeleteResult';
199
+ NOTIFICATION_DELETE_ERROR: 'notificationDeleteError';
200
+ };
201
+ export type NotificationResolverEvent = BaseResolverEvent<NotificationResolverEventType, NotificationResolverSource, NotificationResolverModuleName>;
202
+ export declare enum ActivityResolverSource {
203
+ RESOLVE_ACTIVITIES = "resolveActivities",
204
+ SAVE_ACTIVITY = "saveActivity",
205
+ FORMAT_RESPONSE = "formatResponse"
206
+ }
207
+ export declare enum ActivityResolverModuleName {
208
+ GET_ACTIVITIES = "getActivities"
209
+ }
210
+ export type ActivityResolverEventType = {
211
+ ACTIVITY_RESOLUTION_REQUEST_FORMED: 'activityResolutionRequestFormed';
212
+ ACTIVITY_RESOLUTION_REQUEST_TRIGGERED: 'activityResolutionRequestTriggered';
213
+ ACTIVITY_RESOLUTION_RESULT: 'activityResolutionResult';
214
+ ACTIVITY_RESOLUTION_ERROR: 'activityResolutionError';
215
+ ACTIVITY_RESOLUTION_RESULT_FROM_CACHE: 'activityResolutionResultFromCache';
216
+ ACTIVITY_SAVE_REQUEST_FORMED: 'activitySaveRequestFormed';
217
+ ACTIVITY_SAVE_REQUEST_TRIGGERED: 'activitySaveRequestTriggered';
218
+ ACTIVITY_SAVE_RESULT: 'activitySaveResult';
219
+ ACTIVITY_SAVE_ERROR: 'activitySaveError';
220
+ };
221
+ export type ActivityResolverEvent = BaseResolverEvent<ActivityResolverEventType, ActivityResolverSource, ActivityResolverModuleName>;
149
222
  export type ErrorEvent = {
150
223
  event?: string;
151
224
  sourceMethod?: string;
@@ -58,3 +58,54 @@ export interface CrdtDeleteVersionQuery {
58
58
  id: string;
59
59
  versionId: string;
60
60
  }
61
+ export interface CrdtPushMessageQuery {
62
+ id: string;
63
+ data: number[];
64
+ yjsClientId: number;
65
+ messageType?: 'sync' | 'awareness';
66
+ /** User-facing value for event emission only (not stored in database) */
67
+ eventData?: unknown;
68
+ /** Yjs data type: 'text' | 'map' | 'array' | 'xml' | 'xmltext' */
69
+ type?: string;
70
+ /** Content key used in Y.Doc shared types */
71
+ contentKey?: string;
72
+ /** Editor/library source: 'tiptap', 'plate', 'codemirror', etc. */
73
+ source?: string;
74
+ }
75
+ export interface CrdtOnMessageQuery {
76
+ id: string;
77
+ callback: (message: CrdtMessageData) => void;
78
+ afterTs?: number;
79
+ }
80
+ export interface CrdtMessageData {
81
+ data: number[];
82
+ yjsClientId: number;
83
+ timestamp: number;
84
+ }
85
+ export interface CrdtSnapshotData {
86
+ state?: Uint8Array | number[];
87
+ vector?: Uint8Array | number[];
88
+ timestamp?: number;
89
+ }
90
+ export interface CrdtGetSnapshotQuery {
91
+ id: string;
92
+ }
93
+ export interface CrdtSaveSnapshotQuery {
94
+ id: string;
95
+ state: Uint8Array | number[];
96
+ vector: Uint8Array | number[];
97
+ /** Yjs data type: 'text' | 'map' | 'array' | 'xml' | 'xmltext' */
98
+ type?: string;
99
+ /** Content key used in Y.Doc shared types */
100
+ contentKey?: string;
101
+ /** Editor/library source: 'tiptap', 'plate', 'codemirror', etc. */
102
+ source?: string;
103
+ }
104
+ export interface CrdtGetMessagesQuery {
105
+ id: string;
106
+ afterTs?: number;
107
+ }
108
+ export interface CrdtPruneMessagesQuery {
109
+ id: string;
110
+ beforeTs: number;
111
+ }
@@ -16,6 +16,8 @@ export interface SetDocumentsRequestOptions {
16
16
  locationId?: string;
17
17
  rootDocumentId?: string;
18
18
  context?: SetDocumentsContext;
19
+ debounceTime?: number;
20
+ optimisticPermissions?: boolean;
19
21
  }
20
22
  export interface UpdateDocumentsRequest<T = unknown> {
21
23
  organizationId?: string;
@@ -5,12 +5,18 @@ export interface AccessRequestEvent {
5
5
  editor?: User;
6
6
  timestamp?: number;
7
7
  status?: string;
8
+ totalUsers?: number;
9
+ presenceSnippylyUserIds?: string[];
10
+ presenceClientUserIds?: string[];
8
11
  }
9
12
  export interface SEMEvent {
10
13
  viewer?: User;
11
14
  editor?: User;
12
15
  timestamp?: number;
13
16
  role?: string;
17
+ totalUsers?: number;
18
+ presenceSnippylyUserIds?: string[];
19
+ presenceClientUserIds?: string[];
14
20
  }
15
21
  export type LiveStateEventTypesMap = {
16
22
  [LiveStateSyncEventTypes.ACCESS_REQUESTED]: AccessRequestEvent;
@@ -0,0 +1,39 @@
1
+ import { ResolverEndpointConfig, ResolverResponse, RetryConfig } from "./resolver.data.model";
2
+ import { User } from "./user.data.model";
3
+ export interface NotificationDataProvider {
4
+ get?: (request: GetNotificationResolverRequest) => Promise<ResolverResponse<Record<string, PartialNotification>>>;
5
+ delete?: (request: DeleteNotificationResolverRequest) => Promise<ResolverResponse<undefined>>;
6
+ config?: NotificationResolverConfig;
7
+ }
8
+ export interface NotificationResolverConfig {
9
+ resolveTimeout?: number;
10
+ getRetryConfig?: RetryConfig;
11
+ deleteRetryConfig?: RetryConfig;
12
+ getConfig?: ResolverEndpointConfig;
13
+ deleteConfig?: ResolverEndpointConfig;
14
+ }
15
+ export interface GetNotificationResolverRequest {
16
+ organizationId: string;
17
+ notificationIds: string[];
18
+ }
19
+ export interface DeleteNotificationResolverRequest {
20
+ notificationId: string;
21
+ organizationId: string;
22
+ }
23
+ export interface PartialNotification {
24
+ notificationId: string;
25
+ displayHeadlineMessageTemplate?: string;
26
+ displayHeadlineMessageTemplateData?: {
27
+ actionUser?: User;
28
+ recipientUser?: User;
29
+ actionMessage?: string;
30
+ [key: string]: any;
31
+ };
32
+ displayBodyMessage?: string;
33
+ displayBodyMessageTemplate?: string;
34
+ displayBodyMessageTemplateData?: {
35
+ [key: string]: any;
36
+ };
37
+ notificationSourceData?: any;
38
+ [key: string]: any;
39
+ }
@@ -137,6 +137,10 @@ export declare class Notification {
137
137
  * Is comment text available
138
138
  */
139
139
  isCommentResolverUsed?: boolean;
140
+ /**
141
+ * Is notification resolver used
142
+ */
143
+ isNotificationResolverUsed?: boolean;
140
144
  /**
141
145
  * Display body message template
142
146
  */
@@ -1,10 +1,17 @@
1
+ import { ActivityAnnotationDataProvider } from "./activity-resolver.data.model";
1
2
  import { CommentAnnotationDataProvider } from "./comment-resolver.data.model";
2
3
  import { AttachmentDataProvider } from "./attachment-resolver.data.model";
4
+ import { NotificationDataProvider } from "./notification-resolver.data.model";
3
5
  import { ReactionAnnotationDataProvider } from "./reaction-resolver.data.model";
4
- import { UserDataProvider } from "./user-resolver.data.model";
6
+ import { RecorderAnnotationDataProvider } from "./recorder-resolver.data.model";
7
+ import { AnonymousUserDataProvider, UserDataProvider } from "./user-resolver.data.model";
5
8
  export interface VeltDataProvider {
6
9
  comment?: CommentAnnotationDataProvider;
7
10
  user?: UserDataProvider;
8
11
  reaction?: ReactionAnnotationDataProvider;
9
12
  attachment?: AttachmentDataProvider;
13
+ anonymousUser?: AnonymousUserDataProvider;
14
+ recorder?: RecorderAnnotationDataProvider;
15
+ notification?: NotificationDataProvider;
16
+ activity?: ActivityAnnotationDataProvider;
10
17
  }
@@ -4,9 +4,9 @@ import { PartialUser } from "./comment-resolver.data.model";
4
4
  import { ReactionAnnotation } from "./reaction-annotation.data.model";
5
5
  import { ResolverConfig, ResolverResponse } from "./resolver.data.model";
6
6
  export interface ReactionAnnotationDataProvider {
7
- get: (request: GetReactionResolverRequest) => Promise<ResolverResponse<Record<string, PartialReactionAnnotation>>>;
8
- save: (request: SaveReactionResolverRequest) => Promise<ResolverResponse<undefined>>;
9
- delete: (request: DeleteReactionResolverRequest) => Promise<ResolverResponse<undefined>>;
7
+ get?: (request: GetReactionResolverRequest) => Promise<ResolverResponse<Record<string, PartialReactionAnnotation>>>;
8
+ save?: (request: SaveReactionResolverRequest) => Promise<ResolverResponse<undefined>>;
9
+ delete?: (request: DeleteReactionResolverRequest) => Promise<ResolverResponse<undefined>>;
10
10
  config?: ResolverConfig;
11
11
  }
12
12
  export interface GetReactionResolverRequest {
@@ -150,6 +150,17 @@ export declare class RecorderAnnotation {
150
150
  chunkUrls?: {
151
151
  [key: number]: string;
152
152
  };
153
+ /**
154
+ * Whether the recorder resolver is used for this annotation.
155
+ * Used by UI components to show loading states while resolver data is being fetched.
156
+ */
157
+ isRecorderResolverUsed?: boolean;
158
+ /**
159
+ * Whether the real recording URL is available.
160
+ * Set to false when the annotation is first saved (URL is still a local blob),
161
+ * and true once the actual URL from storage is available after the async upload completes.
162
+ */
163
+ isUrlAvailable?: boolean;
153
164
  }
154
165
  export interface RecorderAnnotationEditVersion {
155
166
  from?: User;
@@ -0,0 +1,58 @@
1
+ import { ResolverActions } from "../../utils/enums";
2
+ import { AttachmentDataProvider } from "./attachment-resolver.data.model";
3
+ import { BaseMetadata } from "./base-metadata.data.model";
4
+ import { RecorderAnnotation } from "./recorder-annotation.data.model";
5
+ import { ResolverConfig, ResolverResponse } from "./resolver.data.model";
6
+ import { Attachment } from "./attachment.model";
7
+ import { Transcription } from "./transcription.data.model";
8
+ import { User } from "./user.data.model";
9
+ export interface RecorderAnnotationDataProvider {
10
+ get?: (request: GetRecorderResolverRequest) => Promise<ResolverResponse<Record<string, PartialRecorderAnnotation>>>;
11
+ save?: (request: SaveRecorderResolverRequest) => Promise<ResolverResponse<SaveRecorderResolverData | undefined>>;
12
+ delete?: (request: DeleteRecorderResolverRequest) => Promise<ResolverResponse<undefined>>;
13
+ config?: ResolverConfig;
14
+ uploadChunks?: boolean;
15
+ storage?: AttachmentDataProvider;
16
+ }
17
+ export interface GetRecorderResolverRequest {
18
+ organizationId: string;
19
+ recorderAnnotationIds?: string[];
20
+ documentIds?: string[];
21
+ }
22
+ export interface SaveRecorderResolverRequest {
23
+ recorderAnnotation: Record<string, PartialRecorderAnnotation>;
24
+ event?: ResolverActions;
25
+ metadata?: BaseMetadata;
26
+ }
27
+ export interface SaveRecorderResolverData {
28
+ transcription?: Transcription;
29
+ attachment?: Attachment | null;
30
+ attachments?: Attachment[];
31
+ }
32
+ export interface DeleteRecorderResolverRequest {
33
+ recorderAnnotationId: string;
34
+ metadata?: BaseMetadata;
35
+ event?: ResolverActions;
36
+ }
37
+ export interface PartialRecorderAnnotation {
38
+ annotationId: string;
39
+ metadata?: BaseMetadata;
40
+ from?: User;
41
+ transcription?: Transcription;
42
+ attachment?: Attachment | null;
43
+ attachments?: Attachment[];
44
+ chunkUrls?: Record<number, string>;
45
+ recordingEditVersions?: Record<number, PartialRecorderAnnotationEditVersion>;
46
+ [key: string]: any;
47
+ }
48
+ export interface PartialRecorderAnnotationEditVersion {
49
+ from?: User;
50
+ attachment?: Attachment | null;
51
+ attachments?: Attachment[];
52
+ transcription?: Transcription;
53
+ }
54
+ export interface PartialRecorderAnnotationResult {
55
+ strippedData: Record<string, PartialRecorderAnnotation> | null;
56
+ originalData: RecorderAnnotation | null;
57
+ eventType?: ResolverActions;
58
+ }
@@ -9,6 +9,7 @@ export interface ResolverConfig {
9
9
  getRetryConfig?: RetryConfig;
10
10
  resolveUsersConfig?: ResolveUsersConfig;
11
11
  fieldsToRemove?: string[];
12
+ additionalFields?: string[];
12
13
  getConfig?: ResolverEndpointConfig;
13
14
  saveConfig?: ResolverEndpointConfig;
14
15
  deleteConfig?: ResolverEndpointConfig;
@@ -1,10 +1,24 @@
1
- import { ResolverConfig } from "./resolver.data.model";
1
+ import { ResolverConfig, ResolverResponse, RetryConfig } from "./resolver.data.model";
2
2
  import { User } from "./user.data.model";
3
3
  export interface UserDataProvider {
4
4
  get(userIds: string[]): Promise<Record<string, User>>;
5
5
  config?: ResolverConfig;
6
6
  resolveTimeout?: number;
7
7
  }
8
+ export interface AnonymousUserDataProvider {
9
+ resolveUserIdsByEmail(request: ResolveUserIdsByEmailRequest): Promise<ResolverResponse<Record<string, string>>>;
10
+ config?: AnonymousUserDataProviderConfig;
11
+ }
12
+ export interface AnonymousUserDataProviderConfig {
13
+ resolveTimeout?: number;
14
+ getRetryConfig?: RetryConfig;
15
+ }
16
+ export interface ResolveUserIdsByEmailRequest {
17
+ organizationId: string;
18
+ documentId?: string;
19
+ folderId?: string;
20
+ emails: string[];
21
+ }
8
22
  export interface GetUserResolverRequest {
9
23
  organizationId: string;
10
24
  userIds: string[];
@@ -19,6 +33,7 @@ export interface GetUserPermissionsResponse {
19
33
  folders?: {
20
34
  [folderId: string]: {
21
35
  accessRole?: UserPermissionAccessRole;
36
+ accessType?: string;
22
37
  expiresAt?: number;
23
38
  error?: string;
24
39
  errorCode?: UserPermissionAccessRoleResult;
@@ -35,6 +50,7 @@ export interface GetUserPermissionsResponse {
35
50
  documents?: {
36
51
  [documentId: string]: {
37
52
  accessRole?: UserPermissionAccessRole;
53
+ accessType?: string;
38
54
  expiresAt?: number;
39
55
  error?: string;
40
56
  errorCode?: UserPermissionAccessRoleResult;
@@ -12,6 +12,8 @@ export declare class User {
12
12
  * Default: Random avatar name.
13
13
  */
14
14
  name?: string;
15
+ email_lowercase?: string;
16
+ name_lowercase?: string;
15
17
  clientUserName?: string;
16
18
  /**
17
19
  * Your user's display picture URL.
@@ -0,0 +1,33 @@
1
+ // @ts-nocheck
2
+ import { Observable } from "rxjs";
3
+ import { ActivityRecord, ActivitySubscribeConfig, CreateActivityData } from "../data/activity.data.model";
4
+
5
+ export declare class ActivityElement {
6
+
7
+ /**
8
+ * Subscribe to activities with optional filtering configuration.
9
+ * Returns an Observable that, when unsubscribed, automatically cleans up the internal subscription.
10
+ * @param config Optional configuration to filter activities by scope, feature types, action types, etc.
11
+ * @returns Observable<ActivityRecord[] | null>
12
+ */
13
+ getAllActivities: (config?: ActivitySubscribeConfig) => Observable<ActivityRecord[] | null>;
14
+
15
+ /**
16
+ * Create a new activity record.
17
+ * @param data The activity data including feature type, action type, target entity, etc.
18
+ * @returns Promise<void>
19
+ */
20
+ createActivity: (data: CreateActivityData) => Promise<void>;
21
+
22
+ constructor();
23
+
24
+ /**
25
+ * Subscribe to activities with optional filtering configuration.
26
+ */
27
+ private _getAllActivities;
28
+
29
+ /**
30
+ * Create a new activity record.
31
+ */
32
+ private _createActivity;
33
+ }
@@ -291,14 +291,14 @@ export declare class CommentElement {
291
291
  public disableStatus: () => any;
292
292
 
293
293
  /**
294
- * To enable visibility option dropdown on comments
294
+ * To enable visibility options on comments
295
295
  */
296
- public enableVisibilityOptionDropdown: () => any;
296
+ public enableVisibilityOptions: () => any;
297
297
 
298
298
  /**
299
- * To disable visibility option dropdown on comments
299
+ * To disable visibility options on comments
300
300
  */
301
- public disableVisibilityOptionDropdown: () => any;
301
+ public disableVisibilityOptions: () => any;
302
302
 
303
303
  /**
304
304
  * To enable feature to show resolve button
@@ -1626,14 +1626,14 @@ export declare class CommentElement {
1626
1626
  private _disableStatus;
1627
1627
 
1628
1628
  /**
1629
- * To enable visibility option dropdown on comments
1629
+ * To enable visibility options on comments
1630
1630
  */
1631
- private _enableVisibilityOptionDropdown;
1631
+ private _enableVisibilityOptions;
1632
1632
 
1633
1633
  /**
1634
- * To disable visibility option dropdown on comments
1634
+ * To disable visibility options on comments
1635
1635
  */
1636
- private _disableVisibilityOptionDropdown;
1636
+ private _disableVisibilityOptions;
1637
1637
 
1638
1638
  /**
1639
1639
  * To enable feature to show resolve button
@@ -1,5 +1,5 @@
1
1
  // @ts-nocheck
2
- import { CrdtGetDataQuery, CrdtGetVersionQuery, CrdtOnDataChangeQuery, CrdtOnPresenceChangeQuery, CrdtOnRegisteredUserChangeQuery, CrdtOnStateChangeQuery, CrdtRegisterSyncUserQuery, CrdtSetPresenceQuery, CrdtSaveVersionQuery, CrdtUpdateDataQuery, CrdtUpdateStateQuery } from "../data/crdt.data.model";
2
+ import { CrdtGetDataQuery, CrdtGetMessagesQuery, CrdtGetSnapshotQuery, CrdtGetVersionQuery, CrdtGetVersionsQuery, CrdtMessageData, CrdtOnDataChangeQuery, CrdtOnMessageQuery, CrdtOnPresenceChangeQuery, CrdtOnRegisteredUserChangeQuery, CrdtOnStateChangeQuery, CrdtPruneMessagesQuery, CrdtPushMessageQuery, CrdtRegisterSyncUserQuery, CrdtSaveSnapshotQuery, CrdtSetPresenceQuery, CrdtSaveVersionQuery, CrdtSnapshotData, CrdtUpdateDataQuery, CrdtUpdateStateQuery } from "../data/crdt.data.model";
3
3
  import { CrdtEventTypesMap } from "../data/crdt-events.data.model";
4
4
 
5
5
  export declare class CrdtElement {
@@ -80,6 +80,12 @@ export declare class CrdtElement {
80
80
  */
81
81
  getVersion: (getVersionQuery: CrdtGetVersionQuery) => Promise<any>;
82
82
 
83
+ /**
84
+ * Get all versions of a specific CRDT document
85
+ * @param id Document ID
86
+ */
87
+ getVersions: (getVersionsQuery: CrdtGetVersionsQuery) => Promise<any>;
88
+
83
89
  /**
84
90
  * Enable webhook
85
91
  */
@@ -96,6 +102,51 @@ export declare class CrdtElement {
96
102
  */
97
103
  setWebhookDebounceTime: (time: number) => void;
98
104
 
105
+ /**
106
+ * Push a lib0-encoded message to the unified message stream.
107
+ * Uses Firebase push() for chronologically-ordered keys.
108
+ * Carries both sync (type 0) and awareness (type 1) messages.
109
+ * @param pushMessageQuery - contains id, data (encoded bytes), yjsClientId (Y.Doc client ID), optional messageType and eventData
110
+ */
111
+ pushMessage: (pushMessageQuery: CrdtPushMessageQuery) => Promise<void>;
112
+ /**
113
+ * Subscribe to the unified message stream for real-time sync.
114
+ * Emits each new message individually as it arrives (streaming pattern).
115
+ * Returns an unsubscribe function.
116
+ * @param onMessageQuery - contains id, callback, and optional afterTs for filtering
117
+ */
118
+ onMessage: (onMessageQuery: CrdtOnMessageQuery) => () => void;
119
+ /**
120
+ * Fetch all messages after a given timestamp (one-time read).
121
+ * Used for message replay during initial load (y-redis pattern).
122
+ * @param getMessagesQuery - contains id and optional afterTs
123
+ */
124
+ getMessages: (getMessagesQuery: CrdtGetMessagesQuery) => Promise<CrdtMessageData[]>;
125
+ /**
126
+ * Get the latest full-state snapshot for a document.
127
+ * Used as the baseline for message replay during initial load.
128
+ * @param getSnapshotQuery - contains id
129
+ */
130
+ getSnapshot: (getSnapshotQuery: CrdtGetSnapshotQuery) => Promise<CrdtSnapshotData | null>;
131
+ /**
132
+ * Save a full-state snapshot (state + vector) for fast initial load.
133
+ * Called periodically to create checkpoints, enabling message pruning.
134
+ * @param saveSnapshotQuery - contains id, state (Y.Doc update), and vector (state vector)
135
+ */
136
+ saveSnapshot: (saveSnapshotQuery: CrdtSaveSnapshotQuery) => Promise<void>;
137
+ /**
138
+ * Remove messages older than the given timestamp from the message stream.
139
+ * Called after saving a snapshot to keep the message stream bounded.
140
+ * @param pruneMessagesQuery - contains id and beforeTs
141
+ */
142
+ pruneMessages: (pruneMessagesQuery: CrdtPruneMessagesQuery) => Promise<void>;
143
+
144
+ /**
145
+ * To set activity debounce time for batching CRDT edits (Default value is 10 minutes)
146
+ * @param time debounce time in milliseconds (minimum: 10 seconds)
147
+ */
148
+ setActivityDebounceTime: (time: number) => void;
149
+
99
150
  /**
100
151
  * Subscribe to crdt actions
101
152
  * @param action Action to subscribe to
@@ -188,6 +239,36 @@ export declare class CrdtElement {
188
239
  */
189
240
  private _getVersions;
190
241
 
242
+ /**
243
+ * Push a message to the unified message stream
244
+ */
245
+ private _pushMessage;
246
+
247
+ /**
248
+ * Subscribe to the unified message stream
249
+ */
250
+ private _onMessage;
251
+
252
+ /**
253
+ * Fetch all messages after a given timestamp
254
+ */
255
+ private _getMessages;
256
+
257
+ /**
258
+ * Get the latest snapshot for a document
259
+ */
260
+ private _getSnapshot;
261
+
262
+ /**
263
+ * Save a full-state snapshot
264
+ */
265
+ private _saveSnapshot;
266
+
267
+ /**
268
+ * Remove messages older than a given timestamp
269
+ */
270
+ private _pruneMessages;
271
+
191
272
  /**
192
273
  * Enable webhook
193
274
  */
@@ -204,6 +285,12 @@ export declare class CrdtElement {
204
285
  */
205
286
  private _setWebhookDebounceTime;
206
287
 
288
+ /**
289
+ * Set activity debounce time for batching CRDT edits
290
+ * @param time debounce time in milliseconds (minimum: 10 seconds)
291
+ */
292
+ private _setActivityDebounceTime;
293
+
207
294
  /**
208
295
  * Subscribe to crdt actions
209
296
  * @param action Action to subscribe to
@@ -57,6 +57,8 @@ export declare class Constants {
57
57
  static FIREBASE_PARTIAL_PATH_NOTIFICATIONS: string;
58
58
  static FIREBASE_PARTIAL_PATH_ORGANIZATION_NOTIFICATIONS: string;
59
59
  static FIREBASE_PARTIAL_PATH_LAST_NOTIFICATION_TIMESTAMP: string;
60
+ static FIREBASE_PARTIAL_PATH_ACTIVITIES: string;
61
+ static FIREBASE_PARTIAL_PATH_LAST_ACTIVITY_TIMESTAMP: string;
60
62
  static FIREBASE_PARTIAL_PATH_HEARTBEAT: string;
61
63
  static FIREBASE_PARTIAL_PATH_HEARTBEAT_BY_DOCUMENT: string;
62
64
  static FIREBASE_PARTIAL_PATH_USERS: string;
@@ -206,6 +208,33 @@ export declare class Constants {
206
208
  VELT_TEXT_HIGHLIGHT: string;
207
209
  VELT_COMMENT_TEXT_PORTAL: string;
208
210
  VELT_COMMENTS_SIDEBAR: string;
211
+ VELT_COMMENTS_SIDEBAR_V2: string;
212
+ VELT_COMMENT_SIDEBAR_SKELETON_V2: string;
213
+ VELT_COMMENT_SIDEBAR_PANEL_V2: string;
214
+ VELT_COMMENT_SIDEBAR_LIST_V2: string;
215
+ VELT_COMMENT_SIDEBAR_LIST_ITEM_V2: string;
216
+ VELT_COMMENT_SIDEBAR_FILTER_DROPDOWN_CONTENT_LIST_V2: string;
217
+ VELT_COMMENT_SIDEBAR_FILTER_DROPDOWN_CONTENT_LIST_CATEGORY_V2: string;
218
+ VELT_COMMENT_SIDEBAR_FILTER_DROPDOWN_CONTENT_LIST_CATEGORY_CONTENT_V2: string;
219
+ VELT_COMMENT_SIDEBAR_FILTER_DROPDOWN_CONTENT_LIST_ITEM_V2: string;
220
+ VELT_COMMENT_SIDEBAR_FILTER_DROPDOWN_CONTENT_LIST_ITEM_INDICATOR_V2: string;
221
+ VELT_COMMENT_SIDEBAR_FILTER_DROPDOWN_CONTENT_LIST_ITEM_LABEL_V2: string;
222
+ VELT_COMMENT_SIDEBAR_MINIMAL_ACTIONS_DROPDOWN_V2: string;
223
+ VELT_COMMENT_SIDEBAR_MINIMAL_ACTIONS_DROPDOWN_TRIGGER_V2: string;
224
+ VELT_COMMENT_SIDEBAR_MINIMAL_ACTIONS_DROPDOWN_CONTENT_V2: string;
225
+ VELT_COMMENT_SIDEBAR_MINIMAL_ACTIONS_DROPDOWN_CONTENT_MARK_ALL_READ_V2: string;
226
+ VELT_COMMENT_SIDEBAR_MINIMAL_ACTIONS_DROPDOWN_CONTENT_MARK_ALL_RESOLVED_V2: string;
227
+ VELT_COMMENT_SIDEBAR_FILTER_DROPDOWN_V2: string;
228
+ VELT_COMMENT_SIDEBAR_FILTER_DROPDOWN_TRIGGER_V2: string;
229
+ VELT_COMMENT_SIDEBAR_FILTER_DROPDOWN_CONTENT_V2: string;
230
+ VELT_COMMENT_SIDEBAR_HEADER_V2: string;
231
+ VELT_COMMENT_SIDEBAR_CLOSE_BUTTON_V2: string;
232
+ VELT_COMMENT_SIDEBAR_EMPTY_PLACEHOLDER_V2: string;
233
+ VELT_COMMENT_SIDEBAR_RESET_FILTER_BUTTON_V2: string;
234
+ VELT_COMMENT_SIDEBAR_PAGE_MODE_COMPOSER_V2: string;
235
+ VELT_COMMENT_SIDEBAR_FOCUSED_THREAD_V2: string;
236
+ VELT_COMMENT_SIDEBAR_FOCUSED_THREAD_BACK_BUTTON_V2: string;
237
+ VELT_COMMENT_SIDEBAR_FOCUSED_THREAD_DIALOG_CONTAINER_V2: string;
209
238
  VELT_COMMENT_BUBBLE: string;
210
239
  VELT_COMMENT_THREAD: string;
211
240
  VELT_COMMENT_PIN: string;
@@ -244,7 +273,64 @@ export declare class Constants {
244
273
  VELT_NOTIFICATIONS_HISTORY_PANEL: string;
245
274
  VELT_WIREFRAME: string;
246
275
  VELT_AUTOCOMPLETE: string;
276
+ VELT_AUTOCOMPLETE_PANEL: string;
277
+ VELT_AUTOCOMPLETE_OPTION: string;
278
+ VELT_AUTOCOMPLETE_OPTION_ICON: string;
279
+ VELT_AUTOCOMPLETE_OPTION_NAME: string;
280
+ VELT_AUTOCOMPLETE_OPTION_DESCRIPTION: string;
281
+ VELT_AUTOCOMPLETE_OPTION_ERROR_ICON: string;
282
+ VELT_AUTOCOMPLETE_GROUP_OPTION: string;
283
+ VELT_AUTOCOMPLETE_TOOL: string;
284
+ VELT_AUTOCOMPLETE_EMPTY: string;
247
285
  VELT_AUTOCOMPLETE_CHIP: string;
286
+ VELT_AUTOCOMPLETE_CHIP_TOOLTIP: string;
287
+ VELT_AUTOCOMPLETE_CHIP_TOOLTIP_ICON: string;
288
+ VELT_AUTOCOMPLETE_CHIP_TOOLTIP_NAME: string;
289
+ VELT_AUTOCOMPLETE_CHIP_TOOLTIP_DESCRIPTION: string;
290
+ VELT_AUTOCOMPLETE_CONTEXT_WRAPPER: string;
291
+ VELT_ACTIVITY_LOG: string;
292
+ VELT_ACTIVITY_LOG_HEADER: string;
293
+ VELT_ACTIVITY_LOG_HEADER_TITLE: string;
294
+ VELT_ACTIVITY_LOG_HEADER_CLOSE_BUTTON: string;
295
+ VELT_ACTIVITY_LOG_HEADER_FILTER: string;
296
+ VELT_ACTIVITY_LOG_HEADER_FILTER_TRIGGER: string;
297
+ VELT_ACTIVITY_LOG_HEADER_FILTER_TRIGGER_LABEL: string;
298
+ VELT_ACTIVITY_LOG_HEADER_FILTER_TRIGGER_ICON: string;
299
+ VELT_ACTIVITY_LOG_HEADER_FILTER_CONTENT: string;
300
+ VELT_ACTIVITY_LOG_HEADER_FILTER_CONTENT_ITEM: string;
301
+ VELT_ACTIVITY_LOG_HEADER_FILTER_CONTENT_ITEM_LABEL: string;
302
+ VELT_ACTIVITY_LOG_HEADER_FILTER_CONTENT_ITEM_ICON: string;
303
+ VELT_ACTIVITY_LOG_LOADING: string;
304
+ VELT_ACTIVITY_LOG_LIST: string;
305
+ VELT_ACTIVITY_LOG_LIST_DATE_GROUP: string;
306
+ VELT_ACTIVITY_LOG_LIST_DATE_GROUP_LABEL: string;
307
+ VELT_ACTIVITY_LOG_LIST_ITEM: string;
308
+ VELT_ACTIVITY_LOG_LIST_ITEM_ICON: string;
309
+ VELT_ACTIVITY_LOG_LIST_ITEM_AVATAR: string;
310
+ VELT_ACTIVITY_LOG_LIST_ITEM_CONTENT: string;
311
+ VELT_ACTIVITY_LOG_LIST_ITEM_CONTENT_USER: string;
312
+ VELT_ACTIVITY_LOG_LIST_ITEM_CONTENT_ACTION: string;
313
+ VELT_ACTIVITY_LOG_LIST_ITEM_CONTENT_TARGET: string;
314
+ VELT_ACTIVITY_LOG_LIST_ITEM_CONTENT_DETAIL: string;
315
+ VELT_ACTIVITY_LOG_LIST_ITEM_TIME: string;
316
+ VELT_ACTIVITY_LOG_LIST_SHOW_MORE: string;
317
+ VELT_ACTIVITY_LOG_EMPTY: string;
318
+ VELT_ACTIVITY_LOG_CONTEXT_WRAPPER: string;
319
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER: string;
320
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_ICON: string;
321
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_TEXT: string;
322
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN: string;
323
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_TRIGGER: string;
324
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_TRIGGER_LABEL: string;
325
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_TRIGGER_AVATAR_LIST: string;
326
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_TRIGGER_AVATAR_LIST_ITEM: string;
327
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_TRIGGER_AVATAR_LIST_REMAINING_COUNT: string;
328
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_TRIGGER_ICON: string;
329
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_CONTENT: string;
330
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_CONTENT_ITEM: string;
331
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_CONTENT_ITEM_ICON: string;
332
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_CONTENT_ITEM_LABEL: string;
333
+ VELT_COMMENT_DIALOG_VISIBILITY_BANNER_DROPDOWN_CONTENT_USER_PICKER: string;
248
334
  VELT_COMMENT_COMPOSER: string;
249
335
  VELT_SKELETON_LOADER: string;
250
336
  VELT_SHADOW_DOM_INTERNAL: string;
@@ -25,7 +25,11 @@ export declare enum ResolverActions {
25
25
  REACTION_ADD = "reaction.add",
26
26
  REACTION_DELETE = "reaction.delete",
27
27
  ATTACHMENT_ADD = "attachment.add",
28
- ATTACHMENT_DELETE = "attachment.delete"
28
+ ATTACHMENT_DELETE = "attachment.delete",
29
+ RECORDER_ANNOTATION_ADD = "recorder_annotation.add",
30
+ RECORDER_ANNOTATION_UPDATE = "recorder_annotation.update",
31
+ RECORDER_ANNOTATION_DELETE = "recorder_annotation.delete",
32
+ ACTIVITY_SAVE = "activity.save"
29
33
  }
30
34
  export declare const CommentEventTypes: {
31
35
  readonly ADD_COMMENT_ANNOTATION: "addCommentAnnotation";
@@ -60,9 +64,12 @@ export declare const CommentEventTypes: {
60
64
  readonly COMMENT_PIN_CLICKED: "commentPinClicked";
61
65
  readonly COMMENT_BUBBLE_CLICKED: "commentBubbleClicked";
62
66
  readonly COMMENT_TOOL_CLICK: "commentToolClick";
67
+ readonly COMMENT_TOOL_CLICKED: "commentToolClicked";
63
68
  readonly SIDEBAR_BUTTON_CLICK: "sidebarButtonClick";
69
+ readonly SIDEBAR_BUTTON_CLICKED: "sidebarButtonClicked";
64
70
  readonly ATTACHMENT_DOWNLOAD_CLICKED: "attachmentDownloadClicked";
65
71
  readonly COMMENT_SAVED: "commentSaved";
72
+ readonly COMMENT_SAVE_TRIGGERED: "commentSaveTriggered";
66
73
  readonly VISIBILITY_OPTION_CLICKED: "visibilityOptionClicked";
67
74
  };
68
75
  export declare const RecorderEventTypes: {
@@ -84,6 +91,9 @@ export declare const CoreEventTypes: {
84
91
  readonly COMMENT_RESOLVER: "commentResolver";
85
92
  readonly ATTACHMENT_RESOLVER: "attachmentResolver";
86
93
  readonly REACTION_RESOLVER: "reactionResolver";
94
+ readonly RECORDER_RESOLVER: "recorderResolver";
95
+ readonly NOTIFICATION_RESOLVER: "notificationResolver";
96
+ readonly ACTIVITY_RESOLVER: "activityResolver";
87
97
  readonly VELT_BUTTON_CLICK: "veltButtonClick";
88
98
  readonly USER_UPDATE: "userUpdate";
89
99
  readonly INIT_UPDATE: "initUpdate";
@@ -169,7 +179,8 @@ export declare enum Features {
169
179
  REWRITER = "rewriter",
170
180
  LIVE_SELECTION = "liveSelection",
171
181
  NOTIFICATION = "notification",
172
- REACTION = "reaction"
182
+ REACTION = "reaction",
183
+ ACTIVITY = "activity"
173
184
  }
174
185
  export declare enum AnalyticsFeatures {
175
186
  AREA = "area",
@@ -191,7 +202,7 @@ export declare enum AnalyticsFeatures {
191
202
  INLINE_COMMENT = "inlineComment",
192
203
  COMMENT_SIDEBAR = "commentSidebar"
193
204
  }
194
- export type FeatureType = 'area' | 'arrow' | 'audioHuddle' | 'comment' | 'cursor' | 'huddle' | 'liveStateSync' | 'presence' | 'recorder' | 'rewriter' | 'tag' | 'liveSelection' | 'notification' | 'reaction' | 'multiThread';
205
+ export type FeatureType = 'area' | 'arrow' | 'audioHuddle' | 'comment' | 'cursor' | 'huddle' | 'liveStateSync' | 'presence' | 'recorder' | 'rewriter' | 'tag' | 'liveSelection' | 'notification' | 'reaction' | 'multiThread' | 'activity';
195
206
  export type AssignToType = 'dropdown' | 'checkbox';
196
207
  export declare enum DeviceType {
197
208
  DESKTOP = "Desktop",
@@ -310,3 +321,13 @@ export type NotificationSettingsItemType = 'ALL' | 'MINE' | 'NONE' | string;
310
321
  * Type for notification settings layout
311
322
  */
312
323
  export type NotificationSettingsLayout = 'accordion' | 'dropdown';
324
+ /**
325
+ * Enum for comment visibility options in the visibility banner dropdown
326
+ */
327
+ export declare enum CommentVisibilityOption {
328
+ RESTRICTED_SELF = "restrictedSelf",
329
+ RESTRICTED_SELECTED_PEOPLE = "restrictedSelectedPeople",
330
+ ORGANIZATION_PRIVATE = "organizationPrivate",
331
+ PUBLIC = "public"
332
+ }
333
+ export type CommentVisibilityOptionType = `${CommentVisibilityOption}`;
package/models.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './app/utils/enums';
2
2
  export * from './app/models/data/anchor-record.data.model';
3
3
  export * from './app/models/data/attachment.model';
4
+ export * from './app/models/data/activity.data.model';
4
5
  export * from './app/models/data/area-annotation.data.model';
5
6
  export * from './app/models/data/arrow-annotation.data.model';
6
7
  export * from './app/models/data/base-metadata.data.model';
@@ -37,6 +38,7 @@ export * from './app/models/data/location.model';
37
38
  export * from './app/models/data/media-preview-config.data.model';
38
39
  export * from './app/models/data/multi-thread.data.model';
39
40
  export * from './app/models/data/notification.model';
41
+ export * from './app/models/data/notification-resolver.data.model';
40
42
  export * from './app/models/data/notifications-events.data.model';
41
43
  export * from './app/models/data/page-info.model';
42
44
  export * from './app/models/data/permission.data.model';
@@ -71,7 +73,9 @@ export * from './app/models/data/views.data.model';
71
73
  export * from './app/models/data/autocomplete.data.model';
72
74
  export * from './app/models/data/reaction-annotation.data.model';
73
75
  export * from './app/models/data/reaction-resolver.data.model';
76
+ export * from './app/models/data/recorder-resolver.data.model';
74
77
  export * from './app/models/data/attachment-resolver.data.model';
78
+ export * from './app/models/data/activity-resolver.data.model';
75
79
  export * from './app/models/data/reaction.data.model';
76
80
  export * from './app/models/data/organization-groups.data.model';
77
81
  export * from './app/models/data/organization-metadata.model';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veltdev/types",
3
- "version": "5.0.2-beta.1",
3
+ "version": "5.0.2-beta.10",
4
4
  "description": "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.",
5
5
  "homepage": "https://velt.dev",
6
6
  "keywords": [
package/types.d.ts CHANGED
@@ -17,4 +17,5 @@ export * from './app/models/element/notification-element.model';
17
17
  export * from './app/models/element/autocomplete-element.model';
18
18
  export * from './app/models/element/reaction-element.model';
19
19
  export * from './app/models/element/crdt-element.model';
20
+ export * from './app/models/element/activity-element.model';
20
21
  export * from './models';