import React, { type ReactNode, type ErrorInfo } from 'react';
import type { FrameworkError } from '../../utils/errors';
/**
 * 错误边界组件属性
 */
export interface ErrorBoundaryProps {
    /**
     * 子组件
     */
    children: ReactNode;
    /**
     * 错误回退 UI（函数形式）
     *
     * 如果不提供，将使用默认的错误 UI（基于 antd 的 Result 组件，居中显示）。
     * 如果提供，将使用自定义的错误 UI。
     *
     * @param error - 标准化后的框架错误对象
     * @param resetError - 重置错误边界的函数，调用后可以尝试重新渲染子组件
     * @returns 错误 UI 的 React 节点
     *
     * @example
     * ```tsx
     * <ErrorBoundary
     *   fallback={(error, reset) => (
     *     <Result
     *       status="error"
     *       title="自定义错误标题"
     *       subTitle={error.message}
     *       extra={<Button onClick={reset}>重试</Button>}
     *     />
     *   )}
     * >
     *   <App />
     * </ErrorBoundary>
     * ```
     */
    fallback?: (error: FrameworkError, resetError: () => void) => ReactNode;
    /**
     * 错误回调
     */
    onError?: (error: FrameworkError, errorInfo: ErrorInfo) => void;
    /**
     * 是否在控制台显示错误
     */
    showInConsole?: boolean;
    /**
     * 重置键数组，当这些值变化时自动重置错误边界
     */
    resetKeys?: Array<string | number>;
    /**
     * 重置错误时的回调
     */
    onReset?: () => void;
    /**
     * 重置键变化时的回调
     */
    onResetKeysChange?: (prevKeys: Array<string | number> | undefined, nextKeys: Array<string | number> | undefined) => void;
}
/**
 * 错误边界组件
 *
 * 基于 react-error-boundary 实现，集成了框架的错误处理系统
 * 用于捕获 React 组件树中的错误，防止整个应用崩溃
 *
 * 默认使用 antd 的 Result 组件显示错误 UI，居中显示，美观易用。
 * 可以通过 fallback 属性自定义错误 UI。
 *
 * @example
 * ```tsx
 * // 使用默认错误 UI（推荐）
 * <ErrorBoundary>
 *   <App />
 * </ErrorBoundary>
 *
 * // 自定义错误 UI
 * <ErrorBoundary
 *   fallback={(error, reset) => (
 *     <div>
 *       <h1>出错了</h1>
 *       <p>{error.message}</p>
 *       <button onClick={reset}>重试</button>
 *     </div>
 *   )}
 * >
 *   <App />
 * </ErrorBoundary>
 * ```
 */
export declare function ErrorBoundary({ children, fallback, onError, showInConsole, resetKeys, onReset, onResetKeysChange, }: ErrorBoundaryProps): ReactNode;
/**
 * 带错误边界的 HOC
 */
export declare function withErrorBoundary<P extends object>(Component: React.ComponentType<P>, errorBoundaryProps?: Omit<ErrorBoundaryProps, 'children'>): React.ComponentType<P>;
/**
 * 使用错误处理器的 Hook
 *
 * 用于在函数组件中处理异步错误
 *
 * 注意：这个 Hook 需要配合 ErrorBoundary 使用。当调用返回的错误处理函数时，
 * 错误会被设置到初始化错误状态，然后通过 InitializationErrorThrower 组件抛出。
 *
 * @example
 * ```tsx
 * import { useErrorHandler } from '@vlian/framework';
 *
 * function MyComponent() {
 *   const handleError = useErrorHandler();
 *
 *   useEffect(() => {
 *     async function fetchData() {
 *       try {
 *         await someAsyncOperation();
 *       } catch (error) {
 *         handleError(error);
 *       }
 *     }
 *     fetchData();
 *   }, [handleError]);
 * }
 * ```
 */
export declare function useErrorHandler(): (error: unknown) => void;
//# sourceMappingURL=ErrorBoundary.d.ts.map