import { invoke } from "@tauri-apps/api/core"; import type { CustomEndpoint } from "@/types"; import type { AppType } from "./types"; export interface EndpointLatencyResult { url: string; latency: number | null; status?: number; error?: string; } export const vscodeApi = { async getLiveProviderSettings(appType: AppType) { return await invoke("read_live_provider_settings", { app: appType }); }, async testApiEndpoints( urls: string[], options?: { timeoutSecs?: number }, ): Promise { return await invoke("test_api_endpoints", { urls, timeout_secs: options?.timeoutSecs, }); }, async getCustomEndpoints( appType: AppType, providerId: string, ): Promise { return await invoke("get_custom_endpoints", { app: appType, provider_id: providerId, }); }, async addCustomEndpoint( appType: AppType, providerId: string, url: string, ): Promise { await invoke("add_custom_endpoint", { app: appType, provider_id: providerId, url, }); }, async removeCustomEndpoint( appType: AppType, providerId: string, url: string, ): Promise { await invoke("remove_custom_endpoint", { app: appType, provider_id: providerId, url, }); }, async updateEndpointLastUsed( appType: AppType, providerId: string, url: string, ): Promise { await invoke("update_endpoint_last_used", { app: appType, provider_id: providerId, url, }); }, async exportConfigToFile(filePath: string) { return await invoke("export_config_to_file", { file_path: filePath, filePath, }); }, async importConfigFromFile(filePath: string) { return await invoke("import_config_from_file", { file_path: filePath, filePath, }); }, async saveFileDialog(defaultName: string): Promise { return await invoke("save_file_dialog", { default_name: defaultName, defaultName, }); }, async openFileDialog(): Promise { return await invoke("open_file_dialog"); }, };