/**
 * Object literal type helpers — property expected type resolution,
 * contextual type selection, key resolution, and function type normalization.
 */
import * as ts from "typescript";
import { IrFunctionType, IrType, IrExpression, IrParameter } from "../../types.js";
import type { ProgramContext } from "../../program-context.js";
/**
 * Get the expected type for an object property from the parent expected type.
 *
 * If expectedType is an objectType, looks up the property member directly.
 * If expectedType is a referenceType, we can't resolve it here (would need symbol table).
 */
export declare const getPropertyExpectedType: (propName: string, expectedType: IrType | undefined, ctx: ProgramContext) => IrType | undefined;
export declare const selectObjectLiteralContextualType: (expectedType: IrType | undefined, literalKeys: readonly string[], ctx: ProgramContext) => IrType | undefined;
export declare const unwrapDeterministicKeyExpression: (expr: ts.Expression) => ts.Expression;
export declare const tryResolveDeterministicObjectKeyNameFromSyntax: (expr: ts.Expression, ctx: ProgramContext, seenSymbols?: Set<ts.Symbol>) => string | undefined;
export declare const resolveObjectLiteralMemberKey: (name: ts.PropertyName, ctx: ProgramContext) => {
    readonly key: string | IrExpression;
    readonly keyName: string | undefined;
};
export declare const methodUsesObjectLiteralThis: (method: ts.MethodDeclaration) => boolean;
export declare const normalizeExpectedFunctionType: (expectedType: IrType | undefined, ctx: ProgramContext) => IrFunctionType | undefined;
export declare const getExpectedFunctionParameterTypes: (expectedType: IrType | undefined, ctx: ProgramContext) => readonly (IrType | undefined)[] | undefined;
export declare const convertObjectLiteralMethodParameters: (parameters: ts.NodeArray<ts.ParameterDeclaration>, ctx: ProgramContext, expectedType: IrType | undefined) => readonly IrParameter[];
export declare const buildObjectLiteralMethodFunctionType: (method: ts.MethodDeclaration, ctx: ProgramContext, expectedType: IrType | undefined) => IrFunctionType;
//# sourceMappingURL=object-literal-type-helpers.d.ts.map