/**
 * Template Binding Validation (SDK config-time)
 *
 * SDK templates now delegate to the same canonical validator used by the
 * dashboard save path. The SDK keeps its public error shape, but manifest
 * keys, content paths, meta paths, transform IO, source/target compatibility,
 * fallback options, and required bindings are all checked by
 * `@riverbankcms/content-model`.
 */
import { type FieldDefinition, type TemplateBlockConfig } from './content-types';
export type TemplateValidationErrorType = 'invalid_binding_key' | 'invalid_field_path' | 'invalid_meta_path' | 'invalid_block_kind' | 'type_incompatible' | 'unknown_transform' | 'transform_input_incompatible' | 'required_binding_missing';
/**
 * Validation error with context about where the error occurred.
 */
export interface TemplateValidationError {
    /** Block identifier where the error occurred */
    blockIdentifier: string;
    /** Field key in bindings where the error occurred (if applicable) */
    fieldKey?: string;
    /** Error message */
    message: string;
    /** Error type for categorization */
    type: TemplateValidationErrorType;
}
/**
 * Block manifest lookup function type.
 * This allows injection of the manifest lookup for testing and flexibility.
 */
export type GetBlockManifest = (kind: string) => {
    fields?: FieldDefinition[];
} | undefined;
/**
 * Validate template bindings against block schemas and content type fields.
 */
export declare function validateTemplateBindings(blocks: TemplateBlockConfig[], contentTypeFields: FieldDefinition[], getBlockManifest: GetBlockManifest): TemplateValidationError[];
/**
 * Format validation errors as strings for display.
 */
export declare function formatValidationErrors(errors: TemplateValidationError[]): string[];
