import { Locale, StreamInfo, ChannelInfo, PlaylistInfo, SearchResult } from '../types';
export interface ServiceInfo {
    name: string;
    serviceId: number;
    baseUrl: string;
}
export interface LinkHandler {
    acceptUrl(url: string): boolean;
    getId(url: string): string;
    getUrl(id: string): string;
}
export declare abstract class StreamingService {
    private serviceInfo;
    constructor(serviceInfo: ServiceInfo);
    /**
     * Get service information
     */
    getServiceInfo(): ServiceInfo;
    /**
     * Get service ID
     */
    getServiceId(): number;
    /**
     * Get service name
     */
    getServiceName(): string;
    /**
     * Get base URL for this service
     */
    getBaseUrl(): string;
    /**
     * Get the link handler for this service
     */
    abstract getLinkHandler(): LinkHandler | null;
    /**
     * Extract stream information from URL
     */
    abstract getStreamExtractor(url: string): Promise<StreamInfo>;
    /**
     * Extract channel information from URL
     */
    abstract getChannelExtractor(url: string): Promise<ChannelInfo>;
    /**
     * Extract playlist information from URL
     */
    abstract getPlaylistExtractor(url: string): Promise<PlaylistInfo>;
    /**
     * Search for content
     */
    abstract search(query: string, contentFilters: string[], sortFilter: string, localization: Locale): Promise<SearchResult>;
    /**
     * Get search suggestions
     */
    abstract getSuggestionExtractor(query: string, localization: Locale): Promise<string[]>;
    /**
     * Get trending/kiosk content
     */
    abstract getKioskExtractor(kioskId: string, localization: Locale): Promise<SearchResult>;
    /**
     * Get available kiosks
     */
    abstract getKioskList(): Promise<string[]>;
    /**
     * Get channel tabs (videos, playlists, etc.)
     */
    abstract getChannelTabExtractor(channelUrl: string, tab: string): Promise<SearchResult>;
    /**
     * Extract comments for a stream
     */
    abstract getCommentsExtractor(streamUrl: string): Promise<any>;
    /**
     * Check if URL is supported by this service
     */
    isUrlSupported(url: string): boolean;
    /**
     * Extract ID from URL
     */
    extractId(url: string): string;
    /**
     * Create URL from ID
     */
    createUrl(id: string): string;
}
//# sourceMappingURL=StreamingService.d.ts.map