/** * Copyright (c) Double Symmetry GmbH * Commercial use requires a license. See https://rntp.dev/pricing */ import type { ResolvedMediaItem } from './engines/AudioEngine'; /** * Pure queue state for the web backend. Ports the iOS `QueueManager` * behavioral contract (see ios/tests/QueueManagerTests.swift). * * `items` is the canonical queue. When shuffle is enabled, `playOrder` is a * permutation of canonical indices and navigation walks it; the canonical * queue and `currentIndex` (canonical) are unaffected by shuffle state. */ export declare class QueueManager { items: ResolvedMediaItem[]; currentIndex: number; private playOrder; get current(): ResolvedMediaItem | null; add(newItems: ResolvedMediaItem[]): void; insert(index: number, newItems: ResolvedMediaItem[]): void; /** Returns true if the removed item was the current item. */ remove(index: number): boolean; /** Removes [fromIndex, toIndex). Returns true if the current item was removed. */ removeRange(fromIndex: number, toIndex: number): boolean; replace(index: number, item: ResolvedMediaItem): void; move(fromIndex: number, toIndex: number): void; clear(): void; jump(index: number): void; next(wrap: boolean): boolean; previous(wrap: boolean): boolean; setShuffleEnabled(enabled: boolean): void; isShuffleEnabled(): boolean; /** Fisher–Yates over all indices, current item pinned first. */ private rebuildPlayOrder; private step; } //# sourceMappingURL=QueueManager.d.ts.map