/**
 * Scaffold generation for B2C Commerce projects.
 *
 * This module provides functions for discovering, validating, and executing
 * project scaffolds (templates) for cartridges, custom APIs, Page Designer
 * components, jobs, and other B2C artifacts.
 *
 * ## Scaffold Discovery
 *
 * Scaffolds are discovered from multiple sources in priority order:
 *
 * 1. **Project scaffolds** (`.b2c/scaffolds/`) - highest priority
 * 2. **Plugin scaffolds** (via `b2c:scaffold-providers` hook)
 * 3. **User scaffolds** (`~/.b2c/scaffolds/`)
 * 4. **Built-in scaffolds** - lowest priority
 *
 * Later sources override earlier ones by name.
 *
 * - {@link ScaffoldRegistry} - Registry for managing scaffold discovery
 * - {@link createScaffoldRegistry} - Create a new registry instance
 *
 * ## Scaffold Generation
 *
 * - {@link generateFromScaffold} - Generate files from a scaffold
 * - {@link previewScaffold} - Preview generation without writing files
 *
 * ## Template Engine
 *
 * - {@link ScaffoldEngine} - EJS-based template rendering engine
 *
 * ## Validation
 *
 * - {@link validateScaffoldManifest} - Validate a scaffold manifest
 * - {@link validateParameters} - Validate parameter values
 *
 * ## Usage
 *
 * ```typescript
 * import {
 *   createScaffoldRegistry,
 *   generateFromScaffold,
 * } from '@salesforce/b2c-tooling-sdk/scaffold';
 *
 * // Create registry and find scaffolds
 * const registry = createScaffoldRegistry();
 * const scaffolds = await registry.getScaffolds();
 *
 * // Get a specific scaffold
 * const cartridgeScaffold = await registry.getScaffold('cartridge');
 *
 * // Generate files
 * const result = await generateFromScaffold(cartridgeScaffold, {
 *   outputDir: './output',
 *   variables: { cartridgeName: 'app_custom' },
 * });
 * ```
 *
 * @module scaffold
 */
export type { ScaffoldManifest, ScaffoldParameter, ScaffoldChoice, ScaffoldParameterType, ScaffoldCategory, DynamicParameterSource, FileMapping, FileModification, OverwriteBehavior, Scaffold, ScaffoldSource, ScaffoldDiscoveryOptions, ScaffoldProvider, ScaffoldProviderPriority, ScaffoldTransformer, ScaffoldContext, ScaffoldGenerateOptions, ScaffoldGenerateResult, GeneratedFile, ParameterValidationError, ParameterValidationResult, TemplateHelpers, SourceResult, } from './types.js';
export { SCAFFOLDS_DATA_DIR } from './types.js';
export { HOOK_POINTS, resolveLocalSource, resolveRemoteSource, isRemoteSource, validateAgainstSource, } from './sources.js';
export { ScaffoldRegistry, createScaffoldRegistry } from './registry.js';
export { ScaffoldEngine, createTemplateContext, createTemplateHelpers, renderTemplate, renderPathTemplate, kebabCase, camelCase, pascalCase, snakeCase, } from './engine.js';
export type { TemplateContext } from './engine.js';
export { generateFromScaffold, previewScaffold, resolveOutputDirectory } from './executor.js';
export type { ResolveOutputDirectoryOptions } from './executor.js';
export { validateScaffoldManifest, validateParameters, evaluateCondition, isValidScaffoldName, isValidParameterName, } from './validators.js';
export { mergeJson, insertAfter, insertBefore, appendContent, prependContent } from './merge.js';
export type { JsonMergeOptions, TextInsertOptions } from './merge.js';
export { resolveScaffoldParameters, parseParameterOptions, getParameterSchemas } from './parameter-resolver.js';
export type { ResolveParametersOptions, ParameterResolutionError, ResolvedParameters, ResolvedParameterSchema, } from './parameter-resolver.js';
export { validateEjsSyntax, checkTemplateFiles, checkOrphanedFiles, validateScaffoldDirectory } from './validation.js';
export type { ValidationIssueSeverity, ValidationIssue, ValidationResult, ValidateScaffoldOptions, } from './validation.js';
