import { IPlayQueueItemStore } from '../../media-player.play-queue.abstractions/interfaces/IPlayQueueItemStore';
import { IPlayQueueStore } from '../../media-player.play-queue.abstractions/interfaces/IPlayQueueStore';
import { PlayQueueDto } from '../../media-player.play-queue.abstractions/interfaces/PlayQueueDto';
import { PlayQueueItemDto } from '../../media-player.play-queue.abstractions/interfaces/PlayQueueItemDto';
import { IStateStore } from '@aigamo/route-sphere';
declare class PlayQueueLocalStorageStateStore implements IStateStore<PlayQueueDto> {
    private readonly playQueue;
    constructor(playQueue: PlayQueueStore);
    get state(): PlayQueueDto;
    set state(value: PlayQueueDto);
    validateState(state: unknown): state is PlayQueueDto;
}
export declare class PlayQueueStore implements IPlayQueueStore {
    interacted: boolean;
    readonly localStorageState: PlayQueueLocalStorageStateStore;
    items: IPlayQueueItemStore[];
    currentId: number | undefined;
    constructor();
    createItemFromDto(dto: PlayQueueItemDto): IPlayQueueItemStore;
    get isEmpty(): boolean;
    get canClear(): boolean;
    get currentItem(): IPlayQueueItemStore | undefined;
    get canPlay(): boolean;
    get canPause(): boolean;
    get hasMultipleItems(): boolean;
    get currentIndex(): number | undefined;
    set currentIndex(value: number | undefined);
    get hasPreviousItem(): boolean;
    get hasNextItem(): boolean;
    get isLastItem(): boolean;
    get selectedItems(): IPlayQueueItemStore[];
    get allItemsSelected(): boolean;
    get hasSelectedItems(): boolean;
    get selectedItemsOrAllItems(): IPlayQueueItemStore[];
    get canAddSelectedItems(): boolean;
    get canPlaySelectedItemsNext(): boolean;
    get canRemoveSelectedItems(): boolean;
    setItems(value: IPlayQueueItemStore[]): void;
    interact(): void;
    clear(): void;
    unselectAll(): void;
    selectAll(): void;
    setCurrentItem(item: IPlayQueueItemStore | undefined): void;
    setNextItems(items: IPlayQueueItemStore[]): void;
    clearAndSetItems(items: IPlayQueueItemStore[]): void;
    playNext(items: IPlayQueueItemStore[]): Promise<void>;
    playSelectedItemsNext(): Promise<void>;
    addItems(items: IPlayQueueItemStore[]): Promise<void>;
    addSelectedItems(): Promise<void>;
    playFirst(items: IPlayQueueItemStore[]): Promise<void>;
    moveItem(item: IPlayQueueItemStore, index: number): void;
    goToFirst(): Promise<void>;
    removeItems(items: IPlayQueueItemStore[]): Promise<void>;
    removeSelectedItems(): Promise<void>;
    removeOtherItems(item: IPlayQueueItemStore): Promise<void>;
    removeItemsAbove(item: IPlayQueueItemStore): Promise<void>;
    previous(): Promise<void>;
    next(): Promise<void>;
    addItemFromDto(dto: PlayQueueItemDto): Promise<void>;
}
export {};
