import { invoke } from "@tauri-apps/api/core"; import type { Account, DeviceCodeResponse, FabricGameVersion, FabricLoaderEntry, FabricLoaderVersion, FileInfo, ForgeVersion, GithubRelease, InstalledFabricVersion, InstalledForgeVersion, InstalledVersion, Instance, JavaCatalog, JavaDownloadInfo, JavaInstallation, LauncherConfig, Message, MigrationResult, ModelInfo, PastebinResponse, PendingJavaDownload, Version, VersionMetadata, } from "@/types"; export interface InstanceRepairResult { restoredInstances: number; removedStaleEntries: number; createdDefaultActive: boolean; activeInstanceId: string | null; } export function assistantChat(messages: Message[]): Promise { return invoke("assistant_chat", { messages, }); } export function assistantChatStream(messages: Message[]): Promise { return invoke("assistant_chat_stream", { messages, }); } export function assistantCheckHealth(): Promise { return invoke("assistant_check_health"); } export function cancelJavaDownload(): Promise { return invoke("cancel_java_download"); } export function checkVersionInstalled( instanceId: string, versionId: string, ): Promise { return invoke("check_version_installed", { instanceId, versionId, }); } export function completeMicrosoftLogin(deviceCode: string): Promise { return invoke("complete_microsoft_login", { deviceCode, }); } export function createInstance(name: string): Promise { return invoke("create_instance", { name, }); } export function deleteInstance(instanceId: string): Promise { return invoke("delete_instance", { instanceId, }); } export function deleteInstanceFile(path: string): Promise { return invoke("delete_instance_file", { path, }); } export function deleteVersion( instanceId: string, versionId: string, ): Promise { return invoke("delete_version", { instanceId, versionId, }); } export function detectAllJavaInstallations(): Promise { return invoke("detect_all_java_installations"); } export function detectJava(): Promise { return invoke("detect_java"); } export function downloadAdoptiumJava( majorVersion: number, imageType: string, customPath: string | null, ): Promise { return invoke("download_adoptium_java", { majorVersion, imageType, customPath, }); } export function duplicateInstance( instanceId: string, newName: string, ): Promise { return invoke("duplicate_instance", { instanceId, newName, }); } export function exportInstance( instanceId: string, archivePath: string, ): Promise { return invoke("export_instance", { instanceId, archivePath, }); } export function fetchAdoptiumJava( majorVersion: number, imageType: string, ): Promise { return invoke("fetch_adoptium_java", { majorVersion, imageType, }); } export function fetchAvailableJavaVersions(): Promise { return invoke("fetch_available_java_versions"); } export function fetchJavaCatalog(): Promise { return invoke("fetch_java_catalog"); } export function getActiveAccount(): Promise { return invoke("get_active_account"); } export function getActiveInstance(): Promise { return invoke("get_active_instance"); } export function getConfigPath(): Promise { return invoke("get_config_path"); } export function getFabricGameVersions(): Promise { return invoke("get_fabric_game_versions"); } export function getFabricLoaderVersions(): Promise { return invoke("get_fabric_loader_versions"); } export function getFabricLoadersForVersion( gameVersion: string, ): Promise { return invoke("get_fabric_loaders_for_version", { gameVersion, }); } export function getForgeGameVersions(): Promise { return invoke("get_forge_game_versions"); } export function getForgeVersionsForGame( gameVersion: string, ): Promise { return invoke("get_forge_versions_for_game", { gameVersion, }); } export function getGithubReleases(): Promise { return invoke("get_github_releases"); } export function getInstance(instanceId: string): Promise { return invoke("get_instance", { instanceId, }); } export function getPendingJavaDownloads(): Promise { return invoke("get_pending_java_downloads"); } export function getRecommendedJava( requiredMajorVersion: number | null, ): Promise { return invoke("get_recommended_java", { requiredMajorVersion, }); } export function getSettings(): Promise { return invoke("get_settings"); } export function getVersionJavaVersion( instanceId: string, versionId: string, ): Promise { return invoke("get_version_java_version", { instanceId, versionId, }); } export function getVersionMetadata( instanceId: string, versionId: string, ): Promise { return invoke("get_version_metadata", { instanceId, versionId, }); } export function getVersions(): Promise { return invoke("get_versions"); } export function getVersionsOfInstance(instanceId: string): Promise { return invoke("get_versions_of_instance", { instanceId, }); } export function installFabric( instanceId: string, gameVersion: string, loaderVersion: string, ): Promise { return invoke("install_fabric", { instanceId, gameVersion, loaderVersion, }); } export function installForge( instanceId: string, gameVersion: string, forgeVersion: string, ): Promise { return invoke("install_forge", { instanceId, gameVersion, forgeVersion, }); } export function installVersion( instanceId: string, versionId: string, ): Promise { return invoke("install_version", { instanceId, versionId, }); } export function importInstance( archivePath: string, newName?: string, ): Promise { return invoke("import_instance", { archivePath, newName, }); } export function isFabricInstalled( instanceId: string, gameVersion: string, loaderVersion: string, ): Promise { return invoke("is_fabric_installed", { instanceId, gameVersion, loaderVersion, }); } export function listInstalledFabricVersions( instanceId: string, ): Promise { return invoke("list_installed_fabric_versions", { instanceId, }); } export function listInstalledVersions( instanceId: string, ): Promise { return invoke("list_installed_versions", { instanceId, }); } export function listInstanceDirectory( instanceId: string, folder: string, ): Promise { return invoke("list_instance_directory", { instanceId, folder, }); } export function listInstances(): Promise { return invoke("list_instances"); } export function listOllamaModels(endpoint: string): Promise { return invoke("list_ollama_models", { endpoint, }); } export function listOpenaiModels(): Promise { return invoke("list_openai_models"); } export function loginOffline(username: string): Promise { return invoke("login_offline", { username, }); } export function logout(): Promise { return invoke("logout"); } export function migrateSharedCaches(): Promise { return invoke("migrate_shared_caches"); } export function openFileExplorer(path: string): Promise { return invoke("open_file_explorer", { path, }); } export function readRawConfig(): Promise { return invoke("read_raw_config"); } export function refreshAccount(): Promise { return invoke("refresh_account"); } export function refreshJavaCatalog(): Promise { return invoke("refresh_java_catalog"); } export function repairInstances(): Promise { return invoke("repair_instances"); } export function resumeJavaDownloads(): Promise { return invoke("resume_java_downloads"); } export function saveRawConfig(content: string): Promise { return invoke("save_raw_config", { content, }); } export function saveSettings(config: LauncherConfig): Promise { return invoke("save_settings", { config, }); } export function setActiveInstance(instanceId: string): Promise { return invoke("set_active_instance", { instanceId, }); } export function startGame( instanceId: string, versionId: string, ): Promise { return invoke("start_game", { instanceId, versionId, }); } export function stopGame(): Promise { return invoke("stop_game"); } export function startMicrosoftLogin(): Promise { return invoke("start_microsoft_login"); } export function updateInstance(instance: Instance): Promise { return invoke("update_instance", { instance, }); } export function uploadToPastebin(content: string): Promise { return invoke("upload_to_pastebin", { content, }); }