/**
 * Mustache-flavoured template rendering for custom tool script bodies.
 *
 * Supported syntax:
 *   {{ name }}                — shell-quoted substitution of `args[name]`
 *   {{# name }}…{{/ name }}   — section: included only when `args[name]` is
 *                                truthy. Inside the section, `{{ name }}`
 *                                expands to the (still shell-quoted) value.
 *   {{^ name }}…{{/ name }}   — inverted section: included only when
 *                                `args[name]` is falsy/empty (the complement
 *                                of `{{# name }}`).
 *
 * All scalar values are passed through `shellQuote()` which wraps the value
 * in single quotes and escapes embedded single quotes. Arrays are joined into
 * a single space-separated string with each element individually quoted.
 *
 * Substitution happens *before* the body is handed to the shell, so the
 * shell sees a complete, safe command line.
 */
/**
 * Wrap a string in POSIX-safe single quotes.
 *
 * The only character that can't appear inside single-quoted strings is
 * another single quote, so we close the quote, escape it, and reopen.
 *
 *   "  ;rm -rf /;  "  →  "'  ;rm -rf /;  '"
 *   "it's a test"     →  "'it'\\''s a test'"
 */
export declare function shellQuote(value: string): string;
/**
 * Render an argument value as a shell-safe token (or token list, for arrays).
 */
export declare function renderValue(value: unknown): string;
/**
 * Render a template body against a bag of arguments.
 *
 * Sections are expanded first (recursively), then plain substitutions. This
 * lets section bodies contain `{{ name }}` references to the gating var.
 */
export declare function renderBody(body: string, args: Record<string, unknown>): string;
//# sourceMappingURL=template.d.ts.map