@mentra/sdk 2.1.2-alpha.1 โ†’ 2.1.3

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.
@@ -111,20 +111,26 @@ export declare class LayoutManager {
111
111
  /**
112
112
  * ๐Ÿ“‡ Shows a bitmap
113
113
  *
114
- * @param data - base64 encoded bitmap data
114
+ * Uses the proven animation system internally for proper L/R eye synchronization.
115
+ * This ensures single bitmap displays work consistently with the same
116
+ * hardware-optimized timing as animations.
117
+ *
118
+ * @param data - hex or base64 encoded bitmap data
115
119
  * @param options - Optional parameters (view, duration)
116
120
  *
117
121
  * @example
118
122
  * ```typescript
119
123
  * layouts.showBitmapView(
120
- * yourBase64EncodedBitmapDataString
124
+ * yourHexOrBase64EncodedBitmapDataString
121
125
  * );
122
126
  * ```
123
127
  */
124
128
  showBitmapView(data: string, options?: {
125
129
  view?: ViewType;
126
130
  durationMs?: number;
127
- }): void;
131
+ }): {
132
+ stop: () => void;
133
+ };
128
134
  /**
129
135
  * ๐Ÿ“Š Shows a dashboard card with left and right text
130
136
  *
@@ -146,5 +152,59 @@ export declare class LayoutManager {
146
152
  view?: ViewType;
147
153
  durationMs?: number;
148
154
  }): void;
155
+ /**
156
+ * ๐Ÿงน Clears the display
157
+ *
158
+ * Best for:
159
+ * - Clearing previous content
160
+ * - Resetting display state
161
+ * - Starting fresh
162
+ *
163
+ * @param options - Optional parameters (view)
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * layouts.clearView();
168
+ * layouts.clearView({ view: ViewType.DASHBOARD });
169
+ * ```
170
+ */
171
+ clearView(options?: {
172
+ view?: ViewType;
173
+ }): void;
174
+ /**
175
+ * ๐ŸŽฌ Shows an animated sequence of bitmap images (iOS-controlled timing)
176
+ *
177
+ * Sends complete animation package to iOS for device-controlled timing.
178
+ * This provides superior performance and synchronization by letting
179
+ * the device control the display timing directly.
180
+ *
181
+ * Best for:
182
+ * - Smooth high-performance animations
183
+ * - Precise timing control
184
+ * - Synchronized left/right display
185
+ * - EvenDemo-quality performance
186
+ *
187
+ * @param bitmapDataArray - Array of bitmap data strings (hex or base64 encoded)
188
+ * @param intervalMs - Time between frames in milliseconds (default: 1650ms)
189
+ * @param repeat - Whether to loop the animation continuously (default: false)
190
+ * @param options - Optional parameters (view)
191
+ *
192
+ * @example
193
+ * ```typescript
194
+ * // Device-controlled animation (recommended)
195
+ * const frames = ['hexdata1', 'hexdata2', 'hexdata3'];
196
+ * layouts.showBitmapAnimation(frames, 1650, true);
197
+ *
198
+ * // Single-cycle animation
199
+ * layouts.showBitmapAnimation(loadingFrames, 1650, false);
200
+ * ```
201
+ *
202
+ * @returns Animation controller object with stop() method
203
+ */
204
+ showBitmapAnimation(bitmapDataArray: string[], intervalMs?: number, repeat?: boolean, options?: {
205
+ view?: ViewType;
206
+ }): {
207
+ stop: () => void;
208
+ };
149
209
  }
150
210
  //# sourceMappingURL=layouts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../../src/app/session/layouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,cAAc,EAOd,QAAQ,EAGT,MAAM,aAAa,CAAC;AAErB,qBAAa,aAAa;IAQtB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IARrB;;;;;OAKG;gBAEO,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI;IAGxD;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAmG1B;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAC;IAuCnD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAcpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAclD;;;;;;;;;;;;KAYC;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAapD;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAarD"}
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../../src/app/session/layouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,cAAc,EAOd,QAAQ,EAKT,MAAM,aAAa,CAAC;AAErB,qBAAa,aAAa;IAQtB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IARrB;;;;;OAKG;gBAEO,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI;IAGxD;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAuG1B;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAC;IAuCnD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAcpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAclD;;;;;;;;;;;;;;;;KAgBC;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;cA0HzC,MAAM,IAAI;;IA/FrB;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAcpD;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE;IAUvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,mBAAmB,CACjB,eAAe,EAAE,MAAM,EAAE,EACzB,UAAU,GAAE,MAAa,EACzB,MAAM,GAAE,OAAe,EACvB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,GAC5B;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE;CA8BxB"}
@@ -96,6 +96,9 @@ class LayoutManager {
96
96
  throw new Error("Bitmap data is too large (>1MB), please reduce size");
97
97
  }
