import * as spotify_uri from 'spotify-uri'; import { InfoExtractorPlugin, ResolveOptions, Song, Playlist as Playlist$1 } from 'distube'; declare const SUPPORTED_TYPES: readonly ["album", "playlist", "track", "artist"]; type Track = { type: "track"; id: string; name: string; artists: { name: string; }[]; thumbnail?: string; duration: number; }; type DataList = { type: string; name: string; thumbnail?: string; url: string; tracks: Track[]; }; type Album = DataList & { type: "album"; }; type Playlist = DataList & { type: "playlist"; }; type Artist = DataList & { type: "artist"; }; type TrackList = Album | Playlist | Artist; type Data = Track | TrackList; declare class API { #private; private _hasCredentials; private _expirationTime; private _tokenAvailable; topTracksCountry: string; constructor(clientId?: string, clientSecret?: string, topTracksCountry?: string); isSupportedTypes(type: string): type is (typeof SUPPORTED_TYPES)[number]; refreshToken(): Promise; parseUrl(url: string): spotify_uri.ParsedSpotifyUri; getData(url: `${string}/track/${string}`): Promise; getData(url: `${string}/album/${string}`): Promise; getData(url: `${string}/playlist/${string}`): Promise; getData(url: `${string}/artist/${string}`): Promise; getData(url: string): Promise; } type SpotifyPluginOptions = { api?: { clientId?: string; clientSecret?: string; topTracksCountry?: string; }; }; declare class SpotifyPlugin extends InfoExtractorPlugin { api: API; constructor(options?: SpotifyPluginOptions); validate(url: string): boolean; resolve(url: string, options: ResolveOptions): Promise | Playlist$1>; createSearchQuery(song: Song): string; getRelatedSongs(): never[]; } export { SpotifyPlugin, type SpotifyPluginOptions, SpotifyPlugin as default };