import { z } from 'zod'; export const CurTotalInputSchema = z.object({ current: z.number().optional(), total: z.number().optional(), }); export const NetIOSchema = z.object({ up: z.number(), down: z.number(), }); export const NetTrafficSchema = z.object({ sent: z.number(), recv: z.number(), }); export const PublicIPSchema = z.object({ ipv4: z.union([z.string(), z.number()]), ipv6: z.union([z.string(), z.number()]), }); export const AppStatsSchema = z.object({ threads: z.number(), mem: z.number(), uptime: z.number(), }); export const XrayInfoSchema = z.object({ state: z.string(), errorMsg: z.string(), version: z.string(), color: z.string(), }).partial(); export const StatusSchema = z.object({ cpu: z.number().optional(), cpuCores: z.number().optional(), logicalPro: z.number().optional(), cpuSpeedMhz: z.number().optional(), disk: CurTotalInputSchema.optional(), loads: z.array(z.number()).optional(), mem: CurTotalInputSchema.optional(), netIO: NetIOSchema.optional(), netTraffic: NetTrafficSchema.optional(), publicIP: PublicIPSchema.optional(), swap: CurTotalInputSchema.optional(), tcpCount: z.number().optional(), udpCount: z.number().optional(), uptime: z.number().optional(), appUptime: z.number().optional(), appStats: AppStatsSchema.optional(), xray: XrayInfoSchema.optional(), }); export type StatusInput = z.infer;