import type { IrType } from "@tsonic/frontend"; import type { EmitterContext } from "../../types.js"; import type { CSharpExpressionAst, CSharpTypeAst } from "../format/backend-ast/types.js"; import { buildRuntimeUnionTypeAst, type RuntimeUnionLayout } from "./runtime-unions.js"; type RuntimeUnionProjectionBodyResult = CSharpExpressionAst | readonly [CSharpExpressionAst, EmitterContext] | undefined; export declare const buildRuntimeUnionFactoryCallAst: (unionTypeAst: ReturnType, memberIndex: number, valueAst: CSharpExpressionAst) => CSharpExpressionAst; export declare const buildRuntimeUnionMatchAst: (valueAst: CSharpExpressionAst, lambdaArgs: readonly CSharpExpressionAst[], typeArguments?: readonly CSharpTypeAst[]) => CSharpExpressionAst; export declare const buildInvalidRuntimeUnionCastExpression: (actualType: IrType, expectedType: IrType, context?: EmitterContext) => CSharpExpressionAst; export declare const buildInvalidRuntimeUnionMaterializationExpression: (sourceType: IrType, targetType: IrType) => CSharpExpressionAst; export declare const tryBuildRuntimeUnionProjectionToLayoutAst: (opts: { readonly valueAst: CSharpExpressionAst; readonly sourceLayout: RuntimeUnionLayout; readonly targetLayout: RuntimeUnionLayout; readonly context: EmitterContext; readonly candidateMemberNs?: readonly number[]; readonly selectedSourceMemberNs?: ReadonlySet; readonly buildMappedMemberValue: (args: { readonly actualMember: IrType; readonly actualMemberTypeAst: RuntimeUnionLayout["memberTypeAsts"][number]; readonly parameterExpr: CSharpExpressionAst; readonly targetMember: IrType; readonly targetMemberTypeAst: RuntimeUnionLayout["memberTypeAsts"][number]; readonly sourceMemberN: number; readonly targetMemberIndex: number; readonly context: EmitterContext; }) => [CSharpExpressionAst, EmitterContext] | undefined; readonly buildExcludedMemberBody?: (args: { readonly actualMember: IrType; readonly sourceMemberN: number; readonly context: EmitterContext; }) => CSharpExpressionAst | undefined; readonly buildUnmappedMemberBody?: (args: { readonly actualMember: IrType; readonly parameterExpr: CSharpExpressionAst; readonly sourceMemberN: number; readonly context: EmitterContext; }) => RuntimeUnionProjectionBodyResult; }) => [CSharpExpressionAst, EmitterContext] | undefined; export {}; //# sourceMappingURL=runtime-union-projection.d.ts.map