/**
 * API
 * Audius V1 API
 *
 * The version of the OpenAPI document: 1.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import * as runtime from '../runtime';
import type { AccessInfoResponse, CreatePlaylistRequestBody, CreatePlaylistResponse, FavoriteRequestBody, FollowingResponse, PlaylistResponse, PlaylistSearchResult, PlaylistTracksResponse, RepostRequestBody, TrendingPlaylistsResponse, UpdatePlaylistRequestBody, WriteResponse } from '../models';
export interface CreatePlaylistRequest {
    userId: string;
    metadata: CreatePlaylistRequestBody;
}
export interface DeletePlaylistRequest {
    playlistId: string;
    userId: string;
}
export interface FavoritePlaylistRequest {
    playlistId: string;
    userId: string;
    metadata?: FavoriteRequestBody;
}
export interface GetBulkPlaylistsRequest {
    userId?: string;
    id?: Array<string>;
    permalink?: Array<string>;
    upc?: Array<string>;
}
export interface GetPlaylistRequest {
    playlistId: string;
    userId?: string;
}
export interface GetPlaylistAccessInfoRequest {
    playlistId: string;
    userId?: string;
}
export interface GetPlaylistTracksRequest {
    playlistId: string;
}
export interface GetTrendingPlaylistsRequest {
    offset?: number;
    limit?: number;
    userId?: string;
    time?: GetTrendingPlaylistsTimeEnum;
    type?: GetTrendingPlaylistsTypeEnum;
    omitTracks?: boolean;
}
export interface GetTrendingPlaylistsWithVersionRequest {
    version: string;
    offset?: number;
    limit?: number;
    userId?: string;
    time?: GetTrendingPlaylistsWithVersionTimeEnum;
}
export interface GetUsersFromPlaylistFavoritesRequest {
    playlistId: string;
    offset?: number;
    limit?: number;
    userId?: string;
}
export interface GetUsersFromPlaylistRepostsRequest {
    playlistId: string;
    offset?: number;
    limit?: number;
    userId?: string;
}
export interface RepostPlaylistRequest {
    playlistId: string;
    userId: string;
    repostRequestBody?: RepostRequestBody;
}
export interface SearchPlaylistsRequest {
    offset?: number;
    limit?: number;
    query?: string;
    genre?: Array<string>;
    sortMethod?: SearchPlaylistsSortMethodEnum;
    mood?: Array<string>;
    includePurchaseable?: string;
    hasDownloads?: string;
}
export interface SharePlaylistRequest {
    playlistId: string;
    userId: string;
}
export interface UnfavoritePlaylistRequest {
    playlistId: string;
    userId: string;
}
export interface UnrepostPlaylistRequest {
    playlistId: string;
    userId: string;
}
export interface UpdatePlaylistRequest {
    playlistId: string;
    userId: string;
    metadata: UpdatePlaylistRequestBody;
}
/**
 *
 */
