@wscsports/blaze-web-sdk 0.15.0 → 0.16.0

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.
@@ -429,6 +429,7 @@ declare class DeviceDetector {
429
429
  static getInstance(): DeviceDetector;
430
430
  private detectOS;
431
431
  private detectBrowser;
432
+ get getPlatform(): Platform;
432
433
  get isDesktop(): boolean;
433
434
  get isMobile(): boolean;
434
435
  get isTablet(): boolean;
@@ -437,6 +438,8 @@ declare class DeviceDetector {
437
438
  private handleResize;
438
439
  isIOSMobileTabletSafari(): boolean;
439
440
  get isFullscreenSupported(): boolean;
441
+ getDeviceInfo(): UAParser.IDevice;
442
+ getOSInfo(): UAParser.IOS;
440
443
  }
441
444
  export declare const deviceDetector: DeviceDetector;
442
445
 
@@ -470,17 +473,22 @@ export declare class FullscreenManager {
470
473
 
471
474
  export * from './analytics.class';
472
475
  export * from './base-element.class';
476
+ export * from './data-source.class';
473
477
  export * from './debounce';
474
478
  export * from './device-detector.class';
475
479
  export * from './events-listener';
480
+ export * from './fullscreen-manager.class';
476
481
  export * from './label-builder.class';
482
+ export * from './logger/logger-manager.class';
483
+ export * from './logger/logger-storage.class';
484
+ export * from './logger/logger-transport.class';
485
+ export * from './logger/logger-throttle.class';
477
486
  export * from './long-press.handler';
478
487
  export * from './singleton.class';
479
488
  export * from './throttle';
480
489
  export * from './url';
481
- export * from './data-source.class';
482
- export * from './fullscreen-manager.class';
483
490
  export * from './visiblity-manager.class';
491
+ export * from './accessibility';
484
492
 
485
493
  export interface IBlazeWidgetLabel {
486
494
  readonly _type: 'BlazeWidgetLabel';
@@ -579,6 +587,217 @@ export declare class VisibilityManager {
579
587
  detach(): void;
580
588
  }
581
589
 
590
+ export declare const DEFAULT_ACCESSIBILITY_CONFIG: AccessibilityConfig;
591
+ export declare const DEFAULT_CONTENT_ACCESSIBILITY_CONFIG: ContentAccessibilityConfig;
592
+
593
+ export interface ModalLabelConfig {
594
+ contentType: ContentType;
595
+ position: number;
596
+ total: number;
597
+ title?: string;
598
+ currentContent?: any;
599
+ includeNavigationContext?: boolean;
600
+ }
601
+ export declare function generateModalAriaLabel(config: ModalLabelConfig): string;
602
+
603
+ declare class AccessibilityManager implements IAccessibilityManager {
604
+ private announcementService;
605
+ private contentButtons;
606
+ private modalFocusReturnTarget;
607
+ constructor(config?: AccessibilityConfig);
608
+ setupLiveRegions(container: HTMLElement): void;
609
+ announce(announcement: AccessibilityAnnouncement): void;
610
+ private getContentTypeLabel;
611
+ manageFocus(element: HTMLElement): void;
612
+ storeModalFocusReturnTarget(element: HTMLElement): void;
613
+ private returnFocusFromModal;
614
+ setupModalAccessibility(modal: HTMLElement, contentType: ContentType): void;
615
+ announceModalStatus(action: string, contentType: ContentType, context?: any): void;
616
+ closeModal(contentType: ContentType): void;
617
+ private clearModalFocusReturnTarget;
618
+ cleanup(): void;
619
+ clearAnnouncementQueue(): void;
620
+ }
621
+ export { AccessibilityManager };
622
+ export declare const accessibilityManager: AccessibilityManager;
623
+
624
+ export declare class ButtonLabelManager {
625
+ static setButtonLabel(button: BlazeButton | BlazeCtaButton, label: string): void;
626
+ static buildPlayPauseLabel(isPlaying: boolean, contentType: ContentType): string;
627
+ static buildMuteLabel(isMuted: boolean, contentType: ContentType): string;
628
+ static buildLikeLabel(isLiked: boolean): string;
629
+ static buildCtaLabel(ctaText?: string): string;
630
+ static buildNavigationLabel(direction: 'next' | 'prev', contentType: ContentType, target?: 'page' | 'content'): string;
631
+ static setBatchLabels(buttonLabelPairs: Array<[BlazeButton | BlazeCtaButton | undefined, string]>): void;
632
+ }
633
+
634
+ declare class ContentAccessibilityManager implements IContentAccessibilityManager {
635
+ private config;
636
+ private contentStrategies;
637
+ private registeredWidgets;
638
+ private lastUserActionTime;
639
+ private readonly userActionThrottleMs;
640
+ constructor(config?: ContentAccessibilityConfig);
641
+ private initializeStrategies;
642
+ registerContentWidget(contentId: string, elements: IContentWidgetElements, contentType: ContentType): void;
643
+ updateButtonLabels(contentId: string, dynamicState: Partial<IContentWidgetData>): void;
644
+ private getContentTypeLabel;
645
+ unregisterContentWidget(contentId: string): void;
646
+ announceUserAction(contentType: ContentType, action: string, context: UserActionContext): void;
647
+ announceModalOpening(contentType: ContentType, context: ModalContext): void;
648
+ announceNavigation(position: number, total: number, type: string, title?: string, context?: AccessibilityContext): void;
649
+ private generateMeaningfulAnnouncement;
650
+ private buildPageNavigationAnnouncement;
651
+ private buildStoryNavigationAnnouncement;
652
+ private buildMomentNavigationAnnouncement;
653
+ private buildGenericNavigationAnnouncement;
654
+ private formatAnnouncementMessage;
655
+ cleanup(): void;
656
+ }
657
+ export { ContentAccessibilityManager };
658
+ export declare const contentAccessibilityManager: ContentAccessibilityManager;
659
+
660
+ declare abstract class BaseContentAccessibilityStrategy implements IContentAccessibilityStrategy {
661
+ protected contentType: ContentType;
662
+ protected buttonLabels: BaseButtonLabelConfig;
663
+ protected registeredWidgets: Map<string, IContentWidgetElements>;
664
+ constructor(contentType: ContentType, buttonLabels: BaseButtonLabelConfig);
665
+ setupAccessibility(contentId: string, elements: IContentWidgetElements): void;
666
+ updateLabels(contentId: string, data: IContentWidgetData): void;
667
+ cleanup(contentId: string): void;
668
+ }
669
+ export declare class StoryAccessibilityStrategy extends BaseContentAccessibilityStrategy {
670
+ private storyButtonLabels;
671
+ constructor(buttonLabels: StoryButtonLabelConfig);
672
+ updateLabels(contentId: string, data: IContentWidgetData): void;
673
+ }
674
+ export declare class MomentAccessibilityStrategy extends BaseContentAccessibilityStrategy {
675
+ private momentButtonLabels;
676
+ constructor(buttonLabels: MomentButtonLabelConfig);
677
+ updateLabels(contentId: string, data: IContentWidgetData): void;
678
+ }
679
+
680
+ export * from './accessibility.class';
681
+ export * from './accessibility-configs';
682
+ export * from './content-accessibility-manager.class';
683
+ export * from './content-accessibility-strategies';
684
+ export * from './accessibility-utils';
685
+ export * from './button-label-manager';
686
+
687
+ export * from './logger-manager.class';
688
+ export * from './logger-storage.class';
689
+ export * from './logger-transport.class';
690
+ export * from './logger-throttle.class';
691
+ export * from './logger-database-adapter';
692
+
693
+ export declare class LoggerDatabaseAdapter implements ILoggerDatabase {
694
+ storeLog(entry: LogEntryDB): Promise<void>;
695
+ getLogBatch(maxSize: number): Promise<LogEntryDB[]>;
696
+ removeLogs(ids: string[]): Promise<void>;
697
+ clearLogs(): Promise<void>;
698
+ getLogCount(): Promise<number>;
699
+ }
700
+
701
+ export declare class LoggerManager implements ILogger {
702
+ private static readonly LOG_IDENTIFIER_PREFIX;
703
+ private readonly storage;
704
+ private readonly transport;
705
+ private readonly throttle;
706
+ private configuration;
707
+ private pendingConfigUpdate;
708
+ private isInitialized;
709
+ private isDestroyed;
710
+ private isSending;
711
+ private immediateLogs;
712
+ private offlineQueue;
713
+ private immediateTimer;
714
+ private configUpdateTimer;
715
+ private isOnline;
716
+ private onlineStatusListener;
717
+ constructor(database: ILoggerDatabase);
718
+ init(configuration?: ILoggerConfiguration): Promise<void>;
719
+ destroy(): Promise<void>;
720
+ updateConfiguration(configuration: ILoggerConfiguration): void;
721
+ log(level: LogLevel, customLogIdentifier: string, message: string, metadata: ILogMetadata): Promise<void>;
722
+ private shouldLog;
723
+ private shouldSendImmediately;
724
+ private addToImmediateBatch;
725
+ private flushImmediateLogs;
726
+ private removeEntriesFromStorage;
727
+ private sendEntriesAndCleanup;
728
+ private processBatch;
729
+ private setupNetworkMonitoring;
730
+ private syncOfflineQueue;
731
+ private addToOfflineQueue;
732
+ private scheduleConfigurationUpdate;
733
+ private applyPendingConfiguration;
734
+ private resetLoggerState;
735
+ private handleNetworkReconnection;
736
+ private setDefaultLoggerConfiguration;
737
+ }
738
+
739
+ export interface ILoggerDatabase {
740
+ storeLog(entry: LogEntryDB): Promise<void>;
741
+ getLogBatch(maxSize: number): Promise<LogEntryDB[]>;
742
+ removeLogs(ids: string[]): Promise<void>;
743
+ clearLogs(): Promise<void>;
744
+ getLogCount(): Promise<number>;
745
+ }
746
+ export declare class LoggerStorage {
747
+ private database;
748
+ constructor(database: ILoggerDatabase);
749
+ store(entry: LogEntryDB): Promise<void>;
750
+ getBatch(maxSize: number): Promise<LogEntryDB[]>;
751
+ remove(ids: string[]): Promise<void>;
752
+ clear(): Promise<void>;
753
+ getLogCount(): Promise<number>;
754
+ }
755
+
756
+ export declare class LoggerThrottle {
757
+ private batchIntervalMs;
758
+ private logCount;
759
+ private batchInterval;
760
+ private batchCallback;
761
+ private _maxBatchSize;
762
+ private _minBatchSize;
763
+ get minBatchSize(): number;
764
+ get maxBatchSize(): number;
765
+ updateConfiguration(config: {
766
+ batchIntervalMs: number;
767
+ maxBatchSize: number;
768
+ minBatchSize: number;
769
+ }): void;
770
+ onBatchReady(callback: () => Promise<void>): void;
771
+ destroy(): void;
772
+ private setupBatchInterval;
773
+ incrementLogCount(): void;
774
+ shouldTriggerBatch(): boolean;
775
+ }
776
+
777
+ export declare class BatchRejectedError extends Error {
778
+ constructor(message?: string);
779
+ }
780
+ export interface ILogApiRequest {
781
+ message: string;
782
+ level: string;
783
+ api_key: string;
784
+ api_scheme_version: string;
785
+ metadata: ILogMetadata;
786
+ }
787
+ export declare class LoggerTransport {
788
+ private readonly MAX_RETRY_ATTEMPTS;
789
+ private readonly BASE_RETRY_DELAY;
790
+ private readonly MAX_RETRY_DELAY;
791
+ private readonly REQUEST_TIMEOUT;
792
+ send(entries: LogEntryDB[]): Promise<void>;
793
+ private sendWithRetry;
794
+ private attemptSend;
795
+ private preparePayload;
796
+ private sendToEndpoint;
797
+ private calculateRetryDelay;
798
+ private delay;
799
+ }
800
+
582
801
  export declare class BlazeAlert extends BaseWidget {
583
802
  titleContainer: HTMLDivElement;
584
803
  textContainer: HTMLDivElement;
@@ -749,7 +968,8 @@ export declare class BlazeButton extends BaseWidget {
749
968
  isAnimationOnDesktopInitialized: boolean;
750
969
  get refElement(): ShadowRoot | this;
751
970
  constructor();
752
- static get observedAttributes(): ("height" | "order" | "width" | "icon-color" | "disabled" | "blaze-btn-hidden" | "blaze-btn-visible" | "button-desktop-animation")[];
971
+ private setupFocusDelegation;
972
+ static get observedAttributes(): ("height" | "order" | "width" | "icon-color" | "disabled" | "blaze-btn-visible" | "blaze-btn-hidden" | "button-desktop-animation")[];
753
973
  private onMouseEnter;
754
974
  private onMouseLeave;
755
975
  private onClick;
@@ -760,6 +980,7 @@ export declare class BlazeButton extends BaseWidget {
760
980
  get width(): string | number | boolean;
761
981
  setIconUrl(value: string): void;
762
982
  setIconUrlAnimation(value: string): void;
983
+ setAriaLabel(label: string): void;
763
984
  private applyIconStyles;
764
985
  private setIsHidden;
765
986
  private setIsVisible;
@@ -830,6 +1051,7 @@ export declare class BlazeCtaButton extends BaseWidget {
830
1051
  setAnchorButtonStyles(styles: Partial<CSSStyleDeclaration>): void;
831
1052
  setCtaTextStyle(styles: Partial<CSSStyleDeclaration>): void;
832
1053
  setCtaIconStyles(styles: Partial<CSSStyleDeclaration>): void;
1054
+ setAriaLabel(label: string): void;
833
1055
  clearAllAnimations(): void;
834
1056
  }
835
1057
 
@@ -856,6 +1078,19 @@ export declare class BlazeShareButton extends BaseWidget {
856
1078
  createButton(text: string, svgIcon: string): void;
857
1079
  }
858
1080
 
1081
+ export declare const ACCESSIBILITY_TIMING: {
1082
+ readonly FOCUS_DELAY: 500;
1083
+ readonly LABEL_CLEAR_DELAY: 1000;
1084
+ readonly CONFIG_SCHEDULE_DELAY: 1000;
1085
+ };
1086
+ export declare const ACCESSIBILITY_ATTRIBUTES: {
1087
+ readonly ACTIVE_TABINDEX: "0";
1088
+ readonly INACTIVE_TABINDEX: "-1";
1089
+ readonly REGION_ROLE: "region";
1090
+ readonly ARIA_HIDDEN_FALSE: "false";
1091
+ readonly ARIA_HIDDEN_TRUE: "true";
1092
+ };
1093
+
859
1094
  export declare const IMA_RATIOS: {
860
1095
  readonly general: "1x1";
861
1096
  readonly horizontal: "640x480";
@@ -983,6 +1218,7 @@ export declare const ASPECT_RATIO_16_9_STRING = "16 / 9";
983
1218
  export declare const ASPECT_RATIO_9_16_STRING = "9 / 16";
984
1219
  export declare const ASPECT_RATIO_4_3_STRING = "4 / 3";
985
1220
 
1221
+ export * from './accessibility.constants';
986
1222
  export * from './ads.constants';
987
1223
  export * from './analytics.constants';
988
1224
  export * from './device.constants';
@@ -1040,6 +1276,7 @@ export declare const DB_NAMES: {
1040
1276
  readonly USER: "user";
1041
1277
  readonly STORIES: "stories";
1042
1278
  readonly VIDEOS: "videos";
1279
+ readonly LOGS: "logs";
1043
1280
  };
1044
1281
  export declare class Database implements IDatabase {
1045
1282
  private readonly options;
@@ -1053,7 +1290,9 @@ export declare class Database implements IDatabase {
1053
1290
  private deleteDatabase;
1054
1291
  createTransaction(tableName: string, mode: 'readonly' | 'readwrite'): IDBObjectStore | null;
1055
1292
  get<T>(tableName: string, key: string): Promise<IResponse<T>>;
1293
+ getAll<T>(tableName: string): Promise<T[]>;
1056
1294
  update<T>(tableName: string, value: any): Promise<IResponse<T>>;
1295
+ delete(tableName: string, key: string): Promise<IResponse<void>>;
1057
1296
  private throttledReinit;
1058
1297
  }
1059
1298
 
@@ -1091,7 +1330,9 @@ export type IAdInfo = IWebAdInfo | IImaAdInfo;
1091
1330
  export interface AppConfiguration {
1092
1331
  configurations: {
1093
1332
  analyticsAddEntitiesInfo?: string;
1333
+ configRefetchIntervalInMinutes?: number;
1094
1334
  };
1335
+ sdkLoggerConfigurations?: ILoggerConfiguration;
1095
1336
  }
1096
1337
 
1097
1338
  export type ContentExtraInfo = {
@@ -1154,6 +1395,7 @@ export * from './cta.interface';
1154
1395
  export * from './interaction.interface';
1155
1396
  export * from './layer-content.interface';
1156
1397
  export * from './layer.interface';
1398
+ export * from './log-entry.interface';
1157
1399
  export * from './moment.interface';
1158
1400
  export * from './page.interface';
1159
1401
  export * from './rendition.interface';
@@ -1258,6 +1500,16 @@ export interface ILayer {
1258
1500
  content: ILayerContent;
1259
1501
  }
1260
1502
 
1503
+ export interface LogEntryDB {
1504
+ id: string;
1505
+ message: string;
1506
+ level: LogLevel;
1507
+ timestamp: string;
1508
+ logIdentifier: string;
1509
+ metadata: string;
1510
+ priority: number;
1511
+ }
1512
+
1261
1513
  type MomentType = 'Content' | 'Ad';
1262
1514
  export interface IMoment extends IContent {
1263
1515
  momentIndexInPlaylist: number;
@@ -1448,6 +1700,15 @@ export * from './event.enum';
1448
1700
  export * from './http-status.enum';
1449
1701
  export * from './button.enum';
1450
1702
  export * from './action-handler-id.enum';
1703
+ export * from './log-level.enum';
1704
+
1705
+ export declare enum LogLevel {
1706
+ DEBUG = "DEBUG",
1707
+ INFO = "INFO",
1708
+ WARN = "WARN",
1709
+ ERROR = "ERROR",
1710
+ CRITICAL = "CRITICAL"
1711
+ }
1451
1712
 
1452
1713
  export interface WidgetsTagNameMap {
1453
1714
  'blaze-sdk': BlazeWidgetSDK;
@@ -1595,6 +1856,72 @@ export declare const shareVideosIconSvg = "data:image/svg+xml;base64,PHN2ZyB4bWx
1595
1856
  export declare const linkIconSvg = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWY2MzY4Ij48cGF0aCBkPSJNNDQwLTI4MEgyODBxLTgzIDAtMTQxLjUtNTguNVQ4MC00ODBxMC04MyA1OC41LTE0MS41VDI4MC02ODBoMTYwdjgwSDI4MHEtNTAgMC04NSAzNXQtMzUgODVxMCA1MCAzNSA4NXQ4NSAzNWgxNjB2ODBaTTMyMC00NDB2LTgwaDMyMHY4MEgzMjBabTIwMCAxNjB2LTgwaDE2MHE1MCAwIDg1LTM1dDM1LTg1cTAtNTAtMzUtODV0LTg1LTM1SDUyMHYtODBoMTYwcTgzIDAgMTQxLjUgNTguNVQ4ODAtNDgwcTAgODMtNTguNSAxNDEuNVQ2ODAtMjgwSDUyMFoiLz48L3N2Zz4=";
1596
1857
  export declare const checkMarkSvg = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzUxMl8xMDY4IiBzdHlsZT0ibWFzay10eXBlOmFscGhhIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPgo8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IiNEOUQ5RDkiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzUxMl8xMDY4KSI+CjxwYXRoIGQ9Ik05LjU1MDEgMThMMy44NTAxIDEyLjNMNS4yNzUxIDEwLjg3NUw5LjU1MDEgMTUuMTVMMTguNzI1MSA1Ljk3NDk4TDIwLjE1MDEgNy4zOTk5OEw5LjU1MDEgMThaIiBmaWxsPSIjRjBGMEYwIi8+CjwvZz4KPC9zdmc+Cg==";
1597
1858
 
1859
+ export interface AccessibilityContext {
1860
+ navigationType?: string;
1861
+ export interface ModalContext extends AccessibilityContext {
1862
+ total: number;
1863
+ isPlaying?: boolean;
1864
+ hasClosedCaptions?: boolean;
1865
+ totalPages?: number;
1866
+ }
1867
+ export interface UserActionContext extends AccessibilityContext {
1868
+ setupAccessibility(contentId: string, elements: IContentWidgetElements): void;
1869
+ updateLabels(contentId: string, data: IContentWidgetData): void;
1870
+ cleanup(contentId: string): void;
1871
+ }
1872
+ export interface AccessibilityAnnouncement {
1873
+ message: string;
1874
+ priority: AnnouncementPriority;
1875
+ delay?: number;
1876
+ category?: AnnouncementCategory;
1877
+ }
1878
+ export interface IContentWidgetButtons {
1879
+ play?: HTMLElement;
1880
+ mute?: HTMLElement;
1881
+ like?: HTMLElement;
1882
+ share?: HTMLElement;
1883
+ close?: HTMLElement;
1884
+ cta?: HTMLElement;
1885
+ captions?: HTMLElement;
1886
+ custom1?: HTMLElement;
1887
+ custom2?: HTMLElement;
1888
+ nextStoryPage?: HTMLElement;
1889
+ prevStoryPage?: HTMLElement;
1890
+ nextStory?: HTMLElement;
1891
+ prevStory?: HTMLElement;
1892
+ nextMoment?: HTMLElement;
1893
+ prevMoment?: HTMLElement;
1894
+ }
1895
+ export interface IContentWidgetData {
1896
+ id: string;
1897
+ title?: string;
1898
+ isPlaying?: boolean;
1899
+ isMuted?: boolean;
1900
+ isLiked?: boolean;
1901
+ hasClosedCaptions?: boolean;
1902
+ ctaText?: string;
1903
+ }
1904
+ export interface IContentWidgetElements {
1905
+ widget: HTMLElement;
1906
+ buttons: IContentWidgetButtons;
1907
+ data: IContentWidgetData;
1908
+ }
1909
+ export interface IContentAccessibilityManager {
1910
+ registerContentWidget(contentId: string, elements: IContentWidgetElements, contentType: ContentType): void;
1911
+ updateButtonLabels(contentId: string, dynamicState: Partial<IContentWidgetData>): void;
1912
+ announceUserAction(contentType: ContentType, action: string, context: UserActionContext): void;
1913
+ announceModalOpening(contentType: ContentType, context: ModalContext): void;
1914
+ announceNavigation(position: number, total: number, type: string, title?: string, context?: AccessibilityContext): void;
1915
+ unregisterContentWidget(contentId: string): void;
1916
+ cleanup(): void;
1917
+ }
1918
+ export interface IAccessibilityManager {
1919
+ setupLiveRegions(container?: HTMLElement): void;
1920
+ announce(announcement: AccessibilityAnnouncement): void;
1921
+ manageFocus(element: HTMLElement): void;
1922
+ cleanup(): void;
1923
+ }
1924
+
1598
1925
  type CustomNativeTargeting = Record<string, string | string[]>;
1599
1926
  type CustomNativeArgs = {
1600
1927
  path: string;
@@ -1662,7 +1989,9 @@ export type IdsDataSourceParams = Omit<BlazeDataSourceType, 'sourceType' | 'labe
1662
1989
  export interface IDatabase {
1663
1990
  init: () => Promise<void>;
1664
1991
  get: <T>(tableName: string, key: string) => Promise<IResponse<T>>;
1992
+ getAll: <T>(tableName: string) => Promise<T[]>;
1665
1993
  update: <T>(tableName: string, value: any) => Promise<IResponse<T>>;
1994
+ delete: (tableName: string, key: string) => Promise<IResponse<void>>;
1666
1995
  }
1667
1996
  export interface IDatabaseInitOptions {
1668
1997
  onOpen: (db: IDBDatabase) => Promise<void>;
@@ -1752,6 +2081,7 @@ export type BlazeVideoIconsStyle = BaseBlazeIcons & {
1752
2081
  };
1753
2082
  };
1754
2083
 
2084
+ export * from './accessibility-manager.interface';
1755
2085
  export * from './ad-handler.interface';
1756
2086
  export * from './behaviors.interface';
1757
2087
  export * from './blaze-sdk.interface';
@@ -1762,13 +2092,14 @@ export * from './device.interface';
1762
2092
  export * from './drawable.interface';
1763
2093
  export * from './http-response.interface';
1764
2094
  export * from './icons.interface';
1765
- export * from './item-click-callback.interface';
2095
+ export * from './logger.interface';
1766
2096
  export * from './player.interface';
1767
2097
  export * from './response.interface';
1768
2098
  export * from './service.interface';
1769
2099
  export * from './widget-label-builder.interface';
1770
2100
  export * from './widget-options.interface';
1771
2101
  export * from './widget-view.interface';
2102
+ export * from './item-click-callback.interface';
1772
2103
  export { default as Observable } from './observable';
1773
2104
 
1774
2105
  export interface ItemClickContext {
@@ -1794,6 +2125,74 @@ export interface ILayoutDataSourceOptions {
1794
2125
  shouldOrderWidgetByReadStatus?: boolean;
1795
2126
  }
1796
2127
 
2128
+ export interface ILoggerConfiguration {
2129
+ isEnabled: boolean;
2130
+ loggerBatchIntervalInSeconds: number;
2131
+ loggerMaxAllowedBatchSize: number;
2132
+ loggerMinAllowedBatchSize: number;
2133
+ logLevel: LogLevel;
2134
+ immediateLogLevel: LogLevel;
2135
+ ignoredLogs: IIgnoredLog[];
2136
+ }
2137
+ export interface IIgnoredLog {
2138
+ logIdentifier: string;
2139
+ sdkType: 'Web';
2140
+ applyFromVersion?: string;
2141
+ applyBelowVersion?: string;
2142
+ applySpecificVersions?: string[];
2143
+ }
2144
+ export interface ILogEntry {
2145
+ id: string;
2146
+ message: string;
2147
+ level: LogLevel;
2148
+ timestamp: string;
2149
+ logIdentifier: string;
2150
+ metadata: ILogMetadata;
2151
+ }
2152
+ export interface ILogMetadata {
2153
+ session_id: string;
2154
+ id: string;
2155
+ log_identifier: string;
2156
+ sdk_type: string;
2157
+ sdk_version: string;
2158
+ api_key: string;
2159
+ device_type: string;
2160
+ device_brand: string;
2161
+ device_model: string;
2162
+ operating_system: string;
2163
+ operating_system_version: string;
2164
+ screen_resolution: string;
2165
+ connection_type: string;
2166
+ app_id: string;
2167
+ app_version: string;
2168
+ reporting_timestamp: string;
2169
+ [key: string]: any;
2170
+ }
2171
+ export declare const METADATA_FIELDS: {
2172
+ readonly SESSION_ID: "session_id";
2173
+ readonly ID: "id";
2174
+ readonly SDK_TYPE: "sdk_type";
2175
+ readonly SDK_VERSION: "sdk_version";
2176
+ readonly API_KEY: "api_key";
2177
+ readonly DEVICE_TYPE: "device_type";
2178
+ readonly DEVICE_BRAND: "device_brand";
2179
+ readonly DEVICE_MODEL: "device_model";
2180
+ readonly OPERATING_SYSTEM: "operating_system";
2181
+ readonly OPERATING_SYSTEM_VERSION: "operating_system_version";
2182
+ readonly SCREEN_RESOLUTION: "screen_resolution";
2183
+ readonly CONNECTION_TYPE: "connection_type";
2184
+ readonly APP_ID: "app_id";
2185
+ readonly APP_VERSION: "app_version";
2186
+ readonly REPORTING_TIMESTAMP: "reporting_timestamp";
2187
+ readonly LOG_IDENTIFIER: "log_identifier";
2188
+ };
2189
+ export interface ILogger {
2190
+ init(configuration?: ILoggerConfiguration): Promise<void>;
2191
+ log(level: LogLevel, logIdentifier: string, message: string, metadata?: Record<string, any>): void;
2192
+ updateConfiguration(configuration: ILoggerConfiguration): void;
2193
+ destroy(): Promise<void>;
2194
+ }
2195
+
1797
2196
  export default interface IntersectionObservable {
1798
2197
  intersectionObserver: IntersectionObserver;
1799
2198
  handleIntersection(entries: IntersectionObserverEntry[]): void;
@@ -1917,6 +2316,24 @@ declare abstract class AnalyticsServiceClass extends AnalyticsServiceClass_base
1917
2316
  }
1918
2317
  export declare const AnalyticsService: AnalyticsServiceClass;
1919
2318
 
2319
+ export declare class AnnouncementService implements IAnnouncementService {
2320
+ private config;
2321
+ private containerRegions;
2322
+ private announcementQueue;
2323
+ private isProcessingAnnouncement;
2324
+ private lastAnnouncementTime;
2325
+ private liveRegionsSetup;
2326
+ constructor(config: AnnouncementConfig);
2327
+ setupLiveRegions(container: HTMLElement): void;
2328
+ announce(message: string, priority?: AnnouncementPriority, category?: AnnouncementCategory): void;
2329
+ queueAnnouncement(announcement: AccessibilityAnnouncement): void;
2330
+ clearQueue(): void;
2331
+ isProcessing(): boolean;
2332
+ private processAnnouncementQueue;
2333
+ private performAnnouncement;
2334
+ cleanup(): void;
2335
+ }
2336
+
1920
2337
  type GetOptions = {
1921
2338
  orderType?: OrderType;
1922
2339
  };
@@ -1990,6 +2407,7 @@ declare abstract class ApiServiceClass extends ApiServiceClass_base implements I
1990
2407
  setLiked: boolean;
1991
2408
  }): Promise<void>;
1992
2409
  sendAnaltyicsEvents(body: Partial<AnalyticsEvent>[]): Promise<import("../interfaces").IHttpResponse<unknown>>;
2410
+ sendLoggerLogs(compressedBody: ArrayBuffer): Promise<import("../interfaces").IHttpResponse<unknown>>;
1993
2411
  sendInteractionResponse(options: {
1994
2412
  interactionId: Interaction['id'];
1995
2413
  responseId: string;
@@ -2011,9 +2429,13 @@ declare const AppConfigurationServiceClass_base: {
2011
2429
  };
2012
2430
  declare abstract class AppConfigurationServiceClass extends AppConfigurationServiceClass_base implements IService {
2013
2431
  private _appConfigurations?;
2432
+ private _refetchInterval;
2014
2433
  constructor();
2015
2434
  get appConfigurations(): AppConfiguration | undefined;
2016
2435
  init(options: IBlazeSDKOptions): Promise<void>;
2436
+ private setupRefetchInterval;
2437
+ private clearRefetchInterval;
2438
+ destroy(): void;
2017
2439
  }
2018
2440
  export declare const AppConfigurationService: AppConfigurationServiceClass;
2019
2441
 
@@ -2059,6 +2481,7 @@ declare abstract class ConfigServiceClass extends ConfigServiceClass_base implem
2059
2481
  private readonly _russiaRegionCDN;
2060
2482
  private readonly _urls;
2061
2483
  private readonly _analyticsUrls;
2484
+ private _loggerUrls;
2062
2485
  private readonly _globalStorageCDN;
2063
2486
  private readonly _russiaStorageCDN;
2064
2487
  private readonly _sdkStorageCDNs;
@@ -2070,7 +2493,8 @@ declare abstract class ConfigServiceClass extends ConfigServiceClass_base implem
2070
2493
  private set environment(value);
2071
2494
  get sendAnalytics(): boolean;
2072
2495
  get shouldCreateUser(): boolean;
2073
- get analyticsApiUrl(): string | undefined;
2496
+ get analyticsApiUrl(): string;
2497
+ get loggerApiUrl(): string;
2074
2498
  get externalUserId(): string | null;
2075
2499
  set externalUserId(value: string | null);
2076
2500
  get doNotTrack(): boolean;
@@ -2148,6 +2572,11 @@ declare abstract class DatabaseServiceClass extends DatabaseServiceClass_base im
2148
2572
  updateVideoData(videoId: string, data: Partial<VideoDBData>): Promise<void>;
2149
2573
  getVideoLike(videoId: string): Promise<IResponse<VideoDBData> | null>;
2150
2574
  getVideoPosterById(videoId: string): Promise<string | undefined>;
2575
+ addLog(log: LogEntryDB): Promise<void>;
2576
+ getLogs(maxCount: number): Promise<LogEntryDB[]>;
2577
+ removeLogs(logIds: string[]): Promise<void>;
2578
+ clearLogs(): Promise<void>;
2579
+ getLogCount(): Promise<number>;
2151
2580
  }
2152
2581
  export declare const DatabaseService: DatabaseServiceClass;
2153
2582
 
@@ -2219,7 +2648,9 @@ export * from './event.service';
2219
2648
  export * from './interaction.service';
2220
2649
  export * from './like.service';
2221
2650
  export * from './logger.service';
2651
+ export * from './moment.service';
2222
2652
  export * from './startup.service';
2653
+ export * from './story.service';
2223
2654
  export * from './user.service';
2224
2655
  export * from './video-cache.service';
2225
2656
  export * from './video-player.service';
@@ -2228,6 +2659,7 @@ export * from './widgets.service';
2228
2659
  export * from './moment.service';
2229
2660
  export * from './story.service';
2230
2661
  export * from './user-country.service';
2662
+ export * from './announcement.service';
2231
2663
 
2232
2664
  declare const InteractionServiceClass_base: {
2233
2665
  new (): {};
@@ -2257,33 +2689,18 @@ declare abstract class LikeServiceClass extends LikeServiceClass_base implements
2257
2689
  }
2258
2690
  export declare const LikeService: LikeServiceClass;
2259
2691
 
2260
- interface LoggerParams {
2261
- message: string;
2262
- level?: LogLevel;
2263
- metadata?: Record<string, any>;
2264
- }
2265
- declare enum LogLevel {
2266
- INFO = "info",
2267
- WARN = "warn",
2268
- ERROR = "error"
2269
- }
2270
2692
  declare const LoggerServiceClass_base: {
2271
2693
  new (): {};
2272
2694
  _instance: LoggerServiceClass;
2273
2695
  getInstance(): LoggerServiceClass;
2274
2696
  };
2275
- declare class LoggerServiceClass extends LoggerServiceClass_base implements IService {
2276
- private isEnabled;
2277
- private logStack;
2278
- private constructor();
2697
+ declare abstract class LoggerServiceClass extends LoggerServiceClass_base implements IService, ILogger {
2698
+ private loggerManager;
2699
+ constructor();
2279
2700
  init(): Promise<void>;
2280
- private getCurrentTime;
2281
- private logToConsole;
2282
- log({ message, level, metadata }: LoggerParams): void;
2283
- info(message: string, metadata?: Record<string, any>): void;
2284
- warn(message: string, metadata?: Record<string, any>): void;
2285
- error(message: string, metadata?: Record<string, any>): void;
2286
- printLogsToScreen(): void;
2701
+ destroy(): Promise<void>;
2702
+ updateConfiguration(configuration: ILoggerConfiguration): void;
2703
+ log(level: LogLevel, logIdentifier: string, message: string, metadata?: ILogMetadata): Promise<void>;
2287
2704
  }
2288
2705
  export declare const LoggerService: LoggerServiceClass;
2289
2706
 
@@ -2929,6 +3346,30 @@ export type EnhancementsType = {
2929
3346
  hasSwipeUp: boolean;
2930
3347
  } | null;
2931
3348
 
3349
+ export type AnnouncementPriority = 'polite' | 'assertive';
3350
+ export type AnnouncementCategory = 'navigation' | 'status' | 'error' | 'success';
3351
+ export declare const ANNOUNCEMENT_CONSTANTS: {
3352
+ readonly LIVE_REGIONS: {
3353
+ readonly POLITE_ID: "blaze-aria-live-polite";
3354
+ readonly ASSERTIVE_ID: "blaze-aria-live-assertive";
3355
+ readonly STYLES: {
3356
+ readonly POSITION: "absolute";
3357
+ readonly LEFT: "-10000px";
3358
+ readonly WIDTH: "1px";
3359
+ readonly HEIGHT: "1px";
3360
+ readonly OVERFLOW: "hidden";
3361
+ };
3362
+ };
3363
+ readonly ATTRIBUTES: {
3364
+ readonly ARIA_LIVE: "aria-live";
3365
+ readonly ARIA_ATOMIC: "aria-atomic";
3366
+ readonly ATOMIC_VALUE: "true";
3367
+ };
3368
+ readonly TIMING: {
3369
+ readonly REGION_SETUP_DELAY: 10;
3370
+ };
3371
+ };
3372
+
2932
3373
  export interface IAttributeParser {
2933
3374
  getIntAttribute(key: string, defaultValue?: number): number | undefined;
2934
3375
  getFloatAttribute(key: string, defaultValue?: number): number | undefined;
@@ -3348,6 +3789,7 @@ export type StoryGestureType = 'Swipe Up' | 'CTA Click';
3348
3789
  export type MomentGestureType = 'CTA Click';
3349
3790
 
3350
3791
  export * from './animation.type';
3792
+ export * from './announcement.type';
3351
3793
  export * from './attribute-parser';
3352
3794
  export * from './button.type';
3353
3795
  export * from './chip-status.type';
@@ -3483,6 +3925,24 @@ export type IWidgetViewOptions = IWidgetViewOptionsWithLabels | IWidgetViewOptio
3483
3925
 
3484
3926
  export type WidgetType = 'Row' | 'Grid';
3485
3927
 
3928
+ export declare function buildContentTypeLabel(contentType: ContentType, title: string, elementType?: 'button' | 'item' | 'player'): string;
3929
+ export declare function getContentTypeAction(contentType: ContentType): string;
3930
+ export declare function buildStatusInfo(content: IStory | IMoment | IVideo, badgeStyle?: IndicatorStyle): string;
3931
+ export declare function buildContentAriaLabel(options: {
3932
+ contentType: ContentType;
3933
+ title: string;
3934
+ content: IStory | IMoment | IVideo;
3935
+ position?: number;
3936
+ total?: number;
3937
+ badgeStyle?: IndicatorStyle;
3938
+ elementType?: 'button' | 'item' | 'player';
3939
+ }): string;
3940
+ export declare function buildCarouselLabel(contentType: ContentType, count: number, includeInstructions?: boolean): {
3941
+ label: string;
3942
+ announcement: string;
3943
+ };
3944
+ export declare function generateThumbnailAltText(contentType: ContentType, title: string, content: IStory | IMoment | IVideo): string;
3945
+
3486
3946
  export declare function isImaAdInfo(ad: IAdInfo): ad is IImaAdInfo;
3487
3947
  export declare function addContextToCustomTargeting(adInfo: IBaseAdInfo, customTargeting: Record<string, string | string[]>): void;
3488
3948
 
@@ -3553,6 +4013,7 @@ export declare function findParentOfType<T>(target: EventTarget | null, type: {
3553
4013
  }, stopAt: Element): T | null;
3554
4014
  export declare function validateContainer(containerId: string, widgetElementName?: string): HTMLElement;
3555
4015
 
4016
+ export * from './accessibility-label.utils';
3556
4017
  export * from './ad-info.utils';
3557
4018
  export * from './cc-language.utils';
3558
4019
  export * from './chip.utils';
@@ -3565,6 +4026,7 @@ export * from './personalized.utils';
3565
4026
  export * from './position.utils';
3566
4027
  export * from './regex.utils';
3567
4028
  export * from './shared-event-target.utils';
4029
+ export * from './tab-index-utils';
3568
4030
  export * from './stopwatch';
3569
4031
 
3570
4032
  export declare function getPersonalizedParamsForRequest(personalized?: BlazePersonalized): {
@@ -3611,8 +4073,74 @@ export declare class Stopwatch {
3611
4073
  reset(): void;
3612
4074
  }
3613
4075
 
4076
+ export declare class AccessibilityUtils {
4077
+ static setElementsAccessible(elements: Element[]): void;
4078
+ static setElementsInaccessible(elements: Element[]): void;
4079
+ static setElementAccessibilityHidden(element: Element): void;
4080
+ static setElementsAccessibilityHidden(elements: Element[]): void;
4081
+ }
4082
+
3614
4083
  export declare function getVideoDuration(existingVideo?: HTMLVideoElement, videoUrl?: string): Promise<number>;
3615
4084
 
4085
+ export { LOG_LEVEL_VALUES, isLogLevelAllowed, calculateLogPriority } from './logger-level-utils';
4086
+ export { buildLogMetadata, MetadataKeys } from './logger-metadata-utils';
4087
+ export { compressPayload } from './logger-compression-utils';
4088
+ export { estimateEntrySize, calculateTotalMemoryUsage } from './logger-memory-utils';
4089
+ export { validateLoggerConfigurationDetailed, shouldIgnoreLog, sanitizeBatchSizeConfiguration } from './logger-validation-utils';
4090
+ export { extractEntryIds } from './logger-storage-utils';
4091
+ export { pruneOfflineQueue, addToOfflineQueueWithPruning } from './logger-offline-utils';
4092
+
4093
+ export declare function compressPayload(payload: object | string): Promise<ArrayBuffer>;
4094
+
4095
+ export declare const LOG_LEVEL_VALUES: {
4096
+ readonly DEBUG: 1;
4097
+ readonly INFO: 2;
4098
+ readonly WARN: 3;
4099
+ readonly ERROR: 4;
4100
+ readonly CRITICAL: 5;
4101
+ };
4102
+ export declare function isLogLevelAllowed(logLevel: LogLevel, configuredLevel: LogLevel): boolean;
4103
+ export declare function calculateLogPriority(level: LogLevel): number;
4104
+
4105
+ export declare function estimateEntrySize(entry: LogEntryDB): number;
4106
+ export declare function calculateTotalMemoryUsage(entries: LogEntryDB[]): number;
4107
+
4108
+ export declare const MetadataKeys: {
4109
+ readonly SESSION_ID: "session_id";
4110
+ readonly ID: "id";
4111
+ readonly SDK_TYPE: "sdk_type";
4112
+ readonly SDK_VERSION: "sdk_version";
4113
+ readonly API_KEY: "api_key";
4114
+ readonly DEVICE_TYPE: "device_type";
4115
+ readonly DEVICE_BRAND: "device_brand";
4116
+ readonly DEVICE_MODEL: "device_model";
4117
+ readonly OPERATING_SYSTEM: "operating_system";
4118
+ readonly OPERATING_SYSTEM_VERSION: "operating_system_version";
4119
+ readonly SCREEN_RESOLUTION: "screen_resolution";
4120
+ readonly CONNECTION_TYPE: "connection_type";
4121
+ readonly REPORTING_TIMESTAMP: "reporting_timestamp";
4122
+ readonly LOG_IDENTIFIER: "log_identifier";
4123
+ };
4124
+ export declare function buildLogMetadata(sessionId: string, logId: string, logIdentifier?: string, customMetadata?: Record<string, any>): Record<string, any>;
4125
+
4126
+ export declare function pruneOfflineQueue(queue: LogEntryDB[], maxSize: number): {
4127
+ prunedQueue: LogEntryDB[];
4128
+ removedCount: number;
4129
+ };
4130
+ export declare function addToOfflineQueueWithPruning(queue: LogEntryDB[], entry: LogEntryDB, maxSize: number): {
4131
+ updatedQueue: LogEntryDB[];
4132
+ removedCount: number;
4133
+ };
4134
+
4135
+ export declare function extractEntryIds(entries: LogEntryDB[]): string[];
4136
+
4137
+ export declare function validateLoggerConfigurationDetailed(config: ILoggerConfiguration): {
4138
+ isValid: boolean;
4139
+ errors: string[];
4140
+ };
4141
+ export declare function sanitizeBatchSizeConfiguration(config: ILoggerConfiguration): ILoggerConfiguration;
4142
+ export declare function shouldIgnoreLog(logIdentifier: string, ignoredLogs: IIgnoredLog[]): boolean;
4143
+
3616
4144
  export * from './commands/player-buttons.command';
3617
4145
  export * from './commands/video-commands';
3618
4146
  export * from './components/timer';
@@ -4351,7 +4879,7 @@ export declare abstract class WidgetBaseLayout extends BlazeWidgetScrollable imp
4351
4879
  protected abstract updateWidgetDisplay(): void;
4352
4880
  protected sortContent(): void;
4353
4881
  protected reorderWidgets(): void;
4354
- private getContentType;
4882
+ protected getContentType(): ContentType;
4355
4883
  static get observedAttributes(): string[];
4356
4884
  protected createModal(type: ContentType): void;
4357
4885
  protected beforeStoryModalCreation(): void;
@@ -4637,20 +5165,25 @@ export declare class BlazeWidgetItem extends BaseWidget implements Observable {
4637
5165
  contentType: ContentType | undefined;
4638
5166
  chipType: ChipStatusType;
4639
5167
  intersectionObserver: IntersectionObserver;
4640
- get parentRef(): BlazeWidgetLayout;
4641
- statusIndicatorSettings: IndicatorStyle;
4642
- paddingItem: PositionOffset;
5168
+ private position;
5169
+ private total;
4643
5170
  content: IStory | IMoment | IVideo;
4644
5171
  onClick: (() => void) | undefined;
4645
5172
  private boundOnWidgetClick;
5173
+ private boundOnFocus;
5174
+ get parentRef(): BlazeWidgetLayout;
5175
+ statusIndicatorSettings: IndicatorStyle;
5176
+ paddingItem: PositionOffset;
4646
5177
  constructor(options: BlazeWidgetItemOptions);
4647
5178
  private initializeWidget;
4648
5179
  connectedCallback(): void;
5180
+ private updateAriaLabel;
4649
5181
  updateWidget(): void;
4650
5182
  updateWidgetItemPadding(): void;
4651
5183
  updateWidgetItemStyle(layoutStyle: LayoutStyle): void;
4652
5184
  private setupDOMElements;
4653
5185
  private setupEventListeners;
5186
+ private onFocus;
4654
5187
  private handleWidgetClick;
4655
5188
  disconnectedCallback(): void;
4656
5189
  debouncedIntersectionAction: {
@@ -4661,6 +5194,7 @@ export declare class BlazeWidgetItem extends BaseWidget implements Observable {
4661
5194
  };
4662
5195
  handleIntersection(): void;
4663
5196
  private setData;
5197
+ private setupChildElementsAccessibility;
4664
5198
  isFullyVisibleInParent(): boolean;
4665
5199
  loadNewThumbnail(): void;
4666
5200
  getThumbnailUrl(): string;
@@ -4684,6 +5218,11 @@ export declare class BlazeWidgetItem extends BaseWidget implements Observable {
4684
5218
  private getItemIndex;
4685
5219
  event(action: WidgetAction, data: Partial<WidgetEvent>, label?: string | undefined): void;
4686
5220
  render(): void;
5221
+ updateAccessibilityInfo(info: {
5222
+ position: number;
5223
+ total: number;
5224
+ contentType?: ContentType;
5225
+ }): void;
4687
5226
  }
4688
5227
 
4689
5228
  /// <reference types="node" />
@@ -4701,6 +5240,8 @@ export declare class BlazeWidgetLayout extends WidgetBaseLayout {
4701
5240
  onMouseLeaveEvent: (e: MouseEvent) => void;
4702
5241
  currentlyAnimatedItem: BlazeWidgetItem | undefined;
4703
5242
  firstVisibleItem: BlazeWidgetItem | undefined;
5243
+ private focusedItemIndex;
5244
+ private lastFocusedIndex;
4704
5245
  get refElement(): ShadowRoot | BlazeWidgetLayout;
4705
5246
  constructor();
4706
5247
  connectedCallback(): void;
@@ -4709,7 +5250,6 @@ export declare class BlazeWidgetLayout extends WidgetBaseLayout {
4709
5250
  onResize(): void;
4710
5251
  handleHeightChangeMutation(mutationsList: MutationRecord[]): void;
4711
5252
  handleIntersection(entries: IntersectionObserverEntry[]): void;
4712
- onKeyDown(e: KeyboardEvent): void;
4713
5253
  onContentChange(mode: ContentDirection): void;
4714
5254
  onPlayerClose(): void;
4715
5255
  onPlayerOpen(): void;
@@ -4777,10 +5317,24 @@ export declare class BlazeWidgetLayout extends WidgetBaseLayout {
4777
5317
  connectWidgets(): void;
4778
5318
  get thumbnailShape(): ThumbnailShape;
4779
5319
  widgetType(): WidgetType;
5320
+ setPersonalized(personalized?: BlazePersonalized): void;
5321
+ private setupAccessibility;
5322
+ private updateAccessibilityLabel;
5323
+ onKeyDown(e: KeyboardEvent): void;
5324
+ private navigateToNextItem;
5325
+ private navigateToPreviousItem;
5326
+ private navigateToItem;
5327
+ private activateCurrentItem;
5328
+ private announceCurrentItem;
5329
+ updateFocusedItemIndex(index: number): void;
5330
+ private setFocusState;
5331
+ private removeTabIndexFromWidgetItems;
5332
+ private restoreTabIndexOnWidgetItems;
4780
5333
  }
4781
5334
 
4782
5335
  export declare class BlazeWidgetModal extends BaseWidget {
4783
5336
  player: BlazeWidgetStoryPlayer | BlazeWidgetMomentPlayer | BlazeWidgetVideoPlayer;
5337
+ private contentType;
4784
5338
  isOpen: boolean;
4785
5339
  exitButtonElement: BlazeButton;
4786
5340
  exitButtonWrapperElement: BlazeDiv;
@@ -4789,6 +5343,7 @@ export declare class BlazeWidgetModal extends BaseWidget {
4789
5343
  isMultiTouch: boolean;
4790
5344
  boundOnResizeEvent: (this: Window, ev: UIEvent) => void;
4791
5345
  boundOnPopStateEvent: (ev: PopStateEvent) => void;
5346
+ boundOnExitButtonClick: (ev: MouseEvent) => void;
4792
5347
  onContentChange?: (mode: ContentDirection) => void;
4793
5348
  onClose: ((options?: ISmoothOpenCloseModal) => void) | undefined;
4794
5349
  onOpen: (() => void) | undefined;
@@ -4798,6 +5353,7 @@ export declare class BlazeWidgetModal extends BaseWidget {
4798
5353
  private isRealResizeEvent;
4799
5354
  onResize(): void;
4800
5355
  handleOnContentChange(mode: ContentDirection): void;
5356
+ handleOnExitButtonClick(): void;
4801
5357
  handlePopState(): void;
4802
5358
  seek(id: string): void;
4803
5359
  setupHammer(): void;
@@ -4814,6 +5370,7 @@ export declare class BlazeWidgetModal extends BaseWidget {
4814
5370
  customButtonVisibility?: boolean;
4815
5371
  }): boolean;
4816
5372
  render(): void;
5373
+ private transferFocusToModal;
4817
5374
  }
4818
5375
 
4819
5376
  export type BlazeWidgetContent = BlazeWidgetStory | BlazeWidgetMoment | BlazeVideoElement;
@@ -5209,6 +5766,8 @@ export declare class BlazeWidgetMomentPlayer extends WidgetAbstractPlayer {
5209
5766
  boundHandleMuteClicked: () => void;
5210
5767
  private fetchedPosterUrls;
5211
5768
  private preloadTimer;
5769
+ private accessibilityConfigTimeout;
5770
+ private focusTimeout;
5212
5771
  constructor();
5213
5772
  get currentMoment(): BlazeWidgetMoment;
5214
5773
  connectedCallback(): void;
@@ -5228,6 +5787,7 @@ export declare class BlazeWidgetMomentPlayer extends WidgetAbstractPlayer {
5228
5787
  updateItemData(itemToReplaceWith: BlazeWidgetMoment & BlazeWidgetStory & BlazeVideoElement, nextItemToInsert: BlazeWidgetMoment | BlazeWidgetStory | BlazeVideoElement): void;
5229
5788
  createAnimation(content: BlazeWidgetMoment, direction: ContentDirection, targetIndex: number): AnimeTimelineInstance;
5230
5789
  handleAnimationStart(content: BlazeWidgetMoment, direction: ContentDirection): void;
5790
+ private calculateTruePosition;
5231
5791
  handleAnimationCompletion(content: BlazeWidgetMoment, mode: ContentDirection): Promise<void>;
5232
5792
  loadAndPlayContent(): Promise<void>;
5233
5793
  setContent(content: BlazeWidgetMoment[]): void;
@@ -5246,6 +5806,13 @@ export declare class BlazeWidgetMomentPlayer extends WidgetAbstractPlayer {
5246
5806
  loadContentBatch(): void;
5247
5807
  resetStyles(): void;
5248
5808
  render(): void;
5809
+ configurePlayerContentAccessibility(): void;
5810
+ private setCurrentMomentAccessibility;
5811
+ private setInactiveMomentAccessibility;
5812
+ private scheduleAccessibilityConfig;
5813
+ private cancelAccessibilityConfig;
5814
+ private scheduleFocus;
5815
+ private cancelFocus;
5249
5816
  }
5250
5817
 
5251
5818
  export declare class BlazeWidgetMomentSeekBar extends HTMLElement {
@@ -5335,6 +5902,7 @@ export declare class BlazeWidgetMoment extends BlazeWidgetContent {
5335
5902
  onClose: () => void;
5336
5903
  boundOnCtaClicked: (event: Event) => void;
5337
5904
  boundPlayPauseButtonClick: (event: MouseEvent) => void;
5905
+ boundOnKeyDown: (event: KeyboardEvent) => void;
5338
5906
  topContainer: BlazeDiv;
5339
5907
  bottomContainer: BlazeDiv;
5340
5908
  bottomContentContainer: BlazeDiv;
@@ -5443,6 +6011,18 @@ export declare class BlazeWidgetMoment extends BlazeWidgetContent {
5443
6011
  restartVideo(): void;
5444
6012
  adjustContentView(): void;
5445
6013
  event(action: MomentAction, momentData: Partial<MomentEvent>, label?: string | undefined): Promise<void>;
6014
+ private registerMomentAccessibility;
6015
+ updateAccessibilityLabels(): void;
6016
+ private buildMomentAccessibilityState;
6017
+ updateContentAccessibilityAfterDataChange(): void;
6018
+ protected updateButtonAccessibilityLabels(): void;
6019
+ enableAllButtons(): void;
6020
+ disableAllButtons(): void;
6021
+ protected setButtonsAccessibilityState(buttons: Element[], accessible: boolean): void;
6022
+ private enableAnchorElements;
6023
+ private disableAnchorElements;
6024
+ getAllFocusableButtons(): Element[];
6025
+ private getMomentButtonsForAccessibility;
5446
6026
  render(): void;
5447
6027
  }
5448
6028
 
@@ -5475,6 +6055,8 @@ export declare class BlazeWidgetStoryPlayer extends WidgetAbstractPlayer {
5475
6055
  boundOnKeyDown: (event: KeyboardEvent) => Promise<void>;
5476
6056
  backgroundAnimation?: Animation;
5477
6057
  dispatchExitStoryEvents: (() => void) | undefined;
6058
+ private accessibilityConfigTimeout;
6059
+ private focusTimeout;
5478
6060
  constructor();
5479
6061
  connectedCallback(): void;
5480
6062
  disconnectedCallback(): void;
@@ -5505,6 +6087,15 @@ export declare class BlazeWidgetStoryPlayer extends WidgetAbstractPlayer {
5505
6087
  render(): void;
5506
6088
  loadContentBatch(): void;
5507
6089
  playToggleCurrentStory(): void;
6090
+ manageElementsAccessible(activeContentId: string): void;
6091
+ calculateTruePosition(currentContent: BlazeWidgetStory): number;
6092
+ private configurePlayerContentAccessibility;
6093
+ private setCurrentStoryAccessibility;
6094
+ private setInactiveStoryAccessibility;
6095
+ private scheduleAccessibilityConfig;
6096
+ private cancelAccessibilityConfig;
6097
+ private scheduleFocus;
6098
+ private cancelFocus;
5508
6099
  }
5509
6100
 
5510
6101
  export declare class BlazeWidgetStory extends BlazeWidgetContent {
@@ -5677,6 +6268,18 @@ export declare class BlazeWidgetStory extends BlazeWidgetContent {
5677
6268
  private onNextPageEvent;
5678
6269
  private onPrevPageEvent;
5679
6270
  private getPagesContentExtraInfo;
6271
+ getAllFocusableButtons(): Element[];
6272
+ enableAllButtons(): void;
6273
+ disableAllButtons(): void;
6274
+ protected setButtonsAccessibilityState(buttons: Element[], accessible: boolean): void;
6275
+ private registerStoryAccessibility;
6276
+ private buildStoryRegistrationData;
6277
+ private getStoryButtonsForAccessibility;
6278
+ private getStoryDataForAccessibility;
6279
+ private updateStoryAccessibilityLabels;
6280
+ private getCurrentAccessibilityState;
6281
+ updateAccessibilityLabels(): void;
6282
+ private buildStoryAccessibilityState;
5680
6283
  }
5681
6284
 
5682
6285
  export declare const ElementId: {