/**
 * 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, StemsResponse, StreamUrlResponse, TopListener, TrackCommentCountResponse, TrackCommentNotificationResponse, TrackCommentsResponse, TrackInspect, TrackResponse, TrackSearch, TracksResponse } from '../models';
export interface DownloadTrackRequest {
    trackId: string;
    userId?: string;
    userSignature?: string;
    userData?: string;
    nftAccessSignature?: string;
    original?: boolean;
    filename?: string;
}
export interface GetBulkTracksRequest {
    permalink?: Array<string>;
    id?: Array<string>;
}
export interface GetTrackRequest {
    trackId: string;
}
export interface GetTrackAccessInfoRequest {
    trackId: string;
    userId?: string;
}
export interface GetTrackStemsRequest {
    trackId: string;
}
export interface GetTrackTopListenersRequest {
    trackId: string;
    offset?: number;
    limit?: number;
    userId?: string;
}
export interface GetTrendingTracksRequest {
    genre?: string;
    time?: GetTrendingTracksTimeEnum;
}
export interface GetUndergroundTrendingTracksRequest {
    offset?: number;
    limit?: number;
}
export interface InspectTrackRequest {
    trackId: string;
    original?: boolean;
}
export interface SearchTracksRequest {
    query?: string;
    genre?: Array<string>;
    sortMethod?: SearchTracksSortMethodEnum;
    mood?: Array<string>;
    onlyDownloadable?: string;
    includePurchaseable?: string;
    isPurchaseable?: string;
    hasDownloads?: string;
    key?: Array<string>;
    bpmMin?: string;
    bpmMax?: string;
}
export interface StreamTrackRequest {
    trackId: string;
    userId?: string;
    preview?: boolean;
    userSignature?: string;
    userData?: string;
    nftAccessSignature?: string;
    skipPlayCount?: boolean;
    apiKey?: string;
    skipCheck?: boolean;
    noRedirect?: boolean;
}
export interface TrackCommentCountRequest {
    trackId: string;
    userId?: string;
}
export interface TrackCommentNotificationSettingRequest {
    trackId: string;
    userId?: string;
}
export interface TrackCommentsRequest {
    trackId: string;
    offset?: number;
    limit?: number;
    userId?: string;
    sortMethod?: TrackCommentsSortMethodEnum;
}
/**
 *
 */
