handler-playable-sdk 0.3.2 → 0.3.4

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 (36) hide show
  1. package/dist/AssetEditorModal-DBAGQINC.js +1 -0
  2. package/dist/AssetTextures-AZY5VKWH.js +1 -0
  3. package/dist/ConfigOverride-DFTDUTRQ.js +1 -0
  4. package/dist/chunk-C2CEUBBT.js +1325 -0
  5. package/dist/chunk-DEUORFXE.js +1 -0
  6. package/dist/chunk-DHSGG7NF.js +1 -0
  7. package/dist/chunk-E6WJCS24.js +46 -0
  8. package/dist/chunk-PWGHKK3J.js +1 -0
  9. package/dist/chunk-Q7FPWOA3.js +1 -0
  10. package/dist/config-7DI6U2YD.js +1 -0
  11. package/dist/index.cjs +1360 -0
  12. package/dist/index.css +4537 -1
  13. package/dist/index.d.cts +892 -0
  14. package/dist/index.d.ts +494 -39
  15. package/dist/index.js +1 -1
  16. package/dist/{loader-object-centric-C1QteFfG.d.mts → loader-object-centric-Ce6MVkQw.d.cts} +1 -1
  17. package/dist/{loader-object-centric-C1QteFfG.d.ts → loader-object-centric-Ce6MVkQw.d.ts} +1 -1
  18. package/dist/pixi/index.cjs +256 -0
  19. package/dist/pixi/index.css +4537 -1
  20. package/dist/pixi/{index.d.mts → index.d.cts} +156 -144
  21. package/dist/pixi/index.d.ts +156 -144
  22. package/dist/pixi/index.js +1 -27
  23. package/dist/three/index.cjs +363 -0
  24. package/dist/three/index.css +4537 -1
  25. package/dist/three/index.js +1 -134
  26. package/package.json +29 -18
  27. package/dist/ConfigOverride-6YH2ILBJ.mjs +0 -1
  28. package/dist/chunk-BDZGKN5O.mjs +0 -1
  29. package/dist/chunk-GYW3GFXA.mjs +0 -830
  30. package/dist/chunk-HN7I4BLB.mjs +0 -1
  31. package/dist/config-QLS2MDB6.mjs +0 -1
  32. package/dist/index.d.mts +0 -437
  33. package/dist/index.mjs +0 -1
  34. package/dist/pixi/index.mjs +0 -1
  35. package/dist/three/index.mjs +0 -118
  36. /package/dist/three/{index.d.mts → index.d.cts} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,5 +1,15 @@
1
- import { O as ObjectCentricConfig } from './loader-object-centric-C1QteFfG.js';
2
- export { g as applyDefaults, c as loadAllObjectConfigs, a as loadComponentSchemas, d as loadEngineConfig, e as loadGamePromptConfig, l as loadObjectCentricConfig, b as loadObjectConfig, f as loadSceneConfig, t as toLegacyFormat, v as validateObjectConfig } from './loader-object-centric-C1QteFfG.js';
1
+ import { Graphics } from 'pixi.js';
2
+ import { O as ObjectCentricConfig } from './loader-object-centric-Ce6MVkQw.js';
3
+ export { g as applyDefaults, c as loadAllObjectConfigs, a as loadComponentSchemas, d as loadEngineConfig, e as loadGamePromptConfig, l as loadObjectCentricConfig, b as loadObjectConfig, f as loadSceneConfig, t as toLegacyFormat, v as validateObjectConfig } from './loader-object-centric-Ce6MVkQw.js';
4
+
5
+ type TelemetryConfig = {
6
+ endpoint: string;
7
+ transport?: 'beacon' | 'fetch';
8
+ batchSize?: number;
9
+ flushIntervalMs?: number;
10
+ maxQueue?: number;
11
+ debug?: boolean;
12
+ };
3
13
 
