/**
 * Handlebars helpers for the inference template engine.
 *
 * Pure functions — no engine state, no side effects. Registered once at
 * module load time via `registerCoreHelpers()`. Callable from any rule
 * template as `{{helper arg1 arg2}}` or as a sub-expression
 * `{{#if (helper a b)}}`.
 *
 * Phase 1 of the Handlebars rewrite: this file lands the infrastructure
 * but doesn't yet replace the old string-substitution engine. See
 * docs/plans/2026-04-17-HANDLEBARS-TEMPLATE-ENGINE-REWRITE.md.
 */
/**
 * Deep equality check — used by `{{#if (eq name "value")}}` conditionals.
 * Strict JS equality is enough for the comparisons rule templates need
 * (strings against literals, numbers against literals).
 */
export declare function eq(a: unknown, b: unknown): boolean;
/**
 * camelCase / snake_case → Title Case.
 *   sortOrder → 'Sort Order'
 *   created_at → 'Created at'
 *   authorId → 'Author'   (drop trailing Id, common in relationship
 *                          names; matches runtime/views/core
 *                          humanizeFieldName so both paths agree).
 */
export declare function humanize(name: unknown): string;
/**
 * Minimal English pluralizer. Tracks `deriveBasePath` in
 * @specverse/types/spec-rules so generated REST paths match — same
 * rule the runtime test-harness and frontend api-client use.
 *   Category → categories
 *   Box      → boxes
 *   Post     → posts
 */
export declare function pluralize(name: unknown): string;
/** String.toLowerCase() as a helper — templates can't call methods directly. */
export declare function lowerCase(s: unknown): string;
/** String.toUpperCase() as a helper. */
export declare function upperCase(s: unknown): string;
/**
 * Boolean OR across any number of arguments — used by rule templates that
 * need to branch on one of several attribute-name matches, e.g.
 *   `{{#if (or (eq name "name") (eq name "title") (eq name "status"))}}`.
 * Handlebars always appends an options object as the final argument to
 * helper calls; strip it before reducing so it's not counted as truthy.
 */
export declare function or(...args: unknown[]): boolean;
/**
 * Register the core helpers on the global Handlebars singleton. Idempotent
 * — re-registering the same name just overwrites. Called once at
 * rule-engine module load time; tests can also call it if they need
 * a fresh registration in an isolated context.
 */
export declare function registerCoreHelpers(): void;
//# sourceMappingURL=template-helpers.d.ts.map