declare const BLOCK_NESTING_RELATION_KEYS: readonly ["parent", "ancestor", "allowedBlocks"]; type BlockNestingRelationKey = (typeof BLOCK_NESTING_RELATION_KEYS)[number]; export type BlockInnerBlocksTemplateAttributes = Readonly>; export type BlockInnerBlocksTemplateItem = readonly [ blockName: string, attributes?: BlockInnerBlocksTemplateAttributes, innerBlocks?: BlockInnerBlocksTemplate ]; export type BlockInnerBlocksTemplate = readonly BlockInnerBlocksTemplateItem[]; export type BlockInnerBlocksTemplateContract = Readonly>; export interface BlockNestingRule { ancestor?: readonly string[]; allowedBlocks?: readonly string[]; parent?: readonly string[]; template?: BlockInnerBlocksTemplate; } export type BlockNestingContract = Readonly>; export interface ValidateBlockNestingContractOptions { allowExternalBlockNames?: boolean; knownBlockNames?: readonly string[]; } export interface ValidateInnerBlocksTemplatesOptions extends ValidateBlockNestingContractOptions { nesting?: BlockNestingContract; } export interface RenderInnerBlocksTemplateModuleOptions { exportName?: string; } export type BlockPatternNestingDiagnosticSeverity = 'error' | 'warning'; export type BlockPatternNestingDiagnosticCode = 'disallowed-child-block' | 'invalid-block-ancestor' | 'invalid-block-parent' | 'invalid-block-pattern-attributes' | 'invalid-block-pattern-comment' | 'unbalanced-block-pattern-comment' | 'unknown-block'; export interface ParsedBlockPatternBlock { attributes: Record; blockName: string; innerBlocks: ParsedBlockPatternBlock[]; } export interface BlockPatternNestingDiagnostic { blockName?: string; blockPath?: string; code: BlockPatternNestingDiagnosticCode; message: string; patternFile?: string; severity: BlockPatternNestingDiagnosticSeverity; } export interface ValidateBlockPatternContentNestingOptions extends ValidateBlockNestingContractOptions { nesting: BlockNestingContract; patternFile?: string; } export interface ValidateBlockPatternContentNestingResult { blocks: ParsedBlockPatternBlock[]; diagnostics: BlockPatternNestingDiagnostic[]; errors: BlockPatternNestingDiagnostic[]; warnings: BlockPatternNestingDiagnostic[]; } export declare function defineBlockNesting(contract: Contract): Contract; export declare function defineInnerBlocksTemplates(templates: Contract): Contract; export declare function validateBlockNestingContract(contract: BlockNestingContract, options?: ValidateBlockNestingContractOptions): void; export declare function getInnerBlocksTemplatesFromNesting(nesting: BlockNestingContract): BlockInnerBlocksTemplateContract; export declare function validateInnerBlocksTemplates(templates: BlockInnerBlocksTemplateContract, options?: ValidateInnerBlocksTemplatesOptions): void; /** * Parse serialized WordPress block comments in a pattern file and compare the * discovered block tree with a typed block nesting contract. * * Relationship violations are returned as `error` diagnostics. Unknown blocks, * malformed block comments, and unparseable attributes are returned as * `warning` diagnostics so callers can surface them without mutating content. * * @param content PHP or HTML pattern source containing serialized block comments. * @param options Pattern filename, nesting contract, and known block-name policy. * @returns Parsed block tree plus split warning/error diagnostics. */ export declare function validateBlockPatternContentNesting(content: string, options: ValidateBlockPatternContentNestingOptions): ValidateBlockPatternContentNestingResult; /** * Format one pattern nesting diagnostic with its file and serialized block path. * * @param diagnostic Diagnostic returned by `validateBlockPatternContentNesting`. * @returns Human-readable diagnostic message. */ export declare function formatBlockPatternContentNestingDiagnostic(diagnostic: BlockPatternNestingDiagnostic): string; /** * Format multiple pattern nesting diagnostics as a bullet list. * * @param diagnostics Diagnostics returned by `validateBlockPatternContentNesting`. * @returns Human-readable bullet list suitable for CLI errors or warnings. */ export declare function formatBlockPatternContentNestingDiagnostics(diagnostics: readonly BlockPatternNestingDiagnostic[]): string; export declare function renderInnerBlocksTemplateModule(templates: BlockInnerBlocksTemplateContract, options?: RenderInnerBlocksTemplateModuleOptions): string; export declare function applyBlockNestingMetadata({ blockJson, blockName, nesting, }: { blockJson: Record; blockName: string; nesting?: BlockNestingContract; }): BlockNestingRelationKey[]; export {};