import { type ParserServicesWithTypeInformation, type TSESLint, type TSESTree, type ParserServices } from "@typescript-eslint/utils";
import { flintRuleIdentifiers } from "@flint/infra/constants/shared-string-identifiers";
import ts, { type ObjectType, type Type, type TupleType, type TypeReference } from "typescript";
export interface Services {
    checker: ts.TypeChecker;
    tsNodeMap: ParserServices[typeof flintRuleIdentifiers.esTreeNodeToTSNodeMap];
}
export declare const reactComponentTypeNames: {
    readonly functionComponent: "FC";
};
export declare function isStringTypeNode(node: TSESTree.MemberExpression, services: Services): boolean;
export declare function getNodeTsType(node: TSESTree.Node, parserServices: ParserServicesWithTypeInformation): ts.Type;
export declare function forEachUnionTypedParam(params: TSESTree.Parameter[], callback: (param: TSESTree.Identifier, unionType: TSESTree.TSUnionType) => void): void;
export declare function hasReactFCTypeAnnotation(node: TSESTree.FunctionLike): boolean;
export declare function getTypeAnnotation<TNode extends TSESTree.Node = TSESTree.Node>(node: TSESTree.Node): TNode;
export declare function identifierHasNullishType(node: TSESTree.Node): any;
export declare function isPropertyAMethod(objectNode: TSESTree.Node, propertyName: string, services: Services): boolean;
export declare function isTypeNullish(tsType: TSESTree.TypeNode): any;
export declare function isNamedDeclaration(declaration: ts.Declaration): declaration is ts.InterfaceDeclaration | ts.ClassDeclaration | ts.TypeAliasDeclaration | ts.EnumDeclaration;
export declare function isDefinitelyNotNullable(annotation?: TSESTree.TSTypeAnnotation, isParamNodeOptional?: boolean): boolean;
export declare function isInTypePosition(node: TSESTree.Node): boolean;
export declare function getRootTSType(node: TSESTree.Node): TSESTree.Node;
export declare function getVariableDefinitionsInScope(sourceCode: TSESLint.SourceCode, node: TSESTree.Node, variableName: string, recursive?: boolean): any;
export declare function isReactFCType(typeNode?: TSESTree.TypeNode): typeNode is TSESTree.TSTypeReference;
export declare function isObjectType(type: Type): type is ObjectType;
export declare function isTupleType(type: Type): type is TupleType;
export declare function isArrayType(type: Type): type is TypeReference;
export declare function getPropertySignatureCount(members: TSESTree.TypeElement[]): number;
