import { YandexMusicClient } from "../../client";
import { Union, List, PlaylistInterface, PlaylistsRecommendations } from "../../interfaces";
declare type tracks = Array<{
    id: string;
    albumId: string;
}>;
export declare class Playlists {
    private readonly client;
    constructor(client: YandexMusicClient);
    /**
     * Getting a playlist or playlist list by unique identifiers.
     * @param {Union} id The unique ID of the user who owns the playlist.
     * @param {List} kind The unique ID of the playlist or a list of them.
     * @returns Playlist List.
     */
    get(id: Union, kind: List): Promise<Array<PlaylistInterface>>;
    /**
     * Getting a playlist or playlist list by unique identifiers.
     * @param {Union} id The unique ID of the user who owns the playlist.
     * @param {Union} kind The unique ID of the playlist.
     * @returns Playlist List.
     */
    recommendations(id: string, kind: Union): Promise<Array<PlaylistsRecommendations>>;
    /**
     * Creating a playlist.
     * @param {Union} id The unique ID of the owner.
     * @param {string} title The title of playlist.
     * @param {string} visibility Access modifier.
     * @returns New Playlist.
     */
    create(id: Union, title: string, visibility?: "public" | "private"): Promise<PlaylistInterface>;
    /**
     * Deleting a playlist
     * @param {Union} id The unique ID of the owner.
     * @param {Union} kind The unique ID of the playlist.
     * @returns OK in success
     */
    delete(id: Union, kind: Union): Promise<string>;
    /**
     * Renaming a playlist
     * @param {Union} id The unique ID of the owner.
     * @param {Union} kind The unique ID of the playlist.
     * @param {string} value New name.
     * @returns OK in success
     */
    name(id: Union, kind: Union, value: string): Promise<string>;
    /**
     * Changing the visibility of the playlist.
     * @param {Union} id The unique ID of the owner.
     * @param {Union} kind The unique ID of the playlist.
     * @param {string} value New visibility.
     * @returns OK in success
     */
    visibility(id: Union, kind: Union, value?: "public" | "private"): Promise<string>;
    /**
     * Getting a playlists.
     * @param {Union} id The unique ID of the user who owns the playlist.
     * @returns Playlist List.
     */
    list(id: Union): Promise<Array<PlaylistInterface>>;
    /**
     * Changing the playlist.
     * @param {Union} id The unique ID of the user who owns the playlist.
     * @param {Union} kind The unique ID of the playlist.
     * @param {string} diff JSON representations of the differences between the old and new playlist.
     * @param {number} revision Album Revision.
     * @returns Modified playlist.
     */
    private change;
    /**
     * Adding a track to a playlist.
     * @param {Union} id The unique ID of the user who owns the playlist.
     * @param {Union} kind The unique ID of the playlist.
     * @param {tracks} tracks Array of tracks
     * @param {number} at Index to insert.
     * @param {number} revision Album Revision.
     * @returns Modified playlist.
     */
    insert(id: Union, kind: Union, tracks: tracks, at?: number, revision?: number): Promise<Omit<PlaylistInterface, "tracks">>;
    /**
     *
     * @param {Union} id The unique ID of the user who owns the playlist.
     * @param {Union} kind The unique ID of the playlist.
     * @param {number} from From which index.
     * @param {number} to By what index.
     * @param {number} revision Album Revision.
     * @returns Modified playlist.
     */
    remove(id: Union, kind: Union, from: number, to: number, revision?: number): Promise<Omit<PlaylistInterface, "tracks">>;
}
export {};
//# sourceMappingURL=index.d.ts.map