import { z } from 'zod' import { annualBudgetApproval } from './annual-budget-approval.js' import { mdAppointment } from './md-appointment.js' import { annualFinancialsApproval } from './annual-financials-approval.js' import { profitDistribution } from './profit-distribution.js' import { mdDismissal } from './md-dismissal.js' import { capitalIncrease } from './capital-increase.js' import { shareTransferApproval } from './share-transfer-approval.js' export interface ResolutionTemplate { key: string titleDe: string titleEn: string descriptionDe: string schema: z.ZodTypeAny fields: TemplateField[] render: (ctx: TemplateRenderContext) => string } export interface TemplateField { key: string labelDe: string labelEn: string type: 'text' | 'textarea' | 'number' | 'date' | 'currency' required?: boolean } export interface TemplateRenderContext { values: Record company: { name: string; registryNo?: string | null; address?: string | null } members: Array<{ displayName: string; role: string; shares: number | null }> createdBy: { displayName: string; email: string } date: string } const registry: Record = { [annualBudgetApproval.key]: annualBudgetApproval, [annualFinancialsApproval.key]: annualFinancialsApproval, [profitDistribution.key]: profitDistribution, [mdAppointment.key]: mdAppointment, [mdDismissal.key]: mdDismissal, [capitalIncrease.key]: capitalIncrease, [shareTransferApproval.key]: shareTransferApproval, } export const listTemplates = (): ResolutionTemplate[] => Object.values(registry) export const getTemplate = (key: string): ResolutionTemplate | undefined => registry[key]