98
98
  break;
99
+ case types_1.LayoutType.CLEAR_VIEW:
100
+ // ClearView has no additional validation needed
101
+ break;
99
102
  }
100
103
  // Validate view type
101
104
  if (view !== types_1.ViewType.MAIN && view !== types_1.ViewType.DASHBOARD) {
@@ -236,22 +239,38 @@ class LayoutManager {
236
239
  /**
237
240
  * ๐Ÿ“‡ Shows a bitmap
238
241
  *
239
- * @param data - base64 encoded bitmap data
242
+ * Uses the proven animation system internally for proper L/R eye synchronization.
243
+ * This ensures single bitmap displays work consistently with the same
244
+ * hardware-optimized timing as animations.
245
+ *
246
+ * @param data - hex or base64 encoded bitmap data
240
247
  * @param options - Optional parameters (view, duration)
241
248
  *
242
249
  * @example
243
250
  * ```typescript
244
251
  * layouts.showBitmapView(
245
- * yourBase64EncodedBitmapDataString
252
+ * yourHexOrBase64EncodedBitmapDataString
246
253
  * );
247
254
  * ```
248
255
  */
249
256
  showBitmapView(data, options) {
250
- const layout = {
251
- layoutType: types_1.LayoutType.BITMAP_VIEW,
252
- data
253
- };
254
- this.sendMessage(this.createDisplayEvent(layout, options?.view, options?.durationMs));
257
+ // Use the proven animation system for single frame display
258
+ // This ensures proper L/R eye synchronization that works with
259
+ // the optimized iOS BLE transmission system
260
+ const duration = options?.durationMs || 5000; // Default 5 seconds
261
+ const frameInterval = 1650; // Use same interval as working animations
262
+ // Create short multi-frame animation for better L/R sync
263
+ // Repeat the same frame a few times to mimic continuous animation behavior
264
+ const frames = [data, data, data]; // Triple the frame for stability
265
+ const animation = this.showBitmapAnimation(frames, // Multi-frame array (same image repeated)
266
+ frameInterval, // Use proven 1650ms interval
267
+ false, // Don't repeat infinitely
268
+ { view: options?.view });
269
+ // Auto-stop after duration
270
+ setTimeout(() => {
271
+ animation.stop();
272
+ }, duration);
273
+ return animation;
255
274
  }
256
275
  /**
257
276
  * ๐Ÿ“Š Shows a dashboard card with left and right text
@@ -278,5 +297,80 @@ class LayoutManager {
278
297
  };
279
298
  this.sendMessage(this.createDisplayEvent(layout, options?.view || types_1.ViewType.DASHBOARD, options?.durationMs));
280
299
  }
300
+ /**
301
+ * ๐Ÿงน Clears the display
302
+ *
303
+ * Best for:
304
+ * - Clearing previous content
305
+ * - Resetting display state
306
+ * - Starting fresh
307
+ *
308
+ * @param options - Optional parameters (view)
309
+ *
310
+ * @example
311
+ * ```typescript
312
+ * layouts.clearView();
313
+ * layouts.clearView({ view: ViewType.DASHBOARD });
314
+ * ```
315
+ */
316
+ clearView(options) {
317
+ const layout = {
318
+ layoutType: types_1.LayoutType.CLEAR_VIEW
319
+ };
320
+ this.sendMessage(this.createDisplayEvent(layout, options?.view));
321
+ }
322
+ /**
323
+ * ๐ŸŽฌ Shows an animated sequence of bitmap images (iOS-controlled timing)
324
+ *
325
+ * Sends complete animation package to iOS for device-controlled timing.
326
+ * This provides superior performance and synchronization by letting
327
+ * the device control the display timing directly.
328
+ *
329
+ * Best for:
330
+ * - Smooth high-performance animations
331
+ * - Precise timing control
332
+ * - Synchronized left/right display
333
+ * - EvenDemo-quality performance
334
+ *
335
+ * @param bitmapDataArray - Array of bitmap data strings (hex or base64 encoded)
336
+ * @param intervalMs - Time between frames in milliseconds (default: 1650ms)
337
+ * @param repeat - Whether to loop the animation continuously (default: false)
338
+ * @param options - Optional parameters (view)
339
+ *
340
+ * @example
341
+ * ```typescript
342
+ * // Device-controlled animation (recommended)
343
+ * const frames = ['hexdata1', 'hexdata2', 'hexdata3'];
344
+ * layouts.showBitmapAnimation(frames, 1650, true);
345
+ *
346
+ * // Single-cycle animation
347
+ * layouts.showBitmapAnimation(loadingFrames, 1650, false);
348
+ * ```
349
+ *
350
+ * @returns Animation controller object with stop() method
351
+ */
352
+ showBitmapAnimation(bitmapDataArray, intervalMs = 1650, repeat = false, options) {
353
+ // Validation
354
+ if (!Array.isArray(bitmapDataArray) || bitmapDataArray.length === 0) {
355
+ throw new Error("showBitmapAnimation requires a non-empty array of bitmap data");
356
+ }
357
+ // Send complete animation package to iOS for device-controlled timing
358
+ const layout = {
359
+ layoutType: types_1.LayoutType.BITMAP_ANIMATION,
360
+ frames: bitmapDataArray,
361
+ interval: intervalMs,
362
+ repeat: repeat
363
+ };
364
+ this.sendMessage(this.createDisplayEvent(layout, options?.view));
365
+ console.log(`๐ŸŽฌ Sent batched animation to iOS: ${bitmapDataArray.length} frames at ${intervalMs}ms${repeat ? ' (repeating)' : ''}`);
366
+ // Return controller for compatibility
367
+ return {
368
+ stop: () => {
369
+ // Send stop command to iOS
370
+ this.clearView();
371
+ console.log('๐Ÿ›‘ Animation stop requested');
372
+ }
373
+ };
374
+ }
281
375
  }
282
376
  exports.LayoutManager = LayoutManager;
package/dist/index.d.ts CHANGED
@@ -4,6 +4,8 @@ export * from './types/messages/base';
4
4
  export * from './types/messages/glasses-to-cloud';
5
5
  export * from './types/messages/cloud-to-glasses';
6
6
  export * from './types/messages/app-to-cloud';
7
+ export * from "./utils/bitmap-utils";
8
+ export * from "./utils/animation-utils";
7
9
  export { AppConnectionAck, AppConnectionError, AppStopped, SettingsUpdate as AppSettingsUpdate, // Alias to avoid conflict with cloud-to-glasses SettingsUpdate
8
10
  DataStream, CloudToAppMessage, TranslationData, ToolCall, StandardConnectionError, CustomMessage, ManagedStreamStatus, OutputStatus, MentraosSettingsUpdate, TranscriptionData, AudioChunk, PermissionError, PermissionErrorDetail, AudioPlayResponse, isAppConnectionAck, isAppConnectionError, isAppStopped, isSettingsUpdate, isDataStream, isAudioChunk, isDashboardModeChanged, isDashboardAlwaysOnChanged, isManagedStreamStatus, isPhotoResponse as isPhotoResponseFromCloud, isRtmpStreamStatus as isRtmpStreamStatusFromCloud } from './types/messages/cloud-to-app';
9
11
  export * from './types/streams';
@@ -20,7 +22,7 @@ export * from "./logging/logger";
20
22
  export { ButtonPress, HeadPosition, GlassesBatteryUpdate, PhoneBatteryUpdate, GlassesConnectionState, LocationUpdate, CalendarEvent, Vad, PhoneNotification, PhoneNotificationDismissed, StartApp, StopApp, ConnectionInit, DashboardState, OpenDashboard, GlassesToCloudMessage, PhotoResponse, RtmpStreamStatus, KeepAliveAck } from './types/messages/glasses-to-cloud';
21
23
  export { ConnectionAck, ConnectionError, AuthError, DisplayEvent, AppStateChange, MicrophoneStateChange, CloudToGlassesMessage, PhotoRequestToGlasses, SettingsUpdate, StartRtmpStream, StopRtmpStream, KeepRtmpStreamAlive } from './types/messages/cloud-to-glasses';
22
24
  export { AppConnectionInit, AppSubscriptionUpdate, RtmpStreamRequest, RtmpStreamStopRequest, AppToCloudMessage, PhotoRequest } from './types/messages/app-to-cloud';
23
- export { TextWall, DoubleTextWall, DashboardCard, ReferenceCard, Layout, DisplayRequest } from './types/layouts';
25
+ export { TextWall, DoubleTextWall, DashboardCard, ReferenceCard, Layout, DisplayRequest, BitmapView, ClearView, } from './types/layouts';
24
26
  export { isButtonPress, isHeadPosition, isConnectionInit, isStartApp, isStopApp, isPhotoResponse as isPhotoResponseFromGlasses, isRtmpStreamStatus as isRtmpStreamStatusFromGlasses, isKeepAliveAck, isPhoneNotificationDismissed } from './types/messages/glasses-to-cloud';
25
27
  export { isConnectionAck, isDisplayEvent, isAppStateChange, isPhotoRequest, isSettingsUpdate as isSettingsUpdateToGlasses, isStartRtmpStream, isStopRtmpStream, isKeepRtmpStreamAlive } from './types/messages/cloud-to-glasses';
26
28
  export { isAppConnectionInit, isAppSubscriptionUpdate, isDisplayRequest, isRtmpStreamRequest, isRtmpStreamStopRequest, isPhotoRequest as isPhotoRequestFromApp } from './types/messages/app-to-cloud';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,eAAe,CAAC;AAG9B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,cAAc,IAAI,iBAAiB,EAAG,+DAA+D;AACrG,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EAEjB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EAGrB,eAAe,IAAI,wBAAwB,EAC3C,kBAAkB,IAAI,2BAA2B,EAClD,MAAM,+BAA+B,CAAC;AAGvC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,aAAa,CAAC;AAG5B,cAAc,kBAAkB,CAAC;AAOjC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,GAAG,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,QAAQ,EACR,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACb,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACb,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,aAAa,EACb,aAAa,EACb,MAAM,EACN,cAAc,EACf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,eAAe,IAAI,0BAA0B,EAC7C,kBAAkB,IAAI,6BAA6B,EACnD,cAAc,EACd,4BAA4B,EAC7B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,IAAI,yBAAyB,EAC7C,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,IAAI,qBAAqB,EACxC,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,cAAc,EACd,UAAU,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAG7B,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EACL,SAAS,EACV,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,MAAM,WAAW,oBAAqB,SAAQ,OAAO;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -25,6 +25,9 @@ __exportStar(require("./types/messages/base"), exports);
25
25
  __exportStar(require("./types/messages/glasses-to-cloud"), exports);
26
26
  __exportStar(require("./types/messages/cloud-to-glasses"), exports);
27
27
  __exportStar(require("./types/messages/app-to-cloud"), exports);
28
+ // Utility exports
29
+ __exportStar(require("./utils/bitmap-utils"), exports);
30
+ __exportStar(require("./utils/animation-utils"), exports);
28
31
  // Export cloud-to-app but exclude the conflicting type guards
29
32
  var cloud_to_app_1 = require("./types/messages/cloud-to-app");
30
33
  // Type guards (excluding isPhotoResponse and isRtmpStreamStatus which conflict)
@@ -33,7 +33,9 @@ export declare enum LayoutType {
33
33
  DOUBLE_TEXT_WALL = "double_text_wall",
34
34
  DASHBOARD_CARD = "dashboard_card",
35
35
  REFERENCE_CARD = "reference_card",
36
- BITMAP_VIEW = "bitmap_view"
36
+ BITMAP_VIEW = "bitmap_view",
37
+ BITMAP_ANIMATION = "bitmap_animation",
38
+ CLEAR_VIEW = "clear_view"
37
39
  }
38
40
  /**
39
41
  * Types of views for displaying content
@@ -1 +1 @@
1
- {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../src/types/enums.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,OAAO;IACf,gBAAgB,qBAAqB,CAAG,6CAA6C;IACrF,UAAU,eAAe,CAAe,0CAA0C;IAClF,QAAQ,aAAa;CACxB;AAGD;;GAEG;AACH,oBAAY,QAAQ;IAChB,aAAa,kBAAkB,CAAG,gBAAgB;IAClD,SAAS,cAAc,CAAW,0BAA0B;IAC5D,OAAO,YAAY,CAAe,cAAc;IAChD,OAAO,YAAY,CAAe,qBAAqB;IACvD,OAAO,YAAY,CAAe,mBAAmB;IACrD,KAAK,UAAU;CAClB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAChB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;CAEZ;AAED;;GAEG;AACH,oBAAY,UAAU;IAClB,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;CAC9B;AAED;;GAEG;AACH,oBAAY,QAAQ;IAChB,SAAS,cAAc,CAAI,oCAAoC;IAC/D,SAAS,cAAc,CAAI,+BAA+B;IAC1D,IAAI,SAAS;CAChB;AAGD,oBAAY,cAAc;IACtB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,WAAW,gBAAgB;IAC3B,WAAW,eAAe;IAC1B,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;CAC9B"}
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../src/types/enums.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,OAAO;IACf,gBAAgB,qBAAqB,CAAG,6CAA6C;IACrF,UAAU,eAAe,CAAe,0CAA0C;IAClF,QAAQ,aAAa;CACxB;AAGD;;GAEG;AACH,oBAAY,QAAQ;IAChB,aAAa,kBAAkB,CAAG,gBAAgB;IAClD,SAAS,cAAc,CAAW,0BAA0B;IAC5D,OAAO,YAAY,CAAe,cAAc;IAChD,OAAO,YAAY,CAAe,qBAAqB;IACvD,OAAO,YAAY,CAAe,mBAAmB;IACrD,KAAK,UAAU;CAClB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAChB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;CAEZ;AAED;;GAEG;AACH,oBAAY,UAAU;IAClB,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;CAC5B;AAED;;GAEG;AACH,oBAAY,QAAQ;IAChB,SAAS,cAAc,CAAI,oCAAoC;IAC/D,SAAS,cAAc,CAAI,+BAA+B;IAC1D,IAAI,SAAS;CAChB;AAGD,oBAAY,cAAc;IACtB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,WAAW,gBAAgB;IAC3B,WAAW,eAAe;IAC1B,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;CAC9B"}
@@ -44,6 +44,8 @@ var LayoutType;
44
44
  LayoutType["DASHBOARD_CARD"] = "dashboard_card";
45
45
  LayoutType["REFERENCE_CARD"] = "reference_card";
46
46
  LayoutType["BITMAP_VIEW"] = "bitmap_view";
47
+ LayoutType["BITMAP_ANIMATION"] = "bitmap_animation";
48
+ LayoutType["CLEAR_VIEW"] = "clear_view";
47
49
  })(LayoutType || (exports.LayoutType = LayoutType = {}));
48
50
  /**
49
51
  * Types of views for displaying content
@@ -36,10 +36,25 @@ export interface BitmapView {
36
36
  layoutType: LayoutType.BITMAP_VIEW;
37
37
  data: string;
38
38
  }
39
+ /**
40
+ * Bitmap animation layout - sends batched frames for iOS-controlled timing
41
+ */
42
+ export interface BitmapAnimation {
43
+ layoutType: LayoutType.BITMAP_ANIMATION;
44
+ frames: string[];
45
+ interval: number;
46
+ repeat: boolean;
47
+ }
48
+ /**
49
+ * Clear view layout - clears the display
50
+ */
51
+ export interface ClearView {
52
+ layoutType: LayoutType.CLEAR_VIEW;
53
+ }
39
54
  /**
40
55
  * Union type for all layouts
41
56
  */
42
- export type Layout = TextWall | DoubleTextWall | DashboardCard | ReferenceCard | BitmapView;
57
+ export type Layout = TextWall | DoubleTextWall | DashboardCard | ReferenceCard | BitmapView | BitmapAnimation | ClearView;
43
58
  export interface DisplayRequest extends BaseMessage {
44
59
  type: AppToCloudMessageType.DISPLAY_REQUEST;
45
60
  packageName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/types/layouts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;AAE5F,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C,IAAI,EAAE,qBAAqB,CAAC,eAAe,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/types/layouts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,GAAG,eAAe,GAAG,SAAS,CAAC;AAE1H,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C,IAAI,EAAE,qBAAqB,CAAC,eAAe,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B"}
@@ -25,6 +25,7 @@ export declare enum PermissionType {
25
25
  MICROPHONE = "MICROPHONE",
26
26
  LOCATION = "LOCATION",
27
27
  CALENDAR = "CALENDAR",
28
+ CAMERA = "CAMERA",
28
29
  NOTIFICATIONS = "NOTIFICATIONS",
29
30
  READ_NOTIFICATIONS = "READ_NOTIFICATIONS",
30
31
  POST_NOTIFICATIONS = "POST_NOTIFICATIONS",
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/types/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAsB,OAAO,EAAE,MAAM,SAAS,CAAC;AAItE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,oBAAY,cAAc;IACxB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IAGrB,aAAa,kBAAkB;IAG/B,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IAEzC,GAAG,QAAQ;CACZ;AAGD,eAAO,MAAM,qBAAqB,uCAEhC,CAAC;AAGH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,GAAG,CAAC;IAGrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAErB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;CACzE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAC1F,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACvF,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC,mBAAmB,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACzH,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC;IAC5B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,kBAAkB,CAAC;IACxC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC;IACjC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;CACf,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;IACX,GAAG,CAAC,EAAE,KAAK,CAAC;CACb,CAAC,CAAC;AAEP,MAAM,MAAM,WAAW,GAAG,UAAU,EAAE,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,SAAS,CA8ElE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;CACrD"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/types/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAsB,OAAO,EAAE,MAAM,SAAS,CAAC;AAItE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,oBAAY,cAAc;IACxB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;IAGjB,aAAa,kBAAkB;IAG/B,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IAEzC,GAAG,QAAQ;CACZ;AAGD,eAAO,MAAM,qBAAqB,uCAEhC,CAAC;AAGH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,GAAG,CAAC;IAGrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAErB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;CACzE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAC1F,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACvF,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC,mBAAmB,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACzH,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC;IAC5B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,kBAAkB,CAAC;IACxC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC;IACjC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;CACf,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;IACX,GAAG,CAAC,EAAE,KAAK,CAAC;CACb,CAAC,CAAC;AAEP,MAAM,MAAM,WAAW,GAAG,UAAU,EAAE,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,SAAS,CA8ElE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;CACrD"}
@@ -11,6 +11,7 @@ var PermissionType;
11
11
  PermissionType["MICROPHONE"] = "MICROPHONE";
12
12
  PermissionType["LOCATION"] = "LOCATION";
13
13
  PermissionType["CALENDAR"] = "CALENDAR";
14
+ PermissionType["CAMERA"] = "CAMERA";
14
15
  // Legacy notification permission (backward compatibility)
15
16
  PermissionType["NOTIFICATIONS"] = "NOTIFICATIONS";
16
17
  // New granular notification permissions
@@ -0,0 +1,206 @@
1
+ /**
2
+ * ๐ŸŽฌ Animation Utilities Module
3
+ *
4
+ * Provides helper functions for creating and managing bitmap animations in MentraOS applications.
5
+ * Includes timing utilities, animation factories, and performance optimization helpers.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { AnimationUtils } from '@mentra/sdk';
10
+ *
11
+ * // Create animation from files
12
+ * const animation = await AnimationUtils.createBitmapAnimation(
13
+ * session, './frames', 10, 1750, true
14
+ * );
15
+ *
16
+ * // Simple delay utility
17
+ * await AnimationUtils.delay(2000);
18
+ *
19
+ * // Stop animation
20
+ * animation.stop();
21
+ * ```
22
+ */
23
+ import { AppSession } from '../app/session';
24
+ import { LoadFramesOptions } from './bitmap-utils';
25
+ /**
26
+ * Configuration options for bitmap animations
27
+ */
28
+ export interface AnimationConfig {
29
+ /** Time between frames in milliseconds (default: 1750ms - optimized for MentraOS) */
30
+ intervalMs?: number;
31
+ /** Whether to loop the animation continuously (default: false) */
32
+ repeat?: boolean;
33
+ /** Validate frames before starting animation (default: true) */
34
+ validateFrames?: boolean;
35
+ /** Options for loading frames from files */
36
+ loadOptions?: LoadFramesOptions;
37
+ /** Callback fired when animation starts */
38
+ onStart?: () => void;
39
+ /** Callback fired when animation stops/completes */
40
+ onStop?: () => void;
41
+ /** Callback fired on each frame display */
42
+ onFrame?: (frameIndex: number, totalFrames: number) => void;
43
+ /** Callback fired if animation encounters an error */
44
+ onError?: (error: string) => void;
45
+ }
46
+ /**
47
+ * Animation controller interface
48
+ */
49
+ export interface AnimationController {
50
+ /** Stop the animation */
51
+ stop: () => void;
52
+ /** Check if animation is currently running */
53
+ isRunning: () => boolean;
54
+ /** Get current frame index */
55
+ getCurrentFrame: () => number;
56
+ /** Get total frame count */
57
+ getTotalFrames: () => number;
58
+ }
59
+ /**
60
+ * Performance timing information
61
+ */
62
+ export interface TimingInfo {
63
+ /** Target interval between frames */
64
+ targetInterval: number;
65
+ /** Actual measured interval between frames */
66
+ actualInterval: number;
67
+ /** Timing drift (difference between target and actual) */
68
+ drift: number;
69
+ /** Frame rate (frames per second) */
70
+ fps: number;
71
+ }
72
+ /**
73
+ * Utility class for creating and managing animations in MentraOS applications
74
+ */
75
+ export declare class AnimationUtils {
76
+ /**
77
+ * Simple async delay helper
78
+ *
79
+ * @param ms - Milliseconds to delay
80
+ * @returns Promise that resolves after the specified delay
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * console.log('Starting...');
85
+ * await AnimationUtils.delay(2000);
86
+ * console.log('2 seconds later!');
87
+ * ```
88
+ */
89
+ static delay(ms: number): Promise<void>;
90
+ /**
91
+ * Create bitmap animation from files with advanced configuration
92
+ *
93
+ * @param session - MentraOS app session
94
+ * @param basePath - Directory containing animation frames
95
+ * @param frameCount - Number of frames to load
96
+ * @param config - Animation configuration options
97
+ * @returns Promise resolving to animation controller
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * // Simple animation
102
+ * const animation = await AnimationUtils.createBitmapAnimation(
103
+ * session, './animations', 10
104
+ * );
105
+ *
106
+ * // Advanced configuration
107
+ * const advancedAnimation = await AnimationUtils.createBitmapAnimation(
108
+ * session, './sprites', 8, {
109
+ * intervalMs: 1000,
110
+ * repeat: true,
111
+ * loadOptions: { filePattern: 'sprite_{i}.bmp', startFrame: 0 },
112
+ * onFrame: (frame, total) => console.log(`Frame ${frame}/${total}`),
113
+ * onError: (error) => console.error('Animation error:', error)
114
+ * }
115
+ * );
116
+ * ```
117
+ */
118
+ static createBitmapAnimation(session: AppSession, basePath: string, frameCount: number, config?: AnimationConfig): Promise<AnimationController>;
119
+ /**
120
+ * Create bitmap animation from pre-loaded frame data
121
+ *
122
+ * @param session - MentraOS app session
123
+ * @param frames - Array of hex-encoded bitmap data
124
+ * @param config - Animation configuration options
125
+ * @returns Animation controller
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const frames = ['424d461a...', '424d461b...', '424d461c...'];
130
+ * const animation = AnimationUtils.createBitmapAnimationFromFrames(
131
+ * session, frames, { intervalMs: 1500, repeat: true }
132
+ * );
133
+ * ```
134
+ */
135
+ static createBitmapAnimationFromFrames(session: AppSession, frames: string[], config?: Omit<AnimationConfig, 'loadOptions' | 'validateFrames'>): AnimationController;
136
+ /**
137
+ * Create a sequence of bitmap displays with custom timing
138
+ *
139
+ * @param session - MentraOS app session
140
+ * @param sequence - Array of frame data with individual timing
141
+ * @returns Promise that resolves when sequence completes
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * await AnimationUtils.createBitmapSequence(session, [
146
+ * { frame: frame1Hex, duration: 1000 },
147
+ * { frame: frame2Hex, duration: 500 },
148
+ * { frame: frame3Hex, duration: 2000 }
149
+ * ]);
150
+ * ```
151
+ */
152
+ static createBitmapSequence(session: AppSession, sequence: Array<{
153
+ frame: string;
154
+ duration: number;
155
+ }>): Promise<void>;
156
+ /**
157
+ * Measure animation timing performance
158
+ *
159
+ * @param targetInterval - Expected interval between frames in ms
160
+ * @param measureDuration - How long to measure in ms (default: 10 seconds)
161
+ * @returns Promise resolving to timing performance data
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const timing = await AnimationUtils.measureTiming(1750, 10000);
166
+ * console.log(`Target: ${timing.targetInterval}ms, Actual: ${timing.actualInterval}ms`);
167
+ * console.log(`Drift: ${timing.drift}ms, FPS: ${timing.fps.toFixed(1)}`);
168
+ * ```
169
+ */
170
+ static measureTiming(targetInterval: number, measureDuration?: number): Promise<TimingInfo>;
171
+ /**
172
+ * Create optimized animation settings for different hardware
173
+ *
174
+ * @param deviceType - Target device type
175
+ * @returns Recommended animation configuration
176
+ *
177
+ * @example
178
+ * ```typescript
179
+ * const config = AnimationUtils.getOptimizedConfig('even-realities-g1');
180
+ * const animation = await AnimationUtils.createBitmapAnimation(
181
+ * session, './frames', 10, config
182
+ * );
183
+ * ```
184
+ */
185
+ static getOptimizedConfig(deviceType: 'even-realities-g1' | 'generic'): AnimationConfig;
186
+ /**
187
+ * Preload and cache animation frames for better performance
188
+ *
189
+ * @param basePath - Directory containing frames
190
+ * @param frameCount - Number of frames to preload
191
+ * @param options - Loading options
192
+ * @returns Promise resolving to cached frame data
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * // Preload frames
197
+ * const cachedFrames = await AnimationUtils.preloadFrames('./animations', 10);
198
+ *
199
+ * // Use cached frames multiple times
200
+ * const animation1 = AnimationUtils.createBitmapAnimationFromFrames(session, cachedFrames);
201
+ * const animation2 = AnimationUtils.createBitmapAnimationFromFrames(session, cachedFrames);
202
+ * ```
203
+ */
204
+ static preloadFrames(basePath: string, frameCount: number, options?: LoadFramesOptions): Promise<string[]>;
205
+ }
206
+ //# sourceMappingURL=animation-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation-utils.d.ts","sourceRoot":"","sources":["../../src/utils/animation-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAe,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,sDAAsD;IACtD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,yBAAyB;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,8BAA8B;IAC9B,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,4BAA4B;IAC5B,cAAc,EAAE,MAAM,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,cAAc;IAEvB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;WACU,qBAAqB,CAC9B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,eAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAgD/B;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,+BAA+B,CAClC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,GAAE,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,gBAAgB,CAAM,GACrE,mBAAmB;IAyFtB;;;;;;;;;;;;;;;OAeG;WACU,oBAAoB,CAC7B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GACrD,OAAO,CAAC,IAAI,CAAC;IAuBhB;;;;;;;;;;;;;OAaG;WACU,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,GAAE,MAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IA0CxG;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,GAAG,SAAS,GAAG,eAAe;IA2BvF;;;;;;;;;;;;;;;;;OAiBG;WACU,aAAa,CACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC;CAYvB"}