/**
 * 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<unknown> | 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<unknown> | null;
/**
 * Hook to get a plugin service
 */
export declare function usePluginService<T = unknown>(pluginName: string, serviceName: string): T | null;
/**
 * HOC to render a plugin component
 */
export declare function withPluginComponent(pluginName: string, componentName: string, fallback?: React.ComponentType<Record<string, unknown>>): (props: Record<string, unknown>) => 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