/**
 * Type operator helpers – keyof, indexed access, template literals,
 * and shared structural helpers used across the type converter.
 */
import type * as ts from "typescript";
import type { IrType, IrInterfaceMember } from "../../../types.js";
import type { Binding } from "../../../binding/index.js";
export declare const dedupeUnionMembers: (types: readonly IrType[]) => readonly IrType[];
export declare const toUnionOrSingle: (types: readonly IrType[]) => IrType;
export declare const getMembersFromType: (type: IrType) => readonly IrInterfaceMember[] | undefined;
export declare const memberValueType: (member: IrInterfaceMember) => IrType;
export declare const typesSyntacticallyEqual: (left: IrType, right: IrType) => boolean;
export declare const resolveKeyofFromType: (type: IrType) => IrType;
export declare const resolveIndexedAccessFromTypes: (objectType: IrType, indexType: IrType) => IrType;
export declare const convertTemplateLiteralType: (node: ts.TemplateLiteralTypeNode, binding: Binding, convertTypeFn: (node: ts.TypeNode, binding: Binding) => IrType) => IrType;
//# sourceMappingURL=type-operators.d.ts.map