import { default as React } from 'react';
export interface InterruptComponentProps {
    interrupt: any;
    actions: {
        approve: () => void;
        reject: (reason?: string) => void;
        edit: (editedArgs: Record<string, unknown>) => void;
    };
}
export interface CustomComponentContextValue {
    components: Record<string, React.FunctionComponent | React.ComponentClass>;
    registerComponent: (name: string, component: React.FunctionComponent | React.ComponentClass) => void;
    registerComponents: (components: Record<string, React.FunctionComponent | React.ComponentClass>) => void;
    unregisterComponent: (name: string) => void;
    interruptComponents: Record<string, React.ComponentType<InterruptComponentProps>>;
    registerInterruptComponent: (toolName: string, component: React.ComponentType<InterruptComponentProps>) => void;
    unregisterInterruptComponent: (toolName: string) => void;
}
interface CustomComponentProviderProps {
    children: React.ReactNode;
    initialComponents?: Record<string, React.FunctionComponent | React.ComponentClass>;
}
export declare function CustomComponentProvider({ children, initialComponents, }: CustomComponentProviderProps): import("react/jsx-runtime").JSX.Element;
/**
 * Hook to access and manage custom component registry.
 * Use this to register, unregister, or access custom components.
 *
 * @throws {Error} If used outside of CustomComponentProvider
 *
 * @example
 * ```tsx
 * const { components, registerComponent } = useCustomComponents();
 * registerComponent('MyComponent', MyComponent);
 * ```
 */
export declare function useCustomComponents(): CustomComponentContextValue;
export {};
//# sourceMappingURL=CustomComponentProvider.d.ts.map