4
14
  declare global {
5
15
  interface Window {
@@ -155,42 +165,394 @@ declare class PreviewShell {
155
165
  }
156
166
  declare function createPreviewShell(options?: PreviewOptions): PreviewShell;
157
167
 
158
- declare class DebugPanel {
159
- private debugOverlay;
160
- private isDebugOpen;
168
+ type SceneObjectsPanelOptions = {
169
+ onSelect: (objectId: string) => void;
170
+ };
171
+ declare class SceneObjectsPanel {
172
+ private root;
173
+ private listContainer;
174
+ private searchInput;
175
+ private selectedId;
176
+ private options;
177
+ private retryTimer;
178
+ private filterMode;
179
+ render(): string;
180
+ initialize(container: HTMLElement, options: SceneObjectsPanelOptions): void;
181
+ setSelected(objectId: string | null): void;
182
+ refreshObjects(): void;
183
+ /**
184
+ * Format display name: removes json. prefix, converts underscores to spaces, title case
185
+ */
186
+ private formatDisplayName;
187
+ /**
188
+ * Get object type for icon display
189
+ */
190
+ private getObjectType;
191
+ private renderGroup;
192
+ private getTypeIconByType;
193
+ private getTypeIcon;
194
+ private getAssetPreview;
195
+ private getColorIndicator;
196
+ private getMetadata;
197
+ private scheduleRetry;
198
+ private select;
199
+ }
200
+
201
+ type SceneToolsPanelOptions = {
202
+ onHighlightObject: (enabled: boolean) => void;
203
+ onHighlightAnchor: (enabled: boolean) => void;
204
+ onNudge: (dx: number, dy: number) => void;
205
+ onShowSplash?: () => void;
206
+ onUpdateSplash?: (patch: Record<string, any>) => void;
207
+ };
208
+ declare class SceneToolsPanel {
209
+ private root;
210
+ private infoEls;
211
+ private options;
212
+ render(): string;
213
+ initialize(container: HTMLElement, options: SceneToolsPanelOptions): void;
214
+ getNudgeStep(): number;
215
+ updateInfo(info: {
216
+ instanceId: string;
217
+ worldX: number;
218
+ worldY: number;
219
+ anchorX: number | null;
220
+ anchorY: number | null;
221
+ } | null): void;
222
+ }
223
+
224
+ type LibraryPanelOptions = {
225
+ onApply: (objectId: string, assetPath: string, category: string) => Promise<void>;
226
+ onReset: (objectId: string, defaultAsset: string, category: string) => Promise<void>;
227
+ };
228
+ declare class LibraryPanel {
229
+ private root;
230
+ private slotsContainer;
231
+ private options;
232
+ private registry;
233
+ private expandedSlot;
234
+ private mergeRegistries;
235
+ /**
236
+ * Render the library panel HTML template (called by DebugPanel)
237
+ */
238
+ render(): string;
239
+ initialize(container: HTMLElement, options: LibraryPanelOptions): void;
240
+ /**
241
+ * Re-renders the slots using the current in-memory registry.
242
+ * Useful when registry is updated locally (e.g. after conversion)
243
+ */
244
+ reRender(): void;
245
+ refresh(): Promise<void>;
246
+ private loadAssetRegistry;
247
+ private renderSlots;
248
+ private createSlotElement;
249
+ private createLibraryElement;
250
+ private fetchFolderAssets;
251
+ private handleApply;
252
+ private handleReset;
253
+ private formatCategoryName;
254
+ /**
255
+ * Handle AI Edit for existing asset
256
+ */
257
+ private handleAIEdit;
258
+ /**
259
+ * Handle Create with AI (new asset from scratch)
260
+ */
261
+ private handleCreateWithAI;
262
+ /**
263
+ * Highlights and scrolls to a specific slot
264
+ */
265
+ highlightSlot(objectId: string, category?: string): void;
266
+ }
267
+
268
+ type InspectorPanelOptions = {
269
+ onPropertyChange?: (objectId: string, path: string, value: any) => void;
270
+ };
271
+ declare class InspectorPanel {
272
+ private root;
273
+ private contentContainer;
161
274
  private selectedObjectId;
162
- private configViewer;
275
+ private options;
276
+ private showAdvanced;
277
+ private rendererRegistry;
278
+ private updateManager;
279
+ private quickActions;
280
+ constructor();
281
+ render(): string;
282
+ initialize(container: HTMLElement, options: InspectorPanelOptions): void;
283
+ loadObject(objectId: string): void;
284
+ private renderProperties;
285
+ private renderConversionButtons;
286
+ private renderFooter;
287
+ private renderSection;
288
+ private attachEventListeners;
289
+ private addComponent;
290
+ private isSectionMeaningful;
291
+ private showError;
292
+ private formatLabel;
293
+ private getSectionIcon;
294
+ clear(): void;
295
+ }
296
+
297
+ /**
298
+ * Brand Vision Mapper Panel
299
+ *
300
+ * Three-tab UI for importing brand assets and mapping them to game objects:
301
+ * - Tab 1: Upload manifest + assets + flat design
302
+ * - Tab 2: Review AI-generated mappings (APPLY / GENERATE / KEEP)
303
+ * - Tab 3: Generation progress + Apply all
304
+ *
305
+ * Pipeline logic is handled by brandVisionPipeline.ts
306
+ * Prompts are defined in brandVisionPrompts.ts
307
+ */
308
+
309
+ declare class BrandVisionPanel {
310
+ private root;
311
+ private currentTab;
312
+ private onClose?;
313
+ private uploadMethod;
314
+ private uploadedJsons;
315
+ private normalizedManifest;
316
+ private flatDesignDataUrl;
317
+ private assetFiles;
318
+ private zipFile;
319
+ private mappingResult;
320
+ private analysisRawResponse;
321
+ private analysisParsedOk;
322
+ private analysisParseError;
323
+ private isAnalyzing;
324
+ private isGenerating;
325
+ private get manifest();
326
+ render(): string;
327
+ initialize(container: HTMLElement, onClose?: () => void): void;
328
+ private attachEventListeners;
329
+ private switchTab;
330
+ private switchUploadMethod;
331
+ private handleZipUpload;
332
+ private processZipFile;
333
+ private fileToDataUrl;
334
+ private blobToDataUrl;
335
+ private inferAssetCategory;
336
+ private addAssetsToRegistry;
337
+ private refreshLibrary;
338
+ private handleManifestUpload;
339
+ private handleAssetsUpload;
340
+ private handleFlatDesignUpload;
341
+ private runAnalysis;
342
+ private generateAllMissing;
343
+ private renderMappings;
344
+ private applyAll;
345
+ private getEngineAssets;
346
+ private getPreviewValueForMapping;
347
+ private stageOverridesFromMappings;
348
+ private applyOne;
349
+ private saveAndApplyOne;
350
+ private openEditorForOne;
351
+ private generateOne;
352
+ private stageEngineAssetOverride;
353
+ private saveToLibraryAndReturnPath;
354
+ private inferCategoryFromAssetKey;
355
+ private copyRawAnalysis;
356
+ private setStatus;
357
+ private getGameObjects;
358
+ private getGamePrompt;
359
+ private setupResizeHandle;
360
+ refresh(): void;
361
+ }
362
+
363
+ type CustomizeSettingsPanelOptions = {
364
+ onApply: (payload: {
365
+ assets: Record<string, string>;
366
+ runtime: {
367
+ theme: Record<string, string>;
368
+ ui: Record<string, string>;
369
+ fonts: Record<string, string>;
370
+ audio: Record<string, string | number>;
371
+ };
372
+ }, options?: {
373
+ source?: 'manual' | 'auto';
374
+ }) => void;
375
+ };
376
+ declare class CustomizeSettingsPanel {
377
+ private root;
378
+ private assetsContainer;
379
+ private colorsContainer;
380
+ private fontsContainer;
381
+ private textsContainer;
382
+ private audioContainer;
383
+ private options;
384
+ private previewModal;
385
+ private autoApplyTimer;
386
+ private activePreviewKey;
387
+ private activePreviewValue;
388
+ private activePreviewFileInput;
389
+ private retryTimer;
390
+ private aiModal;
391
+ private aiTargetKey;
392
+ private aiKeyInput;
393
+ private aiPromptInput;
394
+ private aiStrengthInput;
395
+ private aiStrengthValue;
396
+ private aiModelSelect;
397
+ private aiModalSubtitle;
398
+ private aiGalleryToggle;
399
+ private aiGalleryEl;
400
+ private aiGalleryGrid;
401
+ private aiReferenceInput;
402
+ private aiReferenceName;
403
+ private aiReferenceFile;
404
+ private aiRemoveBgToggle;
405
+ private aiUseOutputToggle;
406
+ private aiGenerateBtn;
407
+ private aiApplyBtn;
408
+ private aiSaveLibraryBtn;
409
+ private aiCropBtn;
410
+ private aiDownloadBtn;
411
+ private aiPreviewImg;
412
+ private aiStatusEl;
413
+ private aiOutputDataUrl;
414
+ private aiBaseDataUrl;
415
+ private aiBaseValue;
416
+ private aiOutputKey;
417
+ private aiContext;
418
+ private aiBgToleranceInput;
419
+ private aiBgToleranceValue;
420
+ private aiRawOutputDataUrl;
421
+ private aiLoadingEl;
422
+ render(): string;
423
+ initialize(container: HTMLElement, options: CustomizeSettingsPanelOptions): void;
424
+ private setupRenderModeHandlers;
425
+ private applyEndgamePngMode;
426
+ private applySplashPngMode;
427
+ openAiEditor(assetKey: string, prompt?: string, initialValue?: string, context?: {
428
+ objectId?: string;
429
+ path?: string;
430
+ }): void;
431
+ refresh(): void;
432
+ private getEngineSnapshot;
433
+ private renderAssets;
434
+ private renderColors;
435
+ private renderFonts;
436
+ private renderTexts;
437
+ private renderAudio;
438
+ private readUiValue;
439
+ private getObjectTextValue;
440
+ private getObjectPropertyValue;
441
+ private handleApply;
442
+ private handleApplyWithSource;
443
+ private setupAiPanel;
444
+ private setAiStatus;
445
+ private getSelectedAssetKey;
446
+ private getSelectedAssetInput;
447
+ private getImageDataFromAsset;
448
+ private updateAiBasePreview;
449
+ private updateAiPreview;
450
+ private updateAiModalPreview;
451
+ private setAiLoading;
452
+ private toggleAiGallery;
453
+ private renderAiGallery;
454
+ private getAiGalleryEntries;
455
+ private isAiGalleryImage;
456
+ private selectAiGalleryAsset;
457
+ private openAiModal;
458
+ private closeAiModal;
459
+ private handleAiGenerate;
460
+ private refreshAiOutputFromRaw;
461
+ private setAiOutput;
462
+ private setAiOutputButtonsEnabled;
463
+ private handleAiApply;
464
+ private handleAiSaveToLibrary;
465
+ private inferCategoryFromAssetKey;
466
+ private inferObjectIdFromAssetKey;
467
+ private inferPathFromAssetKey;
468
+ private getFilenameFromPath;
469
+ private handleAiCrop;
470
+ private handleAiDownload;
471
+ private handleAssetValueChange;
472
+ private handleAssetUpload;
473
+ private scheduleAutoApply;
474
+ private previewAsset;
475
+ private resolveAssetUrls;
476
+ private guessMimeType;
477
+ private openPreviewModal;
478
+ private loadWithFallback;
479
+ private fetchWithFallback;
480
+ private applyObjectPropertyValue;
481
+ private applyTextColorToObject;
482
+ private closePreviewModal;
483
+ private updatePreviewIfOpen;
484
+ private scheduleRetry;
485
+ private clearRetry;
486
+ private setupResizeHandle;
487
+ private getImageDimensions;
488
+ private loadImage;
489
+ private showManualCropModal;
490
+ private loadImageForValue;
491
+ }
492
+
493
+ type WorkbenchTab = 'hierarchy' | 'inspector' | 'library' | 'ai' | 'changes';
494
+ /**
495
+ * DebugPanel context interface - used to pass 'this' context to modular functions
496
+ */
497
+ interface DebugPanelContext {
498
+ container: HTMLElement | null;
499
+ debugOverlay: HTMLElement | null;
500
+ configViewer: HTMLElement | null;
501
+ isDebugOpen: boolean;
502
+ selectedObjectId: string | null;
503
+ activeTab: WorkbenchTab;
504
+ highlightObject: boolean;
505
+ highlightAnchor: boolean;
506
+ objectAutoApplyTimer: number | null;
507
+ objectDebugRaf: number | null;
508
+ objectBoundsGfx: Graphics | null;
509
+ objectAnchorGfx: Graphics | null;
510
+ sceneObjectsPanel: SceneObjectsPanel;
511
+ sceneToolsPanel: SceneToolsPanel;
512
+ inspectorPanel: InspectorPanel;
513
+ libraryPanel: LibraryPanel;
514
+ brandVisionPanel: BrandVisionPanel;
515
+ customizeSettingsPanel: CustomizeSettingsPanel;
516
+ }
517
+
518
+ declare class ConfigPersistencePanel {
163
519
  private container;
164
- private objectAutoApplyTimer;
165
- private objectDebugRaf;
166
- private objectBoundsGfx;
167
- private objectAnchorGfx;
168
- private highlightObject;
169
- private highlightAnchor;
170
- private sceneObjectsPanel;
171
- private sceneEditPanel;
172
- private sceneToolsPanel;
173
- private customizeSettingsPanel;
174
- private libraryPanel;
175
- private batchAiPanel;
176
- private brandDnaPanel;
177
- private activeTab;
178
520
  initialize(container: HTMLElement): void;
179
- selectObject(objectId: string): void;
180
- getDebugOverlayHTML(): string;
181
- setupDebugEventListeners(): void;
182
- private updateWorkbenchTabs;
183
- toggleDebug(force?: boolean): void;
521
+ render(): string;
522
+ private formatValue;
523
+ setupEventListeners(): void;
524
+ private showSuccessNotification;
525
+ refreshPanel(): void;
526
+ }
527
+
528
+ /**
529
+ * DebugPanel - Refactored using modular functions
530
+ * Original methods are now in separate modules under ./debug/
531
+ */
532
+ declare class DebugPanel implements DebugPanelContext {
533
+ debugOverlay: HTMLElement | null;
534
+ isDebugOpen: boolean;
535
+ selectedObjectId: string | null;
536
+ configViewer: HTMLElement | null;
537
+ container: HTMLElement | null;
538
+ objectAutoApplyTimer: number | null;
539
+ objectDebugRaf: number | null;
540
+ objectBoundsGfx: Graphics | null;
541
+ objectAnchorGfx: Graphics | null;
542
+ highlightObject: boolean;
543
+ highlightAnchor: boolean;
544
+ activeTab: WorkbenchTab;
545
+ sceneObjectsPanel: SceneObjectsPanel;
546
+ sceneToolsPanel: SceneToolsPanel;
547
+ inspectorPanel: InspectorPanel;
548
+ libraryPanel: LibraryPanel;
549
+ brandVisionPanel: BrandVisionPanel;
550
+ customizeSettingsPanel: CustomizeSettingsPanel;
551
+ configPersistencePanel: ConfigPersistencePanel;
184
552
  private applyAssetChange;
185
553
  private resetAsset;
186
- updateDebugBadge(): void;
187
- private setupDebugInputListeners;
188
- private setupPanelLayout;
189
- private saveWorkbenchState;
190
- private loadWorkbenchState;
191
- private setupCollapsiblePanels;
192
- private handleObjectSelect;
193
- private nudgeSelectedObject;
554
+ private applySlotAsset;
555
+ private resetSlotAsset;
194
556
  private startObjectVisuals;
195
557
  private stopObjectVisuals;
196
558
  private shouldRunObjectVisuals;
@@ -208,10 +570,6 @@ declare class DebugPanel {
208
570
  private clearAnchor;
209
571
  private clearObjectVisuals;
210
572
  private updateObjectInfo;
211
- private scheduleObjectAutoApply;
212
- private setupRangeInput;
213
- private getNestedValue;
214
- private setNestedValue;
215
573
  private resetDebugConfig;
216
574
  private applyDebugConfig;
217
575
  private exportDebugConfig;
@@ -220,7 +578,24 @@ declare class DebugPanel {
220
578
  private copyConfigValues;
221
579
  private applyObjectConfig;
222
580
  private applyCustomizeSettings;
223
- private shouldUseOffsetPosition;
581
+ private scheduleObjectAutoApply;
582
+ setupDebugEventListeners(): void;
583
+ private setupDebugInputListeners;
584
+ private setupPanelLayout;
585
+ private setupCollapsiblePanels;
586
+ private setupRangeInput;
587
+ private updateWorkbenchTabs;
588
+ private saveWorkbenchState;
589
+ private loadWorkbenchState;
590
+ initialize(container: HTMLElement): void;
591
+ selectObject(objectId: string): void;
592
+ private highlightChangesTab;
593
+ getDebugOverlayHTML(): string;
594
+ refresh(): void;
595
+ toggleDebug(force?: boolean): void;
596
+ updateDebugBadge(): void;
597
+ private handleObjectSelect;
598
+ private nudgeSelectedObject;
224
599
  }
225
600
 
226
601
  /**
@@ -334,6 +709,7 @@ declare function setupHotReload(deps: HotReloadDependencies): void;
334
709
  */
335
710
  interface ConfigOverride {
336
711
  objectId?: string;
712
+ sceneId?: string;
337
713
  path: string;
338
714
  value: any;
339
715
  }
@@ -348,6 +724,8 @@ interface ConfigOverrideOptions {
348
724
  silent?: boolean;
349
725
  persist?: boolean;
350
726
  }
727
+ declare function getOverrideMode(): boolean;
728
+ declare function setOverrideMode(enabled: boolean): void;
351
729
  /**
352
730
  * Apply a config override
353
731
  */
@@ -360,6 +738,8 @@ declare function applyConfigOverrides(overrides: ConfigOverride[], options?: Con
360
738
  * Clear all config overrides
361
739
  */
362
740
  declare function clearConfigOverrides(): void;
741
+ declare function clearConfigOverridesForObject(objectId: string): void;
742
+ declare function removeConfigOverride(objectId: string | undefined, path: string): void;
363
743
  /**
364
744
  * Get all active overrides
365
745
  */
@@ -373,6 +753,38 @@ declare const configOverrideManager: {
373
753
  getChanges(): ConfigChange[];
374
754
  clearChanges(): void;
375
755
  };
756
+ /**
757
+ * Deep clone utility for baseline copying
758
+ */
759
+ declare function deepClone(obj: any): any;
760
+ /**
761
+ * Export full config snapshots (Safeguard #1)
762
+ * CRITICAL: Must start from loader-resolved baseline, never from scratch
763
+ * Must output full object trees, never just changed keys
764
+ */
765
+ declare function exportConfigsAsJSON(): Record<string, any>;
766
+ /**
767
+ * Get summary of config state (for UI display)
768
+ */
769
+ declare function getConfigStateSummary(): {
770
+ modifiedObjects: string[];
771
+ overrideCount: number;
772
+ hasChanges: boolean;
773
+ overrides: ConfigOverride[];
774
+ };
775
+ /**
776
+ * Apply configs to disk (Safeguard #2)
777
+ * CRITICAL: Clear cache ONLY after successful API response
778
+ */
779
+ declare function applyConfigsToDisk(): Promise<void>;
780
+ /**
781
+ * Reset to applied state (clear cache, reload)
782
+ */
783
+ declare function resetToApplied(): void;
784
+ /**
785
+ * Reset to original configs (restore from backup)
786
+ */
787
+ declare function resetToOriginal(): Promise<void>;
376
788
 
377
789
  /**
378
790
  * Base Layer - Lottie Instance
@@ -408,6 +820,23 @@ type InitOptions = {
408
820
  profile?: 'web_embed' | 'mraid' | string;
409
821
  consent?: Consent;
410
822
  destinationUrl?: string;
823
+ telemetry?: TelemetryConfig;
824
+ };
825
+ type Envelope = {
826
+ event_name: string;
827
+ ts: number;
828
+ session_id: string;
829
+ deployment_id: string;
830
+ variant_id: string;
831
+ export_profile_id: string;
832
+ instance_id: string;
833
+ env: 'web' | 'mraid' | 'native';
834
+ attribution?: {
835
+ campaign_id?: string;
836
+ placement_id?: string;
837
+ experiment_id?: string;
838
+ };
839
+ payload?: any;
411
840
  };
412
841
  declare const Handler: {
413
842
  init(options?: InitOptions, callback?: (w: number, h: number) => void): void;
@@ -428,10 +857,36 @@ declare const Handler: {
428
857
  finish(): void;
429
858
  install(url?: string): void;
430
859
  emit(name: string, payload?: any): void;
860
+ gameStart(): void;
861
+ gameEnd(): void;
862
+ ctaClick(url?: string, options?: {
863
+ open?: boolean;
864
+ }): void;
865
+ ctaShow(meta?: any): void;
866
+ ctaDismiss(meta?: any): void;
867
+ getGameTimeMs(): number | null;
868
+ endSession(reason?: "complete" | "cta" | "manual"): void;
869
+ setAttribution(attribution?: Envelope["attribution"]): void;
870
+ abTest(experimentId: string, variants: string[]): string;
871
+ levelStart(levelId: string | number, meta?: any): void;
872
+ levelComplete(levelId: string | number, meta?: any): void;
873
+ levelFail(levelId: string | number, meta?: any): void;
874
+ checkpoint(checkpointId: string | number, meta?: any): void;
875
+ reward(rewardId: string, meta?: any): void;
876
+ tutorialStart(stepId?: string | number, meta?: any): void;
877
+ tutorialComplete(stepId?: string | number, meta?: any): void;
878
+ tutorialSkip(stepId?: string | number, meta?: any): void;
879
+ timerStart(key: string): void;
880
+ timerEnd(key: string, eventName?: "load_time" | "level_time" | "custom", meta?: any): void;
881
+ fps(value: number, meta?: any): void;
882
+ memory(bytes: number, meta?: any): void;
883
+ assetLoadStart(assetId: string, meta?: any): void;
884
+ assetLoadComplete(assetId: string, meta?: any): void;
885
+ reportError(code: string, message: string, meta?: any): void;
431
886
  retry(): void;
432
887
  pause(): void;
433
888
  resume(): void;
434
889
  resize(width?: number, height?: number): void;
435
890
  };
436
891
 
437
- export { type ConfigChange, type ConfigChangeEvent, type ConfigOverride, type ConfigOverrideOptions, ConfigWatcher, DebugPanel, DefaultReloadStrategy, type DeviceCategory, type DeviceGroup, type DevicePreset, Handler, type HotReloadDependencies, type HotReloadWatcher, type LiveEditBridge, ObjectCentricConfig, type PreviewOptions, PreviewShell, type ReloadStrategy, type SetupLiveEditBridgeOptions, applyConfigOverride, applyConfigOverrides, baseLottie, bootstrap, clearConfigOverrides, configOverrideManager, createPreviewShell, Handler as default, defaultPreset, deviceGroups, devicePresets, diffConfigs, getConfigOverrides, getPresetById, getPresetsByCategory, rehydrateObject, setBootstrapDependencies, setupHotReload, setupLiveEditBridge };
892
+ export { type ConfigChange, type ConfigChangeEvent, type ConfigOverride, type ConfigOverrideOptions, ConfigWatcher, DebugPanel, DefaultReloadStrategy, type DeviceCategory, type DeviceGroup, type DevicePreset, Handler, type HotReloadDependencies, type HotReloadWatcher, type LiveEditBridge, ObjectCentricConfig, type PreviewOptions, PreviewShell, type ReloadStrategy, type SetupLiveEditBridgeOptions, applyConfigOverride, applyConfigOverrides, applyConfigsToDisk, baseLottie, bootstrap, clearConfigOverrides, clearConfigOverridesForObject, configOverrideManager, createPreviewShell, deepClone, Handler as default, defaultPreset, deviceGroups, devicePresets, diffConfigs, exportConfigsAsJSON, getConfigOverrides, getConfigStateSummary, getOverrideMode, getPresetById, getPresetsByCategory, rehydrateObject, removeConfigOverride, resetToApplied, resetToOriginal, setBootstrapDependencies, setOverrideMode, setupHotReload, setupLiveEditBridge };