@veltdev/types 6.0.0-beta.1 → 6.0.0-beta.11

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 (30) hide show
  1. package/app/client/snippyly.model.d.ts +12 -3
  2. package/app/models/data/comment-events.data.model.d.ts +39 -0
  3. package/app/models/data/config.data.model.d.ts +154 -0
  4. package/app/models/data/reaction-resolver.data.model.d.ts +1 -0
  5. package/app/models/data/selection.model.d.ts +10 -8
  6. package/app/models/data/user-resolver.data.model.d.ts +11 -9
  7. package/app/models/data/user.data.model.d.ts +21 -18
  8. package/app/models/element/activity-element.model.d.ts +0 -1
  9. package/app/models/element/area-element.model.d.ts +0 -1
  10. package/app/models/element/arrow-element.model.d.ts +1 -2
  11. package/app/models/element/autocomplete-element.model.d.ts +0 -1
  12. package/app/models/element/comment-element.model.d.ts +103 -77
  13. package/app/models/element/contact-element.model.d.ts +1 -2
  14. package/app/models/element/crdt-element.model.d.ts +1 -1
  15. package/app/models/element/cursor-element.model.d.ts +1 -2
  16. package/app/models/element/huddle-element.model.d.ts +1 -2
  17. package/app/models/element/live-state-sync-element.model.d.ts +1 -1
  18. package/app/models/element/notification-element.model.d.ts +33 -2
  19. package/app/models/element/presence-element.model.d.ts +32 -11
  20. package/app/models/element/reaction-element.model.d.ts +1 -1
  21. package/app/models/element/recorder-element.model.d.ts +21 -2
  22. package/app/models/element/rewriter-element.model.d.ts +43 -1
  23. package/app/models/element/selection-element.model.d.ts +1 -1
  24. package/app/models/element/suggestion-element.model.d.ts +0 -1
  25. package/app/models/element/tag-element.model.d.ts +7 -8
  26. package/app/models/element/views-element.model.d.ts +1 -1
  27. package/app/utils/enums.d.ts +97 -83
  28. package/package.json +8 -2
  29. package/types.d.ts +22 -22
  30. package/velt.d.ts +1 -2
@@ -1,9 +1,8 @@
1
- // @ts-nocheck
2
1
  import { Observable } from "rxjs";
3
2
  import { Config, DisableLogsConfig } from "../models/data/config.data.model";
4
3
  import { DocumentUser } from "../models/data/document-user.data.model";
5
4
  import { Location } from "../models/data/location.model";
6
- import { User, UserOptions, VeltAuthProvider, VeltPermissionProvider } from "../models/data/user.data.model";
5
+ import { User, Options, VeltAuthProvider, VeltPermissionProvider } from "../models/data/user.data.model";
7
6
  import { CustomCss } from "../models/data/custom-css.data.model";
8
7
  import { ActivityElement } from "../models/element/activity-element.model";
9
8
  import { AreaElement } from "../models/element/area-element.model";
