import { z } from 'zod'

export const vpsSchema = z.object({
  id: z.string().optional(),
  ip: z.string().optional().default(''),
  ipv6: z.string().optional().default(''),
  additionalIps: z.array(z.string()).optional().default([]),
  dns: z.string().optional().default(''),
  providerId: z.string().optional().default(''),
  providerAccountId: z.string().optional().default(''),
  country: z.string().optional().default(''),
  city: z.string().optional().default(''),
  datacenter: z.string().optional().default(''),
  os: z.string().optional().default(''),
  vcpu: z.coerce.number().optional().default(0),
  ramGb: z.coerce.number().optional().default(0),
  diskGb: z.coerce.number().optional().default(0),
  diskType: z.string().optional().default(''),
  virtualization: z.string().optional().default(''),
  bandwidthTb: z.coerce.number().optional().default(0),
  sshPort: z.coerce.number().optional().default(22),
  rootUser: z.string().optional().default(''),
  purpose: z.string().optional().default(''),
  environment: z.string().optional().default(''),
  project: z.string().optional().default(''),
  projectId: z.string().optional().default(''),
  monitoringEnabled: z.coerce.boolean().optional().default(false),
  backupEnabled: z.coerce.boolean().optional().default(false),
  status: z.string().optional().default('active'),
  tariffType: z.string().optional().default(''),
  currency: z.string().optional().default(''),
  dailyRate: z.union([z.coerce.number(), z.literal('')]).optional(),
  monthlyRate: z.union([z.coerce.number(), z.literal('')]).optional(),
  createdAt: z.string().optional(),
  paidUntil: z.string().optional().default(''),
  notes: z.string().optional().default(''),
  userOverrides: z.union([z.array(z.string()), z.literal('clear')]).optional(),
  customData: z.union([z.string(), z.record(z.unknown())]).optional(),
})

export type VpsFormValues = z.infer<typeof vpsSchema>
