import { ScrapeRequester, MediaSource, SubtitleSource, ProviderModule, ProviderModuleManifest, RawScrapeRequester } from "../types/index.ts"; import { ProviderManagerConfig, IProviderManagerWorkers } from "../types/models/Manager.ts"; import { ModuleManager, ProviderHealthReport, ProviderMetrics } from "./module.ts"; /** * ScrapePluginManager is the main class responsible * for managing provider modules, including loading, caching, refreshing, and health monitoring. */ export declare class ScrapePluginManager extends ModuleManager implements IProviderManagerWorkers { private static logger; private static context; private static instance; private limiters; private constructor(); /** Creates a new provider manager singleton instance */ static create(config: ProviderManagerConfig): Promise; /** Disable headless mode in Puppeteer */ static disableHeadlessMode(disable?: boolean): void; /** Create provider context based on environment * This method initializes the provider context with necessary utilities such as Cheerio for HTML parsing, fetchers for HTTP requests, and Puppeteer for headless browser automation. It checks if the environment is Node.js to conditionally include Puppeteer, ensuring compatibility across different environments. */ private static createContext; /** Create an operation with concurrency and retry handling */ private createOperation; /** Shared scraping pipeline: resolves the requester, finds matching providers, * handles the language-based media rotation, and runs `createOperation`. * * Every public `getStreams` / `getSubtitles` / progressive variant delegates here. */ private scrapeProviders; /** Close all active operations and clear limiters */ closeOperations(): void; /** Tear down the manager: stop auto-updates, cancel queued operations, and release the singleton. * After calling `destroy()` a new instance can be created via `ScrapePluginManager.create()`. */ destroy(): void; /** Returns a read-only snapshot of the current health metrics for all tracked modules */ getMetrics(): ReadonlyMap>; /** Returns a detailed health report for all loaded modules including computed fields */ getMetricsReport(): ProviderHealthReport[]; /** Get the list of providers by the supported requester */ getProvidersByRequest(type: ProviderModuleManifest["type"], requester: ScrapeRequester): ProviderModule[]; getStreams(rawRequester: RawScrapeRequester): Promise; getSubtitles(rawRequester: RawScrapeRequester): Promise; getStreamsProgressive(rawRequester: RawScrapeRequester, onPartialResult: (sources: MediaSource[]) => void): Promise; getSubtitlesProgressive(rawRequester: RawScrapeRequester, onPartialResult: (sources: SubtitleSource[]) => void): Promise; getStreamsByScheme(scheme: string, requester: ScrapeRequester): Promise; getSubtitlesByScheme(scheme: string, requester: ScrapeRequester): Promise; }