/**
 * 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 { SearchAutocompleteResponse, SearchResponse } from '../models';
export interface SearchRequest {
    offset?: number;
    limit?: number;
    userId?: string;
    query?: string;
    kind?: SearchKindEnum;
    includePurchaseable?: boolean;
    genre?: Array<string>;
    mood?: Array<string>;
    isVerified?: boolean;
    hasDownloads?: boolean;
    isPurchaseable?: boolean;
    key?: Array<string>;
    bpmMin?: number;
    bpmMax?: number;
    sortMethod?: SearchSortMethodEnum;
}
export interface SearchAutocompleteRequest {
    offset?: number;
    limit?: number;
    userId?: string;
    query?: string;
    kind?: SearchAutocompleteKindEnum;
    includePurchaseable?: boolean;
    genre?: Array<string>;
    mood?: Array<string>;
    isVerified?: boolean;
    hasDownloads?: boolean;
    isPurchaseable?: boolean;
    key?: Array<string>;
    bpmMin?: number;
    bpmMax?: number;
    sortMethod?: SearchAutocompleteSortMethodEnum;
}
export interface SearchTagsRequest {
    offset?: number;
    limit?: number;
    userId?: string;
    query?: string;
    kind?: SearchTagsKindEnum;
    includePurchaseable?: boolean;
    genre?: Array<string>;
    mood?: Array<string>;
    isVerified?: boolean;
    hasDownloads?: boolean;
    isPurchaseable?: boolean;
    key?: Array<string>;
    bpmMin?: number;
    bpmMax?: number;
    sortMethod?: SearchTagsSortMethodEnum;
}
/**
 *
 */
export declare class SearchApi extends runtime.BaseAPI {
    /**
     * @hidden
     * Get Users/Tracks/Playlists/Albums that best match the search query
     */
    searchRaw(params: SearchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SearchResponse>>;
    /**
     * Get Users/Tracks/Playlists/Albums that best match the search query
     */
    search(params?: SearchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SearchResponse>;
    /**
     * @hidden
     * Same as search but optimized for quicker response at the cost of some entity information.
     * Get Users/Tracks/Playlists/Albums that best match the search query
     */
    searchAutocompleteRaw(params: SearchAutocompleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SearchAutocompleteResponse>>;
    /**
     * Same as search but optimized for quicker response at the cost of some entity information.
     * Get Users/Tracks/Playlists/Albums that best match the search query
     */
    searchAutocomplete(params?: SearchAutocompleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SearchAutocompleteResponse>;
    /**
     * @hidden
     * Get Users/Tracks/Playlists/Albums that best match the provided tag
     */
    searchTagsRaw(params: SearchTagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SearchResponse>>;
    /**
     * Get Users/Tracks/Playlists/Albums that best match the provided tag
     */
    searchTags(params?: SearchTagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SearchResponse>;
}
/**
 * @export
 */
export declare const SearchKindEnum: {
    readonly All: "all";
    readonly Users: "users";
    readonly Tracks: "tracks";
    readonly Playlists: "playlists";
    readonly Albums: "albums";
};
export type SearchKindEnum = typeof SearchKindEnum[keyof typeof SearchKindEnum];
/**
 * @export
 */
export declare const SearchSortMethodEnum: {
    readonly Relevant: "relevant";
    readonly Popular: "popular";
    readonly Recent: "recent";
};
export type SearchSortMethodEnum = typeof SearchSortMethodEnum[keyof typeof SearchSortMethodEnum];
/**
 * @export
 */
export declare const SearchAutocompleteKindEnum: {
    readonly All: "all";
    readonly Users: "users";
    readonly Tracks: "tracks";
    readonly Playlists: "playlists";
    readonly Albums: "albums";
};
export type SearchAutocompleteKindEnum = typeof SearchAutocompleteKindEnum[keyof typeof SearchAutocompleteKindEnum];
/**
 * @export
 */
export declare const SearchAutocompleteSortMethodEnum: {
    readonly Relevant: "relevant";
    readonly Popular: "popular";
    readonly Recent: "recent";
};
export type SearchAutocompleteSortMethodEnum = typeof SearchAutocompleteSortMethodEnum[keyof typeof SearchAutocompleteSortMethodEnum];
/**
 * @export
 */
export declare const SearchTagsKindEnum: {
    readonly All: "all";
    readonly Users: "users";
    readonly Tracks: "tracks";
    readonly Playlists: "playlists";
    readonly Albums: "albums";
};
export type SearchTagsKindEnum = typeof SearchTagsKindEnum[keyof typeof SearchTagsKindEnum];
/**
 * @export
 */
export declare const SearchTagsSortMethodEnum: {
    readonly Relevant: "relevant";
    readonly Popular: "popular";
    readonly Recent: "recent";
};
export type SearchTagsSortMethodEnum = typeof SearchTagsSortMethodEnum[keyof typeof SearchTagsSortMethodEnum];
