import Context from "../Context.js";
import Track from "../music/Track.js";
import User from "../User.js";
export default class Playlist {
    private readonly context;
    readonly rawCollectionID: string;
    readonly collectionID: string;
    private name;
    readonly owner: User;
    private trackList;
    private isDeleted;
    private updateCallbacks;
    private suggestedTracks;
    private suggestedTracksUpdated;
    private checkTimer;
    private lastChecked;
    constructor(context: Context, collectionID: string, name: string, owner: User, trackList?: Track[]);
    getTrackList(): Promise<Track[]>;
    getSuggestedTracks(): Promise<Track[]>;
    getName(): string;
    addTracks(...tracks: Track[]): Promise<void>;
    removeTracks(...tracks: Track[]): Promise<void>;
    setName(name: string): Promise<void>;
    deleteCollection(): Promise<void>;
    copyFromOtherPlaylist(collection: Playlist): void;
    static convertJsonToPlaylist(context: Context, json: any): Playlist;
    private checkDeletion;
    private pushToCallbacks;
    isCollectionDeleted(): boolean;
    registerUpdateCallback(callback: (collection: Playlist) => void): void;
    unregisterUpdateCallback(callback: (collection: Playlist) => void): void;
    private setLoop;
    checkForUpdates(outOfDateThreshold: number): Promise<void>;
    getThumbnailUrl(): string;
}
