/** * Represents a Handlebars instance for registering and compiling templates. */ export interface HandlebarsInstance { registerHelper: (name: string, fn: (...args: unknown[]) => unknown) => void; unregisterHelper: (name: string) => void; compile: (template: string) => (data: unknown) => string; helpers: Record; } export type Handlebars = HandlebarsInstance; /** * Describes a filter for selecting helpers by name or category. */ export type HelperFilter = { name?: string; category?: string; }; /** * Represents a single Handlebars helper. */ export type Helper = { name: string; category: string; fn: (...arguments_: unknown[]) => unknown; }; /** * Registry for managing Handlebars helpers. */ export declare class HelperRegistry { private readonly _helpers; /** * Creates a new HelperRegistry and initializes it. */ constructor(); /** * Initializes the helper registry. Override to add custom initialization logic. */ init(): void; /** * Registers a helper. * @param helper - The helper to register. * @returns True if the helper was registered, false if it already exists. */ register(helper: Helper): boolean; /** * Registers multiple helpers. * @param helpers - The helpers to register. */ registerHelpers(helpers: Helper[]): void; /** * Checks if a helper is registered. * @param name - The name of the helper. * @returns True if the helper is registered, false if it is not. */ has(name: string): boolean; /** * Filters helpers by name and/or category. * @param filter - The filter to apply. * @returns The filtered helpers. */ filter(filter: HelperFilter): Helper[]; /** * Loads all registered helpers into a Handlebars instance. * @param handlebars - The Handlebars instance. */ loadHandlebars(handlebars: HandlebarsInstance | { registerHelper: (name: string, fn: (...args: unknown[]) => unknown) => void; }): void; /** * Swaps (replaces) helpers in a Handlebars instance with the registered helpers. * @param handlebars - The Handlebars instance. */ swapHelpers(handlebars: HandlebarsInstance): void; }