@@ -40,7 +39,7 @@ import { HeartbeatConfig, Heartbeat, GetHeartbeatResponse } from "../models/data
40
39
  export declare class Snippyly {
41
40
  constructor();
42
41
  initConfig: (apiKey: string, config?: Config) => void;
43
- identify: (user: User, userOptions?: UserOptions) => Promise<unknown>;
42
+ identify: (user: User, userOptions?: Options) => Promise<unknown>;
44
43
  setVeltAuthProvider: (veltAuthProvider: VeltAuthProvider) => Promise<User | null>;
45
44
  /**
46
45
  * Tell us who the currently logged in user is.
@@ -284,6 +283,16 @@ export declare class Snippyly {
284
283
  */
285
284
  setDarkMode: (darkMode: boolean) => void;
286
285
 
286
+ /**
287
+ * Removes (or restores) ALL Velt visual styling at once — headless mode.
288
+ * By default a derived "functional-only" layer is kept so Velt UI retains
289
+ * its layout, positioning and show/hide behavior. Pass
290
+ * `keepFunctionalStyles: false` for total removal. Fully reversible.
291
+ * @param value {boolean} true = unstyled, false = styled (default)
292
+ * @param config {object} { keepFunctionalStyles?: boolean } defaults to true
293
+ */
294
+ setUnstyledMode: (value: boolean, config?: { keepFunctionalStyles?: boolean }) => void;
295
+
287
296
  /**
288
297
  * To check if user allowed in provided document or not.
289
298
  */
@@ -89,6 +89,11 @@ export type CommentEventTypesMap = {
89
89
  [CommentEventTypes.COMMENT_TOOL_CLICKED]: CommentToolClickedEvent;
90
90
  [CommentEventTypes.SIDEBAR_BUTTON_CLICK]: SidebarButtonClickEvent;
91
91
  [CommentEventTypes.SIDEBAR_BUTTON_CLICKED]: SidebarButtonClickedEvent;
92
+ [CommentEventTypes.SIDEBAR_OPEN]: SidebarOpenEvent;
93
+ [CommentEventTypes.SIDEBAR_CLOSE]: SidebarCloseEvent;
94
+ [CommentEventTypes.FULLSCREEN_CLICK]: FullscreenClickEvent;
95
+ [CommentEventTypes.COMMENT_CLICK]: CommentClickEvent;
96
+ [CommentEventTypes.COMMENT_NAVIGATION_BUTTON_CLICK]: CommentNavigationButtonClickEvent;
92
97
  [CommentEventTypes.ATTACHMENT_DOWNLOAD_CLICKED]: AttachmentDownloadClickedEvent;
93
98
  [CommentEventTypes.COMMENT_SAVED]: CommentSavedEvent;
94
99
  [CommentEventTypes.COMMENT_SAVE_TRIGGERED]: CommentSaveTriggeredEvent;
@@ -347,6 +352,40 @@ export interface SidebarButtonClickEvent {
347
352
  }
348
353
  export interface SidebarButtonClickedEvent extends SidebarButtonClickEvent {
349
354
  }
355
+ /** Fired when the comment sidebar opens. Subscribe via `commentElement.on('sidebarOpen')`. */
356
+ export interface SidebarOpenEvent {
357
+ metadata?: VeltEventMetadata;
358
+ }
359
+ /** Fired when the comment sidebar closes. Subscribe via `commentElement.on('sidebarClose')`. */
360
+ export interface SidebarCloseEvent {
361
+ metadata?: VeltEventMetadata;
362
+ }
363
+ /**
364
+ * Fired when the sidebar fullscreen toggle is clicked. Subscribe via
365
+ * `commentElement.on('fullscreenClick')`. `fullScreen` is the NEW state after the toggle.
366
+ * (Also surfaced as the `onFullscreenClick` @Output on the sidebar component.)
367
+ */
368
+ export interface FullscreenClickEvent {
369
+ fullScreen: boolean;
370
+ metadata?: VeltEventMetadata;
371
+ }
372
+ /** Fired when a comment is clicked in the sidebar list. Subscribe via `commentElement.on('commentClick')`. */
373
+ export interface CommentClickEvent {
374
+ documentId?: string | null;
375
+ location?: Location | null;
376
+ targetElementId?: string | null;
377
+ context?: {
378
+ [key: string]: any;
379
+ };
380
+ annotation?: CommentAnnotation;
381
+ metadata?: VeltEventMetadata;
382
+ }
383
+ /**
384
+ * Fired when the navigation ("go to") button on a sidebar comment is clicked.
385
+ * Subscribe via `commentElement.on('commentNavigationButtonClick')`.
386
+ */
387
+ export interface CommentNavigationButtonClickEvent extends CommentClickEvent {
388
+ }
350
389
  export interface AttachmentDownloadClickedEvent {
351
390
  annotationId: string;
352
391
  commentAnnotation: CommentAnnotation;
@@ -66,6 +66,160 @@ export declare class Config {
66
66
  * Configuration for routing all traffic through reverse proxies.
67
67
  */
68
68
  proxyConfig?: ProxyConfig;
69
+ /**
70
+ * Self-hosting / on-prem backend configuration. When set, a deployment can point
71
+ * Velt-infra endpoints (Firebase config, cloud-function URLs, the notifications-hub
72
+ * RTDB URL, the regional setEncryptedData endpoints) at the customer's own infra.
73
+ *
74
+ * Every field is OPTIONAL and every unspecified value falls back to the per-build
75
+ * default in `src/environments/*` — so an existing SaaS build with no `selfHosted`
76
+ * config behaves exactly as before (behavior-preserving).
77
+ */
78
+ selfHosted?: SelfHostedConfig;
79
+ }
80
+ /**
81
+ * VENDORED from the backend deployment-profile manifest — source of truth:
82
+ * `shared-firebase-function` repo, `functions/src/deployment-profiles/modules.manifest.ts`
83
+ * (`DeploymentModuleId`, 12 modules; backend plan §8.3; restructured 2026-07-10 in backend
84
+ * iteration-10, owner-directed). Do NOT add, remove, or rename ids here without a matching
85
+ * manifest change — the endpoint→module map in `endpoints.service.ts` and its cross-repo
86
+ * drift-fence test key off this list.
87
+ *
88
+ * 2026-07-10 restructure summary:
89
+ * - DELETED (absorbed into `core`): `notifications`, `analytics-telemetry`, `console`.
90
+ * The agents RUNTIME also moved to `core` (`agents` keeps only the approval engine).
91
+ * - NEW `rest-api`: the customer-facing REST CFs (`commentsapibe`, `documentsapibe`, …),
92
+ * now opt-in (hardDep `core`). None of the SDK's own runtime endpoints live there.
93
+ * - NEW `legacy-v1`: the ~55 standalone V1 REST CFs — EXCLUDED, never provisioned on any
94
+ * self-hosted profile, so this id never appears in a valid `deploymentProfile`.
95
+ * - `core` is the SOLE mandatory module.
96
+ */
97
+ export declare const DEPLOYMENT_MODULE_IDS: readonly ["core", "rest-api", "recorder-media", "ai", "agents", "huddle-webrtc", "integrations-workflow", "superflow", "billing-stripe", "migrations", "legacy-v1", "velt-internal"];
98
+ /** A backend feature-module id (see {@link DEPLOYMENT_MODULE_IDS} for provenance). */
99
+ export type DeploymentModuleId = typeof DEPLOYMENT_MODULE_IDS[number];
100
+ /**
101
+ * Per-endpoint overrides for the cloud-function fleet. Each value is a fully-configurable
102
+ * ABSOLUTE base URL — do NOT assume the `*.cloudfunctions.net` shape (Tier A now serves the
103
+ * fleet from Cloud Run with arbitrary hostnames). Keys mirror `environment.cloudFunction.*`.
104
+ * Unspecified keys fall back to the `environment` default.
105
+ */
106
+ export interface SelfHostedCloudFunctionConfig {
107
+ validateClient?: string;
108
+ getPlanDetails?: string;
109
+ sa?: string;
110
+ getIceServers?: string;
111
+ chatgptCompletion?: string;
112
+ rewriterAskAi?: string;
113
+ whisperTranscription?: string;
114
+ getAllowedDocuments?: string;
115
+ getNotificationsForDocuments?: string;
116
+ videoBackend?: string;
117
+ convertRecording?: string;
118
+ processRecording?: string;
119
+ sdkProxy?: string;
120
+ screenshot?: string;
121
+ /**
122
+ * Single override for the write endpoint that collapses the ×5 regional
123
+ * `setEncryptedData` split — when set, it is used for ALL regions. Self-hosted
124
+ * deployments typically run a single region.
125
+ */
126
+ setEncryptedData?: string;
127
+ /**
128
+ * Optional per-region overrides (used only if the single `setEncryptedData` above is
129
+ * unset). Keys are the `FirebaseRegion` values (`usCentral1`, `asiaSouthEast1`, ...).
130
+ */
131
+ regions?: {
132
+ [region: string]: {
133
+ setEncryptedData?: string;
134
+ };
135
+ };
136
+ }
137
+ export interface SelfHostedConfig {
138
+ /**
139
+ * Strict (full self-hosted) mode. Default `false`.
140
+ *
141
+ * - `false` (hybrid / staged rollout): any endpoint WITHOUT an injected override falls
142
+ * back to the Velt default in `src/environments/*` — useful for testing one
143
+ * self-hosted endpoint at a time while the rest stay on Velt SaaS.
144
+ * - `true` (full self-hosting / data sovereignty): there is NO fallback to Velt. An
145
+ * endpoint without an injected override resolves to an inert
146
+ * `velt://self-hosted-disabled/<endpoint>` sentinel that can never produce network
147
+ * egress — the feature behind it is effectively disabled. Missing CORE endpoints
148
+ * (`validateClient`, `sdkProxy`, `setEncryptedData`, `getNotificationsForDocuments`,
149
+ * the notifications DB URL, `firebaseConfig`) are additionally
150
+ * reported once as a loud misconfiguration error, since the SDK cannot function
151
+ * without them (plan §4.3: every endpoint runs in the customer cloud or is disabled).
152
+ */
153
+ strict?: boolean;
154
+ /**
155
+ * Firebase config override (deep-merged over `environment.firebaseConfig`). Injected
156
+ * keys win; unspecified keys keep the `environment` default. Per-tenant auth-token
157
+ * claims still override this at runtime (within-project tenant routing is preserved).
158
+ *
159
+ * NOTE (strict mode): this is the ONE value that still falls back to the `environment`
160
+ * default when unset, because an undefined base config would break the Firebase
161
+ * bootstrap chain outright. The miss is still reported as a core misconfiguration, and
162
+ * the `identify()` response config overrides this base at runtime anyway. Making the
163
+ * bootstrap itself injectable is the tracked Phase A gap (`app.module.ts` static
164
+ * `initializeApp`).
165
+ */
166
+ firebaseConfig?: Partial<FirebaseOptions>;
167
+ /** Override for the notifications-hub RTDB URL (`firebaseNotificationsDatabaseURL`). */
168
+ firebaseNotificationsDatabaseURL?: string;
169
+ /** Per-endpoint cloud-function URL overrides. */
170
+ cloudFunction?: SelfHostedCloudFunctionConfig;
171
+ /**
172
+ * Enables defensive consumption of the portable-backend `identify()` response
173
+ * (`{ token, backend, wsEndpoint, apiEndpoint }`, backend §6.1). Default `false`:
174
+ * when false, a portable response is ignored and the existing Firebase path runs
175
+ * unchanged — no behavior change when the backend does not send it.
176
+ */
177
+ enablePortableBackend?: boolean;
178
+ /**
179
+ * The RESOLVED module closure of the deployment profile (backend plan §8.3) — the
180
+ * enabled-module-id list the backend deploy tooling emits in
181
+ * `velt-deployment-profile.json`. The customer's tooling inlines it at init; the SDK
182
+ * does NOT fetch it at runtime and does NOT re-resolve module dependencies (the
183
+ * backend's `profile-resolver.ts` already computed the fail-closed closure).
184
+ *
185
+ * Semantics (ratified — SDK-side synthesis, no Tier A server router):
186
+ * - Absent, not an array, or an EMPTY array (a valid resolved closure is never empty):
187
+ * ALL modules enabled — byte-identical to today for SaaS and existing selfHosted
188
+ * configs.
189
+ * - Non-empty: LITERAL membership — any endpoint whose module is NOT in the list
190
+ * resolves to the inert `velt://self-hosted-disabled/*` sentinel, so the denial
191
+ * normalizer synthesizes `'unimplemented'` locally with zero egress. Works with or
192
+ * without `strict`. Unknown/typo'd ids enable nothing (fail-closed, mirroring the
193
+ * backend resolver — a malformed profile must not silently re-open Velt egress).
194
+ * - A profile opt-out is authoritative: it wins over an injected endpoint URL, and its
195
+ * endpoints degrade silently even when classified `core` (opt-out ≠ misconfiguration
196
+ * — they are excluded from the strict-mode core-misconfiguration report).
197
+ */
198
+ deploymentProfile?: DeploymentModuleId[];
199
+ /**
200
+ * The `dataRegions` field of the `velt-deployment-profile.json` v1 document (additive
201
+ * 2026-07-10, GTK-005-safe): which regional `setencrypteddata*` variants the deployment
202
+ * provisioned. Inlined by the customer's tooling alongside {@link deploymentProfile}.
203
+ *
204
+ * - `undefined` / `null` — no region filter (all regional variants provisioned; the
205
+ * SaaS shape). `null` and `[]` are DIFFERENT fleets — never coalesce them.
206
+ * - `[]` — ONLY the base `setencrypteddata` (in the deployment's own region) exists.
207
+ * - `['europe-west1', …]` — the base plus the variants for exactly those GCP regions
208
+ * (known: `europe-west1`, `asia-southeast1`, `australia-southeast1`,
209
+ * `asia-northeast1`).
210
+ *
211
+ * The SDK uses this as a pre-call provisioning check in
212
+ * `EndpointsService.getSetEncryptedDataUrl`: a tenant routed to an UNPROVISIONED
213
+ * regional variant degrades to the base `setEncryptedData` resolution instead of
214
+ * calling a URL that would 404.
215
+ *
216
+ * The filter is AUTHORITATIVE over injected per-region URLs (mirroring how a
217
+ * `deploymentProfile` opt-out wins over an injected endpoint URL): an injected
218
+ * `cloudFunction.regions[X]` override for a region excluded by `dataRegions` is
219
+ * never consulted — the write resolves through the base slot. Don't inject overrides
220
+ * for regions the deployment did not provision.
221
+ */
222
+ dataRegions?: string[] | null;
69
223
  }
70
224
  export interface ProxyConfig {
71
225
  /** Custom host for the Velt CDN (e.g., 'cdn-proxy.customer.com') */
@@ -39,4 +39,5 @@ export interface PartialReactionAnnotation {
39
39
  metadata?: BaseMetadata;
40
40
  icon?: string;
41
41
  from?: PartialUser;
42
+ [key: string]: any;
42
43
  }
@@ -21,14 +21,16 @@ export declare class Selection {
21
21
  pageInfo: PageInfo;
22
22
  timestamp: number;
23
23
  }
24
- export declare enum UserIndicatorPosition {
25
- Start = "start",
26
- End = "end"
27
- }
28
- export declare enum UserIndicatorType {
29
- Avatar = "avatar",
30
- Label = "label"
31
- }
24
+ export declare const UserIndicatorPosition: {
25
+ readonly Start: "start";
26
+ readonly End: "end";
27
+ };
28
+ export type UserIndicatorPosition = (typeof UserIndicatorPosition)[keyof typeof UserIndicatorPosition];
29
+ export declare const UserIndicatorType: {
30
+ readonly Avatar: "avatar";
31
+ readonly Label: "label";
32
+ };
33
+ export type UserIndicatorType = (typeof UserIndicatorType)[keyof typeof UserIndicatorType];
32
34
  export declare class LiveSelectionData {
33
35
  [userIdHash: string]: Selection;
34
36
  }
@@ -61,12 +61,14 @@ export interface GetUserPermissionsResponse {
61
61
  };
62
62
  };
63
63
  }
64
- export declare enum UserPermissionAccessRole {
65
- EDITOR = "editor",
66
- VIEWER = "viewer"
67
- }
68
- export declare enum UserPermissionAccessRoleResult {
69
- DOES_NOT_EXIST = "does_not_exist",
70
- PERMISSION_DENIED = "permission_denied",
71
- SOMETHING_WENT_WRONG = "something_went_wrong"
72
- }
64
+ export declare const UserPermissionAccessRole: {
65
+ readonly EDITOR: "editor";
66
+ readonly VIEWER: "viewer";
67
+ };
68
+ export type UserPermissionAccessRole = (typeof UserPermissionAccessRole)[keyof typeof UserPermissionAccessRole];
69
+ export declare const UserPermissionAccessRoleResult: {
70
+ readonly DOES_NOT_EXIST: "does_not_exist";
71
+ readonly PERMISSION_DENIED: "permission_denied";
72
+ readonly SOMETHING_WENT_WRONG: "something_went_wrong";
73
+ };
74
+ export type UserPermissionAccessRoleResult = (typeof UserPermissionAccessRoleResult)[keyof typeof UserPermissionAccessRoleResult];
@@ -125,18 +125,20 @@ export interface VeltAuthProvider {
125
125
  generateToken?: () => Promise<string>;
126
126
  onError?: (err: unknown) => void;
127
127
  }
128
- export declare enum RevokeAccessOnType {
129
- DOCUMENT_UNSET = "document_unset",
130
- USER_LOGOUT = "user_logout"
131
- }
132
- export declare enum PermissionSource {
133
- SET_DOCUMENTS = "setDocuments",
134
- IDENTIFY = "identify",
135
- GET_NOTIFICATIONS = "getNotifications",
136
- SET_NOTIFICATIONS = "setNotifications",
137
- REVOKE_ACCESS_ON_USER_LOGOUT = "revokeAccessOnUserLogout",
138
- REVOKE_ACCESS_ON_DOCUMENT_UNSET = "revokeAccessOnDocumentUnset"
139
- }
128
+ export declare const RevokeAccessOnType: {
129
+ readonly DOCUMENT_UNSET: "document_unset";
130
+ readonly USER_LOGOUT: "user_logout";
131
+ };
132
+ export type RevokeAccessOnType = (typeof RevokeAccessOnType)[keyof typeof RevokeAccessOnType];
133
+ export declare const PermissionSource: {
134
+ readonly SET_DOCUMENTS: "setDocuments";
135
+ readonly IDENTIFY: "identify";
136
+ readonly GET_NOTIFICATIONS: "getNotifications";
137
+ readonly SET_NOTIFICATIONS: "setNotifications";
138
+ readonly REVOKE_ACCESS_ON_USER_LOGOUT: "revokeAccessOnUserLogout";
139
+ readonly REVOKE_ACCESS_ON_DOCUMENT_UNSET: "revokeAccessOnDocumentUnset";
140
+ };
141
+ export type PermissionSource = (typeof PermissionSource)[keyof typeof PermissionSource];
140
142
  export interface RevokeAccessOn {
141
143
  type: RevokeAccessOnType;
142
144
  revokeOrganizationAccess?: boolean;
@@ -192,12 +194,13 @@ export interface PermissionResolverRequest {
192
194
  requests: PermissionQuery[];
193
195
  };
194
196
  }
195
- export declare enum PermissionResourceType {
196
- FOLDER = "folder",
197
- DOCUMENT = "document",
198
- ORGANIZATION = "organization",
199
- CONTEXT = "context"
200
- }
197
+ export declare const PermissionResourceType: {
198
+ readonly FOLDER: "folder";
199
+ readonly DOCUMENT: "document";
200
+ readonly ORGANIZATION: "organization";
201
+ readonly CONTEXT: "context";
202
+ };
203
+ export type PermissionResourceType = (typeof PermissionResourceType)[keyof typeof PermissionResourceType];
201
204
  export interface PermissionQuery {
202
205
  userId: string;
203
206
  resource: {
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  import { Observable } from "rxjs";
3
2
  import { ActivityRecord, ActivitySubscribeConfig, CreateActivityData } from "../data/activity.data.model";
4
3
 
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  export declare class AreaElement {
3
2
  /**
4
3
  * To enable area feature
@@ -1,10 +1,9 @@
1
- // @ts-nocheck
2
1
  export declare class ArrowElement {
3
2
  /**
4
3
  * To allow arrow in specific elements only
5
4
  * @param elementIds Element ids to be allowed for arrow
6
5
  */
7
- public allowedElementIds: (elementIds: string[]) => any;
6
+ public allowedElementIds: (elementIds: string[]) => void;
8
7
 
9
8
  constructor();
10
9
 
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  import { Observable } from "rxjs";
3
2
  import { AutocompleteData, AutocompleteChipData } from "../data/autocomplete.data.model";
4
3
  export declare class AutocompleteElement {