import { Soundcloud, SoundcloudTrack, SoundcloudPlaylist } from 'soundcloud.ts'; import { ExtractorPlugin, ResolveOptions, Song, Playlist } from 'distube'; declare enum SearchType { Track = "track", Playlist = "playlist" } interface SoundCloudPluginOptions { clientId?: string; oauthToken?: string; } declare class SoundCloudPlugin extends ExtractorPlugin { soundcloud: Soundcloud; constructor(options?: SoundCloudPluginOptions); search(query: string, type?: SearchType.Track, limit?: number, options?: ResolveOptions): Promise[]>; search(query: string, type: SearchType.Playlist, limit?: number, options?: ResolveOptions): Promise[]>; search(query: string, type?: SearchType, limit?: number, options?: ResolveOptions): Promise[] | Playlist[]>; validate(url: string): boolean; resolve(url: string, options: ResolveOptions): Promise | SoundCloudSong>; getRelatedSongs(song: SoundCloudSong): Promise[]>; getStreamURL(song: SoundCloudSong): Promise; searchSong(query: string, options: ResolveOptions): Promise>; } declare class SoundCloudSong extends Song { constructor(plugin: SoundCloudPlugin, info: SoundcloudTrack, options?: ResolveOptions); } declare class SoundCloudPlaylist extends Playlist { constructor(plugin: SoundCloudPlugin, info: SoundcloudPlaylist, options?: ResolveOptions); } export { SearchType, SoundCloudPlugin, type SoundCloudPluginOptions, SoundCloudPlugin as default };