/** * Shared whitelist constants (spec: "AST node whitelist (derived from * necessity)" and "Contextual rules for MemberExpression and CallExpression"). * The node-type dispatch itself lives in compile.ts; this module is just the * small, auditable set of names the contextual rules check against. */ /** Reserved property keys blocked on any MemberExpression, regardless of root. */ export declare const BLOCKED_KEYS: ReadonlySet; /** * Bare identifiers allowed as VALUES (not necessarily as further member-access * roots — see MEMBER_ROOT_IDENTIFIERS below, which is stricter). The datum * parameter name itself is added by the caller since it's configurable. */ export declare const SAFE_VALUE_IDENTIFIERS: ReadonlySet; /** * Identifiers allowed as the ultimate root of a MemberExpression chain * (`d.field`, `Math.sqrt`). Deliberately narrower than SAFE_VALUE_IDENTIFIERS — * no documented pattern needs `Number.foo`/`String.foo`/`Boolean.foo` member * access, only their bare call forms (`Number(x)`), so member-rooting is * restricted to the datum and `Math`. */ export declare const MEMBER_ROOT_IDENTIFIERS: ReadonlySet; /** Bare-identifier CallExpression callees allowed beyond the registered scale/clamp/lerp/colorRamp builtins. */ export declare const CONSTRUCTOR_STYLE_CALLS: ReadonlySet; /** Unary operators allowed (delete/void excluded per spec). */ export declare const ALLOWED_UNARY_OPERATORS: ReadonlySet; /** Binary operators allowed (in/instanceof excluded per spec). */ export declare function isAllowedBinaryOperator(op: string): boolean;