import type { ExprNode, TypeExprNode } from "../parser/ast.js"; export type SpreadOperandClassification = "object" | "nullable-object" | "invalid" | "unknown"; type InferExprType = (expr: ExprNode, env: Env, symbols: Symbols) => TypeExprNode | null; type ResolveType = (typeExpr: TypeExprNode | null, symbols: Symbols) => TypeExprNode | null; type ExprTypeContext = { env: Env; symbols: Symbols; inferExprType: InferExprType; resolveType: ResolveType; }; export declare function inferObjectLiteralContributionType(expr: Extract, env: Env, symbols: Symbols, inferExprType: InferExprType, resolveType: ResolveType): TypeExprNode | null; export declare function inferMergeContributionType(expr: Extract, env: Env, symbols: Symbols, inferExprType: InferExprType, resolveType: ResolveType): TypeExprNode | null; export declare function classifySpreadOperandType(typeExpr: TypeExprNode | null, symbols: Symbols, resolveType: ResolveType): SpreadOperandClassification; export declare function mayYieldArrayExpr(expr: ExprNode | undefined, context?: ExprTypeContext): boolean; export {};