import type { ProviderContext } from '../models/provider-context'; import { type IAnimeResult, type IMovieResult, type ISearch, type ProviderContextConfig } from '../models'; import extensionRegistry from '../extension-registry.json'; import type { ExtensionManifest, ProviderType } from '../models/extension-manifest'; import { animeProviders, movieProviders, type AnimeProvider, type MovieProvider } from './provider-maps'; export declare class ProviderManager { private providerContext; private loadedExtensions; private extensionManifest; constructor(registry: typeof extensionRegistry, providerConfig?: ProviderContextConfig); /** * Load and parse the extensionManifest */ private loadRegistry; /** * Get all available extensions */ getAvailableExtensions(): ExtensionManifest[]; /** * Get extensions by category */ getExtensionsByCategory(category: ProviderType): ExtensionManifest[]; /** * Get extension metadata by ID/ name (case-insensitive) like 'zoro' or 'Zoro' */ getExtensionMetadata(extensionId: string): ExtensionManifest; /** * Load an extension by ID from the extensionManifest */ loadExtension(extensionId: T): Promise : T extends MovieProvider ? InstanceType<(typeof movieProviders)[T]> : never>; /** * Attach the correct prototype to the loaded provider instance so runtime instanceof checks pass * and developer tooling understands the shape better. */ private attachProviderPrototype; /** * Execute provider code and create instance (extensionManifest-based) */ executeProviderCode(code: string, factoryName: string, metadata: ExtensionManifest & { id: T; }): Promise : T extends MovieProvider ? InstanceType<(typeof movieProviders)[T]> : never>; /** * Create execution context for provider code */ private createExecutionContext; /** * Create models context */ private createModelsContext; /** * Create __awaiter helper for compatibility */ private createAwaiterHelper; /** * Validate provider instance based on category */ private validateProviderInstance; /** * Get anime provider */ getAnimeProvider(extensionId: T): Promise>; /** * Get movie provider */ getMovieProvider(extensionId: T): Promise>; /** * Get the provider context */ getProviderContext(): ProviderContext; /** * Search across all loaded providers of a specific category */ searchAcrossProviders(category: ProviderType, query: string, page?: number): Promise; }>>; } export default ProviderManager; //# sourceMappingURL=ProviderManager.d.ts.map