import { type IrParameter, type IrType } from "@tsonic/frontend"; import { EmitterContext } from "../../types.js"; import type { CSharpStatementAst, CSharpParameterAst, CSharpExpressionAst } from "../../core/format/backend-ast/types.js"; import { RuntimeParameterDefaultInfo } from "../parameter-defaults.js"; export type SavedFunctionScopeContext = { readonly typeParameters: EmitterContext["typeParameters"]; readonly typeParamConstraints: EmitterContext["typeParamConstraints"]; readonly typeParameterNameMap: EmitterContext["typeParameterNameMap"]; readonly returnType: EmitterContext["returnType"]; readonly narrowedBindings: EmitterContext["narrowedBindings"]; readonly voidResolveNames: EmitterContext["voidResolveNames"]; readonly promiseResolveValueTypes: EmitterContext["promiseResolveValueTypes"]; readonly localNameMap: EmitterContext["localNameMap"]; readonly localSemanticTypes: EmitterContext["localSemanticTypes"]; readonly localValueTypes: EmitterContext["localValueTypes"]; readonly usedLocalNames: EmitterContext["usedLocalNames"]; }; export declare const captureFunctionScopeContext: (context: EmitterContext) => SavedFunctionScopeContext; export declare const getAsyncBodyReturnType: (isAsync: boolean, returnType: IrType | undefined) => IrType | undefined; export declare const seedLocalNameMapFromParameters: (params: readonly IrParameter[], context: EmitterContext, acceptsExplicitUndefinedOverrides?: readonly boolean[]) => EmitterContext; export declare const applyRuntimeParameterDefaultShadows: (runtimeDefaults: readonly RuntimeParameterDefaultInfo[], context: EmitterContext) => [readonly CSharpStatementAst[], EmitterContext]; export declare const restoreFunctionScopeContext: (outerContext: EmitterContext, innerContext: EmitterContext, savedScoped: SavedFunctionScopeContext) => EmitterContext; export type DestructuringParamInfo = { readonly syntheticName: string; readonly pattern: IrParameter["pattern"]; readonly type: IrType | undefined; }; export declare const buildParameterAsts: (parameters: readonly IrParameter[], context: EmitterContext) => { readonly paramAsts: readonly CSharpParameterAst[]; readonly destructuringParams: readonly DestructuringParamInfo[]; readonly runtimeDefaultInitializers: readonly RuntimeParameterDefaultInfo[]; readonly wrapperPrefixLengths: readonly number[]; readonly suppressedDefaultArguments: readonly (CSharpExpressionAst | undefined)[]; readonly context: EmitterContext; }; export declare const generateParameterDestructuringAst: (destructuringParams: readonly DestructuringParamInfo[], context: EmitterContext) => [readonly CSharpStatementAst[], EmitterContext]; export declare const reserveGeneratorLocals: (context: EmitterContext, isGenerator: boolean, isBidirectional: boolean, hasGeneratorReturnType: boolean) => { readonly context: EmitterContext; readonly generatorExchangeVar: string; readonly generatorIteratorFn: string; readonly generatorReturnValueVar: string; }; //# sourceMappingURL=function-shared.d.ts.map