
export interface VPNStatus {
    status: number;
    receive_packets: number;
    send_packets: number;
    receive_bytes: number;
    send_bytes: number;
    last_update_time: number;
    online_user_info: OnlineUserInfo[] | null;
}

export interface OnlineUserInfo {
    session_id: string;
    user_id: number;
    upload_packets: number;
    download_packets: number;
    upload_bytes: number;
    download_bytes: number;
    last_update_time: number;
}

export interface ServerConfig {
    name: string;
    server_id: string;
    server_ip: string;
    server_ipv6: string;
    server_ip_type: number;
    server_info: string;
    udp_port: number;
    tcp_port: number;
    protocol: number;
    ip_type: number;
    ipv4_address_pool: string;
    ipv6_address_pool: string;
    dns_server: string;
    tunnel: string;
    allow_user_id: any[];
    encryption: string;
    hash: string;
    no_policy_action:number;
    user_max_device: number;
    duration_time: number;
    ipv4_router: any[];
    ipv6_router: any[];
    vpn_status: VPNStatus;
}

export interface OnlineUserInfoList {
    id: number;
    user_id: number;
    user_name: string;
    private_ipv4: string;
    private_ipv6: string;
    vpn_dp_secret: string;
    uuid: string;
    last_update_time: number;
    host_info: HostInfo | null;
}

export interface HostInfo {
  hostname: string;
  uptime: number;
  bootTime: number;
  procs: number;
  os: string;
  platform: string;
  platformFamily: string;
  platformVersion: string;
  kernelVersion: string;
  kernelArch: string;
  virtualizationSystem: string;
  virtualizationRole: string;
  hostId: string;
  client_version: string;
}