import { UUID } from './utils'; import { NetworkConfig, NetworkInstanceRunningInfo, VpnPortalInfo } from '../types/network'; export interface ValidateConfigResponse { toml_config: string; } export interface ListNetworkInstanceIdResponse { running_inst_ids: Array, disabled_inst_ids: Array, } export interface GenerateConfigResponse { toml_config?: string; error?: string; } export interface ParseConfigResponse { config?: NetworkConfig; error?: string; } export interface CollectNetworkInfoResponse { info: { map: Record; } } export namespace ConfigFilePermission { export type Flags = number; export const READ_ONLY: Flags = 1 << 0; export const NO_DELETE: Flags = 1 << 1; export function hasPermission(perm: Flags, flag: Flags): boolean { return (perm & flag) === flag; } export function isRemoveSaveable(perm: Flags): boolean { return !hasPermission(perm, NO_DELETE); } export function isEditable(perm: Flags): boolean { return !hasPermission(perm, READ_ONLY); } export function isDeletable(perm: Flags): boolean { return !hasPermission(perm, NO_DELETE); } } export interface NetworkMeta { network_name: string; config_permission: ConfigFilePermission.Flags; } export interface GetNetworkMetasResponse { metas: Record; } export interface RemoteClient { validate_config(config: NetworkConfig): Promise; run_network(config: NetworkConfig, save: boolean): Promise; get_network_info(inst_id: string): Promise; get_vpn_portal_info(inst_id: string): Promise; add_vpn_portal_client(inst_id: string, client: { name: string, virtual_ip: string, groups: string[] }): Promise; remove_vpn_portal_client(inst_id: string, name: string): Promise; clear_vpn_portal_clients(inst_id: string): Promise; list_network_instance_ids(): Promise; delete_network(inst_id: string): Promise; update_network_instance_state(inst_id: string, disabled: boolean): Promise; save_config(config: NetworkConfig): Promise; get_network_config(inst_id: string): Promise; generate_config(config: NetworkConfig): Promise; parse_config(toml_config: string): Promise; get_network_metas(instance_ids: string[]): Promise; }