import ts from 'typescript';
import { type LatticeValue, type ConstantValue } from './lattice.js';
import { type SymbolResolver } from './expressionEvaluator.js';
/**
 * Check if a function declaration is eligible for constant-propagation inlining.
 *
 * Eligible: single return statement (possibly preceded by const declarations),
 * no side effects, no await, no loops, no try/catch, not a generator.
 */
export declare function isEligibleForInlining(decl: ts.FunctionDeclaration | ts.FunctionExpression | ts.ArrowFunction): boolean;
/**
 * Inline a function call by binding parameters to argument values
 * and evaluating the body.
 *
 * @param decl The function declaration to inline
 * @param argValues Evaluated constant values for each argument
 * @param checker Type checker for symbol resolution
 * @param parentResolver The parent module's symbol resolver
 */
export declare function inlineFunction(decl: ts.FunctionDeclaration | ts.FunctionExpression | ts.ArrowFunction, argValues: ConstantValue[], checker: ts.TypeChecker, parentResolver: SymbolResolver): LatticeValue;
//# sourceMappingURL=pureFunctionInliner.d.ts.map