import type { SourceCode } from 'eslint';
import type estree from 'estree';
import ts from 'typescript';
import type { RequiredParserServices } from '../parser-services.js';
export type ComponentAnalysis = {
    memberPropsTypeCandidates: ts.Type[];
    enclosingTypePropsTypeCandidates: ts.Type[];
};
export type ComponentNode = estree.ClassDeclaration | estree.ClassExpression | estree.FunctionDeclaration | estree.FunctionExpression | estree.ArrowFunctionExpression;
export type CollectedComponent = {
    componentNode: ComponentNode;
    componentIdentifier: estree.Identifier | undefined;
};
/**
 * Returns true when `callee` is a call to `forwardRef` or `React.forwardRef`.
 */
export declare function isForwardRefCallee(callee: estree.Expression | estree.Super): boolean;
export declare function getComponentPropsType(componentNode: estree.Node, services: RequiredParserServices): ts.Type | undefined;
export declare function isBuiltinReactSuperclass(superClass: estree.Expression): boolean;
export declare function isReactClassComponent(node: estree.Node): node is estree.ClassDeclaration | estree.ClassExpression;
export declare function isComponentNode(node: estree.Node): node is ComponentNode;
export declare function createComponentAnalysis(component: ComponentNode | CollectedComponent, services: RequiredParserServices): ComponentAnalysis;
export declare function collectComponents(root: estree.Node, keys: SourceCode.VisitorKeys): CollectedComponent[];
export declare function collectComponentNodes(root: estree.Node, keys: SourceCode.VisitorKeys): ComponentNode[];
export declare function getComponentIdentifier(componentNode: estree.Node): estree.Identifier | undefined;
