import { Env , Expr , MapEnv , Value } from "./Expr" ; import { getPropertyValue } from "./PropertyValue" ; export interface AttrEvaluationContext { /**
     * Expression evaluation environment containing variable bindings.
     */ env : MapEnv ; see cachedExprResults ? : Map < Expr , Value > ; } returns export function evaluateTechniqueAttr < T = Value > ( context , attrValue ) ; returns export function evaluateTechniqueAttr < T extends Value > ( context , attrValue , defaultValue ) ; export function evaluateTechniqueAttr < T = Value > ( context , attrValue , defaultValue ? ) { if ( attrValue === undefined ) { return defaultValue ; } const result = Env . isEnv ( context ) ? getPropertyValue ( attrValue , context ) : getPropertyValue ( attrValue , context . env , context . cachedExprResults ) ; return result ?? defaultValue ; }