/**
 * Process @json directive to output JSON
 */
export declare function processJsonDirective(template: string, context: Record<string, any>): string;
/**
 * Process @once directive blocks.
 * Primary deduplication is handled by processIncludes (context.__onceStore).
 * This function only strips remaining @once/@endonce tags, keeping content.
 */
export declare function processOnceDirective(template: string): string;
/**
 * Process @memo directive — memoize template subtrees.
 *
 * Two shapes are supported:
 *
 * 1. Attribute form on an element:
 *      <div @memo="[count(), name()]">Expensive content</div>
 *    Transforms to `data-stx-memo="[count(), name()]"`. The signals runtime
 *    skips re-processing elements whose deps haven't changed.
 *
 * 2. Blade-style block form wrapping arbitrary markup:
 *      @memo([])
 *        <section>...marketing content...</section>
 *      @endmemo
 *    The block is transformed by injecting `data-stx-memo` onto the first
 *    opening tag inside the block (or wrapping in a <div> if the contents
 *    don't start with a single element). Both `@memo(...)` and `@endmemo`
 *    are stripped from the output.
 */
export declare function processMemoDirective(template: string): string;
/**
 * Process ref attributes for DOM element references (Vue-style).
 *
 * Transforms:
 *   <input ref="inputRef" />
 *   <input @ref="inputRef" />
 *
 * Into:
 *   <input data-stx-ref="inputRef" />
 *
 * The client-side runtime will automatically bind these to ref objects.
 */
export declare function processRefAttributes(template: string): string;
/**
 * Add x-cloak to HTML elements that contain unresolved {{ }} expressions.
 * These expressions were preserved for client-side evaluation (signals, loop vars, etc.).
 * x-cloak hides them until the JS runtime processes and reveals them — prevents FOUC.
 */
export declare function addCloakToUnresolvedExpressions(html: string): string;
