import { FiberRoot, Fiber as Fiber$1, ReactContext, Lanes } from 'react-reconciler';
import 'react/jsx-runtime';

interface ReactDevToolsGlobalHook {
    checkDCE: (fn: unknown) => void;
    supportsFiber: boolean;
    supportsFlight: boolean;
    renderers: Map<number, ReactRenderer>;
    hasUnsupportedRendererAttached: boolean;
    onCommitFiberRoot: (rendererID: number, root: FiberRoot, priority: void | number) => void;
    onCommitFiberUnmount: (rendererID: number, fiber: Fiber) => void;
    onPostCommitFiberRoot: (rendererID: number, root: FiberRoot) => void;
    inject: (renderer: ReactRenderer) => number;
    _instrumentationSource?: string;
    _instrumentationIsActive?: boolean;
    _sw?: boolean;
}
/**
 * Represents a react-internal Fiber node.
 */
type Fiber<T = any> = Omit<Fiber$1, 'stateNode' | 'dependencies' | 'child' | 'sibling' | 'return' | 'alternate' | 'memoizedProps' | 'pendingProps' | 'memoizedState' | 'updateQueue'> & {
    stateNode: T;
    dependencies: Dependencies | null;
    child: Fiber | null;
    sibling: Fiber | null;
    return: Fiber | null;
    alternate: Fiber | null;
    memoizedProps: Props;
    pendingProps: Props;
    memoizedState: MemoizedState;
    updateQueue: {
        lastEffect: Effect | null;
        [key: string]: unknown;
    };
};
interface ReactRenderer {
    version: string;
    bundleType: 0 | 1;
    findFiberByHostInstance?: (hostInstance: unknown) => Fiber | null;
}
interface ContextDependency<T> {
    context: ReactContext<T>;
    memoizedValue: T;
    observedBits: number;
    next: ContextDependency<unknown> | null;
}
interface Dependencies {
    lanes: Lanes;
    firstContext: ContextDependency<unknown> | null;
}
interface Effect {
    next: Effect | null;
    create: (...args: unknown[]) => unknown;
    destroy: ((...args: unknown[]) => unknown) | null;
    deps: unknown[] | null;
    tag: number;
    [key: string]: unknown;
}
interface MemoizedState {
    memoizedState: unknown;
    next: MemoizedState | null;
    [key: string]: unknown;
}
interface Props {
    [key: string]: unknown;
}
declare global {
    var __REACT_DEVTOOLS_GLOBAL_HOOK__: ReactDevToolsGlobalHook | undefined;
}

export type { ContextDependency as C, Dependencies as D, Effect as E, Fiber as F, MemoizedState as M, Props as P, ReactDevToolsGlobalHook as R, ReactRenderer as a };
