import { invoke } from '@tauri-apps/api/core' import { Api, type NetworkTypes } from 'easytier-frontend-lib' import { GetNetworkMetasResponse } from 'node_modules/easytier-frontend-lib/dist/modules/api' type NetworkConfig = NetworkTypes.NetworkConfig type ValidateConfigResponse = Api.ValidateConfigResponse type ListNetworkInstanceIdResponse = Api.ListNetworkInstanceIdResponse interface ServiceOptions { config_dir: string rpc_portal: string file_log_level: string file_log_dir: string } export type ServiceStatus = "Running" | "Stopped" | "NotInstalled" export async function parseNetworkConfig(cfg: NetworkConfig) { return invoke('parse_network_config', { cfg }) } export async function generateNetworkConfig(tomlConfig: string) { return invoke('generate_network_config', { tomlConfig }) } export async function runNetworkInstance(cfg: NetworkConfig, save: boolean) { return invoke('run_network_instance', { cfg, save }) } export async function collectNetworkInfo(instanceId: string) { return await invoke('collect_network_info', { instanceId }) } export async function setLoggingLevel(level: string) { return await invoke('set_logging_level', { level }) } export async function setTunFd(fd: number) { return await invoke('set_tun_fd', { fd }) } export async function getEasytierVersion() { return await invoke('easytier_version') } export async function listNetworkInstanceIds() { return await invoke('list_network_instance_ids') } export async function deleteNetworkInstance(instanceId: string) { return await invoke('remove_network_instance', { instanceId }) } export async function updateNetworkConfigState(instanceId: string, disabled: boolean) { return await invoke('update_network_config_state', { instanceId, disabled }) } export async function saveNetworkConfig(cfg: NetworkConfig) { return await invoke('save_network_config', { cfg }) } export async function validateConfig(cfg: NetworkConfig) { return await invoke('validate_config', { cfg }) } export async function getConfig(instanceId: string) { return await invoke('get_config', { instanceId }) } export async function sendConfigs() { let networkList: NetworkConfig[] = JSON.parse(localStorage.getItem('networkList') || '[]'); return await invoke('load_configs', { configs: networkList, enabledNetworks: [] }) } export async function getNetworkMetas(instanceIds: string[]) { return await invoke('get_network_metas', { instanceIds }) } export async function initService(opts?: ServiceOptions) { return await invoke('init_service', { opts }) } export async function setServiceStatus(enable: boolean) { return await invoke('set_service_status', { enable }) } export async function getServiceStatus() { return await invoke('get_service_status') } export async function initRpcConnection(url?: string) { return await invoke('init_rpc_connection', { url }) } export async function isClientRunning() { return await invoke('is_client_running') }