import { StreamingService, LinkHandler } from '../../core/StreamingService';
import { StreamInfo } from '../../types';
import { PoTokenDirectorOptions } from '../../potoken/PoTokenDirector';
import { ChannelInfo, PlaylistInfo, SearchResult } from '../../types';
export declare class YoutubeService extends StreamingService {
    private linkHandler;
    private signatureDecryptor;
    private dashManifestParser;
    private poTokenDirector?;
    private formatSorter;
    private static readonly ANDROID_CLIENT_NAME;
    private static readonly ANDROID_CLIENT_VERSION;
    private static readonly ANDROID_OS_VERSION;
    private static readonly ANDROID_SDK_VERSION;
    private static readonly YOUTUBEI_V1_GAPIS_URL;
    private static readonly YOUTUBEI_V1_URL;
    constructor(poTokenOptions?: PoTokenDirectorOptions);
    getLinkHandler(): LinkHandler;
    getStreamExtractor(url: string): Promise<StreamInfo>;
    private getAndroidPlayerResponse;
    private getWebPlayerResponse;
    private extractStreamInfo;
    private processStream;
    private isValidStreamUrl;
    private getAndroidUserAgent;
    private generateContentPlaybackNonce;
    private generateTParameter;
    private sortAudioStreams;
    private sortVideoStreams;
    private mapBitrateToQuality;
    private getMediaFormat;
    private parseCodecs;
    private extractCodec;
    private getCompatibleExtension;
    getChannelExtractor(_url: string): Promise<ChannelInfo>;
    getPlaylistExtractor(_url: string): Promise<PlaylistInfo>;
    search(query: string, contentFilters?: string[], _sortFilter?: string, localization?: any): Promise<SearchResult>;
    private parseSearchResults;
    private parseSearchResultItem;
    private parseVideoSearchResult;
    private parseChannelSearchResult;
    private parsePlaylistSearchResult;
    private parseRadioSearchResult;
    private extractTextFromRenderer;
    private extractThumbnails;
    private parseDuration;
    private parseViewCount;
    private extractUploaderUrl;
    private extractUploaderAvatars;
    getSuggestionExtractor(query: string, localization?: any): Promise<string[]>;
    getKioskExtractor(_kioskId: string, _localization: any): Promise<SearchResult>;
    getKioskList(): Promise<string[]>;
    getChannelTabExtractor(_channelUrl: string, _tab: string): Promise<SearchResult>;
    getCommentsExtractor(_streamUrl: string): Promise<any>;
    /**
     * Process DASH manifest URL and extract streams
     */
    private processDashManifest;
    /**
     * Merge DASH streams with existing streams, avoiding duplicates
     */
    private mergeDashStreams;
    /**
     * Check if audio stream is duplicate
     */
    private isDuplicateAudioStream;
    /**
     * Check if video stream is duplicate
     */
    private isDuplicateVideoStream;
}
//# sourceMappingURL=YoutubeService.d.ts.map