/**
 * Object literal synthesis helpers — accessor property type resolution,
 * return type inference from blocks, method expression finalization,
 * and synthesized object member collection.
 */
import * as ts from "typescript";
import { IrBlockStatement, IrClassMember, IrFunctionType, IrInterfaceMember, IrObjectProperty, IrType, IrExpression, IrStatement } from "../../types.js";
import type { ProgramContext } from "../../program-context.js";
export declare const getSynthesizedPropertyType: (expr: IrExpression, widenNumericLiterals: boolean) => IrType | undefined;
export declare const getProvisionalAccessorPropertyType: (memberName: string, getter: ts.GetAccessorDeclaration | undefined, setter: ts.SetAccessorDeclaration | undefined, expectedType: IrType | undefined, ctx: ProgramContext, objectLiteralThisType: IrType | undefined) => IrType | undefined;
export declare const collectReturnExpressionTypes: (stmt: IrStatement, acc: IrType[]) => void;
export declare const inferDeterministicReturnTypeFromBlock: (body: IrBlockStatement) => IrType | undefined;
export declare const finalizeObjectLiteralMethodExpression: (expr: IrExpression) => IrExpression;
export declare const rebindObjectLiteralThisInExpression: (expr: IrExpression, objectLiteralThisType: IrType) => IrExpression;
export declare const rebindObjectLiteralThisInClassMember: (member: IrClassMember, objectLiteralThisType: IrType) => IrClassMember;
export declare const collectSynthesizedObjectMembers: (properties: readonly IrObjectProperty[], pendingMethods: readonly {
    readonly keyName: string;
    readonly functionType: IrFunctionType;
}[], pendingAccessors: readonly {
    readonly memberName: string;
    readonly propertyType: IrType | undefined;
}[], widenNumericLiterals: boolean) => {
    readonly ok: boolean;
    readonly members?: readonly IrInterfaceMember[];
    readonly failureReason?: string;
};
//# sourceMappingURL=object-literal-synthesis.d.ts.map