import { UnknownMusicResource } from "./base";
import { SongResource } from "./song";
/**
 * An object containing search results for a specific resource.
 */
export interface ResourceSearchResult<Datum extends UnknownMusicResource> {
    /**
     * The resources for the search result.
     */
    readonly data: Datum[];
    /**
     * The relative location to fetch the search result.
     */
    readonly href?: string;
    /**
     * A relative cursor to fetch the next paginated
     * collection of resources in the result, if more exist.
     */
    readonly next?: string;
}
/**
 * An object that represents the results of a catalog search query.
 */
export interface MusicSearchResults {
    /**
     * The activities results for a term search for specific resource types.
     */
    readonly activities?: ResourceSearchResult<UnknownMusicResource>;
    /**
     * The albums results for a term search for specific resource types.
     */
    readonly albums?: ResourceSearchResult<UnknownMusicResource>;
    /**
     * The Apple curators results for a term search for specific resource types.
     */
    readonly "apple-curators"?: ResourceSearchResult<UnknownMusicResource>;
    /**
     * The artists results for a term search for specific resource types.
     */
    readonly artists?: ResourceSearchResult<UnknownMusicResource>;
    /**
     * The curators results for a term search for specific resource types.
     */
    readonly curators?: ResourceSearchResult<UnknownMusicResource>;
    /**
     * The music videos results for a term search for specific resource types.
     */
    readonly "music-videos"?: ResourceSearchResult<UnknownMusicResource>;
    /**
     * The playlists results for a term search for specific resource types.
     */
    readonly playlists?: ResourceSearchResult<UnknownMusicResource>;
    /**
     * The record labels results for a term search for specific resource types.
     */
    readonly "record-labels"?: ResourceSearchResult<UnknownMusicResource>;
    /**
     * The songs results for a term search for specific resource types.
     */
    readonly songs?: ResourceSearchResult<SongResource>;
    /**
     * The stations results for a term search for specific resource types.
     */
    readonly stations?: ResourceSearchResult<UnknownMusicResource>;
    /**
     * The top results for a term search for specific resource types.
     */
    readonly top?: ResourceSearchResult<UnknownMusicResource>;
}
/**
 * The response to a search request.
 */
export interface MusicSearchResponse {
    /**
     * The results included in the response to a search request.
     */
    readonly results: MusicSearchResults;
}
