import { z } from "zod/v4"; import { ResourceInputSchema, ResourceSpecificationSchema, ResourceValueSchema, } from "../api/domain/resource-values"; export type { ResourceCharacteristic, ResourceInput } from "../api/domain/resource-values"; export { ResourceInputSchema, ResourceSpecificationSchema, ResourceValueSchema }; export const InventoryParamsSchema = z.strictObject({ companyId: z.uuid() }); export const ResourceParamsSchema = InventoryParamsSchema.extend({ id: z.uuid() }); export const SaveResourceRequestSchema = z.strictObject({ values: ResourceInputSchema }); export const ResourceRevisionSchema = z.strictObject({ id: z.uuid(), values: ResourceInputSchema, actorId: z.uuid(), actorName: z.string().min(1), recordedAt: z.iso.datetime(), }); export const ResourceSchema = z.strictObject({ id: z.uuid(), companyId: z.uuid(), specification: ResourceSpecificationSchema, values: ResourceInputSchema, history: z.array(ResourceRevisionSchema).min(1), }); export const ResourceReferenceSchema = z.strictObject({ id: z.uuid(), kind: z.enum(["account", "system", "environment", "resource_type"]), name: z.string(), active: z.boolean(), systemId: z.uuid().nullable(), }); export type ResourceReferenceDTO = z.infer; export const InventoryResponseSchema = z.strictObject({ resources: z.array(ResourceSchema), references: z.array(ResourceReferenceSchema).optional(), }); export const ResourceResponseSchema = z.strictObject({ resource: ResourceSchema }); export type ResourceDTO = z.infer; export type ResourceResponseDTO = z.infer;