import { IPlayQueueStore } from '../../media-player.play-queue.abstractions/interfaces/IPlayQueueStore';
import { PlayQueueItemDto } from '../../media-player.play-queue.abstractions/interfaces/PlayQueueItemDto';
import { IPlaylistItemStore } from '../../media-player.playlists.abstractions/interfaces/IPlaylistItemStore';
import { IPlaylistStore } from '../../media-player.playlists.abstractions/interfaces/IPlaylistStore';
import { IStateStore } from '@aigamo/route-sphere';
interface PlaylistLocalStorageState {
    readonly version?: '1.0';
    readonly items?: PlayQueueItemDto[];
}
declare class PlaylistLocalStorageStateStore implements IStateStore<PlaylistLocalStorageState> {
    private readonly playlist;
    constructor(playlist: PlaylistStore);
    get state(): PlaylistLocalStorageState;
    set state(value: PlaylistLocalStorageState);
    validateState(state: unknown): state is PlaylistLocalStorageState;
}
export declare class PlaylistStore implements IPlaylistStore {
    private readonly playQueue;
    readonly localStorageState: PlaylistLocalStorageStateStore;
    items: IPlaylistItemStore[];
    constructor(playQueue: IPlayQueueStore);
    createItemFromDto(dto: PlayQueueItemDto): IPlaylistItemStore;
    get isEmpty(): boolean;
    get hasMultipleItems(): boolean;
    get selectedItems(): IPlaylistItemStore[];
    get allItemsSelected(): boolean;
    get hasSelectedItems(): boolean;
    get selectedItemsOrAllItems(): IPlaylistItemStore[];
    get canAddSelectedItems(): boolean;
    get canPlaySelectedItemsNext(): boolean;
    get canRemoveSelectedItems(): boolean;
    setItems(value: IPlaylistItemStore[]): void;
    unselectAll(): void;
    selectAll(): void;
    playSelectedItemsNext(): Promise<void>;
    addSelectedItems(): Promise<void>;
    addItems(items: IPlaylistItemStore[]): Promise<void>;
    moveItem(item: IPlaylistItemStore, index: number): void;
    removeItems(items: IPlaylistItemStore[]): Promise<void>;
    removeSelectedItems(): Promise<void>;
    removeOtherItems(item: IPlaylistItemStore): Promise<void>;
    removeItemsAbove(item: IPlaylistItemStore): Promise<void>;
    addItemFromDto(dto: PlayQueueItemDto): Promise<void>;
    playAll(): Promise<void>;
}
export {};
