/** * Enhanced Plugin Registry for Formitiva * Tracks installed plugins, components, validators, submission handlers * Handles conflicts with customizable strategy */ /// import type { FieldCustomValidationHandler, FieldTypeValidationHandler, FormValidationHandler, FormSubmissionHandler, VisibilityHandler, ComputedValueHandler } from '@formitiva/core'; /** Conflict resolution strategies */ export type ConflictResolution = 'error' | 'warn' | 'override' | 'skip'; /** Plugin registration options */ export interface PluginRegistrationOptions { conflictResolution?: ConflictResolution; onConflict?: (conflict: PluginConflict) => boolean; } /** Plugin conflict information */ export interface PluginConflict { type: 'component' | 'fieldCustomValidator' | 'fieldTypeValidator' | 'formValidator' | 'submissionHandler' | 'visibilityHandler' | 'computedHandler' | 'plugin'; name: string; existingPlugin: string; newPlugin: string; } /** Formitiva plugin definition */ export interface FormitivaPlugin { name: string; version: string; description?: string; components?: Record>; fieldCustomValidators?: Record>; fieldTypeValidators?: Record; formValidators?: Record; submissionHandlers?: Record; visibilityHandlers?: Record; computedHandlers?: Record; setup?: () => void; cleanup?: () => void; } /** Register a plugin */ export declare function registerPlugin(plugin: FormitivaPlugin, options?: PluginRegistrationOptions): void; /** Unregister plugin */ export declare function unregisterPlugin(pluginName: string, removeRegistrations?: boolean): boolean; /** Get a plugin by name */ export declare function getPlugin(pluginName: string): FormitivaPlugin | undefined; /** Get all installed plugins */ export declare function getAllPlugins(): FormitivaPlugin[]; /** Check if plugin is registered */ export declare function hasPlugin(pluginName: string): boolean; /** Helper to register multiple components at once */ export declare function registerComponents(components: Record>): void; //# sourceMappingURL=pluginRegistry.d.ts.map