export declare class PlaylistsApi extends runtime.BaseAPI {
    /**
     * @hidden
     * Creates a new playlist or album
     */
    createPlaylistRaw(params: CreatePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CreatePlaylistResponse>>;
    /**
     * Creates a new playlist or album
     */
    createPlaylist(params: CreatePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CreatePlaylistResponse>;
    /**
     * @hidden
     * Deletes a playlist or album
     */
    deletePlaylistRaw(params: DeletePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WriteResponse>>;
    /**
     * Deletes a playlist or album
     */
    deletePlaylist(params: DeletePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WriteResponse>;
    /**
     * @hidden
     * Favorite a playlist
     */
    favoritePlaylistRaw(params: FavoritePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WriteResponse>>;
    /**
     * Favorite a playlist
     */
    favoritePlaylist(params: FavoritePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WriteResponse>;
    /**
     * @hidden
     * Gets a list of playlists by ID, UPC, or permalink
     */
    getBulkPlaylistsRaw(params: GetBulkPlaylistsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PlaylistResponse>>;
    /**
     * Gets a list of playlists by ID, UPC, or permalink
     */
    getBulkPlaylists(params?: GetBulkPlaylistsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PlaylistResponse>;
    /**
     * @hidden
     * Get a playlist by ID
     */
    getPlaylistRaw(params: GetPlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PlaylistResponse>>;
    /**
     * Get a playlist by ID
     */
    getPlaylist(params: GetPlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PlaylistResponse>;
    /**
     * @hidden
     * Gets the information necessary to access the playlist and what access the given user has.
     */
    getPlaylistAccessInfoRaw(params: GetPlaylistAccessInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccessInfoResponse>>;
    /**
     * Gets the information necessary to access the playlist and what access the given user has.
     */
    getPlaylistAccessInfo(params: GetPlaylistAccessInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccessInfoResponse>;
    /**
     * @hidden
     * Fetch tracks within a playlist.
     */
    getPlaylistTracksRaw(params: GetPlaylistTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PlaylistTracksResponse>>;
    /**
     * Fetch tracks within a playlist.
     */
    getPlaylistTracks(params: GetPlaylistTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PlaylistTracksResponse>;
    /**
     * @hidden
     * Returns trending playlists for a time period
     */
    getTrendingPlaylistsRaw(params: GetTrendingPlaylistsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TrendingPlaylistsResponse>>;
    /**
     * Returns trending playlists for a time period
     */
    getTrendingPlaylists(params?: GetTrendingPlaylistsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TrendingPlaylistsResponse>;
    /**
     * @hidden
     * Returns trending playlists for a time period based on the given trending version
     */
    getTrendingPlaylistsWithVersionRaw(params: GetTrendingPlaylistsWithVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TrendingPlaylistsResponse>>;
    /**
     * Returns trending playlists for a time period based on the given trending version
     */
    getTrendingPlaylistsWithVersion(params: GetTrendingPlaylistsWithVersionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TrendingPlaylistsResponse>;
    /**
     * @hidden
     * Get users that favorited a playlist
     */
    getUsersFromPlaylistFavoritesRaw(params: GetUsersFromPlaylistFavoritesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FollowingResponse>>;
    /**
     * Get users that favorited a playlist
     */
    getUsersFromPlaylistFavorites(params: GetUsersFromPlaylistFavoritesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FollowingResponse>;
    /**
     * @hidden
     * Get users that reposted a playlist
     */
    getUsersFromPlaylistRepostsRaw(params: GetUsersFromPlaylistRepostsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FollowingResponse>>;
    /**
     * Get users that reposted a playlist
     */
    getUsersFromPlaylistReposts(params: GetUsersFromPlaylistRepostsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FollowingResponse>;
    /**
     * @hidden
     * Repost a playlist
     */
    repostPlaylistRaw(params: RepostPlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WriteResponse>>;
    /**
     * Repost a playlist
     */
    repostPlaylist(params: RepostPlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WriteResponse>;
    /**
     * @hidden
     * Search for a playlist
     */
    searchPlaylistsRaw(params: SearchPlaylistsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PlaylistSearchResult>>;
    /**
     * Search for a playlist
     */
    searchPlaylists(params?: SearchPlaylistsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PlaylistSearchResult>;
    /**
     * @hidden
     * Record a playlist share event
     */
    sharePlaylistRaw(params: SharePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WriteResponse>>;
    /**
     * Record a playlist share event
     */
    sharePlaylist(params: SharePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WriteResponse>;
    /**
     * @hidden
     * Unfavorite a playlist
     */
    unfavoritePlaylistRaw(params: UnfavoritePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WriteResponse>>;
    /**
     * Unfavorite a playlist
     */
    unfavoritePlaylist(params: UnfavoritePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WriteResponse>;
    /**
     * @hidden
     * Unrepost a playlist
     */
    unrepostPlaylistRaw(params: UnrepostPlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WriteResponse>>;
    /**
     * Unrepost a playlist
     */
    unrepostPlaylist(params: UnrepostPlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WriteResponse>;
    /**
     * @hidden
     * Updates an existing playlist or album
     */
    updatePlaylistRaw(params: UpdatePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WriteResponse>>;
    /**
     * Updates an existing playlist or album
     */
    updatePlaylist(params: UpdatePlaylistRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WriteResponse>;
}
/**
 * @export
 */
export declare const GetTrendingPlaylistsTimeEnum: {
    readonly Week: "week";
    readonly Month: "month";
    readonly Year: "year";
    readonly AllTime: "allTime";
};
export type GetTrendingPlaylistsTimeEnum = typeof GetTrendingPlaylistsTimeEnum[keyof typeof GetTrendingPlaylistsTimeEnum];
/**
 * @export
 */
export declare const GetTrendingPlaylistsTypeEnum: {
    readonly Playlist: "playlist";
    readonly Album: "album";
};
export type GetTrendingPlaylistsTypeEnum = typeof GetTrendingPlaylistsTypeEnum[keyof typeof GetTrendingPlaylistsTypeEnum];
/**
 * @export
 */
export declare const GetTrendingPlaylistsWithVersionTimeEnum: {
    readonly Week: "week";
    readonly Month: "month";
    readonly Year: "year";
    readonly AllTime: "allTime";
};
export type GetTrendingPlaylistsWithVersionTimeEnum = typeof GetTrendingPlaylistsWithVersionTimeEnum[keyof typeof GetTrendingPlaylistsWithVersionTimeEnum];
/**
 * @export
 */
export declare const SearchPlaylistsSortMethodEnum: {
    readonly Relevant: "relevant";
    readonly Popular: "popular";
    readonly Recent: "recent";
};
export type SearchPlaylistsSortMethodEnum = typeof SearchPlaylistsSortMethodEnum[keyof typeof SearchPlaylistsSortMethodEnum];
