import { Channel, PlaylistCompact, VideoCompact, ClientTypes, Client } from "."; export declare type SearchResultType = T extends { type: "video"; } ? VideoCompact : T extends { type: "channel"; } ? Channel : T extends { type: "playlist"; } ? PlaylistCompact : VideoCompact | Channel | PlaylistCompact; /** * Represents search result, usually returned from `client.search();`. * * {@link SearchResult} is a subclass of [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) * with {@link SearchResult.next} method to navigate through pagination * * @example * ```ts * const searchResult = await youtube.search("Keyword"); * * console.log(searchResult); // search result from first page * * let nextSearchResult = await searchResult.next(); * console.log(nextSearchResult); // search result from second page * * nextSearchResult = await searchResult.next(); * console.log(nextSearchResult); // search result from third page * * console.log(searchResult); // search result from first, second, and third page. * ``` * * @noInheritDoc */ export default class SearchResult extends Array> { /** The estimated search result count */ estimatedResults: number; private client; private _continuation; /** @hidden */ constructor(); /** * Initialize data from search * * @param query Search query * @param options Search Options * @hidden */ init(client: Client, query: string, options: ClientTypes.SearchOptions): Promise>; /** * Load next search data. Youtube returns inconsistent amount of search result, it usually varies from 18 to 20 * * @example * ```js * const videos = await youtube.search("keyword", { type: "video" }); * console.log(videos) // first 18-20 videos from the search result * * let newVideos = await videos.next(); * console.log(newVideos) // 18-20 loaded videos * console.log(videos) // 36-40 first videos from the search result * ``` * * @param count How many times to load the next data */ next(count?: number): Promise>>; /** Load videos data from youtube */ private loadSearchResult; /** * Get type query value * * @param type Search type * @hidden */ static getSearchTypeParam(type: "video" | "playlist" | "channel" | "all"): string; }