/**
 * Value type inference – deterministic type recovery from value declarations
 * and expressions without relying on TypeScript's type checker inference.
 */
import * as ts from "typescript";
import type { IrType, IrFunctionType } from "../../../types.js";
import type { Binding } from "../../../binding/index.js";
export declare const getTypeParameterConstraintNode: (typeNode: ts.TypeNode, binding: Binding) => ts.TypeNode | undefined;
export declare const withTypeParameterConstraint: (typeNode: ts.TypeNode, binding: Binding) => ts.TypeNode;
export declare function buildFunctionTypeFromSignatureDeclaration(declaration: ts.SignatureDeclarationBase, binding: Binding, convertTypeFn: (node: ts.TypeNode, binding: Binding) => IrType): IrFunctionType;
export declare function inferTypeFromValueDeclaration(declaration: ts.Declaration | undefined, binding: Binding, seenDeclIds: Set<number>, convertTypeFn: (node: ts.TypeNode, binding: Binding) => IrType): IrType | undefined;
export declare function inferTypeFromValueExpression(expression: ts.Expression, binding: Binding, seenDeclIds: Set<number>, convertTypeFn: (node: ts.TypeNode, binding: Binding) => IrType): IrType | undefined;
//# sourceMappingURL=value-inference.d.ts.map