/**
* 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