/** * Copyright (c) 2025 Elara AI Pty Ltd * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details. */ import type * as ts from "typescript"; import type { RuleContext, TsModule } from "./types.js"; /** True for an arrow/function whose first parameter is an East `BlockBuilder` — * the shape of every East block callback: `East.function`'s `$ => …`, the JSX * `{$ => …}}`, `ui(…, $ => …)`, a `.map(($, x) => …)` body. Keying on * the parameter type (not the wrapping function's name) makes the check work for * JSX authoring forms that have no `East.function` wrapper at all. */ export declare function isBlockBuilderCallback(node: ts.Node, ctx: RuleContext): boolean; /** * The outermost enclosing East block scope of `node` — an `East.function` call * or a `BlockBuilder`-parameter callback — or `undefined` if there is none. * * Block-scoped rules used to look only for an enclosing `East.function`; East UI * authored as `{$ => …}}` or `ui(…)` has a `BlockBuilder` `$` with no * such wrapper, so those rules went silent inside it. Rooting on the BlockBuilder * callback restores coverage while still bucketing `East.function`-wrapped code * at the `East.function` call (it is the outermost scope, so the bucket key is * unchanged for existing code). */ export declare function enclosingBlockScope(node: ts.Node, ctx: RuleContext): ts.Node | undefined; /** Is `node` inside an East block scope (`East.function` body or BlockBuilder callback)? */ export declare function insideBlockScope(node: ts.Node, ctx: RuleContext): boolean; /** Is `node` (transitively) inside a `` element or a `Reactive.Root(…)` * factory call — i.e. inside a reactive re-render scope? */ export declare function insideReactive(node: ts.Node, t: TsModule): boolean; //# sourceMappingURL=block-scope.d.ts.map