interface TinkrInitContext {} interface TinkrPostLaunchContext {} type TinkrAlias = "tinkr" | "wow"; interface TinkrUtils { downloadFile: (alias: TinkrAlias, fileName: string, url: string) => Promise; readFile: (alias: TinkrAlias, fileName: string) => Promise; writeFile: (alias: TinkrAlias, fileName: string, contents: string) => Promise; deleteFile: (alias: TinkrAlias, fileName: string) => Promise; copyFile: (alias: TinkrAlias, sourceFileName: string, destFileName: string) => Promise; moveFile: (alias: TinkrAlias, sourceFileName: string, destFileName: string) => Promise; fileExists: (alias: TinkrAlias, fileName: string) => Promise; listFiles: (alias: TinkrAlias, dirName: string) => Promise; listDirs: (alias: TinkrAlias, dirName: string) => Promise; createDir: (alias: TinkrAlias, dirName: string) => Promise; deleteDir: (alias: TinkrAlias, dirName: string) => Promise; copyDir: (alias: TinkrAlias, sourceDirName: string, destDirName: string) => Promise; moveDir: (alias: TinkrAlias, sourceDirName: string, destDirName: string) => Promise; dirExists: (alias: TinkrAlias, dirName: string) => Promise; unzipFile: (alias: TinkrAlias, fileName: string, destDirName: string, destFileName: string) => Promise; } interface TinkrPreLaunchContext { wowPath: string; tinkrPath: string; gameVersion: string; gameRegion: string; utils: TinkrUtils; } interface TinkrPluginHooks { init: (context: TinkrInitContext) => Promise; preLaunch: (context: TinkrPreLaunchContext) => Promise; postLaunch: (context: TinkrPostLaunchContext) => Promise; }