import { Track, BaseExtractor, ExtractorSearchContext, ExtractorInfo, ExtractorStreamable } from 'discord-player';
import { Readable } from 'stream';

type StreamFN = (url: string, track: Track) => Promise<Readable | string>;
interface AppleMusicExtractorInit {
    createStream?: (ext: AppleMusicExtractor, url: string, track: Track) => Promise<Readable | string>;
}
declare class AppleMusicExtractor extends BaseExtractor<AppleMusicExtractorInit> {
    static identifier: "com.discord-player.applemusicextractor";
    private _stream;
    activate(): Promise<void>;
    deactivate(): Promise<void>;
    validate(query: string): Promise<boolean>;
    private buildTrack;
    private buildPlaylist;
    handle(query: string, context: ExtractorSearchContext): Promise<ExtractorInfo>;
    stream(info: Track): Promise<ExtractorStreamable>;
}

export { AppleMusicExtractor, type AppleMusicExtractorInit, type StreamFN };
