/** * Interfaces for the Form Registry */ /** * Form definition interface */ export interface IFormDefinition { definition_id?: string; // Assuming this might be optional or generated form_id: string; // This is the UUID primary key for tenant forms, name for system forms tenant: string; name: string; description?: string; version: string; status: FormStatus; category?: string; created_by?: string; created_at: string; updated_at: string; // Added schema properties for system forms json_schema?: Record; ui_schema?: Record; default_values?: Record; } /** * Form schema interface */ export interface IFormSchema { schema_id: string; form_id: string; tenant: string | undefined; json_schema: Record; ui_schema?: Record; default_values?: Record; created_at: string; updated_at: string; } /** * Form status enum */ export enum FormStatus { DRAFT = 'draft', ACTIVE = 'active', DEPRECATED = 'deprecated', ARCHIVED = 'archived' } /** * Form registration parameters */ export interface FormRegistrationParams { formId: string; name: string; description?: string; version: string; category?: string; status?: FormStatus; jsonSchema: Record; uiSchema?: Record; defaultValues?: Record; } /** * Form update parameters */ export interface FormUpdateParams { name?: string; description?: string; version?: string; category?: string; status?: FormStatus; jsonSchema?: Record; uiSchema?: Record; defaultValues?: Record; } /** * Form search parameters */ export interface FormSearchParams { tenant?: string; formId?: string; name?: string; category?: string; status?: FormStatus; tags?: string[]; version?: string; } /** * Form validation result */ export interface FormValidationResult { valid: boolean; errors?: Array<{ path: string; message: string; }>; } /** * Form with schema */ export interface FormWithSchema { definition: IFormDefinition; schema: IFormSchema; tags?: any[]; // Allow any type of tags (string[] or ITag[]) }