/** * Copyright (c) Double Symmetry GmbH * Commercial use requires a license. See https://rntp.dev/pricing */ import { EventBus } from './EventBus'; import { MediaSessionController } from './MediaSessionController'; import { type EngineProvider, type ResolvedMediaItem } from './engines/AudioEngine'; interface WebTrackPlayerOptions { /** Injected by tests; defaults to {@link DefaultEngineProvider}. */ engineProvider?: EngineProvider; /** Injected by tests; defaults to navigator.mediaSession. */ mediaSession?: ConstructorParameters[1]; } /** * Pure-TS implementation of the native module Spec for the web platform. * Receives already-resolved payloads from src/audio.ts. */ export declare class WebTrackPlayer { readonly eventBus: EventBus; private queue; private provider; private injectedProvider; private engine; private isSetup; private playWhenReady; private engineState; private repeatMode; private volume; private speed; private lastEmittedState; private lastEmittedPlaying; private warned; private lastProgressEmitMs; private mediaSession; private firstPlayingSeen; private sleepTimer; private readonly engineCallbacks; constructor(options?: WebTrackPlayerOptions); setupPlayer(_config: Record): void; private createDefaultProvider; destroy(): void; play(): void; pause(): void; stop(): void; seekTo(position: number): void; seekBy(offset: number): void; skipToNext(): void; skipToPrevious(): void; skipToIndex(index: number): void; retry(): void; setPlaybackSpeed(speed: number): void; setVolume(volume: number): void; setMediaItem(mediaItem: ResolvedMediaItem): void; setMediaItems(mediaItems: ResolvedMediaItem[], startIndex: number): void; addMediaItem(mediaItem: ResolvedMediaItem): void; addMediaItems(mediaItems: ResolvedMediaItem[]): void; insertMediaItem(index: number, mediaItem: ResolvedMediaItem): void; insertMediaItems(index: number, mediaItems: ResolvedMediaItem[]): void; removeMediaItem(index: number): void; removeMediaItems(fromIndex: number, toIndex: number): void; clear(): void; replaceMediaItem(index: number, mediaItem: ResolvedMediaItem): void; moveMediaItem(fromIndex: number, toIndex: number): void; updateMetadata(index: number, metadata: Partial>): void; getPlaybackState(): string; isPlaying(): boolean; getProgress(): { position: number; duration: number; buffered: number; cached: number; }; getPlaybackSpeed(): number; getVolume(): number; getActiveMediaItem(): ResolvedMediaItem | null; getActiveMediaItemIndex(): number | null; getQueue(): ResolvedMediaItem[]; getRepeatMode(): string; setRepeatMode(mode: string): void; isShuffleEnabled(): boolean; setShuffleEnabled(enabled: boolean): void; setCommands(commands: Record): void; setBrowseTree(_categories: unknown[]): void; updateProgressSyncHeaders(_headers: Record): void; preload(item: ResolvedMediaItem, _duration: number): void; cancelPreload(item: ResolvedMediaItem): void; clearCache(): void; sleepAfterTime(seconds: number, fadeOutSeconds: number): void; sleepAfterMediaItemAtIndex(index: number): void; getSleepTimer(): Record | null; cancelSleepTimer(): void; addListener(_eventType: string): void; removeListeners(_count: number): void; private requireSetup; private loadCurrent; private engineForItem; private afterCurrentRemoved; private handleEngineState; private handleEnded; private handleEngineError; private handleTimeUpdate; private mapState; private emitDerivedState; private emitQueueChanged; private emitTransition; private emitMetadataChanged; private warnOnce; } export {}; //# sourceMappingURL=WebTrackPlayer.d.ts.map