export type PluginSettingsTemplate = Record< string, 'string' | 'number' | 'boolean' | 'password' | { type: 'link'; url: string } >; export type PluginSettings = Record; export interface SourcePlugin { name: string; getIsIndexable: () => boolean; getIndex: () => Promise< Record< number, any // | { tmdbId: number; quality: number } // | { // tmdbId: number; // seasons: Record>; // } > >; getSettingsTemplate: () => PluginSettingsTemplate; validateSettings: (settings: Record) => Promise<{ isValid: boolean; errors: Record; }>; getMovieStream: (tmdbId: string, settings: PluginSettings) => Promise; getEpisodeStream: ( tmdbId: string, season: number, episode: number, settings: PluginSettings, ) => Promise; handleProxy(request: { uri: string; headers: any }, settings: PluginSettings): { url: string; headers: any; }; }