import { z } from 'zod'; export const NodeRecordSchema = z.object({ id: z.number(), name: z.string().optional(), remark: z.string().optional(), scheme: z.string().optional(), address: z.string().optional(), port: z.number().optional(), basePath: z.string().optional(), apiToken: z.string().optional(), enable: z.boolean().optional(), status: z.string().optional(), latencyMs: z.number().optional(), cpuPct: z.number().optional(), memPct: z.number().optional(), xrayVersion: z.string().optional(), panelVersion: z.string().optional(), uptimeSecs: z.number().optional(), inboundCount: z.number().optional(), clientCount: z.number().optional(), onlineCount: z.number().optional(), depletedCount: z.number().optional(), lastHeartbeat: z.number().optional(), lastError: z.string().optional(), allowPrivateAddress: z.boolean().optional(), }).loose(); export const NodeListSchema = z.array(NodeRecordSchema); export const ProbeResultSchema = z.object({ status: z.string(), latencyMs: z.number().optional(), xrayVersion: z.string().optional(), error: z.string().optional(), }).loose(); export type NodeRecord = z.infer; export type ProbeResult = z.infer;