import { AnkiConnectConfig, JimakuApiResponse, JimakuDownloadQuery, JimakuDownloadResult, JimakuEntry, JimakuFileEntry, JimakuFilesQuery, JimakuMediaInfo, JimakuSearchQuery, RuntimeOptionState, SubsyncManualRunRequest, SubsyncMode, SubsyncResult, } from "../types"; export interface RuntimeOptionsModuleContext { getAnkiConfig: () => AnkiConnectConfig; applyAnkiPatch: (patch: Partial) => void; onOptionsChanged: (options: RuntimeOptionState[]) => void; } export interface AppContext { runtimeOptions?: RuntimeOptionsModuleContext; jimaku?: { getMediaInfo: () => JimakuMediaInfo; searchEntries: ( query: JimakuSearchQuery, ) => Promise>; listFiles: ( query: JimakuFilesQuery, ) => Promise>; downloadFile: ( query: JimakuDownloadQuery, ) => Promise; }; subsync?: { getDefaultMode: () => SubsyncMode; openManualPicker: () => Promise; runAuto: () => Promise; runManual: (request: SubsyncManualRunRequest) => Promise; showOsd: (message: string) => void; runWithSpinner: (task: () => Promise, label?: string) => Promise; }; }