import * as t from "@babel/types"; export type PatternBuilder = (pattern: t.ObjectPattern | t.ArrayPattern, object: t.Expression | string, kind: "let" | "const", insert: (stmt: t.Statement) => void) => void; export declare const hasSignalInPattern: (id: t.ObjectPattern | t.ArrayPattern) => boolean; export declare const buildPattern: PatternBuilder; /** * Rewrite a destructuring *assignment* target (not a declaration) so that every * signal-named binding is redirected to its `.value`. Used for statement-form * destructuring assignments like `({ $a } = obj)` / `[$a] = arr`. * * Mutates the pattern in place. Caller is expected to `skip()` traversal of * the rewritten subtree so the read visitor does not touch the emitted * `.value` accesses. */ export declare const rewriteAssignmentPattern: (pattern: t.ObjectPattern | t.ArrayPattern) => void; /** * Collect every identifier a pattern binds when destructured — object property * values (`{ a: $a }` → `$a`), array elements (`[$a]` → `$a`), defaults * (`{ a: $a = 1 }` → `$a`), rest (`{ ...$rest }` → `$rest`) and nested * patterns, recursively. Used to enforce the "every param is a $ signal" * contract on hooks/components/marked functions. */ export declare const collectPatternBindings: (pattern: t.ObjectPattern | t.ArrayPattern) => t.Identifier[];