import { invoke } from "@tauri-apps/api/core"; import type { ProxyStatus, ProxyServerInfo, ProxyTakeoverStatus, GlobalProxyConfig, AppProxyConfig, } from "@/types/proxy"; export const proxyApi = { // ========== 代理服务器控制 API ========== // 启动代理服务器 async startProxyServer(): Promise { return invoke("start_proxy_server"); }, // 停止代理服务器(不恢复已接管配置) async stopProxyServer(): Promise { return invoke("stop_proxy_server"); }, // 停止代理服务器并恢复配置 async stopProxyWithRestore(): Promise { return invoke("stop_proxy_with_restore"); }, // 获取代理服务器状态 async getProxyStatus(): Promise { return invoke("get_proxy_status"); }, // ========== 接管状态 API ========== // 获取各应用接管状态 async getProxyTakeoverStatus(): Promise { return invoke("get_proxy_takeover_status"); }, // 为指定应用开启/关闭接管 async setProxyTakeoverForApp( appType: string, enabled: boolean, ): Promise { return invoke("set_proxy_takeover_for_app", { appType, enabled }); }, // ========== v3+ 全局/应用级配置 API ========== // 获取全局代理配置 async getGlobalProxyConfig(): Promise { return invoke("get_global_proxy_config"); }, // 更新全局代理配置 async updateGlobalProxyConfig(config: GlobalProxyConfig): Promise { return invoke("update_global_proxy_config", { config }); }, // 获取指定应用的代理配置 async getProxyConfigForApp(appType: string): Promise { return invoke("get_proxy_config_for_app", { appType }); }, // 更新指定应用的代理配置 async updateProxyConfigForApp(config: AppProxyConfig): Promise { return invoke("update_proxy_config_for_app", { config }); }, // ========== 计费默认配置 API ========== // 获取默认成本倍率 async getDefaultCostMultiplier(appType: string): Promise { return invoke("get_default_cost_multiplier", { appType }); }, // 设置默认成本倍率 async setDefaultCostMultiplier( appType: string, value: string, ): Promise { return invoke("set_default_cost_multiplier", { appType, value }); }, // 获取计费模式来源 async getPricingModelSource(appType: string): Promise { return invoke("get_pricing_model_source", { appType }); }, // 设置计费模式来源 async setPricingModelSource(appType: string, value: string): Promise { return invoke("set_pricing_model_source", { appType, value }); }, };