import type { Environment } from '../../../vendor/cel-js/lib/index.js';
/**
 * Register the form-wide `now` / `form` live variables on `env`, skipping any
 * already declared. Idempotent so it composes safely from either side: a
 * `FormConfig` nested inside another (the `table` form field embeds a table
 * whose `query` is its own sub-form, and the embedding `configure` advertises
 * the same pair) would otherwise register `form` twice on one env and the CEL
 * registry throws `'form' is already registered`. Mirrors
 * `registerRowVariablesIfAbsent`.
 *
 * This is the single source of truth for the `form` / `now` metadata: the
 * schema's expression validators register it here, the designer-time picker
 * probes it (`buildFormCelScope`), and the runtime scope derives its
 * type/label/description from it too (`buildFormRuntimeScope`). Lives in this
 * dependency-light module — not `schema.ts` — so the scope helpers can import it
 * without pulling `utils/resolve` (and its `import.meta.glob`) into per-folder
 * unit tests. `schema.ts` re-exports it for existing call sites.
 */
export declare function registerFormVariablesIfAbsent(env: Environment): void;
