import { z } from "zod";

export const votingEntityTypeSchema = z.enum([
  "individual",
  "property_unit",
  "shareholder_account",
  "membership",
  "custom",
]);

export const createVotingEntitySchema = z.object({
  label: z.string().trim().min(1).max(255),
  entityType: votingEntityTypeSchema,
  metadata: z.record(z.string(), z.unknown()).optional().nullable(),
  ownerContactIds: z.array(z.string().uuid()).min(1),
  primaryOwnerContactId: z.string().uuid().optional().nullable(),
  isActive: z.boolean().default(true),
});

export const addVotingEntityOwnerSchema = z.object({
  votingEntityId: z.string().uuid(),
  contactId: z.string().uuid(),
  isPrimary: z.boolean().default(false),
});

export const importVotingEntitiesSchema = z.object({
  raw: z.string().trim().min(1),
});

export type CreateVotingEntityInput = z.infer<typeof createVotingEntitySchema>;
export type AddVotingEntityOwnerInput = z.infer<typeof addVotingEntityOwnerSchema>;
