/**
 * Pure-function code generator: FormCanvasModel → JSX string.
 *
 * The output conforms to the form-role component contract:
 *  - Destructures FormHostProps (record, mode, entityMetadata, callbacks, ...)
 *  - Maintains a local draft diff so edits don't mutate the BaseEntity snapshot
 *  - Registers RequestSave / RequestCancel via callbacks.RegisterMethod
 *  - Emits BeforeSave with dirtyFields when the host toolbar fires Save
 *  - No Save / Cancel buttons in the body — the host toolbar owns them
 *  - References only fields from the curated schema (linter requirement)
 *
 * This file is *intentionally* a pure function with no side effects so it can
 * be unit-tested without DOM / Angular wiring.
 */
import type { CuratedFormSchema } from '@memberjunction/interactive-component-types/forms';
import type { FormCanvasModel } from './form-canvas-model';
/**
 * Build a JS-safe identifier from a free-form component name. Caller is
 * responsible for handling empty results.
 */
export declare function toComponentIdentifier(name: string): string;
/**
 * Generate the full Component code string from a canvas model.
 *
 * @param canvas - the canvas model to render
 * @param schema - the curated form schema for the canvas's entity (used to
 *   resolve field types / FK display fields / enum allowed values)
 * @param componentName - human-readable component name (used for the JS
 *   function identifier)
 */
export declare function generateCodeFromCanvas(canvas: FormCanvasModel, schema: CuratedFormSchema, componentName: string): string;
//# sourceMappingURL=canvas-to-code.d.ts.map