import { type TSESLint, type TSESTree } from "@typescript-eslint/utils";
import { flintRuleIdentifiers } from "@flint/infra/constants/shared-string-identifiers";
type CallExpressionTypeArguments = TSESTree.CallExpression[typeof flintRuleIdentifiers.typeArguments];
export declare function hasCorrectCountOfGenericParameters(node: TSESTree.CallExpression, options?: {
    singleArgumentExpected?: number;
    multipleArgumentsExpected?: number;
}): boolean;
export declare function getVariableDeclaratorTypeReference(node: TSESTree.VariableDeclarator): TSESTree.TSTypeReference;
export declare function getTypeReferenceTypeArguments(typeRef: TSESTree.TSTypeReference): TSESTree.TypeNode[];
export declare function hasGenericTypeReference(typeNode?: TSESTree.TypeNode): boolean;
export declare function hasCallGenericType(typeArguments: CallExpressionTypeArguments): boolean;
export declare function hasGenericTypeAssertion(node: TSESTree.Expression): boolean;
export declare function hasGenericTypeInEnclosingParameters(identifierName: string, startNode?: TSESTree.Node, options?: {
    stopAtNearestFunction?: boolean;
}): boolean;
export declare function hasGenericTypeInTypeNode(typeNode?: TSESTree.TypeNode): boolean;
export declare function hasGenericTypeInVariableDeclarator(node: TSESTree.VariableDeclarator): boolean;
export declare function hasGenericTypeInCallableDefinitionReturn(definition: TSESLint.Scope.Definition): boolean;
export declare function getParameterInfo(parameter: TSESTree.Parameter): {
    name: string;
    typeAnnotation?: TSESTree.TypeNode;
};
export declare function hasGeneric(node: TSESTree.CallExpression): boolean;
export {};
