@veltdev/sdk-staging 5.0.2-beta.4 → 5.0.2-beta.40

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 (38) 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 +26 -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/presence-user.data.model.d.ts +5 -0
  20. package/app/models/data/provider.data.model.d.ts +8 -1
  21. package/app/models/data/reaction-resolver.data.model.d.ts +3 -3
  22. package/app/models/data/recorder-annotation.data.model.d.ts +11 -0
  23. package/app/models/data/recorder-events.data.model.d.ts +3 -0
  24. package/app/models/data/recorder-resolver.data.model.d.ts +58 -0
  25. package/app/models/data/resolver.data.model.d.ts +1 -0
  26. package/app/models/data/rewriter-events.data.model.d.ts +40 -0
  27. package/app/models/data/user-resolver.data.model.d.ts +17 -1
  28. package/app/models/data/user.data.model.d.ts +2 -0
  29. package/app/models/element/activity-element.model.d.ts +33 -0
  30. package/app/models/element/comment-element.model.d.ts +28 -8
  31. package/app/models/element/crdt-element.model.d.ts +88 -1
  32. package/app/models/element/presence-element.model.d.ts +25 -0
  33. package/app/utils/constants.d.ts +153 -0
  34. package/app/utils/enums.d.ts +29 -3
  35. package/models.d.ts +5 -0
  36. package/package.json +1 -1
  37. package/types.d.ts +1 -0
  38. package/velt.js +115 -115
@@ -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
  */
@@ -83,4 +83,9 @@ export declare class PresenceUser {
83
83
  initial?: string;
84
84
  isTabAway?: boolean;
85
85
  isUserIdle?: boolean;
86
+ /**
87
+ * Whether this custom user is local-only (not persisted to DB).
88
+ * Only applicable to users added via addUser API.
89
+ */
90
+ localOnly?: boolean;
86
91
  }
@@ -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;
@@ -4,6 +4,8 @@ export interface TranscriptionDoneEvent extends RecorderData {
4
4
  }
5
5
  export interface RecordingDoneEvent extends RecorderData {
6
6
  }
7
+ export interface RecordingDoneLocalEvent extends RecorderData {
8
+ }
7
9
  export interface RecordingDeleteEvent extends RecorderData {
8
10
  }
