/** * Runtime union narrowing binding builders and direct type narrowing. * * Builds narrowed bindings for runtime Union types: * - complement bindings (remaining members after excluding one) * - subset bindings (selected members matching a target type) * - direct type narrowing with materialization */ import { IrExpression, IrType } from "@tsonic/frontend"; import type { EmitterContext, NarrowedBinding } from "../../types.js"; import type { CSharpExpressionAst } from "../format/backend-ast/types.js"; import { type RuntimeUnionFrame, type RuntimeSubsetSourceInfo, type EmitExprAstFn } from "./narrowing-builder-core.js"; export declare const buildRuntimeUnionComplementBinding: (receiver: CSharpExpressionAst, runtimeUnionFrame: RuntimeUnionFrame, sourceType: IrType, narrowedType: IrType, selectedMemberN: number, context: EmitterContext, sourceInfo?: RuntimeSubsetSourceInfo) => NarrowedBinding | undefined; export declare const buildRuntimeUnionSubsetBinding: (receiverAst: CSharpExpressionAst, runtimeUnionFrame: RuntimeUnionFrame, sourceType: IrType, narrowedType: IrType, context: EmitterContext, sourceInfo?: RuntimeSubsetSourceInfo) => [NarrowedBinding, EmitterContext] | undefined; export declare const applyDirectTypeNarrowing: (bindingKey: string, targetExpr: Extract, narrowedType: IrType, context: EmitterContext, emitExprAst: EmitExprAstFn, storageType?: IrType) => EmitterContext; //# sourceMappingURL=narrowing-builder-unions.d.ts.map