import { default as React, Component, ReactNode, ErrorInfo, ComponentType } from 'react'; import { AppError } from './errorTypes'; /** * Provider error boundary configuration */ export interface ProviderErrorBoundaryConfig { /** Provider name for error reporting */ providerName: string; /** Custom fallback component */ fallback?: ReactNode | ((error: AppError, retry: () => void) => ReactNode); /** Error callback */ onError?: (error: AppError, errorInfo: ErrorInfo) => void; /** Whether this provider is critical (blocks app render) */ critical?: boolean; /** Maximum auto-retry attempts */ maxRetries?: number; /** Auto-retry delay in ms */ retryDelay?: number; /** Fallback value for the provider context */ fallbackValue?: unknown; /** Show error details in development */ showDetails?: boolean; } /** * Provider error boundary props */ export interface ProviderErrorBoundaryProps extends ProviderErrorBoundaryConfig { children: ReactNode; } /** * Provider error boundary state */ interface ProviderErrorBoundaryState { hasError: boolean; error: AppError | null; retryCount: number; isRetrying: boolean; } /** * Provider Error Boundary Component * * Wraps React providers/context to catch initialization errors * and prevent them from crashing the entire application. * * @example * ```tsx * * * {children} * * * ``` */ export declare class ProviderErrorBoundary extends Component { private retryTimeoutId; constructor(props: ProviderErrorBoundaryProps); static getDerivedStateFromError(error: Error): Partial; componentDidCatch(error: Error, errorInfo: ErrorInfo): void; componentWillUnmount(): void; render(): ReactNode; private scheduleAutoRetry; private handleRetry; } /** * HOC to wrap a provider component with error boundary * * @example * ```tsx * const SafeAuthProvider = withProviderErrorBoundary(AuthProvider, { * providerName: 'AuthProvider', * critical: true, * }); * ``` */ export declare function withProviderErrorBoundary

(ProviderComponent: ComponentType

, config: ProviderErrorBoundaryConfig): ComponentType

; /** * Pre-configured provider boundaries for common providers */ export declare function AuthProviderBoundary({ children, ...props }: Omit): React.ReactElement; export declare function ConfigProviderBoundary({ children, ...props }: Omit): React.ReactElement; export declare function RealtimeProviderBoundary({ children, ...props }: Omit): React.ReactElement; export declare function SecurityProviderBoundary({ children, ...props }: Omit): React.ReactElement; export {};