9
11
  export interface RecordingEditDoneEvent extends RecorderData {
@@ -35,6 +37,7 @@ export interface RecordingSaveInitiatedEvent {
35
37
  export type RecorderEventTypesMap = {
36
38
  [RecorderEventTypes.TRANSCRIPTION_DONE]: TranscriptionDoneEvent;
37
39
  [RecorderEventTypes.RECORDING_DONE]: RecordingDoneEvent;
40
+ [RecorderEventTypes.RECORDING_DONE_LOCAL]: RecordingDoneLocalEvent;
38
41
  [RecorderEventTypes.RECORDING_EDIT_DONE]: RecordingEditDoneEvent;
39
42
  [RecorderEventTypes.DELETE_RECORDING]: RecordingDeleteEvent;
40
43
  [RecorderEventTypes.RECORDING_STARTED]: RecordingStartedEvent;
@@ -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;
@@ -0,0 +1,40 @@
1
+ import { TargetTextRange } from './target-text-range.data.model';
2
+ import { RewriterEventTypes } from '../../utils/enums';
3
+ export interface TextSelectedEvent {
4
+ selectionId: string;
5
+ text: string;
6
+ targetTextRange: TargetTextRange;
7
+ }
8
+ export interface RewriterAskAiRequest {
9
+ model: string;
10
+ prompt: string;
11
+ selectedText: string;
12
+ }
13
+ export interface RewriterReplaceTextRequest {
14
+ text: string;
15
+ event: TextSelectedEvent;
16
+ }
17
+ export interface RewriterAddCommentRequest {
18
+ text: string;
19
+ event: TextSelectedEvent;
20
+ }
21
+ export interface RewriterAskAiResponse {
22
+ text: string;
23
+ success: boolean;
24
+ error?: string;
25
+ }
26
+ export interface RewriterReplaceTextResponse {
27
+ success: boolean;
28
+ originalText: string;
29
+ replacedText: string;
30
+ error?: string;
31
+ }
32
+ export interface RewriterAddCommentResponse {
33
+ success: boolean;
34
+ annotationId?: string;
35
+ commentText?: string;
36
+ error?: string;
37
+ }
38
+ export type RewriterEventTypesMap = {
39
+ [RewriterEventTypes.TEXT_SELECTED]: TextSelectedEvent;
40
+ };
@@ -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
@@ -1385,6 +1385,16 @@ export declare class CommentElement {
1385
1385
  */
1386
1386
  public getComposerData: (request: GetComposerDataRequest) => ComposerTextChangeEvent | null;
1387
1387
 
1388
+ /**
1389
+ * To enable pin drag
1390
+ */
1391
+ public enablePinDrag: () => void;
1392
+
1393
+ /**
1394
+ * To disable pin drag
1395
+ */
1396
+ public disablePinDrag: () => void;
1397
+
1388
1398
  constructor();
1389
1399
  /**
1390
1400
  * Subscribe to comments on the current document.
@@ -1626,14 +1636,14 @@ export declare class CommentElement {
1626
1636
  private _disableStatus;
1627
1637
 
1628
1638
  /**
1629
- * To enable visibility option dropdown on comments
1639
+ * To enable visibility options on comments
1630
1640
  */
1631
- private _enableVisibilityOptionDropdown;
1641
+ private _enableVisibilityOptions;
1632
1642
 
1633
1643
  /**
1634
- * To disable visibility option dropdown on comments
1644
+ * To disable visibility options on comments
1635
1645
  */
1636
- private _disableVisibilityOptionDropdown;
1646
+ private _disableVisibilityOptions;
1637
1647
 
1638
1648
  /**
1639
1649
  * To enable feature to show resolve button
@@ -2741,4 +2751,14 @@ export declare class CommentElement {
2741
2751
  * @param type 'dropdown' | 'checkbox'
2742
2752
  */
2743
2753
  private _setAssignToType;
2754
+
2755
+ /**
2756
+ * To enable pin drag
2757
+ */
2758
+ private _enablePinDrag;
2759
+
2760
+ /**
2761
+ * To disable pin drag
2762
+ */
2763
+ private _disablePinDrag;
2744
2764
  }
@@ -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
@@ -50,6 +50,21 @@ export declare class PresenceElement {
50
50
  * Subscribe to presence events
51
51
  */
52
52
  on: <T extends keyof PresenceEventTypesMap>(action: T) => Observable<PresenceEventTypesMap[T]>;
53
+
54
+ /**
55
+ * Add a custom user to the presence list (e.g., an AI agent).
56
+ * The user will appear in presence alongside real users.
57
+ * @param request Object containing user data with at least userId required.
58
+ */
59
+ addUser: (request: { user: Partial<PresenceUser>, localOnly?: boolean }) => void;
60
+
61
+ /**
62
+ * Remove a previously added custom user from the presence list.
63
+ * @param request Object containing user data with at least userId required, and optional localOnly flag.
64
+ * @param request.localOnly If true, user is only removed locally (not removed from DB). Default: false.
65
+ */
66
+ removeUser: (request: { user: Partial<PresenceUser>, localOnly?: boolean }) => void;
67
+
53
68
  constructor();
54
69
  /**
55
70
  * Subscribe to a list of all online users who are either active or inactive on the current document.
@@ -95,4 +110,14 @@ export declare class PresenceElement {
95
110
  * Subscribe to presence events
96
111
  */
97
112
  private _on;
113
+
114
+ /**
115
+ * Add a custom user to the presence list
116
+ */
117
+ private _addUser;
118
+
119
+ /**
120
+ * Remove a custom user from the presence list
121
+ */
122
+ private _removeUser;
98
123
  }