import { type Environment } from "../../env";
import { type Expr } from "../../expr";
import type { FunctionCapturedVariableInfo } from "../../function-value";
import type { Token } from "../../token";
import type { SomeType, StructType } from "../../types/definitions";
import { type StructValue, type UnknownValue } from "../../value";
import type { CapturedVariableInfo, EvaluatorContext } from "../context";
export declare function consumeCapturedVariables({ capturedVariables, env, closureToken, }: {
    capturedVariables: Map<string, CapturedVariableInfo>;
    env: Environment;
    closureToken: Token;
}): Environment;
export declare function buildPathCollectionFromCapturedVariables(capturedVariables: Map<string, CapturedVariableInfo>): string[][];
export declare function validateCaptureTraitRequirements({ wrapperType, captureType, env, errorToken, capturedVariablesWithValues, }: {
    wrapperType: SomeType;
    captureType: StructType;
    env: Environment;
    errorToken: Token;
    capturedVariablesWithValues?: Map<string, FunctionCapturedVariableInfo>;
}): void;
export declare function createCaptureTypeAndValue({ expectedCaptureType, capturedVariablesWithValues, env, closureToken, context, }: {
    expectedCaptureType: StructType | undefined;
    capturedVariablesWithValues: Map<string, FunctionCapturedVariableInfo> | undefined;
    env: Environment;
    closureToken: Token;
    context: EvaluatorContext;
}): {
    captureType: StructType | undefined;
    captureValue: StructValue | UnknownValue | undefined;
};
export declare function enrichCapturedVariables({ capturedVariables, env, }: {
    capturedVariables: Map<string, CapturedVariableInfo>;
    env: Environment;
}): Map<string, FunctionCapturedVariableInfo>;
export declare function generateCapturedVariableDupExpressions({ capturedVariablesWithValues, env, context, }: {
    capturedVariablesWithValues: Map<string, FunctionCapturedVariableInfo> | undefined;
    env: Environment;
    context: EvaluatorContext;
}): {
    capturedVariableDupExpressions: Expr[] | undefined;
    env: Environment;
};
