/**
 * Literal and Call Return Type Inference
 *
 * Contains:
 * - tryInferTypeFromLiteralInitializer: simple literal → IrType
 * - tryInferReturnTypeFromCallExpression: call expression → return type
 *
 * DAG position: depends on inference-utilities, inference-expressions,
 *               inference-declarations, inference-member-resolution
 */
import type { IrType } from "../types/index.js";
import * as ts from "typescript";
import type { TypeSystemState } from "./type-system-state.js";
/**
 * Try to infer type from a variable declaration's literal initializer.
 *
 * DETERMINISM: Uses the raw lexeme form of the literal, not TS computed types.
 * Only handles simple literal initializers:
 * - Numeric literals → inferred via inferNumericKindFromRaw
 * - String literals → primitiveType("string")
 * - Boolean literals → primitiveType("boolean")
 *
 * Returns undefined if the initializer is not a simple literal.
 */
export declare const tryInferTypeFromLiteralInitializer: (_state: TypeSystemState, declNode: unknown) => IrType | undefined;
/**
 * Try to infer type from a variable declaration's initializer using only
 * deterministic sources (declarations + explicit syntax).
 *
 * Handles:
 * - simple literals (delegates to tryInferTypeFromLiteralInitializer)
 * - call expressions where the callee has an explicit declared return type
 * - new expressions with explicit type arguments (or best-effort nominal type)
 * - identifier initializers (propagate deterministically)
 */
export declare const tryInferReturnTypeFromCallExpression: (state: TypeSystemState, call: ts.CallExpression, env: ReadonlyMap<string, IrType>) => IrType | undefined;
//# sourceMappingURL=inference-initializers-call.d.ts.map