/** * Plugin Provider * * React provider that initializes and manages the plugin system * Loads plugins at application startup and provides plugin context */ import React, { ReactNode } from 'react'; import type { PluginConfig } from '../types/plugin'; /** * Plugin context interface */ interface PluginContextValue { plugins: PluginConfig[]; isLoading: boolean; error: string | null; isPluginLoaded: (name: string) => boolean; getPlugin: (name: string) => PluginConfig | null; getPluginComponent: (pluginName: string, componentName: string) => React.ComponentType | null; getPluginService: (pluginName: string, serviceName: string) => unknown; } /** * Plugin provider props */ interface PluginProviderProps { children: ReactNode; } /** * Plugin Provider Component * Initializes the plugin system and provides plugin context to the app */ export declare function PluginProvider({ children }: PluginProviderProps): import("react/jsx-runtime").JSX.Element; /** * Hook to use plugin context */ export declare function usePlugins(): PluginContextValue; /** * Hook to get a specific plugin */ export declare function usePlugin(name: string): PluginConfig | null; /** * Hook to get a plugin component */ export declare function usePluginComponent(pluginName: string, componentName: string): React.ComponentType | null; /** * Hook to get a plugin service */ export declare function usePluginService(pluginName: string, serviceName: string): T | null; /** * HOC to render a plugin component */ export declare function withPluginComponent(pluginName: string, componentName: string, fallback?: React.ComponentType>): (props: Record) => import("react/jsx-runtime").JSX.Element; /** * Component to conditionally render content based on plugin availability */ interface PluginGateProps { pluginName: string; children: ReactNode; fallback?: ReactNode; } export declare function PluginGate({ pluginName, children, fallback }: PluginGateProps): import("react/jsx-runtime").JSX.Element; export {}; //# sourceMappingURL=PluginProvider.d.ts.map