export declare class TracksApi extends runtime.BaseAPI {
    /**
     * @hidden
     * Download an original or mp3 track
     * Download the original or MP3 file of a track
     */
    downloadTrackRaw(params: DownloadTrackRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>>;
    /**
     * Download an original or mp3 track
     * Download the original or MP3 file of a track
     */
    downloadTrack(params: DownloadTrackRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void>;
    /**
     * @hidden
     * Gets a list of tracks using their IDs or permalinks
     */
    getBulkTracksRaw(params: GetBulkTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TracksResponse>>;
    /**
     * Gets a list of tracks using their IDs or permalinks
     */
    getBulkTracks(params?: GetBulkTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TracksResponse>;
    /**
     * @hidden
     * Gets a track by ID
     */
    getTrackRaw(params: GetTrackRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TrackResponse>>;
    /**
     * Gets a track by ID
     */
    getTrack(params: GetTrackRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TrackResponse>;
    /**
     * @hidden
     * Gets the information necessary to access the track and what access the given user has.
     */
    getTrackAccessInfoRaw(params: GetTrackAccessInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccessInfoResponse>>;
    /**
     * Gets the information necessary to access the track and what access the given user has.
     */
    getTrackAccessInfo(params: GetTrackAccessInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccessInfoResponse>;
    /**
     * @hidden
     * Get the remixable stems of a track
     */
    getTrackStemsRaw(params: GetTrackStemsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<StemsResponse>>;
    /**
     * Get the remixable stems of a track
     */
    getTrackStems(params: GetTrackStemsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<StemsResponse>;
    /**
     * @hidden
     * Get the users that have listened to a track the most
     */
    getTrackTopListenersRaw(params: GetTrackTopListenersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TopListener>>;
    /**
     * Get the users that have listened to a track the most
     */
    getTrackTopListeners(params: GetTrackTopListenersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TopListener>;
    /**
     * @hidden
     * Gets the top 100 trending (most popular) tracks on Audius
     */
    getTrendingTracksRaw(params: GetTrendingTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TracksResponse>>;
    /**
     * Gets the top 100 trending (most popular) tracks on Audius
     */
    getTrendingTracks(params?: GetTrendingTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TracksResponse>;
    /**
     * @hidden
     * Gets the top 100 trending underground tracks on Audius
     */
    getUndergroundTrendingTracksRaw(params: GetUndergroundTrendingTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TracksResponse>>;
    /**
     * Gets the top 100 trending underground tracks on Audius
     */
    getUndergroundTrendingTracks(params?: GetUndergroundTrendingTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TracksResponse>;
    /**
     * @hidden
     * Inspect a track
     * Inspects the details of the file for a track
     */
    inspectTrackRaw(params: InspectTrackRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TrackInspect>>;
    /**
     * Inspect a track
     * Inspects the details of the file for a track
     */
    inspectTrack(params: InspectTrackRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TrackInspect>;
    /**
     * @hidden
     * Search for a track or tracks
     */
    searchTracksRaw(params: SearchTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TrackSearch>>;
    /**
     * Search for a track or tracks
     */
    searchTracks(params?: SearchTracksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TrackSearch>;
    /**
     * @hidden
     * Stream an mp3 track This endpoint accepts the Range header for streaming. https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests
     * Get the streamable MP3 file of a track
     */
    streamTrackRaw(params: StreamTrackRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<StreamUrlResponse>>;
    /**
     * Stream an mp3 track This endpoint accepts the Range header for streaming. https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests
     * Get the streamable MP3 file of a track
     */
    streamTrack(params: StreamTrackRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<StreamUrlResponse>;
    /**
     * @hidden
     * Get the comment count for a track
     */
    trackCommentCountRaw(params: TrackCommentCountRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TrackCommentCountResponse>>;
    /**
     * Get the comment count for a track
     */
    trackCommentCount(params: TrackCommentCountRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TrackCommentCountResponse>;
    /**
     * @hidden
     * Get the comment notification setting for a track
     */
    trackCommentNotificationSettingRaw(params: TrackCommentNotificationSettingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TrackCommentNotificationResponse>>;
    /**
     * Get the comment notification setting for a track
     */
    trackCommentNotificationSetting(params: TrackCommentNotificationSettingRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TrackCommentNotificationResponse>;
    /**
     * @hidden
     * Get a list of comments for a track
     */
    trackCommentsRaw(params: TrackCommentsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TrackCommentsResponse>>;
    /**
     * Get a list of comments for a track
     */
    trackComments(params: TrackCommentsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TrackCommentsResponse>;
}
/**
 * @export
 */
export declare const GetTrendingTracksTimeEnum: {
    readonly Week: "week";
    readonly Month: "month";
    readonly Year: "year";
    readonly AllTime: "allTime";
};
export type GetTrendingTracksTimeEnum = typeof GetTrendingTracksTimeEnum[keyof typeof GetTrendingTracksTimeEnum];
/**
 * @export
 */
export declare const SearchTracksSortMethodEnum: {
    readonly Relevant: "relevant";
    readonly Popular: "popular";
    readonly Recent: "recent";
};
export type SearchTracksSortMethodEnum = typeof SearchTracksSortMethodEnum[keyof typeof SearchTracksSortMethodEnum];
/**
 * @export
 */
export declare const TrackCommentsSortMethodEnum: {
    readonly Top: "top";
    readonly Newest: "newest";
    readonly Timestamp: "timestamp";
};
export type TrackCommentsSortMethodEnum = typeof TrackCommentsSortMethodEnum[keyof typeof TrackCommentsSortMethodEnum];
